blob: 00a91db3eeb6bc4c1f7dc931d15fd403c4bd669c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#ifndef __GLOBAL_HXX__
#define __GLOBAL_HXX__
#include <cppuhelper/implementationentry.hxx>
#include <com/sun/star/container/XNamed.hpp>
#include <hash_map>
namespace dpsource {
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
|