summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-03-19 11:52:27 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-03-20 12:57:33 +0000
commit260ed4ed0317f4f16a675dde48750bc40923bc96 (patch)
treecdcb941434367892497d31545a4dc6d8f7c9e12c /xmloff
parenta66ce1981ebb64edea067f8857df377486cafdba (diff)
map of kind+name -> new-name
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/inc/xmloff/i18nmap.hxx53
-rw-r--r--xmloff/source/core/i18nmap.cxx98
2 files changed, 44 insertions, 107 deletions
diff --git a/xmloff/inc/xmloff/i18nmap.hxx b/xmloff/inc/xmloff/i18nmap.hxx
index 2f56e26bf5f8..2988e762812f 100644
--- a/xmloff/inc/xmloff/i18nmap.hxx
+++ b/xmloff/inc/xmloff/i18nmap.hxx
@@ -29,43 +29,54 @@
#ifndef _XMLOFF_I18NMAP_HXX
#define _XMLOFF_I18NMAP_HXX
-#include "sal/config.h"
+#include <sal/config.h>
#include "xmloff/dllapi.h"
-#include "sal/types.h"
+#include <rtl/ustring.hxx>
#include <tools/solar.h>
+#include <map>
-
-namespace rtl
+class SvI18NMapEntry_Key
{
- class OUString;
-}
+ sal_uInt16 nKind;
+ rtl::OUString aName;
+public:
+ SvI18NMapEntry_Key( sal_uInt16 nKnd, const rtl::OUString& rName ) :
+ nKind( nKnd ),
+ aName( rName )
+ {
+ }
+
+ sal_Bool operator==( const SvI18NMapEntry_Key& r ) const
+ {
+ return nKind == r.nKind &&
+ aName == r.aName;
+ }
+
+ sal_Bool operator<( const SvI18NMapEntry_Key& r ) const
+ {
+ return nKind < r.nKind ||
+ ( nKind == r.nKind &&
+ aName < r.aName);
+ }
+};
-class SvI18NMap_Impl;
-class SvI18NMapEntry_Impl;
+typedef std::map<SvI18NMapEntry_Key, rtl::OUString> SvI18NMap_Impl;
class XMLOFF_DLLPUBLIC SvI18NMap
{
- SvI18NMap_Impl *pImpl;
-
- SAL_DLLPRIVATE SvI18NMapEntry_Impl *_Find( sal_uInt16 nKind,
- const ::rtl::OUString& rName ) const;
+ SvI18NMap_Impl m_aMap;
public:
-
- SvI18NMap();
- ~SvI18NMap();
-
// Add a name mapping
- void Add( sal_uInt16 nKind, const ::rtl::OUString& rName,
- const ::rtl::OUString& rNewName );
+ bool Add( sal_uInt16 nKind, const rtl::OUString& rName,
+ const rtl::OUString& rNewName );
// Return a mapped name. If the name could not be found, return the
// original name.
- const ::rtl::OUString& Get( sal_uInt16 nKind,
- const ::rtl::OUString& rName ) const;
+ const rtl::OUString& Get( sal_uInt16 nKind,
+ const rtl::OUString& rName ) const;
};
-
#endif // _XMLOFF_I18NMAP_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/core/i18nmap.cxx b/xmloff/source/core/i18nmap.cxx
index 0d5a97022b4d..ea4db31c67f7 100644
--- a/xmloff/source/core/i18nmap.cxx
+++ b/xmloff/source/core/i18nmap.cxx
@@ -31,96 +31,22 @@
#include <svl/svarray.hxx>
#include "xmloff/i18nmap.hxx"
-using ::rtl::OUString;
-
-class SvI18NMapEntry_Impl
-{
- sal_uInt16 nKind;
- OUString aName;
- OUString aNewName;
-
-public:
-
- const OUString& GetNewName() const { return aNewName; }
-
- SvI18NMapEntry_Impl( sal_uInt16 nKnd, const OUString& rName,
- const OUString& rNewName ) :
- nKind( nKnd ),
- aName( rName ),
- aNewName( rNewName )
- {}
-
- SvI18NMapEntry_Impl( sal_uInt16 nKnd, const OUString& rName ) :
- nKind( nKnd ),
- aName( rName )
- {}
-
- sal_Bool operator==( const SvI18NMapEntry_Impl& r ) const
- {
- return nKind == r.nKind &&
- aName == r.aName;
- }
-
- sal_Bool operator<( const SvI18NMapEntry_Impl& r ) const
- {
- return nKind < r.nKind ||
- ( nKind == r.nKind &&
- aName < r.aName);
- }
-};
-
-typedef SvI18NMapEntry_Impl *SvI18NMapEntry_ImplPtr;
-SV_DECL_PTRARR_SORT_DEL( SvI18NMap_Impl, SvI18NMapEntry_ImplPtr, 20 )
-SV_IMPL_OP_PTRARR_SORT( SvI18NMap_Impl, SvI18NMapEntry_ImplPtr )
-
-// ---------------------------------------------------------------------
-
-SvI18NMapEntry_Impl *SvI18NMap::_Find( sal_uInt16 nKind,
- const OUString& rName ) const
+bool SvI18NMap::Add( sal_uInt16 nKind, const rtl::OUString& rName,
+ const rtl::OUString& rNewName )
{
- SvI18NMapEntry_Impl *pRet = 0;
- SvI18NMapEntry_Impl aTst( nKind, rName );
-
- sal_uInt16 nPos;
- if( pImpl->Seek_Entry( &aTst, &nPos ) )
- {
- pRet = (*pImpl)[nPos];
- }
-
- return pRet;
-}
-
-SvI18NMap::SvI18NMap() :
- pImpl( 0 )
-{
- pImpl = new SvI18NMap_Impl;
+ SvI18NMapEntry_Key aKey(nKind, rName);
+ bool bIsNewInsertion = m_aMap.insert(SvI18NMap_Impl::value_type(aKey, rNewName)).second;
+ DBG_ASSERT( bIsNewInsertion, "SvI18NMap::Add: item registered already" );
+ return bIsNewInsertion;
}
-SvI18NMap::~SvI18NMap()
+const rtl::OUString& SvI18NMap::Get( sal_uInt16 nKind, const rtl::OUString& rName ) const
{
- delete pImpl;
+ SvI18NMapEntry_Key aKey(nKind, rName);
+ SvI18NMap_Impl::const_iterator aI = m_aMap.find(aKey);
+ if (aI != m_aMap.end())
+ return aI->second;
+ return rName;
}
-void SvI18NMap::Add( sal_uInt16 nKind, const OUString& rName,
- const OUString& rNewName )
-{
- SvI18NMapEntry_Impl *pEntry = _Find( nKind, rName );
- DBG_ASSERT( !pEntry, "SvI18NMap::Add: item registered already" );
- if( !pEntry )
- {
- pEntry = new SvI18NMapEntry_Impl( nKind, rName, rNewName );
- pImpl->Insert( pEntry );
- }
-}
-
-const OUString& SvI18NMap::Get( sal_uInt16 nKind, const OUString& rName ) const
-{
- SvI18NMapEntry_Impl *pEntry = _Find( nKind, rName );
- if( pEntry )
- return pEntry->GetNewName();
- else
- return rName;
-}
-
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */