[Libreoffice-commits] core.git: Branch 'distro/suse/suse-4.0' - sal/inc sal/rtl sal/util sd/inc sd/source svl/inc svl/source

Stephan Bergmann sbergman at redhat.com
Thu Feb 20 04:46:13 CET 2014


 sal/inc/rtl/string.h         |   18 ------------
 sal/inc/rtl/string.hxx       |   15 ----------
 sal/inc/rtl/ustring.h        |   18 ------------
 sal/inc/rtl/ustring.hxx      |   15 ----------
 sal/rtl/source/strtmpl.cxx   |   64 +++----------------------------------------
 sal/util/sal.map             |    6 ----
 sd/inc/sdpage.hxx            |    2 -
 sd/source/core/sdpage2.cxx   |    4 +-
 sd/source/core/stlpool.cxx   |    2 -
 svl/inc/svl/itemset.hxx      |    2 -
 svl/source/items/itemset.cxx |    4 +-
 11 files changed, 12 insertions(+), 138 deletions(-)

New commits:
commit 98554820e6109c3e3f4ea83bf036d9f20ef1685e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Feb 20 09:23:20 2014 +0530

    Stick to a single O[U]String hash function
    
    Ported from: 042725a5dadc9f2c6368ca451b6d20046129b8af
    
    Change-Id: I87f11d9101e21bdadaaffb719a762d0030639cb1

diff --git a/sal/inc/rtl/string.h b/sal/inc/rtl/string.h
index 3def4c1..9f3c69a 100644
--- a/sal/inc/rtl/string.h
+++ b/sal/inc/rtl/string.h
@@ -277,24 +277,6 @@ SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_hashCode(
 SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_hashCode_WithLength(
         const sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
 
-/** Return a hash code (64bit) for a string.
-
-    It is not allowed to store the hash code persistently, because later
-    versions could return other hash codes.
-
-    @param str
-    a string.  Need not be null-terminated, but must be at least as long as
-    the specified len.
-
-    @param len
-    the length of the string.
-
-    @return
-    a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_uInt64 SAL_CALL rtl_str_hashCode64_WithLength(
-        const sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
 /** Search for the first occurrence of a character within a string.
 
     The string must be null-terminated.
diff --git a/sal/inc/rtl/string.hxx b/sal/inc/rtl/string.hxx
index e9a9342..cbd4b9a 100644
--- a/sal/inc/rtl/string.hxx
+++ b/sal/inc/rtl/string.hxx
@@ -866,21 +866,6 @@ public:
     }
 
     /**
-      Returns a 64bit hash of the string data.
-      This hashes the entire data, while hashCode would do sampling for larger string sizes.
-
-      @return   a hash code value of the string data
-
-      @see hashCode() for simple hashes
-
-      @since LibreOffice 4.3
-    */
-    sal_uInt64 hashCode64() const SAL_THROW(())
-    {
-        return rtl_str_hashCode64_WithLength( pData->buffer, pData->length );
-    }
-
-    /**
       Returns a hashcode for this string.
 
       @return   a hash code value for this object.
diff --git a/sal/inc/rtl/ustring.h b/sal/inc/rtl/ustring.h
index 24a7dd8..0352e59 100644
--- a/sal/inc/rtl/ustring.h
+++ b/sal/inc/rtl/ustring.h
@@ -551,24 +551,6 @@ SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_hashCode(
 SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_hashCode_WithLength(
         const sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
 
-/** Return a hash code (64bit) for a string.
-
-    It is not allowed to store the hash code persistently, because later
-    versions could return other hash codes.
-
-    @param str
-    a string.  Need not be null-terminated, but must be at least as long as
-    the specified len.
-
-    @param len
-    the length of the string.
-
-    @return
-    a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_uInt64 SAL_CALL rtl_ustr_hashCode64_WithLength(
-        const sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
 /** Search for the first occurrence of a character within a string.
 
     The string must be null-terminated.
diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 1f75101..36295116 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -1168,21 +1168,6 @@ public:
     }
 
     /**
-      Returns a 64bit hash of the string data.
-      This hashes the entire data, while hashCode would do sampling for larger string sizes.
-
-      @return   a hash code value of the string data
-
-      @see hashCode() for simple hashes
-
-      @since LibreOffice 4.3
-    */
-    sal_uInt64 hashCode64() const SAL_THROW(())
-    {
-        return rtl_ustr_hashCode64_WithLength( pData->buffer, pData->length );
-    }
-
-    /**
       Returns a hashcode for this string.
 
       @return   a hash code value for this object.
diff --git a/sal/rtl/source/strtmpl.cxx b/sal/rtl/source/strtmpl.cxx
index 9b8fa51..3ba2eaf 100644
--- a/sal/rtl/source/strtmpl.cxx
+++ b/sal/rtl/source/strtmpl.cxx
@@ -272,72 +272,18 @@ sal_Int32 SAL_CALL IMPL_RTL_STRNAME( hashCode )( const IMPL_RTL_STRCODE* pStr )
 
 /* ----------------------------------------------------------------------- */
 
-sal_uInt64 SAL_CALL IMPL_RTL_STRNAME( hashCode64_WithLength )( const IMPL_RTL_STRCODE* pStr,
-                                                               sal_Int32 nLen )
-    SAL_THROW_EXTERN_C()
-{
-    sal_uInt64 nHash = 0;
-
-    for( sal_Int32 i = 0; i < nLen; i++ )
-        nHash = (nHash << 5) - nHash + *pStr++;
-    return nHash;
-}
-
-/* ----------------------------------------------------------------------- */
-
 sal_Int32 SAL_CALL IMPL_RTL_STRNAME( hashCode_WithLength )( const IMPL_RTL_STRCODE* pStr,
                                                             sal_Int32 nLen )
     SAL_THROW_EXTERN_C()
 {
-    sal_Int32 h = nLen;
-
-    if ( nLen < 256 )
-    {
-        while ( nLen > 0 )
-        {
-            h = (h*37) + IMPL_RTL_USTRCODE( *pStr );
-            pStr++;
-            nLen--;
-        }
-    }
-    else
+    sal_uInt32 h = static_cast<sal_uInt32>(nLen);
+    while ( nLen > 0 )
     {
-        sal_Int32               nSkip;
-        const IMPL_RTL_STRCODE* pEndStr = pStr+nLen-5;
-
-        /* only sample some characters */
-        /* the first 3, some characters between, and the last 5 */
-        h = (h*39) + IMPL_RTL_USTRCODE( *pStr );
+        h = (h*37U) + IMPL_RTL_USTRCODE( *pStr );
         pStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pStr );
-        pStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pStr );
-        pStr++;
-
-        if ( nLen < 32 )
-            nSkip = nLen / 4;
-        else
-            nSkip = nLen / 8;
-        nLen -= 8;
-        while ( nLen > 0 )
-        {
-            h = (h*39) + IMPL_RTL_USTRCODE( *pStr );
-            pStr += nSkip;
-            nLen -= nSkip;
-        }
-
-        h = (h*39) + IMPL_RTL_USTRCODE( *pEndStr );
-        pEndStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pEndStr );
-        pEndStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pEndStr );
-        pEndStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pEndStr );
-        pEndStr++;
-        h = (h*39) + IMPL_RTL_USTRCODE( *pEndStr );
+        nLen--;
     }
