[Libreoffice-commits] core.git: include/o3tl include/tools rsc/inc rsc/source tools/source

Noel Grandin noel.grandin at collabora.co.uk
Mon Feb 13 09:38:41 UTC 2017


 include/o3tl/strong_int.hxx      |   74 ++++++++++++++++
 include/tools/unqidx.hxx         |    6 -
 rsc/inc/rscclobj.hxx             |    8 -
 rsc/inc/rscdef.hxx               |  179 ++++++++++++++++++++-------------------
 rsc/inc/rscpar.hxx               |   13 +-
 rsc/inc/rscrsc.hxx               |    4 
 rsc/source/parser/rscdb.cxx      |   10 +-
 rsc/source/parser/rscpar.cxx     |    4 
 rsc/source/res/rscclobj.cxx      |    4 
 rsc/source/rsc/rsc.cxx           |    4 
 rsc/source/tools/rscdef.cxx      |   12 +-
 tools/source/memtools/unqidx.cxx |    2 
 tools/source/ref/pstm.cxx        |    2 
 13 files changed, 203 insertions(+), 119 deletions(-)

New commits:
commit e2e76df7e48fb77f1e802f57c7d9a22eb8c74c5a
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Thu Feb 9 11:29:05 2017 +0200

    create strong_int template and use it in tools::UniqueIndex
    
    an experiment to see how useful a strong_int template works out
    
    Change-Id: Ib77700350f0fa3b018a1926233adf7a40d728d16
    Reviewed-on: https://gerrit.libreoffice.org/34072
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/o3tl/strong_int.hxx b/include/o3tl/strong_int.hxx
new file mode 100644
index 0000000..7f24714
--- /dev/null
+++ b/include/o3tl/strong_int.hxx
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_O3TL_STRONG_TYPEDEF_HXX
+#define INCLUDED_O3TL_STRONG_TYPEDEF_HXX
+
+#include <sal/config.h>
+
+namespace o3tl
+{
+
+///
+/// Wrap up an integer type so that we prevent accidental conversion to other integer types.
+///
+/// e.g.
+///   struct MyIntTag {};
+///   typedef o3tl::strong_int<unsigned, MyIntTag> MyInt;
+///
+/// \param UNDERLYING_TYPE the underlying scalar type
+/// \param PHANTOM_TYPE    a type tag, used to distinguish this instantion of the template
+///                        from other instantiantions with the same UNDERLYING_TYPE.
+///
+template <typename UNDERLYING_TYPE, typename PHANTOM_TYPE>
+struct strong_int
+{
+public:
+    strong_int(UNDERLYING_TYPE value) : m_value(value) {}
+    strong_int() : m_value(0) {}
+
+    explicit operator UNDERLYING_TYPE() const { return m_value; }
+    explicit operator bool() const { return m_value != 0; }
+    UNDERLYING_TYPE get() const { return m_value; }
+
+    bool operator<(strong_int const & other) const { return m_value < other.m_value; }
+    bool operator<=(strong_int const & other) const { return m_value <= other.m_value; }
+    bool operator>(strong_int const & other) const { return m_value > other.m_value; }
+    bool operator>=(strong_int const & other) const { return m_value >= other.m_value; }
+    bool operator==(strong_int const & other) const { return m_value == other.m_value; }
+    bool operator!=(strong_int const & other) const { return m_value != other.m_value; }
+    strong_int& operator++() { ++m_value; return *this; }
+    strong_int operator++(int) { UNDERLYING_TYPE nOldValue = m_value; ++m_value; return strong_int(nOldValue); }
+
+private:
+    UNDERLYING_TYPE m_value;
+};
+
+template <typename UT, typename PT>
+strong_int<UT,PT> operator+(strong_int<UT,PT> const & lhs, strong_int<UT,PT> const & rhs)
+{
+    return strong_int<UT,PT>(lhs.get() + rhs.get());
+}
+
+
+}; // namespace o3tl
+
+#endif /* INCLUDED_O3TL_STRONG_TYPEDEF_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/tools/unqidx.hxx b/include/tools/unqidx.hxx
index 2c05432..1ea7d47 100644
--- a/include/tools/unqidx.hxx
+++ b/include/tools/unqidx.hxx
@@ -21,13 +21,15 @@
 
 #include <sal/types.h>
 #include <tools/toolsdllapi.h>
