diff options
author | Noel Grandin <noel@peralex.com> | 2012-02-15 20:06:28 +0400 |
---|---|---|
committer | Ivan Timofeev <timofeev.i.s@gmail.com> | 2012-02-15 21:31:29 +0400 |
commit | 9d4b0c25a598a53601e2bd337443728f17f8296a (patch) | |
tree | 0a3cff8d947ce40eab4a22874b7d149771961292 /editeng | |
parent | a55fa2d0a8f709bd58e2729b66fd8ecc807c0286 (diff) |
Convert tools/table.hxx in editeng/forbiddencharacterstable.hxx to std::map
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/inc/editeng/forbiddencharacterstable.hxx | 27 | ||||
-rw-r--r-- | editeng/source/misc/forbiddencharacterstable.cxx | 48 | ||||
-rw-r--r-- | editeng/source/uno/UnoForbiddenCharsTable.cxx | 7 |
3 files changed, 27 insertions, 55 deletions
diff --git a/editeng/inc/editeng/forbiddencharacterstable.hxx b/editeng/inc/editeng/forbiddencharacterstable.hxx index 5d499e8f6489..afe6d5b879e8 100644 --- a/editeng/inc/editeng/forbiddencharacterstable.hxx +++ b/editeng/inc/editeng/forbiddencharacterstable.hxx @@ -29,12 +29,11 @@ #ifndef _FORBIDDENCHARACTERSTABLE_HXX #define _FORBIDDENCHARACTERSTABLE_HXX -#include <tools/table.hxx> - #include <salhelper/simplereferenceobject.hxx> #include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/i18n/ForbiddenCharacters.hpp> #include "editeng/editengdllapi.h" +#include <map> namespace com { namespace sun { @@ -43,26 +42,22 @@ namespace lang { class XMultiServiceFactory; }}}} -struct ForbiddenCharactersInfo -{ - com::sun::star::i18n::ForbiddenCharacters aForbiddenChars; - sal_Bool bTemporary; -}; - -DECLARE_TABLE( SvxForbiddenCharactersTableImpl, ForbiddenCharactersInfo* ) - -class EDITENG_DLLPUBLIC SvxForbiddenCharactersTable : public SvxForbiddenCharactersTableImpl, public salhelper::SimpleReferenceObject +class EDITENG_DLLPUBLIC SvxForbiddenCharactersTable : public salhelper::SimpleReferenceObject { +public: + typedef std::map<sal_uInt16, com::sun::star::i18n::ForbiddenCharacters> CharInfoMap; private: + mutable CharInfoMap maCharInfoMap; ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF; public: - SvxForbiddenCharactersTable( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF, sal_uInt16 nISize = 4, sal_uInt16 nGrow = 4 ); - ~SvxForbiddenCharactersTable(); + SvxForbiddenCharactersTable( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF); + ~SvxForbiddenCharactersTable() {} - const com::sun::star::i18n::ForbiddenCharacters* GetForbiddenCharacters( sal_uInt16 nLanuage, sal_Bool bGetDefault ) const; - void SetForbiddenCharacters( sal_uInt16 nLanuage , const com::sun::star::i18n::ForbiddenCharacters& ); - void ClearForbiddenCharacters( sal_uInt16 nLanuage ); + inline CharInfoMap& Map() { return maCharInfoMap; } + const com::sun::star::i18n::ForbiddenCharacters* GetForbiddenCharacters( sal_uInt16 nLanguage, sal_Bool bGetDefault ) const; + void SetForbiddenCharacters( sal_uInt16 nLanguage , const com::sun::star::i18n::ForbiddenCharacters& ); + void ClearForbiddenCharacters( sal_uInt16 nLanguage ); }; #endif // _FORBIDDENCHARACTERSTABLE_HXX diff --git a/editeng/source/misc/forbiddencharacterstable.cxx b/editeng/source/misc/forbiddencharacterstable.cxx index deb8d4d3e334..e809282239b0 100644 --- a/editeng/source/misc/forbiddencharacterstable.cxx +++ b/editeng/source/misc/forbiddencharacterstable.cxx @@ -34,60 +34,36 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> -SvxForbiddenCharactersTable::SvxForbiddenCharactersTable( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF, sal_uInt16 nISize, sal_uInt16 nGrow ) - : SvxForbiddenCharactersTableImpl( nISize, nGrow ) +SvxForbiddenCharactersTable::SvxForbiddenCharactersTable( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF) { mxMSF = xMSF; } - -SvxForbiddenCharactersTable::~SvxForbiddenCharactersTable() -{ - for ( sal_uLong n = Count(); n; ) - delete GetObject( --n ); -} - - - const com::sun::star::i18n::ForbiddenCharacters* SvxForbiddenCharactersTable::GetForbiddenCharacters( sal_uInt16 nLanguage, sal_Bool bGetDefault ) const { - ForbiddenCharactersInfo* pInf = Get( nLanguage ); + com::sun::star::i18n::ForbiddenCharacters* pInf = NULL; + CharInfoMap::iterator it = maCharInfoMap.find( nLanguage ); + if ( it != maCharInfoMap.end() ) + pInf = &(it->second); if ( !pInf && bGetDefault && mxMSF.is() ) { - const SvxForbiddenCharactersTableImpl *pConstImpl = dynamic_cast<const SvxForbiddenCharactersTableImpl*>(this); - SvxForbiddenCharactersTableImpl* pImpl = const_cast<SvxForbiddenCharactersTableImpl*>(pConstImpl); - pInf = new ForbiddenCharactersInfo; - pImpl->Insert( nLanguage, pInf ); - - pInf->bTemporary = sal_True; LocaleDataWrapper aWrapper( mxMSF, SvxCreateLocale( nLanguage ) ); - pInf->aForbiddenChars = aWrapper.getForbiddenCharacters(); + maCharInfoMap[ nLanguage ] = aWrapper.getForbiddenCharacters(); + pInf = &maCharInfoMap[ nLanguage ]; } - return pInf ? &pInf->aForbiddenChars : NULL; + return pInf; } - - void SvxForbiddenCharactersTable::SetForbiddenCharacters( sal_uInt16 nLanguage, const com::sun::star::i18n::ForbiddenCharacters& rForbiddenChars ) { - ForbiddenCharactersInfo* pInf = Get( nLanguage ); - if ( !pInf ) - { - pInf = new ForbiddenCharactersInfo; - Insert( nLanguage, pInf ); - } - pInf->bTemporary = sal_False; - pInf->aForbiddenChars = rForbiddenChars; + maCharInfoMap[ nLanguage ] = rForbiddenChars; } void SvxForbiddenCharactersTable::ClearForbiddenCharacters( sal_uInt16 nLanguage ) { - ForbiddenCharactersInfo* pInf = Get( nLanguage ); - if ( pInf ) - { - Remove( nLanguage ); - delete pInf; - } + CharInfoMap::iterator it = maCharInfoMap.find( nLanguage ); + if ( it != maCharInfoMap.end() ) + maCharInfoMap.erase( it ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/editeng/source/uno/UnoForbiddenCharsTable.cxx b/editeng/source/uno/UnoForbiddenCharsTable.cxx index 5bcbf35acbdd..5d2c79e6e97d 100644 --- a/editeng/source/uno/UnoForbiddenCharsTable.cxx +++ b/editeng/source/uno/UnoForbiddenCharsTable.cxx @@ -117,16 +117,17 @@ Sequence< Locale > SAL_CALL SvxUnoForbiddenCharsTable::getLocales() { SolarMutexGuard aGuard; - const sal_Int32 nCount = mxForbiddenChars.is() ? mxForbiddenChars->Count() : 0; + const sal_Int32 nCount = mxForbiddenChars.is() ? mxForbiddenChars->Map().size() : 0; Sequence< Locale > aLocales( nCount ); if( nCount ) { Locale* pLocales = aLocales.getArray(); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) + for( SvxForbiddenCharactersTable::CharInfoMap::iterator it = mxForbiddenChars->Map().begin(); + it != mxForbiddenChars->Map().end(); ++it ) { - const sal_uLong nLanguage = mxForbiddenChars->GetObjectKey( nIndex ); + const sal_uLong nLanguage = it->first; SvxLanguageToLocale ( *pLocales++, static_cast < LanguageType > (nLanguage) ); } } |