summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2009-07-10 20:35:32 -0400
committerKohei Yoshida <kyoshida@novell.com>2009-07-10 20:35:32 -0400
commita32b263d1336ae7fef1fcc4f09ac95a092d6db40 (patch)
treec71109487662657a453803078f608e145ea1c586
parentedf7e391f5fec3e0728eb36516f6434bb93b6ea8 (diff)
Workaround to allow ::std::hash_map & some cleanup in the property tokenizer.HEADmaster
-rw-r--r--inc/global.hxx11
-rw-r--r--inc/proptokenizer.hxx15
-rw-r--r--inc/sharedstring.hxx4
-rw-r--r--source/dpsource.cxx1
-rw-r--r--source/proptokenizer.cxx87
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();
}