+#include <o3tl/strong_int.hxx>
 #include <map>
 
 class SAL_WARN_UNUSED TOOLS_DLLPUBLIC UniqueIndexImpl
 {
 public:
-    typedef sal_uInt32 Index;
-    static Index const IndexNotFound = SAL_MAX_UINT32;
+    struct IndexTagType {};
+    typedef o3tl::strong_int<sal_uInt32, IndexTagType> Index;
+    static Index const IndexNotFound;// = Index(SAL_MAX_UINT32);
 
 private:
     std::map<Index, void*> maMap;
diff --git a/rsc/inc/rscclobj.hxx b/rsc/inc/rscclobj.hxx
index 7bbc5f1..c8adca5 100644
--- a/rsc/inc/rscclobj.hxx
+++ b/rsc/inc/rscclobj.hxx
@@ -28,18 +28,18 @@ class ObjNode : public IdNode
 {
     RscId       aRscId; // Id der Resource
     CLASS_DATA  pRscObj;// pointer to a resourceobject
-    sal_uLong   lFileKey;// Dateischluessel
+    RscFileTab::Index lFileKey;// Dateischluessel
 protected:
     using NameNode::Search;
 
 public:
     using NameNode::Insert;
 
-                ObjNode( const RscId & rId, CLASS_DATA pData, sal_uLong lKey );
-    ObjNode *   DelObjNode( RscTop * pClass, sal_uLong lFileKey );
+                ObjNode( const RscId & rId, CLASS_DATA pData, RscFileTab::Index lKey );
+    ObjNode *   DelObjNode( RscTop * pClass, RscFileTab::Index lFileKey );
     sal_uInt32  GetId() const override;
     const RscId& GetRscId() const { return aRscId; }
-    sal_uLong   GetFileKey() const { return lFileKey; };
+    RscFileTab::Index GetFileKey() const { return lFileKey; };
     ObjNode*    Search( const RscId &rName ) const //< search the index in the b-tree
                     {
                         return static_cast<ObjNode *>(IdNode::Search( rName.GetNumber() ));
diff --git a/rsc/inc/rscdef.hxx b/rsc/inc/rscdef.hxx
index e336fac..1aeeead 100644
--- a/rsc/inc/rscdef.hxx
+++ b/rsc/inc/rscdef.hxx
@@ -113,67 +113,8 @@ public:
     bool    IsId() const { return !aExp.IsNothing(); }
 };
 
-/*********** R s c D e f i n e *******************************************/
-class RscDefine : public NameNode
-{
-friend class RscFileTab;
-friend class RscDefineList;
-friend class RscDefTree;
-friend class RscExpression;
-friend class RscId;
-
-    sal_uLong   lFileKey;   // file the define belongs to
-    sal_uInt32  nRefCount;  // reference count to this object
-    sal_Int32   lId;        // identifier
-    RscExpression * pExp;   // expression
-    OString     m_aName;
-
-    virtual COMPARE Compare( const NameNode * ) const override;
-    virtual COMPARE Compare( const void * ) const override;
-
-protected:
-
-    RscDefine( sal_uLong lFileKey, const OString& rDefName,
-                           sal_Int32 lDefId );
-    RscDefine( sal_uLong lFileKey, const OString& rDefName,
-                           RscExpression * pExpression );
-    virtual ~RscDefine() override;
-
-    void          IncRef() { nRefCount++; }
-    void          DecRef();
-    void          DefineToNumber();
-
-public:
-    sal_uLong      GetFileKey() const { return lFileKey; }
-    void           Evaluate();
-    sal_Int32      GetNumber() const  { return lId;      }
-    RscDefine*     Search( const char * ) const;
-    const OString& GetName() const { return m_aName; }
-};
-
 typedef ::std::vector< RscDefine* > RscSubDefList;
 
-class RscDefineList
-{
-friend class RscFile;
-friend class RscFileTab;
-private:
-    RscSubDefList   maList;
-                // pExpression always belongs to the list
-    RscDefine * New( sal_uLong lFileKey, const OString& rDefName,
-                     sal_Int32 lDefId, size_t lPos );
-    RscDefine * New( sal_uLong lFileKey, const OString& rDefName,
-                     RscExpression * pExpression, size_t lPos );
-    bool        Remove();
-    size_t      GetPos( RscDefine* item )
-                    {
-                        for ( size_t i = 0, n = maList.size(); i < n; ++i )
-                            if ( maList[ i ] == item )
-                                return i;
-                        return size_t(-1);
-                    }
-};
-
 /*********** R s c E x p r e s s i o n ***********************************/
 class RscExpression
 {
@@ -190,37 +131,10 @@ public:
 };
 
 /********************** R S C F I L E ************************************/
-class RscDepend
-{
-    sal_uLong   lKey;
-public:
-                RscDepend( sal_uLong lIncKey ){ lKey = lIncKey; };
-    sal_uLong   GetFileKey(){ return lKey; }
-};
+class RscDepend;
 
 typedef ::std::vector< RscDepend* > RscDependList;
 
-// table containing al file names
-class RscFile
-{
-friend class RscFileTab;
-    bool            bIncFile;   // whether it is an include file
-public:
-    bool            bLoaded;    // whether the file is loaded
-    bool            bScanned;   // whether the file searches for include
-    OString         aFileName;  // file name
-    OString         aPathName;  // file path and name
-    RscDefineList   aDefLst;    // list of defines
-    RscDependList   aDepLst;    // list of depend
-
-                    RscFile();
-                    ~RscFile();
-    void            InsertDependFile( sal_uLong lDepFile );
-    bool            Depend( sal_uLong lDepend, sal_uLong lFree );
-    void            SetIncFlag(){ bIncFile = true; };
-    bool            IsIncFile(){  return bIncFile; };
-};
-
 class RscDefTree
 {
     RscDefine * pDefRoot;
@@ -234,6 +148,8 @@ public:
     void        Remove( RscDefine * pDef );
 };
 
+class RscFile;
+
 class RscFileTab : public UniqueIndex<RscFile>
 {
 public:
@@ -271,6 +187,95 @@ public:
     RscFile *   GetFile( Index lFileKey ){ return Get( lFileKey ); }
 };
 
+class RscDepend
+{
+    RscFileTab::Index   lKey;
+public:
+                RscDepend( RscFileTab::Index lIncKey ){ lKey = lIncKey; };
+    RscFileTab::Index   GetFileKey(){ return lKey; }
+};
+
+class RscDefineList
+{
+friend class RscFile;
+friend class RscFileTab;
+private:
+    RscSubDefList   maList;
+                // pExpression always belongs to the list
+    RscDefine * New( RscFileTab::Index lFileKey, const OString& rDefName,
+                     sal_Int32 lDefId, size_t lPos );
+    RscDefine * New( RscFileTab::Index lFileKey, const OString& rDefName,
+                     RscExpression * pExpression, size_t lPos );
+    bool        Remove();
+    size_t      GetPos( RscDefine* item )
+                    {
+                        for ( size_t i = 0, n = maList.size(); i < n; ++i )
+                            if ( maList[ i ] == item )
+                                return i;
+                        return size_t(-1);
+                    }
+};
+
+// table containing all file names
+class RscFile
+{
+friend class RscFileTab;
+    bool            bIncFile;   // whether it is an include file
+public:
+    bool            bLoaded;    // whether the file is loaded
+    bool            bScanned;   // whether the file searches for include
+    OString         aFileName;  // file name
+    OString         aPathName;  // file path and name
+    RscDefineList   aDefLst;    // list of defines
+    RscDependList   aDepLst;    // list of depend
+
+                    RscFile();
+                    ~RscFile();
+    void            InsertDependFile( RscFileTab::Index lDepFile );
+    bool            Depend( RscFileTab::Index lDepend, RscFileTab::Index lFree );
+    void            SetIncFlag(){ bIncFile = true; };
+    bool            IsIncFile(){  return bIncFile; };
+};
+
+/*********** R s c D e f i n e *******************************************/
+class RscDefine : public NameNode
+{
+friend class RscFileTab;
+friend class RscDefineList;
+friend class RscDefTree;
+friend class RscExpression;
+friend class RscId;
+
+    RscFileTab::Index lFileKey;   // file the define belongs to
+    sal_uInt32  nRefCount;  // reference count to this object
+    sal_Int32   lId;        // identifier
+    RscExpression * pExp;   // expression
+    OString     m_aName;
+
+    virtual COMPARE Compare( const NameNode * ) const override;
+    virtual COMPARE Compare( const void * ) const override;
+
+protected:
+
+    RscDefine( RscFileTab::Index lFileKey, const OString& rDefName,
+                           sal_Int32 lDefId );
+    RscDefine( RscFileTab::Index lFileKey, const OString& rDefName,
+                           RscExpression * pExpression );
+    virtual ~RscDefine() override;
+
+    void          IncRef() { nRefCount++; }
+    void          DecRef();
+    void          DefineToNumber();
+
+public:
+    RscFileTab::Index GetFileKey() const { return lFileKey; }
+    void           Evaluate();
+    sal_Int32      GetNumber() const  { return lId;      }
+    RscDefine*     Search( const char * ) const;
+    const OString& GetName() const { return m_aName; }
+};
+
+
 #endif // INCLUDED_RSC_INC_RSCDEF_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/rsc/inc/rscpar.hxx b/rsc/inc/rscpar.hxx
index 695ea6e..265158b 100644
--- a/rsc/inc/rscpar.hxx
+++ b/rsc/inc/rscpar.hxx
@@ -21,6 +21,7 @@
 
 #include <rsctools.hxx>
 #include <rscerror.h>
+#include <rscdef.hxx>
 #include <tools/solar.h>
 
 class RscTypCont;
@@ -33,8 +34,8 @@ class RscFileInst
     sal_uInt32          nErrorLine; // Zeile des ersten Fehlers
     sal_uInt32          nErrorPos;  // Position des ersten Fehlers
     sal_uInt32          nLineNo;    // Zeile in der Eingabedatei
-    sal_uLong           lFileIndex; // Index auf Eingabedatei
-    sal_uLong           lSrcIndex;  // Index auf Basisdatei
+    RscFileTab::Index   lFileIndex; // Index auf Eingabedatei
+    RscFileTab::Index   lSrcIndex;  // Index auf Basisdatei
     FILE *              fInputFile; // Eingabedatei
     char *              pInput;     // Lesepuffer
     static const sal_uInt32 nInputBufLen = READBUFFER_MAX; // Laenge des Lesepuffers
@@ -49,12 +50,12 @@ class RscFileInst
 public:
     RscTypCont *        pTypCont;
     void        Init();  // ctor initialisieren
-                RscFileInst( RscTypCont * pTC, sal_uLong lIndexSrc,
-                         sal_uLong lFileIndex, FILE * fFile );
+                RscFileInst( RscTypCont * pTC, RscFileTab::Index lIndexSrc,
+                         RscFileTab::Index lFileIndex, FILE * fFile );
                 ~RscFileInst();
     bool        IsEof() const { return bEof; }
-    void        SetFileIndex( sal_uLong lFIndex ) { lFileIndex = lFIndex;  }
-    sal_uLong   GetFileIndex()                { return lFileIndex;  }
+    void        SetFileIndex( RscFileTab::Index lFIndex ) { lFileIndex = lFIndex;  }
+    RscFileTab::Index GetFileIndex()                { return lFileIndex;  }
     void        SetLineNo( sal_uInt32 nLine ) { nLineNo = nLine;    }
     sal_uInt32  GetLineNo()                   { return nLineNo;     }
     sal_uInt32  GetScanPos()                  { return nScanPos;    }
diff --git a/rsc/inc/rscrsc.hxx b/rsc/inc/rscrsc.hxx
index 8f2bc6c..4dccfa9 100644
--- a/rsc/inc/rscrsc.hxx
+++ b/rsc/inc/rscrsc.hxx
@@ -88,8 +88,8 @@ public:
     ERRTYPE         Start();
 
                     // read include statements
-    ERRTYPE         IncludeParser( sal_uLong lFileKey );
-    ERRTYPE         ParseOneFile( sal_uLong lFileKey, const RscCmdLine::OutputFile* pOutputFile, const WriteRcContext* pContext );
+    ERRTYPE         IncludeParser( RscFileTab::Index lFileKey );
+    ERRTYPE         ParseOneFile( RscFileTab::Index lFileKey, const RscCmdLine::OutputFile* pOutputFile, const WriteRcContext* pContext );
     ERRTYPE         Link();
     void            EndCompile();
 };
diff --git a/rsc/source/parser/rscdb.cxx b/rsc/source/parser/rscdb.cxx
index bb0fecf..1675cc4 100644
--- a/rsc/source/parser/rscdb.cxx
+++ b/rsc/source/parser/rscdb.cxx
@@ -239,7 +239,7 @@ private:
     ERRTYPE     aError;     // contains the first field
     RscTypCont* pTypCont;
     FILE *      fOutput;    // output file
-    sal_uLong   lFileKey;   // what source file
+    RscFileTab::Index lFileKey;   // what source file
     RscTop *    pClass;
 
     RscEnumerateObj(RscTypCont* pTC, FILE* pOutputFile)
@@ -358,7 +358,7 @@ public:
             pRoot->EnumNodes( LINK( this, RscEnumerateRef, CallBackWriteRc ) );
             return aEnumObj.aError;
         }
