diff options
author | Frank Schoenheit [fs] <frank.schoenheit@oracle.com> | 2011-03-25 09:25:18 +0100 |
---|---|---|
committer | Frank Schoenheit [fs] <frank.schoenheit@oracle.com> | 2011-03-25 09:25:18 +0100 |
commit | 8c7591ae59cda5c25a340b587693f3847b92e8d9 (patch) | |
tree | 99b9c53f3bfa22f105d13613531ad2ff81ffd3df /svl | |
parent | 6075fd52b963222abfc799b6d7a996cf4c2a9759 (diff) | |
parent | d26d7768d7315d783fd143765ae68bc802c4445b (diff) |
fs34b: pulled and merged DEV300:m104
Diffstat (limited to 'svl')
-rw-r--r-- | svl/inc/svl/nfkeytab.hxx | 14 | ||||
-rw-r--r-- | svl/source/numbers/zforlist.cxx | 14 | ||||
-rw-r--r-- | svl/source/numbers/zformat.cxx | 20 | ||||
-rw-r--r-- | svl/source/numbers/zforscan.cxx | 22 | ||||
-rw-r--r-- | svl/source/numbers/zforscan.hxx | 2 | ||||
-rw-r--r-- | svl/source/undo/undo.cxx | 2 |
6 files changed, 43 insertions, 31 deletions
diff --git a/svl/inc/svl/nfkeytab.hxx b/svl/inc/svl/nfkeytab.hxx index 7c3fef4b88cc..34d483ab4d86 100644 --- a/svl/inc/svl/nfkeytab.hxx +++ b/svl/inc/svl/nfkeytab.hxx @@ -28,6 +28,7 @@ #ifndef INCLUDED_SVTOOLS_NFKEYTAB_HXX #define INCLUDED_SVTOOLS_NFKEYTAB_HXX +#include <vector> #include <tools/string.hxx> //! For ImpSvNumberformatScan: first the short symbols, then the long symbols! @@ -111,7 +112,18 @@ enum NfKeywordIndex NF_KEYWORD_ENTRIES_COUNT }; -typedef String NfKeywordTable [NF_KEYWORD_ENTRIES_COUNT]; +class NfKeywordTable +{ + typedef ::std::vector<String> Keywords_t; + Keywords_t m_keywords; + +public: + NfKeywordTable() : m_keywords(NF_KEYWORD_ENTRIES_COUNT) {}; + virtual ~NfKeywordTable() {} + + String & operator[] (Keywords_t::size_type n) { return m_keywords[n]; } + const String & operator[] (Keywords_t::size_type n) const { return m_keywords[n]; } +}; #endif // INCLUDED_SVTOOLS_NFKEYTAB_HXX diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index ebc1fa673fe2..d4d0f8550907 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -939,10 +939,10 @@ void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords, LanguageType eLang ) { ChangeIntl( eLang ); - const String* pTable = pFormatScanner->GetKeywords(); + const NfKeywordTable & rTable = pFormatScanner->GetKeywords(); for ( sal_uInt16 i = 0; i < NF_KEYWORD_ENTRIES_COUNT; ++i ) { - rKeywords[i] = pTable[i]; + rKeywords[i] = rTable[i]; } } @@ -950,9 +950,9 @@ void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords, String SvNumberFormatter::GetKeyword( LanguageType eLnge, sal_uInt16 nIndex ) { ChangeIntl(eLnge); - const String* pTable = pFormatScanner->GetKeywords(); - if ( pTable && nIndex < NF_KEYWORD_ENTRIES_COUNT ) - return pTable[nIndex]; + const NfKeywordTable & rTable = pFormatScanner->GetKeywords(); + if ( nIndex < NF_KEYWORD_ENTRIES_COUNT ) + return rTable[nIndex]; DBG_ERROR("GetKeyword: invalid index"); return String(); @@ -2589,8 +2589,8 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, sal_Bool bLoadi CLOffset + SetIndexTable( NF_FRACTION_2, ZF_STANDARD_FRACTION+1 )); // Week of year must be appended here because of nNewExtended - const String* pKeyword = pFormatScanner->GetKeywords(); - aSingleFormatCode.Code = pKeyword[NF_KEY_WW]; + const NfKeywordTable & rKeyword = pFormatScanner->GetKeywords(); + aSingleFormatCode.Code = rKeyword[NF_KEY_WW]; ImpInsertNewStandardFormat( aSingleFormatCode, CLOffset + SetIndexTable( NF_DATE_WW, nNewExtended++ ), SV_NUMBERFORMATTER_VERSION_NF_DATE_WW ); diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 92398792077d..9b01c2ee91be 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -1149,7 +1149,7 @@ short SvNumberformat::ImpNextSymbol(String& rString, xub_StrLen nLen = rString.Len(); ScanState eState = SsStart; sSymbol.Erase(); - const String* pKeywords = rScan.GetKeywords(); + const NfKeywordTable & rKeywords = rScan.GetKeywords(); while (nPos < nLen && eState != SsStop) { cToken = rString.GetChar(nPos); @@ -1267,9 +1267,9 @@ short SvNumberformat::ImpNextSymbol(String& rString, BRACKET_SYMBOLTYPE_DBNUM1 - (cDBNum - '1')); eState = SsGetPrefix; } - else if (cUpper == pKeywords[NF_KEY_H].GetChar(0) || // H - cUpper == pKeywords[NF_KEY_MI].GetChar(0) || // M - cUpper == pKeywords[NF_KEY_S].GetChar(0) ) // S + else if (cUpper == rKeywords[NF_KEY_H].GetChar(0) || // H + cUpper == rKeywords[NF_KEY_MI].GetChar(0) || // M + cUpper == rKeywords[NF_KEY_S].GetChar(0) ) // S { sSymbol += cToken; eState = SsGetTime; @@ -1306,9 +1306,9 @@ short SvNumberformat::ImpNextSymbol(String& rString, else { sal_Unicode cUpper = rChrCls().toUpper( rString, nPos-1, 1 ).GetChar(0); - if (cUpper == pKeywords[NF_KEY_H].GetChar(0) || // H - cUpper == pKeywords[NF_KEY_MI].GetChar(0) || // M - cUpper == pKeywords[NF_KEY_S].GetChar(0) ) // S + if (cUpper == rKeywords[NF_KEY_H].GetChar(0) || // H + cUpper == rKeywords[NF_KEY_MI].GetChar(0) || // M + cUpper == rKeywords[NF_KEY_S].GetChar(0) ) // S { if (cLetter == cToken) { @@ -4230,10 +4230,10 @@ String SvNumberformat::GetMappedFormatstring( const String& rColorName = NumFor[n].GetColorName(); if ( rColorName.Len() ) { - const String* pKey = rScan.GetKeywords() + NF_KEY_FIRSTCOLOR; - for ( int j=NF_KEY_FIRSTCOLOR; j<=NF_KEY_LASTCOLOR; j++, pKey++ ) + const NfKeywordTable & rKey = rScan.GetKeywords(); + for ( int j=NF_KEY_FIRSTCOLOR; j<=NF_KEY_LASTCOLOR; j++ ) { - if ( *pKey == rColorName ) + if ( rKey[j] == rColorName ) { aPrefix += '['; aPrefix += rKeywords[j]; diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx index 000649a6de80..83dbd512a4e2 100644 --- a/svl/source/numbers/zforscan.cxx +++ b/svl/source/numbers/zforscan.cxx @@ -473,10 +473,10 @@ void ImpSvNumberformatScan::ChangeStandardPrec(sal_uInt16 nPrec) Color* ImpSvNumberformatScan::GetColor(String& sStr) { String sString = pFormatter->GetCharClass()->upper(sStr); - const String* pKeyword = GetKeywords(); + const NfKeywordTable & rKeyword = GetKeywords(); size_t i = 0; while (i < NF_MAX_DEFAULT_COLORS && - sString != pKeyword[NF_KEY_FIRSTCOLOR+i] ) + sString != rKeyword[NF_KEY_FIRSTCOLOR+i] ) i++; if ( i >= NF_MAX_DEFAULT_COLORS ) { @@ -492,7 +492,7 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr) Color* pResult = NULL; if (i >= NF_MAX_DEFAULT_COLORS) { - const String& rColorWord = pKeyword[NF_KEY_COLOR]; + const String& rColorWord = rKeyword[NF_KEY_COLOR]; xub_StrLen nPos = sString.Match(rColorWord); if (nPos > 0) { @@ -529,7 +529,7 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr) pFormatter->ChangeIntl(eTmpLnge); } else - sStr = pKeyword[NF_KEY_FIRSTCOLOR+i]; + sStr = rKeyword[NF_KEY_FIRSTCOLOR+i]; pResult = &(StandardColor[i]); } @@ -540,16 +540,16 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr) short ImpSvNumberformatScan::GetKeyWord( const String& sSymbol, xub_StrLen nPos ) { String sString = pFormatter->GetCharClass()->toUpper( sSymbol, nPos, sSymbol.Len() - nPos ); - const String* pKeyword = GetKeywords(); + const NfKeywordTable & rKeyword = GetKeywords(); // #77026# for the Xcl perverts: the GENERAL keyword is recognized anywhere - if ( sString.Search( pKeyword[NF_KEY_GENERAL] ) == 0 ) + if ( sString.Search( rKeyword[NF_KEY_GENERAL] ) == 0 ) return NF_KEY_GENERAL; //! MUST be a reverse search to find longer strings first short i = NF_KEYWORD_ENTRIES_COUNT-1; sal_Bool bFound = sal_False; for ( ; i > NF_KEY_LASTKEYWORD_SO5; --i ) { - bFound = sString.Search(pKeyword[i]) == 0; + bFound = sString.Search(rKeyword[i]) == 0; if ( bFound ) { break; @@ -559,15 +559,15 @@ short ImpSvNumberformatScan::GetKeyWord( const String& sSymbol, xub_StrLen nPos if ( !bFound ) { // skip the gap of colors et al between new and old keywords and search on i = NF_KEY_LASTKEYWORD; - while ( i > 0 && sString.Search(pKeyword[i]) != 0 ) + while ( i > 0 && sString.Search(rKeyword[i]) != 0 ) i--; - if ( i > NF_KEY_LASTOLDKEYWORD && sString != pKeyword[i] ) + if ( i > NF_KEY_LASTOLDKEYWORD && sString != rKeyword[i] ) { // found something, but maybe it's something else? // e.g. new NNN is found in NNNN, for NNNN we must search on short j = i - 1; - while ( j > 0 && sString.Search(pKeyword[j]) != 0 ) + while ( j > 0 && sString.Search(rKeyword[j]) != 0 ) j--; - if ( j && pKeyword[j].Len() > pKeyword[i].Len() ) + if ( j && rKeyword[j].Len() > rKeyword[i].Len() ) return j; } } diff --git a/svl/source/numbers/zforscan.hxx b/svl/source/numbers/zforscan.hxx index 9b04921cb7f4..a1372866a46e 100644 --- a/svl/source/numbers/zforscan.hxx +++ b/svl/source/numbers/zforscan.hxx @@ -66,7 +66,7 @@ public: const LocaleDataWrapper& GetLoc() const { return *pFormatter->GetLocaleData(); } CalendarWrapper& GetCal() const { return *pFormatter->GetCalendar(); } - const String* GetKeywords() const + const NfKeywordTable & GetKeywords() const { if ( bKeywordsNeedInit ) InitKeywords(); diff --git a/svl/source/undo/undo.cxx b/svl/source/undo/undo.cxx index d784d1bd19f8..5e1e49f397b2 100644 --- a/svl/source/undo/undo.cxx +++ b/svl/source/undo/undo.cxx @@ -706,7 +706,7 @@ sal_uInt16 SfxUndoManager::GetUndoActionId() const DBG_ASSERT( m_pData->pActUndoArray->nCurUndoAction > 0, "svl::SfxUndoManager::GetUndoActionId(), illegal id!" ); if ( m_pData->pActUndoArray->nCurUndoAction == 0 ) - return NULL; + return 0; return m_pData->pActUndoArray->aUndoActions[m_pData->pActUndoArray->nCurUndoAction-1].pAction->GetId(); } |