diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2009-07-10 20:35:32 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2009-07-10 20:35:32 -0400 |
commit | a32b263d1336ae7fef1fcc4f09ac95a092d6db40 (patch) | |
tree | c71109487662657a453803078f608e145ea1c586 | |
parent | edf7e391f5fec3e0728eb36516f6434bb93b6ea8 (diff) |
-rw-r--r-- | inc/global.hxx | 11 | ||||
-rw-r--r-- | inc/proptokenizer.hxx | 15 | ||||
-rw-r--r-- | inc/sharedstring.hxx | 4 | ||||
-rw-r--r-- | source/dpsource.cxx | 1 | ||||
-rw-r--r-- | source/proptokenizer.cxx | 87 |
5 files changed, 65 insertions, 53 deletions
diff --git a/inc/global.hxx b/inc/global.hxx index 69ae298..fda8473 100644 --- a/inc/global.hxx +++ b/inc/global.hxx @@ -7,9 +7,18 @@ #include <hash_map> +namespace std { + +// Enable ::std::hash_map +template<typename _Key, typename _Tp, typename _HashFn = ::__gnu_cxx::hash<_Key>, + typename _EqualKey = ::__gnu_cxx::equal_to<_Key>, typename _Alloc = ::__gnu_cxx::allocator<_Tp> > +class hash_map : public ::__gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqualKey, _Alloc> {}; + +} + namespace dpsource { -typedef ::__gnu_cxx::hash_map< ::rtl::OUString, +typedef ::std::hash_map< ::rtl::OUString, ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >, ::rtl::OUStringHash > NamedObjMapType; diff --git a/inc/proptokenizer.hxx b/inc/proptokenizer.hxx index 4b16979..9d2a9ee 100644 --- a/inc/proptokenizer.hxx +++ b/inc/proptokenizer.hxx @@ -14,7 +14,7 @@ public: enum NameToken { // DataPilot dimension properties - Filter, + Filter = 0, Function, HasHiddenMember, IsDataLayoutDimension, @@ -23,6 +23,10 @@ public: Position, UsedHierarchy, + // DataPilot member properties + IsVisible, + ShowDetails, + Unknown }; @@ -33,7 +37,10 @@ public: ::rtl::OUString getStringFromToken(NameToken eToken) const; private: - SimpleSharedString maSharedStrings; + typedef ::std::hash_map<StrID, NameToken> StrIDTokenMapType; + + SimpleSharedString maSharedStrings; + StrIDTokenMapType maIDTokenMap; // DataPilot dimension properties StrID mnFilter; @@ -44,6 +51,10 @@ private: StrID mnOriginal; StrID mnPosition; StrID mnUsedHierarchy; + + // DataPilot member properties + StrID mnIsVisible; + StrID mnShowDetails; }; } diff --git a/inc/sharedstring.hxx b/inc/sharedstring.hxx index e91680a..a8bb59c 100644 --- a/inc/sharedstring.hxx +++ b/inc/sharedstring.hxx @@ -3,7 +3,7 @@ #include <cppuhelper/implementationentry.hxx> -#include <hash_map> +#include "global.hxx" namespace dpsource { @@ -37,7 +37,7 @@ private: ~StringTable(); private: - typedef ::__gnu_cxx::hash_map< ::rtl::OUString, StrID, ::rtl::OUStringHash > SharedStrMap; + typedef ::std::hash_map< ::rtl::OUString, StrID, ::rtl::OUStringHash > SharedStrMap; ::std::vector< ::rtl::OUString > maSharedStrings; SharedStrMap maSharedStringIds; diff --git a/source/dpsource.cxx b/source/dpsource.cxx index 3456997..e9cea05 100644 --- a/source/dpsource.cxx +++ b/source/dpsource.cxx @@ -173,7 +173,6 @@ Sequence< Sequence<DataResult> > SourceProvider::getResults() throw (RuntimeExce Reference<XNameAccess> SourceProvider::getDimensions() throw (RuntimeException) { - StackPrinter __stack_printer__("dpsource/SourceProvider::getDimensions"); if (!mxDimensions.is()) mxDimensions.set(new DPDimensions(this)); return mxDimensions; diff --git a/source/proptokenizer.cxx b/source/proptokenizer.cxx index 4441f7e..fb277cf 100644 --- a/source/proptokenizer.cxx +++ b/source/proptokenizer.cxx @@ -6,6 +6,7 @@ using ::rtl::OUString; namespace dpsource { PropertyTokenizer::PropertyTokenizer() : + // DataPilot dimension properties mnFilter(maSharedStrings.insertString(OUString::createFromAscii("Filter"))), mnFunction(maSharedStrings.insertString(OUString::createFromAscii("Function"))), mnHasHiddenMember(maSharedStrings.insertString(OUString::createFromAscii("HasHiddenMember"))), @@ -13,8 +14,24 @@ PropertyTokenizer::PropertyTokenizer() : mnOrientation(maSharedStrings.insertString(OUString::createFromAscii("Orientation"))), mnOriginal(maSharedStrings.insertString(OUString::createFromAscii("Original"))), mnPosition(maSharedStrings.insertString(OUString::createFromAscii("Position"))), - mnUsedHierarchy(maSharedStrings.insertString(OUString::createFromAscii("UsedHierarchy"))) + mnUsedHierarchy(maSharedStrings.insertString(OUString::createFromAscii("UsedHierarchy"))), + + // DataPilot member properties + mnIsVisible(maSharedStrings.insertString(OUString::createFromAscii("IsVisible"))), + mnShowDetails(maSharedStrings.insertString(OUString::createFromAscii("ShowDetails"))) { + // Initialize the string ID to enum mapper. + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnFilter, Filter)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnFunction, Function)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnHasHiddenMember, HasHiddenMember)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnIsDataLayoutDimension, IsDataLayoutDimension)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnOrientation, Orientation)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnOriginal, Original)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnPosition, Position)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnUsedHierarchy, UsedHierarchy)); + + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnIsVisible, IsVisible)); + maIDTokenMap.insert(StrIDTokenMapType::value_type(mnShowDetails, ShowDetails)); } PropertyTokenizer::~PropertyTokenizer() @@ -24,23 +41,9 @@ PropertyTokenizer::~PropertyTokenizer() PropertyTokenizer::NameToken PropertyTokenizer::getNameToken(const OUString& rName) { StrID nStrID = maSharedStrings.getStringId(rName); - - if (nStrID == mnFilter) - return Filter; - else if (nStrID == mnFunction) - return Function; - else if (nStrID == mnHasHiddenMember) - return HasHiddenMember; - else if (nStrID == mnIsDataLayoutDimension) - return IsDataLayoutDimension; - else if (nStrID == mnOrientation) - return Orientation; - else if (nStrID == mnOriginal) - return Original; - else if (nStrID == mnPosition) - return Position; - else if (nStrID == mnUsedHierarchy) - return UsedHierarchy; + StrIDTokenMapType::const_iterator itr = maIDTokenMap.find(nStrID); + if (itr != maIDTokenMap.end()) + return itr->second; return Unknown; } @@ -48,35 +51,25 @@ PropertyTokenizer::NameToken PropertyTokenizer::getNameToken(const OUString& rNa OUString PropertyTokenizer::getStringFromToken(NameToken eToken) const { StrID nStrID = 0; // 0 = empty string - switch (eToken) - { - case Filter: - nStrID = mnFilter; - break; - case Function: - nStrID = mnFunction; - break; - case HasHiddenMember: - nStrID = mnHasHiddenMember; - break; - case IsDataLayoutDimension: - nStrID = mnIsDataLayoutDimension; - break; - case Orientation: - nStrID = mnOrientation; - break; - case Original: - nStrID = mnOriginal; - break; - case Position: - nStrID = mnPosition; - break; - case UsedHierarchy: - nStrID = mnUsedHierarchy; - break; - default: - ; - } + + // The values must be in the exact same order as the NameToken enum members. + static const StrID aStrIDs[] = { + mnFilter, + mnFunction, + mnHasHiddenMember, + mnIsDataLayoutDimension, + mnOrientation, + mnOriginal, + mnPosition, + mnUsedHierarchy, + + mnIsVisible, + mnShowDetails + }; + + if (eToken < Unknown) + nStrID = aStrIDs[eToken]; + const OUString* pStr = maSharedStrings.getString(nStrID); return pStr ? *pStr : OUString(); } |