-    ERRTYPE const & WriteSrc( sal_uLong lFileKey )
+    ERRTYPE const & WriteSrc( RscFileTab::Index lFileKey )
         {
             aEnumObj.lFileKey = lFileKey;
 
@@ -424,14 +424,14 @@ void RscTypCont::WriteSrc( FILE * fOutput, RscFileTab::Index nFileKey )
 
 class RscDel
 {
-    sal_uLong lFileKey;
+    RscFileTab::Index lFileKey;
     DECL_LINK( Delete, const NameNode&, void );
 public:
-    RscDel( RscTop * pRoot, sal_uLong lKey );
+    RscDel( RscTop * pRoot, RscFileTab::Index lKey );
 };
 
 
-inline RscDel::RscDel( RscTop * pRoot, sal_uLong lKey )
+inline RscDel::RscDel( RscTop * pRoot, RscFileTab::Index lKey )
     : lFileKey(lKey)
 {
     pRoot->EnumNodes( LINK( this, RscDel, Delete ) );
diff --git a/rsc/source/parser/rscpar.cxx b/rsc/source/parser/rscpar.cxx
index d81d3aa..4fc1b11 100644
--- a/rsc/source/parser/rscpar.cxx
+++ b/rsc/source/parser/rscpar.cxx
@@ -32,8 +32,8 @@ void RscFileInst::Init()
     bEof = false;
 }
 
-RscFileInst::RscFileInst( RscTypCont * pTC, sal_uLong lIndexSrc,
-                          sal_uLong lFIndex, FILE * fFile )
+RscFileInst::RscFileInst( RscTypCont * pTC, RscFileTab::Index lIndexSrc,
+                          RscFileTab::Index lFIndex, FILE * fFile )
     : nErrorLine(0)
     , nErrorPos(0)
 {
diff --git a/rsc/source/res/rscclobj.cxx b/rsc/source/res/rscclobj.cxx
index 80969f7..2918428 100644
--- a/rsc/source/res/rscclobj.cxx
+++ b/rsc/source/res/rscclobj.cxx
@@ -56,14 +56,14 @@ ObjNode * RefNode::GetObjNode( const RscId & rRscId )
     return nullptr;
 }
 
-ObjNode::ObjNode( const RscId & rId, CLASS_DATA pData, sal_uLong lKey )
+ObjNode::ObjNode( const RscId & rId, CLASS_DATA pData, RscFileTab::Index lKey )
     : aRscId(rId)
     , pRscObj(pData)
     , lFileKey(lKey)
 {
 }
 
-ObjNode * ObjNode::DelObjNode( RscTop * pClass, sal_uLong nFileKey )
+ObjNode * ObjNode::DelObjNode( RscTop * pClass, RscFileTab::Index nFileKey )
 {
     ObjNode * pRetNode = this;
 
diff --git a/rsc/source/rsc/rsc.cxx b/rsc/source/rsc/rsc.cxx
index 0b44a61..8ccfd83 100644
--- a/rsc/source/rsc/rsc.cxx
+++ b/rsc/source/rsc/rsc.cxx
@@ -405,7 +405,7 @@ void RscCompiler::EndCompile()
     }
 }
 
