Kaydet (Commit) 260ed4ed authored tarafından Caolán McNamara's avatar Caolán McNamara

map of kind+name -> new-name

üst a66ce198
...@@ -141,11 +141,6 @@ SrchAttrItemList::_ForEach(unsigned short, unsigned short, unsigned char (*)(Sea ...@@ -141,11 +141,6 @@ SrchAttrItemList::_ForEach(unsigned short, unsigned short, unsigned char (*)(Sea
StgCache::Pos2Page(int) StgCache::Pos2Page(int)
StgHeader::SetClassId(ClsId const&) StgHeader::SetClassId(ClsId const&)
SvBorder::SvBorder(Rectangle const&, Rectangle const&) SvBorder::SvBorder(Rectangle const&, Rectangle const&)
SvI18NMap_Impl::Insert(SvI18NMapEntry_Impl* const&, unsigned short&)
SvI18NMap_Impl::Insert(SvI18NMapEntry_Impl* const*, unsigned short)
SvI18NMap_Impl::Insert(SvI18NMap_Impl const*, unsigned short, unsigned short)
SvI18NMap_Impl::Remove(SvI18NMapEntry_Impl* const&, unsigned short)
SvI18NMap_Impl::Remove(unsigned short, unsigned short)
SvLBoxBmp::SvLBoxBmp(SvLBoxEntry*, unsigned short, Image) SvLBoxBmp::SvLBoxBmp(SvLBoxEntry*, unsigned short, Image)
SvLBoxButton::Check(SvLBox*, SvLBoxEntry*, unsigned char) SvLBoxButton::Check(SvLBox*, SvLBoxEntry*, unsigned char)
SvLBoxButtonData::SvLBoxButtonData() SvLBoxButtonData::SvLBoxButtonData()
......
...@@ -29,43 +29,54 @@ ...@@ -29,43 +29,54 @@
#ifndef _XMLOFF_I18NMAP_HXX #ifndef _XMLOFF_I18NMAP_HXX
#define _XMLOFF_I18NMAP_HXX #define _XMLOFF_I18NMAP_HXX
#include "sal/config.h" #include <sal/config.h>
#include "xmloff/dllapi.h" #include "xmloff/dllapi.h"
#include "sal/types.h" #include <rtl/ustring.hxx>
#include <tools/solar.h> #include <tools/solar.h>
#include <map>
class SvI18NMapEntry_Key
namespace rtl
{ {
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; typedef std::map<SvI18NMapEntry_Key, rtl::OUString> SvI18NMap_Impl;
class SvI18NMapEntry_Impl;
class XMLOFF_DLLPUBLIC SvI18NMap class XMLOFF_DLLPUBLIC SvI18NMap
{ {
SvI18NMap_Impl *pImpl; SvI18NMap_Impl m_aMap;
SAL_DLLPRIVATE SvI18NMapEntry_Impl *_Find( sal_uInt16 nKind,
const ::rtl::OUString& rName ) const;
public: public:
SvI18NMap();
~SvI18NMap();
// Add a name mapping // Add a name mapping
void Add( sal_uInt16 nKind, const ::rtl::OUString& rName, bool Add( sal_uInt16 nKind, const rtl::OUString& rName,
const ::rtl::OUString& rNewName ); const rtl::OUString& rNewName );
// Return a mapped name. If the name could not be found, return the // Return a mapped name. If the name could not be found, return the
// original name. // original name.
const ::rtl::OUString& Get( sal_uInt16 nKind, const rtl::OUString& Get( sal_uInt16 nKind,
const ::rtl::OUString& rName ) const; const rtl::OUString& rName ) const;
}; };
#endif // _XMLOFF_I18NMAP_HXX #endif // _XMLOFF_I18NMAP_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -31,96 +31,22 @@ ...@@ -31,96 +31,22 @@
#include <svl/svarray.hxx> #include <svl/svarray.hxx>
#include "xmloff/i18nmap.hxx" #include "xmloff/i18nmap.hxx"
using ::rtl::OUString; bool SvI18NMap::Add( sal_uInt16 nKind, const rtl::OUString& rName,
const rtl::OUString& rNewName )
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
{ {
SvI18NMapEntry_Impl *pRet = 0; SvI18NMapEntry_Key aKey(nKind, rName);
SvI18NMapEntry_Impl aTst( nKind, rName ); bool bIsNewInsertion = m_aMap.insert(SvI18NMap_Impl::value_type(aKey, rNewName)).second;
DBG_ASSERT( bIsNewInsertion, "SvI18NMap::Add: item registered already" );
sal_uInt16 nPos; return bIsNewInsertion;
if( pImpl->Seek_Entry( &aTst, &nPos ) )
{
pRet = (*pImpl)[nPos];
}
return pRet;
}
SvI18NMap::SvI18NMap() :
pImpl( 0 )
{
pImpl = new SvI18NMap_Impl;
} }
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())
void SvI18NMap::Add( sal_uInt16 nKind, const OUString& rName, return aI->second;
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; return rName;
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment