summaryrefslogtreecommitdiff
path: root/inc/global.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'inc/global.hxx')
-rw-r--r--inc/global.hxx44
1 files changed, 44 insertions, 0 deletions
diff --git a/inc/global.hxx b/inc/global.hxx
index a2b6fff..00a91db 100644
--- a/inc/global.hxx
+++ b/inc/global.hxx
@@ -12,6 +12,50 @@ typedef ::__gnu_cxx::hash_map< ::rtl::OUString,
::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >,
::rtl::OUStringHash > NamedObjMapType;
+// ============================================================================
+
+typedef sal_Int32 StrID;
+
+class SimpleSharedString
+{
+public:
+ static const StrID EMPTY = 0;
+
+ SimpleSharedString();
+ SimpleSharedString(const SimpleSharedString& r);
+ ~SimpleSharedString();
+
+ const ::rtl::OUString* getString(StrID nId);
+ StrID getStringId(const ::rtl::OUString& aStr);
+ StrID insertString(const ::rtl::OUString& aStr);
+
+private:
+
+ /** internal shared string table implementation */
+ class StringTable
+ {
+ public:
+ StrID insertString(const ::rtl::OUString& aStr);
+ StrID getStringId(const ::rtl::OUString& aStr);
+ const ::rtl::OUString* getString(StrID nId) const;
+
+ StringTable();
+ StringTable(const StringTable& r);
+ ~StringTable();
+
+ private:
+ typedef ::__gnu_cxx::hash_map< ::rtl::OUString, StrID, ::rtl::OUStringHash > SharedStrMap;
+
+ ::std::vector< ::rtl::OUString > maSharedStrings;
+ SharedStrMap maSharedStringIds;
+ StrID mnStrCount;
+ };
+
+ StringTable maStringTable;
+};
+
+// ============================================================================
+
}
#endif