-ERRTYPE RscCompiler::IncludeParser( sal_uLong lFileKey )
+ERRTYPE RscCompiler::IncludeParser( RscFileTab::Index lFileKey )
 {
     FILE            * finput;
     RscFile         * pFName;
@@ -448,7 +448,7 @@ ERRTYPE RscCompiler::IncludeParser( sal_uLong lFileKey )
     return aError;
 }
 
-ERRTYPE RscCompiler::ParseOneFile( sal_uLong lFileKey,
+ERRTYPE RscCompiler::ParseOneFile( RscFileTab::Index lFileKey,
                                      const RscCmdLine::OutputFile* pOutputFile,
                                      const WriteRcContext* pContext )
 {
diff --git a/rsc/source/tools/rscdef.cxx b/rsc/source/tools/rscdef.cxx
index 2e2a057..4ff0216 100644
--- a/rsc/source/tools/rscdef.cxx
+++ b/rsc/source/tools/rscdef.cxx
@@ -114,7 +114,7 @@ OString RscId::GetName() const
     return aStr.makeStringAndClear();
 }
 
-RscDefine::RscDefine( sal_uLong lKey, const OString& rDefName, sal_Int32 lDefId )
+RscDefine::RscDefine( RscFileTab::Index lKey, const OString& rDefName, sal_Int32 lDefId )
     : m_aName( rDefName )
 {
     nRefCount = 0;
@@ -123,7 +123,7 @@ RscDefine::RscDefine( sal_uLong lKey, const OString& rDefName, sal_Int32 lDefId
     pExp      = nullptr;
 }
 
-RscDefine::RscDefine( sal_uLong lKey, const OString& rDefName,
+RscDefine::RscDefine( RscFileTab::Index lKey, const OString& rDefName,
                       RscExpression * pExpression  )
     : lId(0), m_aName( rDefName )
 {
@@ -192,7 +192,7 @@ COMPARE RscDefine::Compare( const void * pSearch ) const
         return EQUAL;
 }
 
-RscDefine * RscDefineList::New( sal_uLong lFileKey, const OString& rDefName,
+RscDefine * RscDefineList::New( RscFileTab::Index lFileKey, const OString& rDefName,
                                 sal_Int32 lDefId, size_t lPos )
 {
     RscDefine * pDef;
@@ -212,7 +212,7 @@ RscDefine * RscDefineList::New( sal_uLong lFileKey, const OString& rDefName,
     return pDef;
 }
 
-RscDefine * RscDefineList::New( sal_uLong lFileKey, const OString& rDefName,
+RscDefine * RscDefineList::New( RscFileTab::Index lFileKey, const OString& rDefName,
                                 RscExpression * pExpression, size_t lPos )
 {
     RscDefine * pDef;
@@ -386,7 +386,7 @@ RscFile::~RscFile()
     while( aDefLst.Remove() ) ;
 }
 
-bool RscFile::Depend( sal_uLong lDepend, sal_uLong lFree )
+bool RscFile::Depend( RscFileTab::Index lDepend, RscFileTab::Index lFree )
 {
     for ( size_t i = aDepLst.size(); i > 0; )
     {
@@ -405,7 +405,7 @@ bool RscFile::Depend( sal_uLong lDepend, sal_uLong lFree )
     return true;
 }
 
-void RscFile::InsertDependFile( sal_uLong lIncFile )
+void RscFile::InsertDependFile( RscFileTab::Index lIncFile )
 {
     for ( size_t i = 0, n = aDepLst.size(); i < n; ++i )
     {
diff --git a/tools/source/memtools/unqidx.cxx b/tools/source/memtools/unqidx.cxx
index 7a20916..e424988 100644
--- a/tools/source/memtools/unqidx.cxx
+++ b/tools/source/memtools/unqidx.cxx
@@ -19,6 +19,8 @@
 
 #include <tools/unqidx.hxx>
 
+UniqueIndexImpl::Index const UniqueIndexImpl::IndexNotFound(SAL_MAX_UINT32);
+
 UniqueIndexImpl::Index UniqueIndexImpl::Insert( void* p )
 {
     // NULL-Pointer not allowed
diff --git a/tools/source/ref/pstm.cxx b/tools/source/ref/pstm.cxx
index 6c1015f..4bd0d80 100644
--- a/tools/source/ref/pstm.cxx
+++ b/tools/source/ref/pstm.cxx
@@ -422,7 +422,7 @@ SvPersistStream& SvPersistStream::WritePointer
             aPTable[ pObj ] = nId;
             nP |= P_OBJ;
         }
-        WriteId( *this, nP, nId, pObj->GetClassId() );
+        WriteId( *this, nP, (sal_uInt32)nId, pObj->GetClassId() );
         if( nP & P_OBJ )
             WriteObj( nP, pObj );
     }


More information about the Libreoffice-commits mailing list