-
-    return h;
+    return static_cast<sal_Int32>(h);
 }
 
 /* ----------------------------------------------------------------------- */
diff --git a/sal/util/sal.map b/sal/util/sal.map
index 7ab421f..ade61cd 100644
--- a/sal/util/sal.map
+++ b/sal/util/sal.map
@@ -652,12 +652,6 @@ LIBO_UDK_4.0 { # symbols available in >= LibO 4.0
         rtl_uString_newReplaceAllFromIndex;
 } LIBO_UDK_3.6;
 
-LIBO_UDK_4.3 { #symbols available in >= LibO 4.3
-    global:
-         rtl_str_hashCode64_WithLength;
-         rtl_ustr_hashCode64_WithLength;
-} LIBO_UDK_4.2;
-
 PRIVATE_1.0 {
     global:
         osl_detail_ObjectRegistry_storeAddresses;
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index 0c99930..422b667 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -382,7 +382,7 @@ public:
     void removeAnnotation( const ::com::sun::star::uno::Reference< ::com::sun::star::office::XAnnotation >& xAnnotation );
     const sd::AnnotationVector& getAnnotations() const { return maAnnotations; }
     bool hasAnnotations() const { return !maAnnotations.empty(); }
-    sal_uInt64 getHash() const;
+    sal_Int32 getHash() const;
     virtual OString stringify() const;
 
 
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 37b16e2..b1475e6 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -599,9 +599,9 @@ OString SdPage::stringify() const
     return aString.makeStringAndClear();
 }
 
-sal_uInt64 SdPage::getHash() const
+sal_Int32 SdPage::getHash() const
 {
-    return stringify().hashCode64();
+    return stringify().hashCode();
 }
 
 
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index bf8d0c3..ea4d5cf 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -674,7 +674,7 @@ void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily
             SfxStyleSheetBase* pExistingSheet = Find(aName, eFamily);
             if( pExistingSheet && !rRenameSuffix.isEmpty() )
             {
-                sal_uInt64 nHash = xSheet->GetItemSet().getHash();
+                sal_Int32 nHash = xSheet->GetItemSet().getHash();
                 if( pExistingSheet->GetItemSet().getHash() != nHash )
                 {
                     OUString aTmpName = aName + rRenameSuffix;
diff --git a/svl/inc/svl/itemset.hxx b/svl/inc/svl/itemset.hxx
index 89ad83d..13b6988 100644
--- a/svl/inc/svl/itemset.hxx
+++ b/svl/inc/svl/itemset.hxx
@@ -151,7 +151,7 @@ public:
     virtual SvStream &          Store( SvStream &, bool bDirect = false ) const;
 
     virtual int                 operator==(const SfxItemSet &) const;
-    virtual sal_uInt64          getHash() const;
+    sal_Int32                   getHash() const;
     virtual OString             stringify() const;
 };
 
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index 0037552..aa1a0ac 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -2054,9 +2054,9 @@ SfxItemSet *SfxAllItemSet::Clone(sal_Bool bItems, SfxItemPool *pToPool ) const
 
 // -----------------------------------------------------------------------
 
-sal_uInt64 SfxItemSet::getHash() const
+sal_Int32 SfxItemSet::getHash() const
 {
-    return stringify().hashCode64();
+    return stringify().hashCode();
 }
 
 // -----------------------------------------------------------------------


More information about the Libreoffice-commits mailing list