diff options
Diffstat (limited to 'inc/global.hxx')
-rw-r--r-- | inc/global.hxx | 44 |
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 |