LCOV - code coverage report
Current view: top level - rsc/source/res - rsccont.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 237 408 58.1 %
Date: 2012-08-25 Functions: 28 41 68.3 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 147 458 32.1 %

           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                 :            : 
      20                 :            : /****************** I N C L U D E S **************************************/
      21                 :            : 
      22                 :            : // C and C++ Includes.
      23                 :            : #include <stdlib.h>
      24                 :            : #include <stdio.h>
      25                 :            : #include <string.h>
      26                 :            : 
      27                 :            : // Programmabh�ngige Includes.
      28                 :            : #include <rsccont.hxx>
      29                 :            : 
      30                 :            : #include <tools/rcid.h>
      31                 :            : 
      32                 :            : /****************** C O D E **********************************************/
      33                 :            : /****************** E N T R Y S T R U C T ********************************/
      34                 :            : /*************************************************************************
      35                 :            : |*
      36                 :            : |*    ENTRYSTRUCT::Destroy()
      37                 :            : |*
      38                 :            : *************************************************************************/
      39                 :     118180 : void ENTRY_STRUCT::Destroy()
      40                 :            : {
      41                 :     118180 :     aName.Destroy();
      42         [ +  - ]:     118180 :     if( aInst.IsInst() ){
      43                 :     118180 :         aInst.pClass->Destroy( aInst );
      44                 :     118180 :         rtl_freeMemory( aInst.pData );
      45                 :            :     };
      46                 :     118180 : }
      47                 :            : 
      48                 :            : /****************** R s c B a s e C o n t ********************************/
      49                 :            : /*************************************************************************
      50                 :            : |*
      51                 :            : |*    RscBaseCont::RscBaseCont()
      52                 :            : |*
      53                 :            : *************************************************************************/
      54                 :      15840 : RscBaseCont::RscBaseCont( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper,
      55                 :            :                           sal_Bool bNoIdent )
      56                 :            :     : RscTop( nId, nTypeId, pSuper ),
      57                 :      15840 :       nSize( 0 )
      58                 :            : {
      59                 :      15840 :     pTypeClass = NULL;
      60                 :      15840 :     pTypeClass1 = NULL;
      61                 :      15840 :     bNoId = bNoIdent;
      62         [ +  - ]:      15840 :     nOffInstData = RscTop::Size();
      63                 :      15840 :     nSize = nOffInstData + ALIGNED_SIZE( sizeof( RscBaseContInst ) );
      64                 :      15840 : }
      65                 :            : 
      66                 :            : /*************************************************************************
      67                 :            : |*
      68                 :            : |*    RscBaseCont::~RscBaseCont()
      69                 :            : |*
      70                 :            : *************************************************************************/
      71                 :      15840 : RscBaseCont::~RscBaseCont()
      72                 :            : {
      73         [ -  + ]:      17280 : }
      74                 :            : 
      75                 :            : /*************************************************************************
      76                 :            : |*
      77                 :            : |*    RscBaseCont::GetClassType()
      78                 :            : |*
      79                 :            : *************************************************************************/
      80                 :          0 : RSCCLASS_TYPE RscBaseCont::GetClassType() const
      81                 :            : {
      82                 :          0 :     return RSCCLASS_COMPLEX;
      83                 :            : }
      84                 :            : 
      85                 :            : /*************************************************************************
      86                 :            : |*
      87                 :            : |*    DestroyElements()
      88                 :            : |*
      89                 :            : *************************************************************************/
      90                 :     135688 : void RscBaseCont::DestroyElements( RscBaseContInst * pClassData )
      91                 :            : {
      92         [ +  + ]:     135688 :     if( pClassData->nEntries ){
      93         [ +  + ]:     118176 :         for (sal_uInt32 i = 0; i < pClassData->nEntries; i++ )
      94                 :            :         {
      95                 :     105036 :             pClassData->pEntries[ i ].Destroy();
      96                 :            :         };
      97                 :      13140 :         rtl_freeMemory( pClassData->pEntries );
      98                 :      13140 :         pClassData->pEntries = NULL;
      99                 :      13140 :         pClassData->nEntries = 0;
     100                 :            :     };
     101                 :     135688 : }
     102                 :            : 
     103                 :            : /*************************************************************************
     104                 :            : |*
     105                 :            : |*    RscBaseCont::Create()
     106                 :            : |*
     107                 :            : *************************************************************************/
     108                 :     133248 : RSCINST RscBaseCont::Create( RSCINST * pInst, const RSCINST & rDflt,
     109                 :            :                              sal_Bool bOwnClass )
     110                 :            : {
     111                 :     133248 :     RSCINST aInst;
     112                 :            :     RscBaseContInst * pClassData;
     113                 :            : 
     114         [ +  + ]:     133248 :     if( !pInst ){
     115                 :       5068 :         aInst.pClass = this;
     116                 :       5068 :         aInst.pData = (CLASS_DATA) rtl_allocateMemory( Size() );
     117                 :            :     }
     118                 :            :     else
     119                 :     128180 :         aInst = *pInst;
     120 [ +  + ][ +  + ]:     133248 :     if( !bOwnClass && rDflt.IsInst() )
                 [ +  + ]
     121                 :       1072 :         bOwnClass = rDflt.pClass->InHierarchy( this );
     122                 :            : 
     123                 :     133248 :     RscTop::Create( &aInst, rDflt, bOwnClass );
     124                 :            : 
     125                 :     133248 :     pClassData = (RscBaseContInst *)(aInst.pData + nOffInstData);
     126                 :     133248 :     pClassData->nEntries = 0;
     127                 :     133248 :     pClassData->pEntries = NULL;
     128                 :     133248 :     pClassData->bDflt = sal_True;
     129                 :            : 
     130         [ +  + ]:     133248 :     if( bOwnClass ){
     131                 :            :         RscBaseContInst *   pDfltClassData;
     132                 :       1476 :         RSCINST         aDfltI;
     133                 :            : 
     134                 :       1476 :         pDfltClassData = (RscBaseContInst *)(rDflt.pData + nOffInstData);
     135                 :            : 
     136         [ +  + ]:       1476 :         if( 0 != pDfltClassData->nEntries ){
     137                 :         48 :             *pClassData = *pDfltClassData;
     138                 :            :             pClassData->pEntries =
     139                 :            :                 (ENTRY_STRUCT *)rtl_allocateMemory( sizeof( ENTRY_STRUCT )
     140                 :         48 :                                                 * pClassData->nEntries );
     141         [ +  + ]:       1822 :             for (sal_uInt32 i = 0; i < pClassData->nEntries; i++ )
     142                 :            :             {
     143                 :        346 :                 pClassData->pEntries[ i ].Create();
     144                 :        346 :                 pClassData->pEntries[ i ].aName =
     145         [ +  - ]:        346 :                                     pDfltClassData->pEntries[ i ].aName;
     146                 :        346 :                 aDfltI = pDfltClassData->pEntries[ i ].aInst;
     147                 :            :                 pClassData->pEntries[ i ].aInst =
     148         [ +  - ]:        346 :                                     aDfltI.pClass->Create( NULL, aDfltI );
     149                 :            :             };
     150                 :            :         };
     151                 :            :     }
     152                 :            : 
     153                 :     133248 :     return( aInst );
     154                 :            : }
     155                 :            : 
     156                 :            : /*************************************************************************
     157                 :            : |*
     158                 :            : |*    RscBaseCont::Destroy()
     159                 :            : |*
     160                 :            : *************************************************************************/
     161                 :     133248 : void RscBaseCont::Destroy( const RSCINST & rInst ){
     162                 :            :     RscBaseContInst * pClassData;
     163                 :            : 
     164                 :     133248 :     RscTop::Destroy( rInst);
     165                 :            : 
     166                 :     133248 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     167                 :     133248 :     DestroyElements( pClassData );
     168                 :     133248 : }
     169                 :            : 
     170                 :            : /*************************************************************************
     171                 :            : |*
     172                 :            : |*    RscBaseCont::SearchEle()
     173                 :            : |*
     174                 :            : *************************************************************************/
     175                 :      63660 : RSCINST RscBaseCont::SearchElePos( const RSCINST & rInst, const RscId & rEleName,
     176                 :            :                                    RscTop * pClass, sal_uInt32 nPos )
     177                 :            : {
     178                 :            :     RscBaseContInst * pClassData;
     179                 :            : 
     180                 :      63660 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     181         [ -  + ]:      63660 :     if( !pClass )
     182                 :          0 :         pClass = pTypeClass;
     183                 :            : 
     184         [ +  - ]:      63660 :     if( rEleName.IsId() ){
     185         [ +  + ]:    1875902 :         for (sal_uInt32 i = nPos; i < pClassData->nEntries; i++ )
     186                 :            :         {
     187 [ +  + ][ -  + ]:    1812242 :             if( pClassData->pEntries[ i ].aName == rEleName
                 [ -  + ]
     188                 :      13056 :               && pClassData->pEntries[ i ].aInst.pClass == pClass )
     189                 :            :             {
     190                 :          0 :                 return( pClassData->pEntries[ i ].aInst );
     191                 :            :             };
     192                 :            :         };
     193                 :            :     };
     194                 :      63660 :     return RSCINST();
     195                 :            : }
     196                 :            : 
     197                 :            : /*************************************************************************
     198                 :            : |*
     199                 :            : |*    RscBaseCont::SearchEle()
     200                 :            : |*
     201                 :            : *************************************************************************/
     202                 :      63660 : RSCINST RscBaseCont::SearchEle( const RSCINST & rInst, const RscId & rEleName,
     203                 :            :                                 RscTop * pClass )
     204                 :            : {
     205                 :      63660 :     return SearchElePos( rInst, rEleName, pClass, 0 );
     206                 :            : }
     207                 :            : 
     208                 :            : /*************************************************************************
     209                 :            : |*
     210                 :            : |*    RscBaseCont::GetElement()
     211                 :            : |*
     212                 :            : *************************************************************************/
     213                 :     117834 : ERRTYPE RscBaseCont::GetElement( const RSCINST & rInst, const RscId & rEleName,
     214                 :            :                                  RscTop * pCreateClass,
     215                 :            :                                  const RSCINST & rCreateInst, RSCINST * pGetInst )
     216                 :            : {
     217                 :            :     RscBaseContInst * pClassData;
     218                 :     117834 :     RSCINST           aTmpI;
     219                 :     117834 :     ERRTYPE           aError;
     220                 :            : 
     221 [ -  + ][ -  + ]:     117834 :     if( !bNoId && !rEleName.IsId() )
                 [ +  + ]
     222         [ #  # ]:          0 :         aError = WRN_CONT_NOID;
     223                 :     117834 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     224                 :            : 
     225         [ +  + ]:     117834 :     if( pCreateClass ){
     226 [ +  - ][ +  + ]:     106538 :         if( !pCreateClass->InHierarchy( pTypeClass ) ){
     227         [ +  - ]:       8116 :             if( pTypeClass1 ){
     228 [ +  - ][ -  + ]:       8116 :                 if( !pCreateClass->InHierarchy( pTypeClass1 ) ){
     229                 :            :                     // Falscher Typ
     230                 :          0 :                     return ERR_CONT_INVALIDTYPE;
     231                 :            :                 }
     232                 :            :             }
     233                 :            :             else{
     234                 :            :                 // Falscher Typ
     235                 :          0 :                 return ERR_CONT_INVALIDTYPE;
     236                 :            :             };
     237                 :            :         };
     238                 :            :     }
     239                 :            :     else
     240                 :      11296 :         pCreateClass = pTypeClass;
     241                 :            : 
     242                 :     117834 :     pClassData->bDflt = sal_False;
     243         [ +  + ]:     117834 :     if( !bNoId )
     244         [ +  - ]:      63660 :         aTmpI = SearchEle( rInst, rEleName, pCreateClass );
     245                 :            :     // Eintrag gefunden
     246         [ -  + ]:     117834 :     if( aTmpI.IsInst() ){
     247         [ #  # ]:          0 :         aError = WRN_CONT_DOUBLEID;
     248         [ #  # ]:          0 :         if( rCreateInst.IsInst() ){
     249         [ #  # ]:          0 :             aTmpI.pClass->Destroy( aTmpI );
     250         [ #  # ]:          0 :             aTmpI.pClass->Create( &aTmpI, rCreateInst );
     251                 :            :         };
     252                 :            :     }
     253                 :            :     else {
     254         [ +  + ]:     117834 :         if( pClassData->pEntries ){
     255                 :            :             pClassData->pEntries =
     256                 :            :                 (ENTRY_STRUCT *)rtl_reallocateMemory( pClassData->pEntries,
     257                 :     104742 :                          sizeof( ENTRY_STRUCT ) * (pClassData->nEntries +1) );
     258                 :            :         }
     259                 :            :         else {
     260                 :            :             pClassData->pEntries =
     261                 :            :                 (ENTRY_STRUCT *)rtl_allocateMemory( sizeof( ENTRY_STRUCT )
     262                 :      13092 :                                                 * (pClassData->nEntries +1) );
     263                 :            :         };
     264                 :            : 
     265                 :     117834 :         pClassData->pEntries[ pClassData->nEntries ].Create();
     266         [ +  - ]:     117834 :         pClassData->pEntries[ pClassData->nEntries ].aName = rEleName;
     267                 :            : 
     268         [ -  + ]:     117834 :         if( rCreateInst.IsInst() ){
     269                 :            :             // Instanz mit CreateInst-Daten initialisieren
     270                 :            :             pClassData->pEntries[ pClassData->nEntries ].aInst =
     271         [ #  # ]:          0 :                         pCreateClass->Create( NULL, rCreateInst );
     272                 :            :         }
     273                 :            :         else {
     274                 :            :             pClassData->pEntries[ pClassData->nEntries ].aInst =
     275         [ +  - ]:     117834 :                         pCreateClass->Create( NULL, RSCINST() );
     276                 :            :         };
     277                 :            : 
     278                 :     117834 :         pClassData->nEntries++;
     279                 :     117834 :         aTmpI = pClassData->pEntries[ pClassData->nEntries -1 ].aInst;
     280                 :            :     }
     281                 :            : 
     282                 :     117834 :     *pGetInst = aTmpI;
     283                 :     117834 :     return aError;
     284                 :            : }
     285                 :            : 
     286                 :            : /*************************************************************************
     287                 :            : |*
     288                 :            : |*    RscBaseCont::GetCount()
     289                 :            : |*
     290                 :            : *************************************************************************/
     291                 :      11644 : sal_uInt32 RscBaseCont::GetCount( const RSCINST & rInst ){
     292                 :            :     RscBaseContInst * pClassData;
     293                 :            : 
     294                 :      11644 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     295                 :      11644 :     return( pClassData->nEntries );
     296                 :            : }
     297                 :            : 
     298                 :            : /*************************************************************************
     299                 :            : |*
     300                 :            : |*    RscBaseCont::GetPosEle()
     301                 :            : |*
     302                 :            : *************************************************************************/
     303                 :          0 : RSCINST RscBaseCont::GetPosEle( const RSCINST & rInst, sal_uInt32 nPos ){
     304                 :            :     RscBaseContInst * pClassData;
     305                 :            : 
     306                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     307                 :            : 
     308         [ #  # ]:          0 :     if( nPos < pClassData->nEntries )
     309                 :          0 :         return( pClassData->pEntries[ nPos ].aInst );
     310                 :          0 :     return RSCINST();
     311                 :            : }
     312                 :            : 
     313                 :            : /*************************************************************************
     314                 :            : |*
     315                 :            : |*    RscBaseCont::MovePosEle()
     316                 :            : |*
     317                 :            : *************************************************************************/
     318                 :          0 : ERRTYPE RscBaseCont::MovePosEle( const RSCINST & rInst, sal_uInt32 nDestPos,
     319                 :            :                                  sal_uInt32 nSourcePos )
     320                 :            : {
     321                 :          0 :     ERRTYPE aError;
     322                 :            :     RscBaseContInst * pClassData;
     323                 :            : 
     324                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     325                 :            : 
     326 [ #  # ][ #  # ]:          0 :     if( (nDestPos < pClassData->nEntries) && (nSourcePos < pClassData->nEntries) ){
     327         [ #  # ]:          0 :         ENTRY_STRUCT aEntry;
     328                 :          0 :         int          nInc = 1;
     329                 :          0 :         sal_uInt32       i = 0;
     330                 :            : 
     331                 :            :         // Quelle Merken
     332         [ #  # ]:          0 :         aEntry = pClassData->pEntries[ nSourcePos ];
     333                 :            :         // Richtung der for-Schleife bestimmen
     334         [ #  # ]:          0 :         if( nDestPos < nSourcePos )
     335                 :          0 :             nInc = -1;
     336                 :            : 
     337         [ #  # ]:          0 :         for( i = nSourcePos; i != nDestPos; i += nInc )
     338         [ #  # ]:          0 :             pClassData->pEntries[ i ] = pClassData->pEntries[ i + nInc ];
     339                 :            : 
     340                 :            :         // Zuweisung Quelle auf Ziel
     341 [ #  # ][ #  # ]:          0 :         pClassData->pEntries[ nDestPos ] = aEntry;
     342                 :            :     }
     343                 :            :     else
     344         [ #  # ]:          0 :         aError = ERR_RSCCONT;
     345                 :          0 :     return aError;
     346                 :            : }
     347                 :            : 
     348                 :            : /*************************************************************************
     349                 :            : |*
     350                 :            : |*    RscBaseCont::SetPosRscId()
     351                 :            : |*
     352                 :            : *************************************************************************/
     353                 :          0 : ERRTYPE RscBaseCont::SetPosRscId( const RSCINST & rInst, sal_uInt32 nPos,
     354                 :            :                                   const RscId & rId ){
     355                 :            :     RscBaseContInst * pClassData;
     356                 :          0 :     RSCINST           aTmpI;
     357                 :          0 :     ERRTYPE           aError;
     358                 :            : 
     359                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     360                 :            : 
     361         [ #  # ]:          0 :     if( nPos < pClassData->nEntries ){
     362 [ #  # ][ #  # ]:          0 :         if( ! (rId == pClassData->pEntries[ nPos ].aName) )
     363                 :            :             aTmpI = SearchEle( rInst, rId,
     364         [ #  # ]:          0 :                                pClassData->pEntries[ nPos ].aInst.pClass );
     365         [ #  # ]:          0 :         if( !aTmpI.IsInst() )
     366         [ #  # ]:          0 :             pClassData->pEntries[ nPos ].aName = rId;
     367                 :            :         else
     368         [ #  # ]:          0 :             aError = ERR_RSCCONT;
     369                 :            :     }
     370                 :            :     else
     371         [ #  # ]:          0 :         aError = ERR_RSCCONT;
     372                 :          0 :     return( aError );
     373                 :            : }
     374                 :            : 
     375                 :            : /*************************************************************************
     376                 :            : |*
     377                 :            : |*    RscBaseCont::GetInfoEle()
     378                 :            : |*
     379                 :            : *************************************************************************/
     380                 :          0 : SUBINFO_STRUCT RscBaseCont::GetInfoEle( const RSCINST & rInst, sal_uInt32 nPos ){
     381                 :            :     RscBaseContInst * pClassData;
     382                 :          0 :     SUBINFO_STRUCT  aInfo;
     383                 :            : 
     384                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     385                 :            : 
     386         [ #  # ]:          0 :     if( nPos < pClassData->nEntries ){
     387         [ #  # ]:          0 :         aInfo.aId    = pClassData->pEntries[ nPos ].aName;
     388                 :          0 :         aInfo.nPos   = nPos;
     389                 :          0 :         aInfo.pClass = pClassData->pEntries[ nPos ].aInst.pClass;
     390                 :            :     }
     391                 :          0 :     return( aInfo );
     392                 :            : }
     393                 :            : 
     394                 :            : /*************************************************************************
     395                 :            : |*
     396                 :            : |*    RscBaseCont::SetString()
     397                 :            : |*
     398                 :            : *************************************************************************/
     399                 :       1670 : ERRTYPE RscBaseCont::SetString( const RSCINST & rInst, const char * pStr )
     400                 :            : {
     401                 :            :     RscBaseContInst * pClassData;
     402                 :       1670 :     RSCINST aTmpI;
     403                 :       1670 :     ERRTYPE aError;
     404                 :            :     char    *pTmpStr;
     405                 :            : 
     406                 :       1670 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     407                 :            : 
     408                 :            : //?B 040991
     409                 :            : //?W 040991 sonst Endlosrekursion moeglich
     410         [ +  - ]:       1670 : if( RSC_NOTYPE == pTypeClass->GetTypId() ){
     411 [ +  - ][ +  - ]:       1670 :     aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI );
                 [ +  - ]
     412 [ +  - ][ +  - ]:       1670 :     aError = aTmpI.pClass->GetString( aTmpI, &pTmpStr );
     413         [ +  + ]:       1670 :     if( aError.IsOk() )
     414 [ +  - ][ +  - ]:        300 :         aError = aTmpI.pClass->SetString( aTmpI, pStr );
     415                 :            :     else {
     416                 :       1370 :         aError.Clear();
     417         [ +  - ]:       1370 :         DeletePos( rInst, pClassData->nEntries -1 );
     418 [ +  - ][ +  - ]:       1370 :         aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI );
                 [ +  - ]
     419 [ +  - ][ +  - ]:       1370 :         aError = aTmpI.pClass->GetString( aTmpI, &pTmpStr );
     420         [ +  + ]:       1370 :         if( aError.IsOk() )
     421 [ +  - ][ +  - ]:       1152 :             aError = aTmpI.pClass->SetString( aTmpI, pStr );
     422                 :            :     }
     423         [ +  + ]:       1670 :     if( aError.IsError() )
     424         [ +  - ]:        218 :         DeletePos( rInst, pClassData->nEntries -1 );
     425                 :            : }
     426                 :            : else
     427         [ #  # ]:       1670 :     aError = ERR_UNKNOWN_METHOD;
     428                 :            : 
     429                 :       1670 :     return( aError );
     430                 :            : }
     431                 :            : 
     432                 :            : /*************************************************************************
     433                 :            : |*
     434                 :            : |*    RscBaseCont::SetNumber()
     435                 :            : |*
     436                 :            : *************************************************************************/
     437                 :       6964 : ERRTYPE RscBaseCont::SetNumber( const RSCINST & rInst, sal_Int32 lValue ){
     438                 :            :     RscBaseContInst * pClassData;
     439                 :       6964 :     RSCINST aTmpI;
     440                 :       6964 :     ERRTYPE aError;
     441                 :            :     sal_Int32   lNumber;
     442                 :            : 
     443                 :       6964 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     444                 :            : 
     445                 :            : //?B 040991
     446                 :            : //?W 040991 sonst Endlosrekursion moeglich
     447         [ +  - ]:       6964 : if( RSC_NOTYPE == pTypeClass->GetTypId() ){
     448 [ +  - ][ +  - ]:       6964 :     aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI );
                 [ +  - ]
     449 [ +  - ][ +  - ]:       6964 :     aError = aTmpI.pClass->GetNumber( aTmpI, &lNumber );
     450         [ +  - ]:       6964 :     if( aError.IsOk() )
     451 [ +  - ][ +  - ]:       6964 :         aError = aTmpI.pClass->SetNumber( aTmpI, lValue );
     452                 :            :     else {
     453                 :          0 :         aError.Clear();
     454         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     455 [ #  # ][ #  # ]:          0 :         aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI );
                 [ #  # ]
     456 [ #  # ][ #  # ]:          0 :         aError = aTmpI.pClass->GetNumber( aTmpI, &lNumber );
     457         [ #  # ]:          0 :         if( aError.IsOk() )
     458 [ #  # ][ #  # ]:          0 :             aError = aTmpI.pClass->SetNumber( aTmpI, lValue );
     459                 :            :     }
     460         [ -  + ]:       6964 :     if( aError.IsError() )
     461         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     462                 :            : }
     463                 :            : else
     464         [ #  # ]:       6964 :     aError = ERR_UNKNOWN_METHOD;
     465                 :            : 
     466                 :       6964 :     return( aError );
     467                 :            : }
     468                 :            : 
     469                 :            : //==================================================================
     470                 :          0 : ERRTYPE RscBaseCont::SetBool
     471                 :            : (
     472                 :            :     const RSCINST & rInst,
     473                 :            :     sal_Bool bValue
     474                 :            : )
     475                 :            : {
     476                 :            :     RscBaseContInst * pClassData;
     477                 :          0 :     RSCINST aTmpI;
     478                 :          0 :     ERRTYPE aError;
     479                 :            :     sal_Bool    bBool;
     480                 :            : 
     481                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     482                 :            : 
     483                 :            : //?B 040991
     484                 :            : //?W 040991 sonst Endlosrekursion moeglich
     485         [ #  # ]:          0 : if( RSC_NOTYPE == pTypeClass->GetTypId() )
     486                 :            : {
     487 [ #  # ][ #  # ]:          0 :     aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI );
                 [ #  # ]
     488 [ #  # ][ #  # ]:          0 :     aError = aTmpI.pClass->GetBool( aTmpI, &bBool );
     489         [ #  # ]:          0 :     if( aError.IsOk() )
     490 [ #  # ][ #  # ]:          0 :         aError = aTmpI.pClass->SetBool( aTmpI, bValue );
     491                 :            :     else {
     492                 :          0 :         aError.Clear();
     493         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     494 [ #  # ][ #  # ]:          0 :         aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI );
                 [ #  # ]
     495 [ #  # ][ #  # ]:          0 :         aError = aTmpI.pClass->GetBool( aTmpI, &bBool );
     496         [ #  # ]:          0 :         if( aError.IsOk() )
     497 [ #  # ][ #  # ]:          0 :             aError = aTmpI.pClass->SetBool( aTmpI, bValue );
     498                 :            :     }
     499         [ #  # ]:          0 :     if( aError.IsError() )
     500         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     501                 :            : }
     502                 :            : else
     503         [ #  # ]:          0 :     aError = ERR_UNKNOWN_METHOD;
     504                 :            : 
     505                 :          0 :     return( aError );
     506                 :            : }
     507                 :            : 
     508                 :            : //==================================================================
     509                 :          0 : ERRTYPE RscBaseCont::SetConst
     510                 :            : (
     511                 :            :     const RSCINST & rInst,
     512                 :            :     Atom nValueId,
     513                 :            :     sal_Int32 lValue
     514                 :            : )
     515                 :            : {
     516                 :            :     RscBaseContInst * pClassData;
     517                 :          0 :     RSCINST aTmpI;
     518                 :          0 :     ERRTYPE aError;
     519                 :            :     Atom    nConst;
     520                 :            : 
     521                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     522                 :            : 
     523                 :            : //?B 040991
     524                 :            : //?W 040991 sonst Endlosrekursion moeglich
     525         [ #  # ]:          0 : if( RSC_NOTYPE == pTypeClass->GetTypId() ){
     526 [ #  # ][ #  # ]:          0 :     aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI );
                 [ #  # ]
     527 [ #  # ][ #  # ]:          0 :     aError = aTmpI.pClass->GetConst( aTmpI, &nConst );
     528         [ #  # ]:          0 :     if( aError.IsOk() )
     529 [ #  # ][ #  # ]:          0 :         aError = aTmpI.pClass->SetConst( aTmpI, nValueId, lValue );
     530                 :            :     else {
     531                 :          0 :         aError.Clear();
     532         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     533 [ #  # ][ #  # ]:          0 :         aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI );
                 [ #  # ]
     534 [ #  # ][ #  # ]:          0 :         aError = aTmpI.pClass->GetConst( aTmpI, &nConst );
     535         [ #  # ]:          0 :         if( aError.IsOk() )
     536 [ #  # ][ #  # ]:          0 :             aError = aTmpI.pClass->SetConst( aTmpI, nValueId, lValue );
     537                 :            :     }
     538         [ #  # ]:          0 :     if( aError.IsError() )
     539         [ #  # ]:          0 :         DeletePos( rInst, pClassData->nEntries -1 );
     540                 :            : }
     541                 :            : else
     542         [ #  # ]:          0 :     aError = ERR_UNKNOWN_METHOD;
     543                 :            : 
     544                 :          0 :     return( aError );
     545                 :            : }
     546                 :            : 
     547                 :            : /*************************************************************************
     548                 :            : |*
     549                 :            : |*    RscBaseCont::SetRef()
     550                 :            : |*
     551                 :            : *************************************************************************/
     552                 :       8372 : ERRTYPE RscBaseCont::SetRef( const RSCINST & rInst, const RscId & rRefId ){
     553                 :            :     RscBaseContInst * pClassData;
     554                 :       8372 :     RSCINST aTmpI;
     555                 :       8372 :     ERRTYPE aError;
     556                 :       8372 :     RscId   aId;
     557                 :            : 
     558                 :       8372 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     559                 :            : 
     560                 :            : //?B 040991
     561                 :            : //?W 040991 sonst Endlosrekursion moeglich
     562         [ +  - ]:       8372 : if( RSC_NOTYPE == pTypeClass->GetTypId() ){
     563 [ +  - ][ +  - ]:       8372 :     aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI );
                 [ +  - ]
     564 [ +  - ][ +  - ]:       8372 :     aError = aTmpI.pClass->GetRef( aTmpI, &aId );
     565         [ +  + ]:       8372 :     if( aError.IsOk() )
     566 [ +  - ][ +  - ]:       1408 :         aError = aTmpI.pClass->SetRef( aTmpI, rRefId );
     567                 :            :     else {
     568                 :       6964 :         aError.Clear();
     569         [ +  - ]:       6964 :         DeletePos( rInst, pClassData->nEntries -1 );
     570 [ +  - ][ +  - ]:       6964 :         aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI );
                 [ +  - ]
     571 [ +  - ][ +  - ]:       6964 :         aError = aTmpI.pClass->GetRef( aTmpI, &aId );
     572         [ +  - ]:       6964 :         if( aError.IsOk() )
     573 [ +  - ][ +  - ]:       6964 :             aError = aTmpI.pClass->SetNumber( aTmpI, rRefId );
                 [ +  - ]
     574                 :            :     }
     575         [ +  + ]:       8372 :     if( aError.IsError() )
     576         [ +  - ]:       6964 :         DeletePos( rInst, pClassData->nEntries -1 );
     577                 :            : }
     578                 :            : else
     579         [ #  # ]:          0 :     aError = ERR_UNKNOWN_METHOD;
     580                 :            : 
     581         [ +  - ]:       8372 :     return( aError );
     582                 :            : }
     583                 :            : 
     584                 :            : /*************************************************************************
     585                 :            : |*
     586                 :            : |*    RscBaseCont::IsConsistent()
     587                 :            : |*
     588                 :            : *************************************************************************/
     589                 :          0 : sal_Bool RscBaseCont::IsConsistent( const RSCINST & rInst ) {
     590                 :          0 :     sal_uInt32  i = 0;
     591                 :            :     RscBaseContInst * pClassData;
     592                 :            :     sal_Bool    bRet;
     593                 :            : 
     594                 :          0 :     bRet = RscTop::IsConsistent( rInst );
     595                 :            : 
     596                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     597                 :            : 
     598                 :            :     // auf doppelten Id Testen und Reihenfolge beibehalten
     599                 :            :     // Komplexitaet = n^2 / 2
     600         [ #  # ]:          0 :     for( i = 0; i < pClassData->nEntries; i++ ){
     601         [ #  # ]:          0 :         if( !bNoId ){
     602   [ #  #  #  # ]:          0 :             if( (sal_Int32)pClassData->pEntries[ i ].aName > 0x7FFF
                 [ #  # ]
     603                 :          0 :               || (sal_Int32)pClassData->pEntries[ i ].aName < 1 ){
     604                 :          0 :                 bRet = sal_False;
     605                 :            :             }
     606         [ #  # ]:          0 :             else if( SearchElePos( rInst, pClassData->pEntries[ i ].aName,
     607                 :          0 :                 pClassData->pEntries[ i ].aInst.pClass, i +1 ).IsInst() )
     608                 :            :             {
     609                 :          0 :                  bRet = sal_False;
     610                 :            :              };
     611                 :            :         }
     612         [ #  # ]:          0 :         if( ! pClassData->pEntries[ i ].aInst.pClass->
     613                 :          0 :               IsConsistent( pClassData->pEntries[ i ].aInst ) )
     614                 :          0 :             bRet = sal_False;
     615                 :            :     };
     616                 :            : 
     617                 :          0 :     return( bRet );
     618                 :            : }
     619                 :            : 
     620                 :            : /*************************************************************************
     621                 :            : |*
     622                 :            : |*    RscBaseCont::SetToDefault()
     623                 :            : |*
     624                 :            : *************************************************************************/
     625                 :       1058 : void RscBaseCont::SetToDefault( const RSCINST & rInst )
     626                 :            : {
     627                 :       1058 :     sal_uInt32  i = 0;
     628                 :            :     RscBaseContInst * pClassData;
     629                 :            : 
     630                 :       1058 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     631                 :            : 
     632         [ +  + ]:       1126 :     for( i = 0; i < pClassData->nEntries; i++ )
     633                 :            :     {
     634                 :        204 :         pClassData->pEntries[ i ].aInst.pClass->
     635                 :         68 :                   SetToDefault( pClassData->pEntries[ i ].aInst );
     636                 :            :     };
     637                 :            : 
     638                 :       1058 :     RscTop::SetToDefault( rInst );
     639                 :       1058 : }
     640                 :            : 
     641                 :            : /*************************************************************************
     642                 :            : |*
     643                 :            : |*    RscBaseCont::IsDefault()
     644                 :            : |*
     645                 :            : *************************************************************************/
     646                 :        880 : sal_Bool RscBaseCont::IsDefault( const RSCINST & rInst ){
     647                 :        880 :     sal_uInt32  i = 0;
     648                 :            :     RscBaseContInst * pClassData;
     649                 :            : 
     650                 :        880 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     651                 :            : 
     652         [ +  - ]:        880 :     if( !pClassData->bDflt )
     653                 :        880 :         return sal_False;
     654                 :            : 
     655         [ #  # ]:          0 :     for( i = 0; i < pClassData->nEntries; i++ ){
     656         [ #  # ]:          0 :         if( ! pClassData->pEntries[ i ].aInst.pClass->
     657                 :          0 :                   IsDefault( pClassData->pEntries[ i ].aInst ) )
     658                 :            :         {
     659                 :          0 :             return( sal_False );
     660                 :            :         };
     661                 :            :     };
     662                 :            : 
     663                 :        880 :     return( RscTop::IsDefault( rInst ) );
     664                 :            : }
     665                 :            : 
     666                 :            : /*************************************************************************
     667                 :            : |*
     668                 :            : |*    RscBaseCont::IsValueDefault()
     669                 :            : |*
     670                 :            : *************************************************************************/
     671                 :       5564 : sal_Bool RscBaseCont::IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef )
     672                 :            : {
     673                 :            :     RscBaseContInst * pClassData;
     674                 :            : 
     675         [ -  + ]:       5564 :     if( !RscTop::IsValueDefault( rInst, pDef ) )
     676                 :          0 :         return sal_False;
     677                 :            : 
     678                 :       5564 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     679                 :            : 
     680         [ +  + ]:       5564 :     if( pClassData->nEntries )
     681                 :       3198 :         return sal_False;
     682                 :            :     else
     683                 :       5564 :         return sal_True;
     684                 :            : }
     685                 :            : 
     686                 :            : /*************************************************************************
     687                 :            : |*
     688                 :            : |*    RscBaseCont::Delete()
     689                 :            : |*
     690                 :            : *************************************************************************/
     691                 :          0 : void RscBaseCont::Delete( const RSCINST & rInst, RscTop * pClass,
     692                 :            :                           const RscId & rId )
     693                 :            : {
     694                 :          0 :     sal_uInt32  i = 0;
     695                 :            :     RscBaseContInst * pClassData;
     696                 :            : 
     697                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     698         [ #  # ]:          0 :     if( !pClass )
     699                 :          0 :         pClass = pTypeClass;
     700                 :            : 
     701         [ #  # ]:          0 :     for( i = 0; i < pClassData->nEntries; i++ ){
     702         [ #  # ]:          0 :         if( pClassData->pEntries[ i ].aName == rId )
     703 [ #  # ][ #  # ]:          0 :             if( pClassData->pEntries[ i ].aInst.pClass == pClass || !pClass ){
     704                 :          0 :                 DeletePos( rInst, i );
     705                 :          0 :                 return;
     706                 :            :             };
     707                 :            :     };
     708                 :            : 
     709                 :            : }
     710                 :            : 
     711                 :            : /*************************************************************************
     712                 :            : |*
     713                 :            : |*    RscBaseCont::DeletePos()
     714                 :            : |*
     715                 :            : *************************************************************************/
     716                 :      15584 : void RscBaseCont::DeletePos( const RSCINST & rInst, sal_uInt32 nPos ){
     717                 :            :     RscBaseContInst *   pClassData;
     718                 :            : 
     719                 :      15584 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     720                 :            : 
     721         [ +  - ]:      15584 :     if( nPos < pClassData->nEntries ){
     722         [ +  + ]:      15584 :         if( 1 == pClassData->nEntries )
     723                 :       2440 :             DestroyElements( pClassData );
     724                 :            :         else{
     725                 :      13144 :             pClassData->pEntries[ nPos ].Destroy();
     726                 :      13144 :             pClassData->nEntries--;
     727         [ -  + ]:      13144 :             for (sal_uInt32 i = nPos; i < pClassData->nEntries; i++ )
     728                 :          0 :                 pClassData->pEntries[ i ] = pClassData->pEntries[ i + 1 ];
     729                 :            :         };
     730                 :            :     };
     731                 :      15584 : }
     732                 :            : 
     733                 :            : /*************************************************************************
     734                 :            : |*
     735                 :            : |*    RscBaseCont::ContWriteSrc()
     736                 :            : |*
     737                 :            : *************************************************************************/
     738                 :      65350 : void RscBaseCont::ContWriteSrc( const RSCINST & rInst, FILE * fOutput,
     739                 :            :                                 RscTypCont * pTC, sal_uInt32 nTab,
     740                 :            :                                 const char * pVarName )
     741                 :            : {
     742                 :      65350 :     sal_uInt32  i = 0, t = 0;
     743                 :            :     RscBaseContInst * pClassData;
     744                 :            : 
     745                 :      65350 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     746                 :            : 
     747         [ +  + ]:     116648 :     for( i = 0; i < pClassData->nEntries; i++ )
     748                 :            :     {
     749         [ +  + ]:     147876 :         for( t = 0; t < nTab; t++ )
     750                 :      96578 :             fputc( '\t', fOutput );
     751                 :     153894 :         pClassData->pEntries[ i ].aInst.pClass->
     752                 :      51298 :                   WriteSrcHeader( pClassData->pEntries[ i ].aInst,
     753                 :            :                                   fOutput, pTC, nTab,
     754                 :      51298 :                                   pClassData->pEntries[ i ].aName, pVarName );
     755                 :      51298 :         fprintf( fOutput, ";\n" );
     756                 :            :     };
     757                 :      65350 : }
     758                 :            : 
     759                 :            : /*************************************************************************
     760                 :            : |*
     761                 :            : |*    RscBaseCont::ContWriteRc()
     762                 :            : |*
     763                 :            : *************************************************************************/
     764                 :     116204 : ERRTYPE RscBaseCont::ContWriteRc( const RSCINST & rInst, RscWriteRc & rMem,
     765                 :            :                               RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra )
     766                 :            : {
     767                 :            :     RscBaseContInst * pClassData;
     768                 :     116204 :     ERRTYPE       aError;
     769                 :            : 
     770 [ +  + ][ +  + ]:     116204 :     if( bExtra || bNoId )
     771                 :            :     { // Nur Subresourcen schreiben, wenn bExtra == sal_True
     772                 :     104284 :         pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     773                 :            : 
     774 [ +  + ][ +  - ]:     155578 :         for (sal_uInt32 i = 0; i < pClassData->nEntries && aError.IsOk(); i++ )
                 [ +  + ]
     775                 :            :         {
     776                 :     153882 :             aError = pClassData->pEntries[ i ].aInst.pClass->
     777                 :      51294 :                          WriteRcHeader( pClassData->pEntries[ i ].aInst,
     778                 :            :                                         rMem, pTC,
     779                 :      51294 :                                         pClassData->pEntries[ i ].aName,
     780         [ +  - ]:      51294 :                                         nDeep, bExtra );
     781                 :            :         }
     782                 :            :     }
     783                 :            : 
     784                 :     116204 :     return( aError );
     785                 :            : }
     786                 :            : 
     787                 :            : //==================================================================
     788                 :          0 : void RscBaseCont::ContWriteRcAccess
     789                 :            : (
     790                 :            :     FILE * fOutput,
     791                 :            :     RscTypCont * pTC,
     792                 :            :     const char * pName,
     793                 :            :     sal_Bool bWriteSize
     794                 :            : )
     795                 :            : {
     796 [ #  # ][ #  # ]:          0 :     if( (bNoId || bWriteSize) && !pTypeClass1 )
                 [ #  # ]
     797                 :            :     {
     798                 :          0 :         fprintf( fOutput, "\t\tsal_uInt32 nItems = *(sal_uInt32 *)(pResData+nOffset) );\n" );
     799                 :          0 :         fprintf( fOutput, "\t\tnOffset += sizeof( sal_uInt32 );\n" );
     800                 :            : 
     801                 :          0 :         fprintf( fOutput, "\t\t// Items hinzufuegen\n" );
     802                 :          0 :         fprintf( fOutput, "\t\tfor( sal_uInt32 i = 0; i < nItems; i++ )\n" );
     803                 :          0 :         fprintf( fOutput, "\t\t{\n" );
     804                 :          0 :         pTypeClass->WriteRcAccess( fOutput, pTC, "Item" );
     805                 :          0 :         fprintf( fOutput, "\t\t}\n" );
     806                 :            :     }
     807                 :            :     else
     808                 :            :     {
     809                 :          0 :         fprintf( fOutput, "\t\tSet%s( %s ", pName, pHS->getString( GetId() ).getStr() );
     810                 :          0 :         fprintf( fOutput, "%s ", aCallPar2.getStr() );
     811                 :          0 :         fprintf( fOutput, "ResId( (RSHEADER_TYPE*)(pResData+nOffset) ) ) );\n" );
     812                 :          0 :         fprintf( fOutput, "\t\tnOffset += GetObjSizeRes( (RSHEADER_TYPE*)(pResData+nOffset) );\n" );
     813                 :            :     }
     814                 :          0 : }
     815                 :            : 
     816                 :            : 
     817                 :            : /*************************************************************************
     818                 :            : |*
     819                 :            : |*    RscBaseCont::WriteSrc()
     820                 :            : |*
     821                 :            : *************************************************************************/
     822                 :      62164 : void RscBaseCont::WriteSrc( const RSCINST & rInst, FILE * fOutput,
     823                 :            :                             RscTypCont * pTC, sal_uInt32 nTab,
     824                 :            :                             const char * pVarName )
     825                 :            : {
     826                 :      62164 :     RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName );
     827                 :      62164 :     ContWriteSrc( rInst, fOutput, pTC, nTab, pVarName );
     828                 :      62164 : }
     829                 :            : 
     830                 :            : /*************************************************************************
     831                 :            : |*
     832                 :            : |*    RscBaseCont::WriteRc()
     833                 :            : |*
     834                 :            : *************************************************************************/
     835                 :     112752 : ERRTYPE RscBaseCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem,
     836                 :            :                               RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra )
     837                 :            : {
     838                 :     112752 :     ERRTYPE       aError;
     839                 :            : 
     840         [ +  - ]:     112752 :     aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra );
     841         [ +  - ]:     112752 :     if( aError.IsOk() )
     842         [ +  - ]:     112752 :         aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra );
     843                 :            : 
     844                 :     112752 :     return( aError );
     845                 :            : }
     846                 :            : 
     847                 :            : /*************************************************************************
     848                 :            : |*
     849                 :            : |*    RscBaseCont::WriteHxx()
     850                 :            : |*
     851                 :            : *************************************************************************/
     852                 :          0 : ERRTYPE RscBaseCont::WriteHxx( const RSCINST & rInst, FILE * fOutput,
     853                 :            :                                RscTypCont * pTC, const RscId & rRscId )
     854                 :            : {
     855                 :          0 :     sal_uInt32        i = 0;
     856                 :            :     RscBaseContInst * pClassData;
     857                 :          0 :     ERRTYPE       aError;
     858                 :            : 
     859         [ #  # ]:          0 :     aError = RscTop::WriteHxx( rInst, fOutput, pTC, rRscId );
     860                 :            : 
     861                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     862                 :            : 
     863 [ #  # ][ #  # ]:          0 :     for( i = 0; i < pClassData->nEntries && aError.IsOk(); i++ )
                 [ #  # ]
     864                 :            :     {
     865   [ #  #  #  # ]:          0 :         if( pClassData->pEntries[ i ].aName.IsId()
                 [ #  # ]
     866                 :          0 :           && pClassData->pEntries[ i ].aInst.pClass->IsCodeWriteable() )
     867                 :            :         {
     868                 :          0 :             aError = pClassData->pEntries[ i ].aInst.pClass->
     869                 :          0 :                          WriteHxx( pClassData->pEntries[ i ].aInst,
     870                 :            :                                    fOutput, pTC,
     871         [ #  # ]:          0 :                                    pClassData->pEntries[ i ].aName );
     872                 :            :         }
     873                 :            :     };
     874                 :            : 
     875                 :          0 :     return( aError );
     876                 :            : }
     877                 :            : 
     878                 :            : /*************************************************************************
     879                 :            : |*
     880                 :            : |*    RscBaseCont::WriteCxx()
     881                 :            : |*
     882                 :            : *************************************************************************/
     883                 :          0 : ERRTYPE RscBaseCont::WriteCxx( const RSCINST & rInst, FILE * fOutput,
     884                 :            :                                RscTypCont * pTC, const RscId & rRscId )
     885                 :            : {
     886                 :          0 :     sal_uInt32        i = 0;
     887                 :            :     RscBaseContInst * pClassData;
     888                 :          0 :     ERRTYPE       aError;
     889                 :            : 
     890         [ #  # ]:          0 :     aError = RscTop::WriteCxx( rInst, fOutput, pTC, rRscId );
     891                 :            : 
     892                 :          0 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     893                 :            : 
     894 [ #  # ][ #  # ]:          0 :     for( i = 0; i < pClassData->nEntries && aError.IsOk(); i++ )
                 [ #  # ]
     895                 :            :     {
     896   [ #  #  #  # ]:          0 :         if( pClassData->pEntries[ i ].aName.IsId()
                 [ #  # ]
     897                 :          0 :           && pClassData->pEntries[ i ].aInst.pClass->IsCodeWriteable() )
     898                 :            :         {
     899                 :          0 :             aError = pClassData->pEntries[ i ].aInst.pClass->
     900                 :          0 :                          WriteCxx( pClassData->pEntries[ i ].aInst,
     901                 :            :                                    fOutput, pTC,
     902         [ #  # ]:          0 :                                    pClassData->pEntries[ i ].aName );
     903                 :            :         }
     904                 :            :     };
     905                 :            : 
     906                 :          0 :     return( aError );
     907                 :            : }
     908                 :            : 
     909                 :            : /*************** R s c C o n t W r i t e S r c ***************************/
     910                 :            : /*************************************************************************
     911                 :            : |*
     912                 :            : |*    RscContWriteSrc::RscContWriteSrc()
     913                 :            : |*
     914                 :            : *************************************************************************/
     915                 :      14400 : RscContWriteSrc::RscContWriteSrc( Atom nId, sal_uInt32 nTypeId,
     916                 :            :                                  RscTop * pSuper, sal_Bool bNoIdent )
     917                 :      14400 :                   : RscBaseCont( nId, nTypeId, pSuper, bNoIdent )
     918                 :      14400 : {}
     919                 :            : 
     920                 :            : /*************************************************************************
     921                 :            : |*
     922                 :            : |*    RscContWriteSrc::WriteSrc()
     923                 :            : |*
     924                 :            : *************************************************************************/
     925                 :       3186 : void RscContWriteSrc::WriteSrc( const RSCINST & rInst, FILE * fOutput,
     926                 :            :                                 RscTypCont * pTC, sal_uInt32 nTab,
     927                 :            :                                 const char * pVarName )
     928                 :            : {
     929                 :            :     sal_uInt32  i;
     930                 :            : 
     931                 :       3186 :     RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName );
     932                 :            : 
     933                 :       3186 :     fprintf( fOutput, "\n" );
     934         [ +  + ]:      10136 :     for( i = 0; i < nTab; i++ )
     935                 :       6950 :         fputc( '\t', fOutput );
     936                 :       3186 :     fprintf( fOutput, "{\n" );
     937                 :            : 
     938                 :       3186 :     ContWriteSrc( rInst, fOutput, pTC, nTab +1, pVarName );
     939                 :            : 
     940         [ +  + ]:      10136 :     for( i = 0; i < nTab; i++ )
     941                 :       6950 :         fputc( '\t', fOutput );
     942                 :       3186 :     fprintf( fOutput, "}" );
     943                 :       3186 : }
     944                 :            : 
     945                 :            : /*************** R s c C o n t *******************************************/
     946                 :            : /*************************************************************************
     947                 :            : |*
     948                 :            : |*    RscCont::RscCont()
     949                 :            : |*
     950                 :            : *************************************************************************/
     951                 :      12960 : RscCont::RscCont( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper, sal_Bool bNoIdent )
     952                 :      12960 :               : RscContWriteSrc( nId, nTypeId, pSuper, bNoIdent )
     953                 :      12960 : {}
     954                 :            : 
     955                 :            : /*************************************************************************
     956                 :            : |*
     957                 :            : |*    RscCont::WriteRc()
     958                 :            : |*
     959                 :            : *************************************************************************/
     960                 :       3452 : ERRTYPE RscCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem,
     961                 :            :                                  RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra )
     962                 :            : {
     963                 :            :     RscBaseContInst * pClassData;
     964                 :       3452 :     ERRTYPE aError;
     965                 :            : 
     966         [ +  - ]:       3452 :     aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra );
     967                 :            : 
     968                 :       3452 :     pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData);
     969                 :            : 
     970                 :       3452 :     rMem.Put( pClassData->nEntries );
     971                 :            : 
     972         [ +  - ]:       3452 :     if( aError.IsOk() )
     973         [ +  - ]:       3452 :         aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra );
     974                 :            : 
     975                 :       3452 :     return aError;
     976                 :            : }
     977                 :            : 
     978                 :            : //==================================================================
     979                 :          0 : void RscCont::WriteRcAccess
     980                 :            : (
     981                 :            :     FILE * fOutput,
     982                 :            :     RscTypCont * pTC,
     983                 :            :     const char * pName
     984                 :            : )
     985                 :            : {
     986                 :          0 :     ContWriteRcAccess( fOutput, pTC, pName, sal_True );
     987                 :          0 : }
     988                 :            : 
     989                 :            : /*************************************************************************
     990                 :            : |*
     991                 :            : |*    RscContExtraData::RscContExtraData()
     992                 :            : |*
     993                 :            : *************************************************************************/
     994                 :       1440 : RscContExtraData::RscContExtraData( Atom nId, sal_uInt32 nTypeId,
     995                 :            :                              RscTop * pSuper, sal_Bool bNoIdent )
     996                 :       1440 :                      : RscContWriteSrc( nId, nTypeId, pSuper, bNoIdent )
     997                 :       1440 : {}
     998                 :            : 
     999                 :            : /*************************************************************************
    1000                 :            : |*
    1001                 :            : |*    RscContExtraData::WriteRc()
    1002                 :            : |*
    1003                 :            : *************************************************************************/
    1004                 :      62336 : ERRTYPE RscContExtraData::WriteRc( const RSCINST & rInst, RscWriteRc & rMem,
    1005                 :            :                              RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra )
    1006                 :            : {
    1007                 :      62336 :     ERRTYPE aError;
    1008                 :            : 
    1009         [ +  + ]:      62336 :     if( bExtra )
    1010         [ +  - ]:      50416 :         aError = RscContWriteSrc::WriteRc( rInst, rMem, pTC, nDeep, bExtra );
    1011                 :            :     else
    1012         [ +  - ]:      11920 :         aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra );
    1013                 :            : 
    1014                 :      62336 :     return aError;
    1015                 :            : }
    1016                 :            : 
    1017                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10