[Libreoffice-commits] core.git: include/svl svl/source

Eike Rathke erack at redhat.com
Mon Mar 13 14:08:55 UTC 2017


 include/svl/zformat.hxx         |    7 ++++---
 svl/source/numbers/zforlist.cxx |   17 +++++++++--------
 2 files changed, 13 insertions(+), 11 deletions(-)

New commits:
commit b306f535c0f76820dfe2cd221603def8a079f159
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Mar 13 15:06:14 2017 +0100

    force SvNumberformat::FormatterPrivateAccess for Get/SetLastInsertKey
    
    ... so only SvNumberFormatter can use it, as intended.
    
    Change-Id: I91875dfd00d1f83b3ae988bda922782336489f73

diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx
index cfb3e3a..85250ac 100644
--- a/include/svl/zformat.hxx
+++ b/include/svl/zformat.hxx
@@ -226,10 +226,11 @@ public:
     sal_uInt16 GetFormatIntegerDigits() const { return NumFor[0].Info().nCntPre; }
 
     //! Read/write access on a special sal_uInt16 component, may only be used on the
-    //! standard format 0, 5000, ... and only by the number formatter!
-    sal_uInt16 GetLastInsertKey() const
+    //! standard format 0, 10000, ... and only by the number formatter!
+    struct FormatterPrivateAccess { friend SvNumberFormatter; private: FormatterPrivateAccess() {} };
+    sal_uInt16 GetLastInsertKey( const FormatterPrivateAccess& ) const
         { return NumFor[0].Info().nThousand; }
-    void SetLastInsertKey(sal_uInt16 nKey)
+    void SetLastInsertKey( sal_uInt16 nKey, const FormatterPrivateAccess& )
         { NumFor[0].Info().nThousand = nKey; }
 
     //! Only onLoad: convert from stored to current system language/country
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index 9266c43..2947773 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -514,7 +514,7 @@ void SvNumberFormatter::ReplaceSystemCL( LanguageType eOldLanguage )
         delete pOldEntry;
     }
     pFormatScanner->SetConvertMode(false);
-    pStdFormat->SetLastInsertKey( sal_uInt16(nLastKey - nCLOffset) );
+    pStdFormat->SetLastInsertKey( sal_uInt16(nLastKey - nCLOffset), SvNumberformat::FormatterPrivateAccess() );
 
     // append new system additional formats
     css::uno::Reference< css::i18n::XNumberFormatCode > xNFC = i18n::NumberFormatMapper::create( m_xContext );
@@ -605,7 +605,7 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
         else
         {
             SvNumberformat* pStdFormat = GetFormatEntry(CLOffset + ZF_STANDARD);
-            sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey();
+            sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey( SvNumberformat::FormatterPrivateAccess() );
             if (nPos+1 - CLOffset >= SV_COUNTRY_LANGUAGE_OFFSET)
             {
                 SAL_WARN( "svl.numbers", "SvNumberFormatter::PutEntry: too many formats for CL");
@@ -620,7 +620,7 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
             {
                 bCheck = true;
                 nKey = nPos+1;
-                pStdFormat->SetLastInsertKey((sal_uInt16) (nKey-CLOffset));
+                pStdFormat->SetLastInsertKey((sal_uInt16) (nKey-CLOffset), SvNumberformat::FormatterPrivateAccess());
             }
         }
     }
@@ -2265,7 +2265,7 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio
         }
         pStdFormat->SetType( css::util::NumberFormat::NUMBER );
         pStdFormat->SetStandard();
-        pStdFormat->SetLastInsertKey( SV_MAX_ANZ_STANDARD_FORMATE );
+        pStdFormat->SetLastInsertKey( SV_MAX_ANZ_STANDARD_FORMATE, SvNumberformat::FormatterPrivateAccess() );
     }
     else
     {
@@ -2683,7 +2683,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset,
         SAL_WARN( "svl.numbers", "ImpGenerateAdditionalFormats: no GENERAL format" );
         return ;
     }
-    sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey();
+    sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey( SvNumberformat::FormatterPrivateAccess() );
     css::lang::Locale aLocale = GetLanguageTag().getLocale();
     sal_Int32 j;
 
@@ -2751,7 +2751,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset,
         }
     }
 
-    pStdFormat->SetLastInsertKey( (sal_uInt16)(nPos - CLOffset) );
+    pStdFormat->SetLastInsertKey( (sal_uInt16)(nPos - CLOffset), SvNumberformat::FormatterPrivateAccess() );
 }
 
 
@@ -3114,7 +3114,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
             else
             {
                 SvNumberformat* pStdFormat = GetFormatEntry(nCLOffset + ZF_STANDARD);
-                sal_uInt32 nPos = nCLOffset + pStdFormat->GetLastInsertKey();
+                sal_uInt32 nPos = nCLOffset + pStdFormat->GetLastInsertKey( SvNumberformat::FormatterPrivateAccess() );
                 nNewKey = nPos+1;
                 if (nNewKey - nCLOffset >= SV_COUNTRY_LANGUAGE_OFFSET)
                 {
@@ -3128,7 +3128,8 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
                 }
                 else
                 {
-                    pStdFormat->SetLastInsertKey((sal_uInt16) (nNewKey - nCLOffset));
+                    pStdFormat->SetLastInsertKey((sal_uInt16) (nNewKey - nCLOffset),
+                            SvNumberformat::FormatterPrivateAccess());
                 }
             }
             if (nNewKey != nOldKey)                     // new index


More information about the Libreoffice-commits mailing list