LCOV - code coverage report
Current view: top level - svl/source/inc - poolio.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 29 29 100.0 %
Date: 2012-08-25 Functions: 7 7 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 13 20 65.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*
       3                 :            :  * This file is part of the LibreOffice project.
       4                 :            :  *
       5                 :            :  * This Source Code Form is subject to the terms of the Mozilla Public
       6                 :            :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7                 :            :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8                 :            :  *
       9                 :            :  * This file incorporates work covered by the following license notice:
      10                 :            :  *
      11                 :            :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12                 :            :  *   contributor license agreements. See the NOTICE file distributed
      13                 :            :  *   with this work for additional information regarding copyright
      14                 :            :  *   ownership. The ASF licenses this file to you under the Apache
      15                 :            :  *   License, Version 2.0 (the "License"); you may not use this file
      16                 :            :  *   except in compliance with the License. You may obtain a copy of
      17                 :            :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18                 :            :  */
      19                 :            : #include <svl/brdcst.hxx>
      20                 :            : #include <boost/shared_ptr.hpp>
      21                 :            : #include <deque>
      22                 :            : #include <vector>
      23                 :            : 
      24                 :            : #ifndef DELETEZ
      25                 :            : #define DELETEZ(pPtr) { delete pPtr; pPtr = 0; }
      26                 :            : #endif
      27                 :            : 
      28                 :            : 
      29                 :            : struct SfxPoolVersion_Impl
      30                 :            : {
      31                 :            :     sal_uInt16          _nVer;
      32                 :            :     sal_uInt16          _nStart, _nEnd;
      33                 :            :     const sal_uInt16*         _pMap;
      34                 :            : 
      35                 :     236539 :                     SfxPoolVersion_Impl( sal_uInt16 nVer, sal_uInt16 nStart, sal_uInt16 nEnd,
      36                 :            :                                          const sal_uInt16 *pMap )
      37                 :            :                     :   _nVer( nVer ),
      38                 :            :                         _nStart( nStart ),
      39                 :            :                         _nEnd( nEnd ),
      40                 :     236539 :                         _pMap( pMap )
      41                 :     236539 :                     {}
      42                 :        365 :                     SfxPoolVersion_Impl( const SfxPoolVersion_Impl &rOrig )
      43                 :            :                     :   _nVer( rOrig._nVer ),
      44                 :            :                         _nStart( rOrig._nStart ),
      45                 :            :                         _nEnd( rOrig._nEnd ),
      46                 :        365 :                         _pMap( rOrig._pMap )
      47                 :        365 :                     {}
      48                 :            : };
      49                 :            : 
      50                 :            : typedef std::vector<SfxPoolItem*> SfxPoolItemArrayBase_Impl;
      51                 :            : 
      52                 :            : typedef boost::shared_ptr< SfxPoolVersion_Impl > SfxPoolVersion_ImplPtr;
      53                 :            : typedef std::deque< SfxPoolVersion_ImplPtr > SfxPoolVersionArr_Impl;
      54                 :            : 
      55                 :     373094 : struct SfxPoolItemArray_Impl: public SfxPoolItemArrayBase_Impl
      56                 :            : {
      57                 :            :     size_t  nFirstFree;
      58                 :            : 
      59                 :     408243 :     SfxPoolItemArray_Impl ()
      60                 :     408243 :         : nFirstFree( 0 )
      61                 :     408243 :     {}
      62                 :            : };
      63                 :            : 
      64                 :            : struct SfxItemPool_Impl
      65                 :            : {
      66                 :            :     SfxBroadcaster                  aBC;
      67                 :            :     std::vector<SfxPoolItemArray_Impl*> maPoolItems;
      68                 :            :     std::vector<SfxItemPoolUser*> maSfxItemPoolUsers; /// ObjectUser section
      69                 :            :     rtl::OUString                   aName;
      70                 :            :     SfxPoolItem**                   ppPoolDefaults;
      71                 :            :     SfxPoolItem**                   ppStaticDefaults;
      72                 :            :     SfxItemPool*                    mpMaster;
      73                 :            :     SfxItemPool*                    mpSecondary;
      74                 :            :     sal_uInt16*                     mpPoolRanges;
      75                 :            :     SfxPoolVersionArr_Impl          aVersions;
      76                 :            :     sal_uInt16                      mnStart;
      77                 :            :     sal_uInt16                      mnEnd;
      78                 :            :     sal_uInt16                      mnFileFormatVersion;
      79                 :            :     sal_uInt16                          nVersion;
      80                 :            :     sal_uInt16                          nLoadingVersion;
      81                 :            :     sal_uInt16                          nInitRefCount; // 1, beim Laden ggf. 2
      82                 :            :     sal_uInt16                          nVerStart, nVerEnd; // WhichRange in Versions
      83                 :            :     sal_uInt16                          nStoringStart, nStoringEnd; // zu speichernder Range
      84                 :            :     sal_uInt8                           nMajorVer, nMinorVer; // Pool selbst
      85                 :            :     SfxMapUnit                      eDefMetric;
      86                 :            :     bool                            bInSetItem;
      87                 :            :     bool                            bStreaming; // in Load() bzw. Store()
      88                 :            :     bool                            mbPersistentRefCounts;
      89                 :            : 
      90                 :      50074 :     SfxItemPool_Impl( SfxItemPool* pMaster, const rtl::OUString& rName, sal_uInt16 nStart, sal_uInt16 nEnd )
      91                 :            :         : maPoolItems(nEnd - nStart + 1, static_cast<SfxPoolItemArray_Impl*>(NULL))
      92                 :            :         , aName(rName)
      93         [ +  - ]:      50074 :         , ppPoolDefaults(new SfxPoolItem* [nEnd - nStart + 1])
      94                 :            :         , ppStaticDefaults(0)
      95                 :            :         , mpMaster(pMaster)
      96                 :            :         , mpSecondary(NULL)
      97                 :            :         , mpPoolRanges(NULL)
      98                 :            :         , mnStart(nStart)
      99                 :            :         , mnEnd(nEnd)
     100                 :            :         , mnFileFormatVersion(0)
     101                 :            :         , nLoadingVersion(0)
     102                 :            :         , nInitRefCount(0)
     103                 :            :         , nVerStart(0)
     104                 :            :         , nVerEnd(0)
     105                 :            :         , nStoringStart(0)
     106                 :            :         , nStoringEnd(0)
     107                 :            :         , nMajorVer(0)
     108                 :            :         , nMinorVer(0)
     109                 :            :         , bInSetItem(false)
     110 [ +  - ][ +  - ]:     100148 :         , bStreaming(false)
                 [ +  - ]
     111                 :            :     {
     112                 :            :         DBG_ASSERT(mnStart, "Start-Which-Id must be greater 0" );
     113                 :      50074 :         memset( ppPoolDefaults, 0, sizeof( SfxPoolItem* ) * (nEnd - nStart + 1));
     114                 :      50074 :     }
     115                 :            : 
     116                 :      44770 :     ~SfxItemPool_Impl()
     117                 :      44770 :     {
     118         [ +  - ]:      44770 :         DeleteItems();
     119                 :      44770 :     }
     120                 :            : 
     121                 :      89540 :     void DeleteItems()
     122                 :            :     {
     123                 :      89540 :         std::vector<SfxPoolItemArray_Impl*>::iterator itr = maPoolItems.begin(), itrEnd = maPoolItems.end();
     124 [ +  - ][ +  + ]:    3295635 :         for (; itr != itrEnd; ++itr)
     125         [ -  + ]:    3206095 :             delete *itr;
     126                 :      89540 :         maPoolItems.clear();
     127                 :            : 
     128         [ +  + ]:      89540 :         delete[] mpPoolRanges;
     129                 :      89540 :         mpPoolRanges = NULL;
     130         [ +  + ]:      89540 :         delete[] ppPoolDefaults;
     131                 :      89540 :         ppPoolDefaults = NULL;
     132                 :      89540 :     }
     133                 :            : 
     134                 :            :     void readTheItems(SvStream & rStream, sal_uInt32 nCount, sal_uInt16 nVersion,
     135                 :            :                       SfxPoolItem * pDefItem, SfxPoolItemArray_Impl ** pArr);
     136                 :            : };
     137                 :            : 
     138                 :            : // -----------------------------------------------------------------------
     139                 :            : 
     140                 :            : // IBM-C-Set mag keine doppelten Defines
     141                 :            : #ifdef DBG
     142                 :            : #  undef DBG
     143                 :            : #endif
     144                 :            : 
     145                 :            : #if defined(DBG_UTIL) && defined(MSC)
     146                 :            : #define DBG(x) x
     147                 :            : #else
     148                 :            : #define DBG(x)
     149                 :            : #endif
     150                 :            : 
     151                 :            : #define CHECK_FILEFORMAT( rStream, nTag ) \
     152                 :            :     {   sal_uInt16 nFileTag; \
     153                 :            :         rStream >> nFileTag; \
     154                 :            :         if ( nTag != nFileTag ) \
     155                 :            :         { \
     156                 :            :             OSL_FAIL( #nTag ); /*! s.u. */ \
     157                 :            :             /*! error-code setzen und auswerten! */ \
     158                 :            :             (rStream).SetError(SVSTREAM_FILEFORMAT_ERROR); \
     159                 :            :             pImp->bStreaming = sal_False; \
     160                 :            :             return rStream; \
     161                 :            :         } \
     162                 :            :     }
     163                 :            : 
     164                 :            : #define CHECK_FILEFORMAT_RELEASE( rStream, nTag, pPointer ) \
     165                 :            :    {   sal_uInt16 nFileTag; \
     166                 :            :        rStream >> nFileTag; \
     167                 :            :        if ( nTag != nFileTag ) \
     168                 :            :         { \
     169                 :            :            OSL_FAIL( #nTag ); /*! s.u. */ \
     170                 :            :            /*! error-code setzen und auswerten! */ \
     171                 :            :            (rStream).SetError(SVSTREAM_FILEFORMAT_ERROR); \
     172                 :            :            pImp->bStreaming = sal_False; \
     173                 :            :            delete pPointer; \
     174                 :            :             return rStream; \
     175                 :            :         } \
     176                 :            :     }
     177                 :            : 
     178                 :            : #define CHECK_FILEFORMAT2( rStream, nTag1, nTag2 ) \
     179                 :            :     {   sal_uInt16 nFileTag; \
     180                 :            :         rStream >> nFileTag; \
     181                 :            :         if ( nTag1 != nFileTag && nTag2 != nFileTag ) \
     182                 :            :         { \
     183                 :            :             OSL_FAIL( #nTag1 ); /*! s.u. */ \
     184                 :            :             /*! error-code setzen und auswerten! */ \
     185                 :            :             (rStream).SetError(SVSTREAM_FILEFORMAT_ERROR); \
     186                 :            :             pImp->bStreaming = sal_False; \
     187                 :            :             return rStream; \
     188                 :            :         } \
     189                 :            :     }
     190                 :            : 
     191                 :            : #define SFX_ITEMPOOL_VER_MAJOR          sal_uInt8(2)
     192                 :            : #define SFX_ITEMPOOL_VER_MINOR          sal_uInt8(0)
     193                 :            : 
     194                 :            : #define SFX_ITEMPOOL_TAG_STARTPOOL_4    sal_uInt16(0x1111)
     195                 :            : #define SFX_ITEMPOOL_TAG_STARTPOOL_5    sal_uInt16(0xBBBB)
     196                 :            : #define SFX_ITEMPOOL_TAG_ITEMPOOL       sal_uInt16(0xAAAA)
     197                 :            : #define SFX_ITEMPOOL_TAG_ITEMS          sal_uInt16(0x2222)
     198                 :            : #define SFX_ITEMPOOL_TAG_ITEM           sal_uInt16(0x7777)
     199                 :            : #define SFX_ITEMPOOL_TAG_SIZES          sal_uInt16(0x3333)
     200                 :            : #define SFX_ITEMPOOL_TAG_DEFAULTS       sal_uInt16(0x4444)
     201                 :            : #define SFX_ITEMPOOL_TAG_VERSIONMAP     sal_uInt16(0x5555)
     202                 :            : #define SFX_ITEMPOOL_TAG_HEADER         sal_uInt16(0x6666)
     203                 :            : #define SFX_ITEMPOOL_TAG_ENDPOOL        sal_uInt16(0xEEEE)
     204                 :            : #define SFX_ITEMPOOL_TAG_TRICK4OLD      sal_uInt16(0xFFFF)
     205                 :            : 
     206                 :            : #define SFX_ITEMPOOL_REC                sal_uInt8(0x01)
     207                 :            : #define SFX_ITEMPOOL_REC_HEADER         sal_uInt8(0x10)
     208                 :            : #define SFX_ITEMPOOL_REC_VERSIONMAP     sal_uInt16(0x0020)
     209                 :            : #define SFX_ITEMPOOL_REC_WHICHIDS       sal_uInt16(0x0030)
     210                 :            : #define SFX_ITEMPOOL_REC_ITEMS          sal_uInt16(0x0040)
     211                 :            : #define SFX_ITEMPOOL_REC_DEFAULTS       sal_uInt16(0x0050)
     212                 :            : 
     213                 :            : #define SFX_ITEMSET_REC                 sal_uInt8(0x02)
     214                 :            : 
     215                 :            : #define SFX_STYLES_REC                  sal_uInt8(0x03)
     216                 :            : #define SFX_STYLES_REC_HEADER       sal_uInt16(0x0010)
     217                 :            : #define SFX_STYLES_REC_STYLES       sal_uInt16(0x0020)
     218                 :            : 
     219                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10