1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_rsc.hxx" 30*cdf0e10cSrcweir /****************** I N C L U D E S **************************************/ 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir // C and C++ Includes. 33*cdf0e10cSrcweir #include <stdlib.h> 34*cdf0e10cSrcweir #include <stdio.h> 35*cdf0e10cSrcweir #include <string.h> 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir // Programmabh�ngige Includes. 38*cdf0e10cSrcweir #include <rsccont.hxx> 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #include <tools/rcid.h> 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir /****************** C O D E **********************************************/ 43*cdf0e10cSrcweir /****************** E N T R Y S T R U C T ********************************/ 44*cdf0e10cSrcweir /************************************************************************* 45*cdf0e10cSrcweir |* 46*cdf0e10cSrcweir |* ENTRYSTRUCT::Destroy() 47*cdf0e10cSrcweir |* 48*cdf0e10cSrcweir |* Beschreibung 49*cdf0e10cSrcweir |* Ersterstellung MM 06.08.91 50*cdf0e10cSrcweir |* Letzte Aenderung MM 06.08.91 51*cdf0e10cSrcweir |* 52*cdf0e10cSrcweir *************************************************************************/ 53*cdf0e10cSrcweir void ENTRY_STRUCT::Destroy() 54*cdf0e10cSrcweir { 55*cdf0e10cSrcweir aName.Destroy(); 56*cdf0e10cSrcweir if( aInst.IsInst() ){ 57*cdf0e10cSrcweir aInst.pClass->Destroy( aInst ); 58*cdf0e10cSrcweir rtl_freeMemory( aInst.pData ); 59*cdf0e10cSrcweir }; 60*cdf0e10cSrcweir } 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir /****************** R s c B a s e C o n t ********************************/ 63*cdf0e10cSrcweir /************************************************************************* 64*cdf0e10cSrcweir |* 65*cdf0e10cSrcweir |* RscBaseCont::RscBaseCont() 66*cdf0e10cSrcweir |* 67*cdf0e10cSrcweir |* Beschreibung 68*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 69*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 70*cdf0e10cSrcweir |* 71*cdf0e10cSrcweir *************************************************************************/ 72*cdf0e10cSrcweir RscBaseCont::RscBaseCont( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper, 73*cdf0e10cSrcweir sal_Bool bNoIdent ) 74*cdf0e10cSrcweir : RscTop( nId, nTypeId, pSuper ), 75*cdf0e10cSrcweir nSize( 0 ) 76*cdf0e10cSrcweir { 77*cdf0e10cSrcweir pTypeClass = NULL; 78*cdf0e10cSrcweir pTypeClass1 = NULL; 79*cdf0e10cSrcweir bNoId = bNoIdent; 80*cdf0e10cSrcweir nOffInstData = RscTop::Size(); 81*cdf0e10cSrcweir nSize = nOffInstData + ALIGNED_SIZE( sizeof( RscBaseContInst ) ); 82*cdf0e10cSrcweir } 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir /************************************************************************* 85*cdf0e10cSrcweir |* 86*cdf0e10cSrcweir |* RscBaseCont::~RscBaseCont() 87*cdf0e10cSrcweir |* 88*cdf0e10cSrcweir |* Beschreibung 89*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 90*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 91*cdf0e10cSrcweir |* 92*cdf0e10cSrcweir *************************************************************************/ 93*cdf0e10cSrcweir RscBaseCont::~RscBaseCont() 94*cdf0e10cSrcweir { 95*cdf0e10cSrcweir } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir /************************************************************************* 98*cdf0e10cSrcweir |* 99*cdf0e10cSrcweir |* RscBaseCont::GetClassType() 100*cdf0e10cSrcweir |* 101*cdf0e10cSrcweir |* Beschreibung 102*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 103*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 104*cdf0e10cSrcweir |* 105*cdf0e10cSrcweir *************************************************************************/ 106*cdf0e10cSrcweir RSCCLASS_TYPE RscBaseCont::GetClassType() const 107*cdf0e10cSrcweir { 108*cdf0e10cSrcweir return RSCCLASS_COMPLEX; 109*cdf0e10cSrcweir } 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir /************************************************************************* 112*cdf0e10cSrcweir |* 113*cdf0e10cSrcweir |* DestroyElements() 114*cdf0e10cSrcweir |* 115*cdf0e10cSrcweir |* Beschreibung 116*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 117*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 118*cdf0e10cSrcweir |* 119*cdf0e10cSrcweir *************************************************************************/ 120*cdf0e10cSrcweir void RscBaseCont::DestroyElements( RscBaseContInst * pClassData ) 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir sal_uInt32 i = 0; 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir if( pClassData->nEntries ){ 125*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ){ 126*cdf0e10cSrcweir pClassData->pEntries[ i ].Destroy(); 127*cdf0e10cSrcweir }; 128*cdf0e10cSrcweir rtl_freeMemory( pClassData->pEntries ); 129*cdf0e10cSrcweir pClassData->pEntries = NULL; 130*cdf0e10cSrcweir pClassData->nEntries = 0; 131*cdf0e10cSrcweir }; 132*cdf0e10cSrcweir } 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir /************************************************************************* 135*cdf0e10cSrcweir |* 136*cdf0e10cSrcweir |* RscBaseCont::Create() 137*cdf0e10cSrcweir |* 138*cdf0e10cSrcweir |* Beschreibung 139*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 140*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 141*cdf0e10cSrcweir |* 142*cdf0e10cSrcweir *************************************************************************/ 143*cdf0e10cSrcweir RSCINST RscBaseCont::Create( RSCINST * pInst, const RSCINST & rDflt, 144*cdf0e10cSrcweir sal_Bool bOwnClass ) 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir sal_uInt32 i = 0; 147*cdf0e10cSrcweir RSCINST aInst; 148*cdf0e10cSrcweir RscBaseContInst * pClassData; 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir if( !pInst ){ 151*cdf0e10cSrcweir aInst.pClass = this; 152*cdf0e10cSrcweir aInst.pData = (CLASS_DATA) rtl_allocateMemory( Size() ); 153*cdf0e10cSrcweir } 154*cdf0e10cSrcweir else 155*cdf0e10cSrcweir aInst = *pInst; 156*cdf0e10cSrcweir if( !bOwnClass && rDflt.IsInst() ) 157*cdf0e10cSrcweir bOwnClass = rDflt.pClass->InHierarchy( this ); 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir RscTop::Create( &aInst, rDflt, bOwnClass ); 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(aInst.pData + nOffInstData); 162*cdf0e10cSrcweir pClassData->nEntries = 0; 163*cdf0e10cSrcweir pClassData->pEntries = NULL; 164*cdf0e10cSrcweir pClassData->bDflt = sal_True; 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir if( bOwnClass ){ 167*cdf0e10cSrcweir RscBaseContInst * pDfltClassData; 168*cdf0e10cSrcweir RSCINST aDfltI; 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir pDfltClassData = (RscBaseContInst *)(rDflt.pData + nOffInstData); 171*cdf0e10cSrcweir 172*cdf0e10cSrcweir if( 0 != pDfltClassData->nEntries ){ 173*cdf0e10cSrcweir *pClassData = *pDfltClassData; 174*cdf0e10cSrcweir pClassData->pEntries = 175*cdf0e10cSrcweir (ENTRY_STRUCT *)rtl_allocateMemory( sizeof( ENTRY_STRUCT ) 176*cdf0e10cSrcweir * pClassData->nEntries ); 177*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ){ 178*cdf0e10cSrcweir pClassData->pEntries[ i ].Create(); 179*cdf0e10cSrcweir pClassData->pEntries[ i ].aName = 180*cdf0e10cSrcweir pDfltClassData->pEntries[ i ].aName; 181*cdf0e10cSrcweir aDfltI = pDfltClassData->pEntries[ i ].aInst; 182*cdf0e10cSrcweir pClassData->pEntries[ i ].aInst = 183*cdf0e10cSrcweir aDfltI.pClass->Create( NULL, aDfltI ); 184*cdf0e10cSrcweir }; 185*cdf0e10cSrcweir }; 186*cdf0e10cSrcweir } 187*cdf0e10cSrcweir 188*cdf0e10cSrcweir return( aInst ); 189*cdf0e10cSrcweir } 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir /************************************************************************* 192*cdf0e10cSrcweir |* 193*cdf0e10cSrcweir |* RscBaseCont::Destroy() 194*cdf0e10cSrcweir |* 195*cdf0e10cSrcweir |* Beschreibung 196*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 197*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 198*cdf0e10cSrcweir |* 199*cdf0e10cSrcweir *************************************************************************/ 200*cdf0e10cSrcweir void RscBaseCont::Destroy( const RSCINST & rInst ){ 201*cdf0e10cSrcweir RscBaseContInst * pClassData; 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir RscTop::Destroy( rInst); 204*cdf0e10cSrcweir 205*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 206*cdf0e10cSrcweir DestroyElements( pClassData ); 207*cdf0e10cSrcweir } 208*cdf0e10cSrcweir 209*cdf0e10cSrcweir /************************************************************************* 210*cdf0e10cSrcweir |* 211*cdf0e10cSrcweir |* RscBaseCont::SearchEle() 212*cdf0e10cSrcweir |* 213*cdf0e10cSrcweir |* Beschreibung 214*cdf0e10cSrcweir |* Ersterstellung MM 17.05.91 215*cdf0e10cSrcweir |* Letzte Aenderung MM 17.05.91 216*cdf0e10cSrcweir |* 217*cdf0e10cSrcweir *************************************************************************/ 218*cdf0e10cSrcweir RSCINST RscBaseCont::SearchElePos( const RSCINST & rInst, const RscId & rEleName, 219*cdf0e10cSrcweir RscTop * pClass, sal_uInt32 nPos ) 220*cdf0e10cSrcweir { 221*cdf0e10cSrcweir sal_uInt32 i = 0; 222*cdf0e10cSrcweir RscBaseContInst * pClassData; 223*cdf0e10cSrcweir 224*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 225*cdf0e10cSrcweir if( !pClass ) 226*cdf0e10cSrcweir pClass = pTypeClass; 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir if( rEleName.IsId() ){ 229*cdf0e10cSrcweir for( i = nPos; i < pClassData->nEntries; i++ ){ 230*cdf0e10cSrcweir if( pClassData->pEntries[ i ].aName == rEleName 231*cdf0e10cSrcweir && pClassData->pEntries[ i ].aInst.pClass == pClass ) 232*cdf0e10cSrcweir { 233*cdf0e10cSrcweir return( pClassData->pEntries[ i ].aInst ); 234*cdf0e10cSrcweir }; 235*cdf0e10cSrcweir }; 236*cdf0e10cSrcweir }; 237*cdf0e10cSrcweir return RSCINST(); 238*cdf0e10cSrcweir } 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir /************************************************************************* 241*cdf0e10cSrcweir |* 242*cdf0e10cSrcweir |* RscBaseCont::SearchEle() 243*cdf0e10cSrcweir |* 244*cdf0e10cSrcweir |* Beschreibung 245*cdf0e10cSrcweir |* Ersterstellung MM 17.05.91 246*cdf0e10cSrcweir |* Letzte Aenderung MM 17.05.91 247*cdf0e10cSrcweir |* 248*cdf0e10cSrcweir *************************************************************************/ 249*cdf0e10cSrcweir RSCINST RscBaseCont::SearchEle( const RSCINST & rInst, const RscId & rEleName, 250*cdf0e10cSrcweir RscTop * pClass ) 251*cdf0e10cSrcweir { 252*cdf0e10cSrcweir return SearchElePos( rInst, rEleName, pClass, 0 ); 253*cdf0e10cSrcweir } 254*cdf0e10cSrcweir 255*cdf0e10cSrcweir /************************************************************************* 256*cdf0e10cSrcweir |* 257*cdf0e10cSrcweir |* RscBaseCont::GetElement() 258*cdf0e10cSrcweir |* 259*cdf0e10cSrcweir |* Beschreibung 260*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 261*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 262*cdf0e10cSrcweir |* 263*cdf0e10cSrcweir *************************************************************************/ 264*cdf0e10cSrcweir ERRTYPE RscBaseCont::GetElement( const RSCINST & rInst, const RscId & rEleName, 265*cdf0e10cSrcweir RscTop * pCreateClass, 266*cdf0e10cSrcweir const RSCINST & rCreateInst, RSCINST * pGetInst ) 267*cdf0e10cSrcweir { 268*cdf0e10cSrcweir RscBaseContInst * pClassData; 269*cdf0e10cSrcweir RSCINST aTmpI; 270*cdf0e10cSrcweir ERRTYPE aError; 271*cdf0e10cSrcweir 272*cdf0e10cSrcweir if( !bNoId && !rEleName.IsId() ) 273*cdf0e10cSrcweir aError = WRN_CONT_NOID; 274*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 275*cdf0e10cSrcweir 276*cdf0e10cSrcweir if( pCreateClass ){ 277*cdf0e10cSrcweir if( !pCreateClass->InHierarchy( pTypeClass ) ){ 278*cdf0e10cSrcweir if( pTypeClass1 ){ 279*cdf0e10cSrcweir if( !pCreateClass->InHierarchy( pTypeClass1 ) ){ 280*cdf0e10cSrcweir // Falscher Typ 281*cdf0e10cSrcweir return ERR_CONT_INVALIDTYPE; 282*cdf0e10cSrcweir } 283*cdf0e10cSrcweir } 284*cdf0e10cSrcweir else{ 285*cdf0e10cSrcweir // Falscher Typ 286*cdf0e10cSrcweir return ERR_CONT_INVALIDTYPE; 287*cdf0e10cSrcweir }; 288*cdf0e10cSrcweir }; 289*cdf0e10cSrcweir } 290*cdf0e10cSrcweir else 291*cdf0e10cSrcweir pCreateClass = pTypeClass; 292*cdf0e10cSrcweir 293*cdf0e10cSrcweir pClassData->bDflt = sal_False; 294*cdf0e10cSrcweir if( !bNoId ) 295*cdf0e10cSrcweir aTmpI = SearchEle( rInst, rEleName, pCreateClass ); 296*cdf0e10cSrcweir // Eintrag gefunden 297*cdf0e10cSrcweir if( aTmpI.IsInst() ){ 298*cdf0e10cSrcweir aError = WRN_CONT_DOUBLEID; 299*cdf0e10cSrcweir if( rCreateInst.IsInst() ){ 300*cdf0e10cSrcweir aTmpI.pClass->Destroy( aTmpI ); 301*cdf0e10cSrcweir aTmpI.pClass->Create( &aTmpI, rCreateInst ); 302*cdf0e10cSrcweir }; 303*cdf0e10cSrcweir } 304*cdf0e10cSrcweir else { 305*cdf0e10cSrcweir if( pClassData->pEntries ){ 306*cdf0e10cSrcweir pClassData->pEntries = 307*cdf0e10cSrcweir (ENTRY_STRUCT *)rtl_reallocateMemory( pClassData->pEntries, 308*cdf0e10cSrcweir sizeof( ENTRY_STRUCT ) * (pClassData->nEntries +1) ); 309*cdf0e10cSrcweir } 310*cdf0e10cSrcweir else { 311*cdf0e10cSrcweir pClassData->pEntries = 312*cdf0e10cSrcweir (ENTRY_STRUCT *)rtl_allocateMemory( sizeof( ENTRY_STRUCT ) 313*cdf0e10cSrcweir * (pClassData->nEntries +1) ); 314*cdf0e10cSrcweir }; 315*cdf0e10cSrcweir 316*cdf0e10cSrcweir pClassData->pEntries[ pClassData->nEntries ].Create(); 317*cdf0e10cSrcweir pClassData->pEntries[ pClassData->nEntries ].aName = rEleName; 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir if( rCreateInst.IsInst() ){ 320*cdf0e10cSrcweir // Instanz mit CreateInst-Daten initialisieren 321*cdf0e10cSrcweir pClassData->pEntries[ pClassData->nEntries ].aInst = 322*cdf0e10cSrcweir pCreateClass->Create( NULL, rCreateInst ); 323*cdf0e10cSrcweir } 324*cdf0e10cSrcweir else { 325*cdf0e10cSrcweir pClassData->pEntries[ pClassData->nEntries ].aInst = 326*cdf0e10cSrcweir pCreateClass->Create( NULL, RSCINST() ); 327*cdf0e10cSrcweir }; 328*cdf0e10cSrcweir 329*cdf0e10cSrcweir pClassData->nEntries++; 330*cdf0e10cSrcweir aTmpI = pClassData->pEntries[ pClassData->nEntries -1 ].aInst; 331*cdf0e10cSrcweir } 332*cdf0e10cSrcweir 333*cdf0e10cSrcweir *pGetInst = aTmpI; 334*cdf0e10cSrcweir return aError; 335*cdf0e10cSrcweir } 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir /************************************************************************* 338*cdf0e10cSrcweir |* 339*cdf0e10cSrcweir |* RscBaseCont::GetCount() 340*cdf0e10cSrcweir |* 341*cdf0e10cSrcweir |* Beschreibung 342*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 343*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 344*cdf0e10cSrcweir |* 345*cdf0e10cSrcweir *************************************************************************/ 346*cdf0e10cSrcweir sal_uInt32 RscBaseCont::GetCount( const RSCINST & rInst ){ 347*cdf0e10cSrcweir RscBaseContInst * pClassData; 348*cdf0e10cSrcweir 349*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 350*cdf0e10cSrcweir return( pClassData->nEntries ); 351*cdf0e10cSrcweir } 352*cdf0e10cSrcweir 353*cdf0e10cSrcweir /************************************************************************* 354*cdf0e10cSrcweir |* 355*cdf0e10cSrcweir |* RscBaseCont::GetPosEle() 356*cdf0e10cSrcweir |* 357*cdf0e10cSrcweir |* Beschreibung 358*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 359*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 360*cdf0e10cSrcweir |* 361*cdf0e10cSrcweir *************************************************************************/ 362*cdf0e10cSrcweir RSCINST RscBaseCont::GetPosEle( const RSCINST & rInst, sal_uInt32 nPos ){ 363*cdf0e10cSrcweir RscBaseContInst * pClassData; 364*cdf0e10cSrcweir 365*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 366*cdf0e10cSrcweir 367*cdf0e10cSrcweir if( nPos < pClassData->nEntries ) 368*cdf0e10cSrcweir return( pClassData->pEntries[ nPos ].aInst ); 369*cdf0e10cSrcweir return RSCINST(); 370*cdf0e10cSrcweir } 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir /************************************************************************* 373*cdf0e10cSrcweir |* 374*cdf0e10cSrcweir |* RscBaseCont::MovePosEle() 375*cdf0e10cSrcweir |* 376*cdf0e10cSrcweir |* Beschreibung 377*cdf0e10cSrcweir |* Ersterstellung MM 23.10.91 378*cdf0e10cSrcweir |* Letzte Aenderung MM 23.10.91 379*cdf0e10cSrcweir |* 380*cdf0e10cSrcweir *************************************************************************/ 381*cdf0e10cSrcweir ERRTYPE RscBaseCont::MovePosEle( const RSCINST & rInst, sal_uInt32 nDestPos, 382*cdf0e10cSrcweir sal_uInt32 nSourcePos ) 383*cdf0e10cSrcweir { 384*cdf0e10cSrcweir ERRTYPE aError; 385*cdf0e10cSrcweir RscBaseContInst * pClassData; 386*cdf0e10cSrcweir 387*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 388*cdf0e10cSrcweir 389*cdf0e10cSrcweir if( (nDestPos < pClassData->nEntries) && (nSourcePos < pClassData->nEntries) ){ 390*cdf0e10cSrcweir ENTRY_STRUCT aEntry; 391*cdf0e10cSrcweir int nInc = 1; 392*cdf0e10cSrcweir sal_uInt32 i = 0; 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir // Quelle Merken 395*cdf0e10cSrcweir aEntry = pClassData->pEntries[ nSourcePos ]; 396*cdf0e10cSrcweir // Richtung der for-Schleife bestimmen 397*cdf0e10cSrcweir if( nDestPos < nSourcePos ) 398*cdf0e10cSrcweir nInc = -1; 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir for( i = nSourcePos; i != nDestPos; i += nInc ) 401*cdf0e10cSrcweir pClassData->pEntries[ i ] = pClassData->pEntries[ i + nInc ]; 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir // Zuweisung Quelle auf Ziel 404*cdf0e10cSrcweir pClassData->pEntries[ nDestPos ] = aEntry; 405*cdf0e10cSrcweir } 406*cdf0e10cSrcweir else 407*cdf0e10cSrcweir aError = ERR_RSCCONT; 408*cdf0e10cSrcweir return aError; 409*cdf0e10cSrcweir } 410*cdf0e10cSrcweir 411*cdf0e10cSrcweir /************************************************************************* 412*cdf0e10cSrcweir |* 413*cdf0e10cSrcweir |* RscBaseCont::SetPosRscId() 414*cdf0e10cSrcweir |* 415*cdf0e10cSrcweir |* Beschreibung 416*cdf0e10cSrcweir |* Ersterstellung MM 30.09.91 417*cdf0e10cSrcweir |* Letzte Aenderung MM 30.09.91 418*cdf0e10cSrcweir |* 419*cdf0e10cSrcweir *************************************************************************/ 420*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetPosRscId( const RSCINST & rInst, sal_uInt32 nPos, 421*cdf0e10cSrcweir const RscId & rId ){ 422*cdf0e10cSrcweir RscBaseContInst * pClassData; 423*cdf0e10cSrcweir RSCINST aTmpI; 424*cdf0e10cSrcweir ERRTYPE aError; 425*cdf0e10cSrcweir 426*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 427*cdf0e10cSrcweir 428*cdf0e10cSrcweir if( nPos < pClassData->nEntries ){ 429*cdf0e10cSrcweir if( ! (rId == pClassData->pEntries[ nPos ].aName) ) 430*cdf0e10cSrcweir aTmpI = SearchEle( rInst, rId, 431*cdf0e10cSrcweir pClassData->pEntries[ nPos ].aInst.pClass ); 432*cdf0e10cSrcweir if( !aTmpI.IsInst() ) 433*cdf0e10cSrcweir pClassData->pEntries[ nPos ].aName = rId; 434*cdf0e10cSrcweir else 435*cdf0e10cSrcweir aError = ERR_RSCCONT; 436*cdf0e10cSrcweir } 437*cdf0e10cSrcweir else 438*cdf0e10cSrcweir aError = ERR_RSCCONT; 439*cdf0e10cSrcweir return( aError ); 440*cdf0e10cSrcweir } 441*cdf0e10cSrcweir 442*cdf0e10cSrcweir /************************************************************************* 443*cdf0e10cSrcweir |* 444*cdf0e10cSrcweir |* RscBaseCont::GetInfoEle() 445*cdf0e10cSrcweir |* 446*cdf0e10cSrcweir |* Beschreibung 447*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 448*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 449*cdf0e10cSrcweir |* 450*cdf0e10cSrcweir *************************************************************************/ 451*cdf0e10cSrcweir SUBINFO_STRUCT RscBaseCont::GetInfoEle( const RSCINST & rInst, sal_uInt32 nPos ){ 452*cdf0e10cSrcweir RscBaseContInst * pClassData; 453*cdf0e10cSrcweir SUBINFO_STRUCT aInfo; 454*cdf0e10cSrcweir 455*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 456*cdf0e10cSrcweir 457*cdf0e10cSrcweir if( nPos < pClassData->nEntries ){ 458*cdf0e10cSrcweir aInfo.aId = pClassData->pEntries[ nPos ].aName; 459*cdf0e10cSrcweir aInfo.nPos = nPos; 460*cdf0e10cSrcweir aInfo.pClass = pClassData->pEntries[ nPos ].aInst.pClass; 461*cdf0e10cSrcweir } 462*cdf0e10cSrcweir return( aInfo ); 463*cdf0e10cSrcweir } 464*cdf0e10cSrcweir 465*cdf0e10cSrcweir /************************************************************************* 466*cdf0e10cSrcweir |* 467*cdf0e10cSrcweir |* RscBaseCont::SetString() 468*cdf0e10cSrcweir |* 469*cdf0e10cSrcweir |* Beschreibung 470*cdf0e10cSrcweir |* Ersterstellung MM 29.04.91 471*cdf0e10cSrcweir |* Letzte Aenderung MM 29.04.91 472*cdf0e10cSrcweir |* 473*cdf0e10cSrcweir *************************************************************************/ 474*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetString( const RSCINST & rInst, const char * pStr ) 475*cdf0e10cSrcweir { 476*cdf0e10cSrcweir RscBaseContInst * pClassData; 477*cdf0e10cSrcweir RSCINST aTmpI; 478*cdf0e10cSrcweir ERRTYPE aError; 479*cdf0e10cSrcweir char *pTmpStr; 480*cdf0e10cSrcweir 481*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 482*cdf0e10cSrcweir 483*cdf0e10cSrcweir //?B 040991 484*cdf0e10cSrcweir //?W 040991 sonst Endlosrekursion moeglich 485*cdf0e10cSrcweir if( RSC_NOTYPE == pTypeClass->GetTypId() ){ 486*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI ); 487*cdf0e10cSrcweir aError = aTmpI.pClass->GetString( aTmpI, &pTmpStr ); 488*cdf0e10cSrcweir if( aError.IsOk() ) 489*cdf0e10cSrcweir aError = aTmpI.pClass->SetString( aTmpI, pStr ); 490*cdf0e10cSrcweir else { 491*cdf0e10cSrcweir aError.Clear(); 492*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 493*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI ); 494*cdf0e10cSrcweir aError = aTmpI.pClass->GetString( aTmpI, &pTmpStr ); 495*cdf0e10cSrcweir if( aError.IsOk() ) 496*cdf0e10cSrcweir aError = aTmpI.pClass->SetString( aTmpI, pStr ); 497*cdf0e10cSrcweir } 498*cdf0e10cSrcweir if( aError.IsError() ) 499*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 500*cdf0e10cSrcweir } 501*cdf0e10cSrcweir else 502*cdf0e10cSrcweir aError = ERR_UNKNOWN_METHOD; 503*cdf0e10cSrcweir 504*cdf0e10cSrcweir return( aError ); 505*cdf0e10cSrcweir } 506*cdf0e10cSrcweir 507*cdf0e10cSrcweir /************************************************************************* 508*cdf0e10cSrcweir |* 509*cdf0e10cSrcweir |* RscBaseCont::SetNumber() 510*cdf0e10cSrcweir |* 511*cdf0e10cSrcweir |* Beschreibung 512*cdf0e10cSrcweir |* Ersterstellung MM 12.06.91 513*cdf0e10cSrcweir |* Letzte Aenderung MM 12.06.91 514*cdf0e10cSrcweir |* 515*cdf0e10cSrcweir *************************************************************************/ 516*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetNumber( const RSCINST & rInst, sal_Int32 lValue ){ 517*cdf0e10cSrcweir RscBaseContInst * pClassData; 518*cdf0e10cSrcweir RSCINST aTmpI; 519*cdf0e10cSrcweir ERRTYPE aError; 520*cdf0e10cSrcweir sal_Int32 lNumber; 521*cdf0e10cSrcweir 522*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 523*cdf0e10cSrcweir 524*cdf0e10cSrcweir //?B 040991 525*cdf0e10cSrcweir //?W 040991 sonst Endlosrekursion moeglich 526*cdf0e10cSrcweir if( RSC_NOTYPE == pTypeClass->GetTypId() ){ 527*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI ); 528*cdf0e10cSrcweir aError = aTmpI.pClass->GetNumber( aTmpI, &lNumber ); 529*cdf0e10cSrcweir if( aError.IsOk() ) 530*cdf0e10cSrcweir aError = aTmpI.pClass->SetNumber( aTmpI, lValue ); 531*cdf0e10cSrcweir else { 532*cdf0e10cSrcweir aError.Clear(); 533*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 534*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI ); 535*cdf0e10cSrcweir aError = aTmpI.pClass->GetNumber( aTmpI, &lNumber ); 536*cdf0e10cSrcweir if( aError.IsOk() ) 537*cdf0e10cSrcweir aError = aTmpI.pClass->SetNumber( aTmpI, lValue ); 538*cdf0e10cSrcweir } 539*cdf0e10cSrcweir if( aError.IsError() ) 540*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 541*cdf0e10cSrcweir } 542*cdf0e10cSrcweir else 543*cdf0e10cSrcweir aError = ERR_UNKNOWN_METHOD; 544*cdf0e10cSrcweir 545*cdf0e10cSrcweir return( aError ); 546*cdf0e10cSrcweir } 547*cdf0e10cSrcweir 548*cdf0e10cSrcweir //================================================================== 549*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetBool 550*cdf0e10cSrcweir ( 551*cdf0e10cSrcweir const RSCINST & rInst, 552*cdf0e10cSrcweir sal_Bool bValue 553*cdf0e10cSrcweir ) 554*cdf0e10cSrcweir { 555*cdf0e10cSrcweir RscBaseContInst * pClassData; 556*cdf0e10cSrcweir RSCINST aTmpI; 557*cdf0e10cSrcweir ERRTYPE aError; 558*cdf0e10cSrcweir sal_Bool bBool; 559*cdf0e10cSrcweir 560*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 561*cdf0e10cSrcweir 562*cdf0e10cSrcweir //?B 040991 563*cdf0e10cSrcweir //?W 040991 sonst Endlosrekursion moeglich 564*cdf0e10cSrcweir if( RSC_NOTYPE == pTypeClass->GetTypId() ) 565*cdf0e10cSrcweir { 566*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI ); 567*cdf0e10cSrcweir aError = aTmpI.pClass->GetBool( aTmpI, &bBool ); 568*cdf0e10cSrcweir if( aError.IsOk() ) 569*cdf0e10cSrcweir aError = aTmpI.pClass->SetBool( aTmpI, bValue ); 570*cdf0e10cSrcweir else { 571*cdf0e10cSrcweir aError.Clear(); 572*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 573*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI ); 574*cdf0e10cSrcweir aError = aTmpI.pClass->GetBool( aTmpI, &bBool ); 575*cdf0e10cSrcweir if( aError.IsOk() ) 576*cdf0e10cSrcweir aError = aTmpI.pClass->SetBool( aTmpI, bValue ); 577*cdf0e10cSrcweir } 578*cdf0e10cSrcweir if( aError.IsError() ) 579*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 580*cdf0e10cSrcweir } 581*cdf0e10cSrcweir else 582*cdf0e10cSrcweir aError = ERR_UNKNOWN_METHOD; 583*cdf0e10cSrcweir 584*cdf0e10cSrcweir return( aError ); 585*cdf0e10cSrcweir } 586*cdf0e10cSrcweir 587*cdf0e10cSrcweir //================================================================== 588*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetConst 589*cdf0e10cSrcweir ( 590*cdf0e10cSrcweir const RSCINST & rInst, 591*cdf0e10cSrcweir Atom nValueId, 592*cdf0e10cSrcweir sal_Int32 lValue 593*cdf0e10cSrcweir ) 594*cdf0e10cSrcweir { 595*cdf0e10cSrcweir RscBaseContInst * pClassData; 596*cdf0e10cSrcweir RSCINST aTmpI; 597*cdf0e10cSrcweir ERRTYPE aError; 598*cdf0e10cSrcweir Atom nConst; 599*cdf0e10cSrcweir 600*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 601*cdf0e10cSrcweir 602*cdf0e10cSrcweir //?B 040991 603*cdf0e10cSrcweir //?W 040991 sonst Endlosrekursion moeglich 604*cdf0e10cSrcweir if( RSC_NOTYPE == pTypeClass->GetTypId() ){ 605*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI ); 606*cdf0e10cSrcweir aError = aTmpI.pClass->GetConst( aTmpI, &nConst ); 607*cdf0e10cSrcweir if( aError.IsOk() ) 608*cdf0e10cSrcweir aError = aTmpI.pClass->SetConst( aTmpI, nValueId, lValue ); 609*cdf0e10cSrcweir else { 610*cdf0e10cSrcweir aError.Clear(); 611*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 612*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI ); 613*cdf0e10cSrcweir aError = aTmpI.pClass->GetConst( aTmpI, &nConst ); 614*cdf0e10cSrcweir if( aError.IsOk() ) 615*cdf0e10cSrcweir aError = aTmpI.pClass->SetConst( aTmpI, nValueId, lValue ); 616*cdf0e10cSrcweir } 617*cdf0e10cSrcweir if( aError.IsError() ) 618*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 619*cdf0e10cSrcweir } 620*cdf0e10cSrcweir else 621*cdf0e10cSrcweir aError = ERR_UNKNOWN_METHOD; 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir return( aError ); 624*cdf0e10cSrcweir } 625*cdf0e10cSrcweir 626*cdf0e10cSrcweir /************************************************************************* 627*cdf0e10cSrcweir |* 628*cdf0e10cSrcweir |* RscBaseCont::SetRef() 629*cdf0e10cSrcweir |* 630*cdf0e10cSrcweir |* Beschreibung 631*cdf0e10cSrcweir |* Ersterstellung MM 02.12.91 632*cdf0e10cSrcweir |* Letzte Aenderung MM 02.12.91 633*cdf0e10cSrcweir |* 634*cdf0e10cSrcweir *************************************************************************/ 635*cdf0e10cSrcweir ERRTYPE RscBaseCont::SetRef( const RSCINST & rInst, const RscId & rRefId ){ 636*cdf0e10cSrcweir RscBaseContInst * pClassData; 637*cdf0e10cSrcweir RSCINST aTmpI; 638*cdf0e10cSrcweir ERRTYPE aError; 639*cdf0e10cSrcweir RscId aId; 640*cdf0e10cSrcweir 641*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 642*cdf0e10cSrcweir 643*cdf0e10cSrcweir //?B 040991 644*cdf0e10cSrcweir //?W 040991 sonst Endlosrekursion moeglich 645*cdf0e10cSrcweir if( RSC_NOTYPE == pTypeClass->GetTypId() ){ 646*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass, RSCINST(), &aTmpI ); 647*cdf0e10cSrcweir aError = aTmpI.pClass->GetRef( aTmpI, &aId ); 648*cdf0e10cSrcweir if( aError.IsOk() ) 649*cdf0e10cSrcweir aError = aTmpI.pClass->SetRef( aTmpI, rRefId ); 650*cdf0e10cSrcweir else { 651*cdf0e10cSrcweir aError.Clear(); 652*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 653*cdf0e10cSrcweir aError = GetElement( rInst, RscId(), pTypeClass1, RSCINST(), &aTmpI ); 654*cdf0e10cSrcweir aError = aTmpI.pClass->GetRef( aTmpI, &aId ); 655*cdf0e10cSrcweir if( aError.IsOk() ) 656*cdf0e10cSrcweir aError = aTmpI.pClass->SetNumber( aTmpI, rRefId ); 657*cdf0e10cSrcweir } 658*cdf0e10cSrcweir if( aError.IsError() ) 659*cdf0e10cSrcweir DeletePos( rInst, pClassData->nEntries -1 ); 660*cdf0e10cSrcweir } 661*cdf0e10cSrcweir else 662*cdf0e10cSrcweir aError = ERR_UNKNOWN_METHOD; 663*cdf0e10cSrcweir 664*cdf0e10cSrcweir return( aError ); 665*cdf0e10cSrcweir } 666*cdf0e10cSrcweir 667*cdf0e10cSrcweir /************************************************************************* 668*cdf0e10cSrcweir |* 669*cdf0e10cSrcweir |* RscBaseCont::IsConsistent() 670*cdf0e10cSrcweir |* 671*cdf0e10cSrcweir |* Beschreibung 672*cdf0e10cSrcweir |* Ersterstellung MM 23.09.91 673*cdf0e10cSrcweir |* Letzte Aenderung MM 23.09.91 674*cdf0e10cSrcweir |* 675*cdf0e10cSrcweir *************************************************************************/ 676*cdf0e10cSrcweir sal_Bool RscBaseCont::IsConsistent( const RSCINST & rInst, RscInconsList * pList ){ 677*cdf0e10cSrcweir sal_uInt32 i = 0; 678*cdf0e10cSrcweir RscBaseContInst * pClassData; 679*cdf0e10cSrcweir sal_Bool bRet; 680*cdf0e10cSrcweir 681*cdf0e10cSrcweir bRet = RscTop::IsConsistent( rInst, pList ); 682*cdf0e10cSrcweir 683*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 684*cdf0e10cSrcweir 685*cdf0e10cSrcweir // auf doppelten Id Testen und Reihenfolge beibehalten 686*cdf0e10cSrcweir // Komplexitaet = n^2 / 2 687*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ){ 688*cdf0e10cSrcweir if( !bNoId ){ 689*cdf0e10cSrcweir if( (sal_Int32)pClassData->pEntries[ i ].aName > 0x7FFF 690*cdf0e10cSrcweir || (sal_Int32)pClassData->pEntries[ i ].aName < 1 ){ 691*cdf0e10cSrcweir bRet = sal_False; 692*cdf0e10cSrcweir if( pList ) 693*cdf0e10cSrcweir pList->Insert( new RscInconsistent( 694*cdf0e10cSrcweir pClassData->pEntries[ i ].aName, 695*cdf0e10cSrcweir pClassData->pEntries[ i ].aName ) ); 696*cdf0e10cSrcweir } 697*cdf0e10cSrcweir else if( SearchElePos( rInst, pClassData->pEntries[ i ].aName, 698*cdf0e10cSrcweir pClassData->pEntries[ i ].aInst.pClass, i +1 ).IsInst() ) 699*cdf0e10cSrcweir { 700*cdf0e10cSrcweir bRet = sal_False; 701*cdf0e10cSrcweir if( pList ) 702*cdf0e10cSrcweir pList->Insert( new RscInconsistent( 703*cdf0e10cSrcweir pClassData->pEntries[ i ].aName, 704*cdf0e10cSrcweir pClassData->pEntries[ i +1 ].aName ) ); 705*cdf0e10cSrcweir }; 706*cdf0e10cSrcweir } 707*cdf0e10cSrcweir if( ! pClassData->pEntries[ i ].aInst.pClass-> 708*cdf0e10cSrcweir IsConsistent( pClassData->pEntries[ i ].aInst, pList ) ) 709*cdf0e10cSrcweir bRet = sal_False; 710*cdf0e10cSrcweir }; 711*cdf0e10cSrcweir 712*cdf0e10cSrcweir return( bRet ); 713*cdf0e10cSrcweir } 714*cdf0e10cSrcweir 715*cdf0e10cSrcweir /************************************************************************* 716*cdf0e10cSrcweir |* 717*cdf0e10cSrcweir |* RscBaseCont::SetToDefault() 718*cdf0e10cSrcweir |* 719*cdf0e10cSrcweir |* Beschreibung 720*cdf0e10cSrcweir |* Ersterstellung MM 25.04.91 721*cdf0e10cSrcweir |* Letzte Aenderung MM 25.04.91 722*cdf0e10cSrcweir |* 723*cdf0e10cSrcweir *************************************************************************/ 724*cdf0e10cSrcweir void RscBaseCont::SetToDefault( const RSCINST & rInst ) 725*cdf0e10cSrcweir { 726*cdf0e10cSrcweir sal_uInt32 i = 0; 727*cdf0e10cSrcweir RscBaseContInst * pClassData; 728*cdf0e10cSrcweir 729*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 730*cdf0e10cSrcweir 731*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ) 732*cdf0e10cSrcweir { 733*cdf0e10cSrcweir pClassData->pEntries[ i ].aInst.pClass-> 734*cdf0e10cSrcweir SetToDefault( pClassData->pEntries[ i ].aInst ); 735*cdf0e10cSrcweir }; 736*cdf0e10cSrcweir 737*cdf0e10cSrcweir RscTop::SetToDefault( rInst ); 738*cdf0e10cSrcweir } 739*cdf0e10cSrcweir 740*cdf0e10cSrcweir /************************************************************************* 741*cdf0e10cSrcweir |* 742*cdf0e10cSrcweir |* RscBaseCont::IsDefault() 743*cdf0e10cSrcweir |* 744*cdf0e10cSrcweir |* Beschreibung 745*cdf0e10cSrcweir |* Ersterstellung MM 25.04.91 746*cdf0e10cSrcweir |* Letzte Aenderung MM 25.04.91 747*cdf0e10cSrcweir |* 748*cdf0e10cSrcweir *************************************************************************/ 749*cdf0e10cSrcweir sal_Bool RscBaseCont::IsDefault( const RSCINST & rInst ){ 750*cdf0e10cSrcweir sal_uInt32 i = 0; 751*cdf0e10cSrcweir RscBaseContInst * pClassData; 752*cdf0e10cSrcweir 753*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 754*cdf0e10cSrcweir 755*cdf0e10cSrcweir if( !pClassData->bDflt ) 756*cdf0e10cSrcweir return sal_False; 757*cdf0e10cSrcweir 758*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ){ 759*cdf0e10cSrcweir if( ! pClassData->pEntries[ i ].aInst.pClass-> 760*cdf0e10cSrcweir IsDefault( pClassData->pEntries[ i ].aInst ) ) 761*cdf0e10cSrcweir { 762*cdf0e10cSrcweir return( sal_False ); 763*cdf0e10cSrcweir }; 764*cdf0e10cSrcweir }; 765*cdf0e10cSrcweir 766*cdf0e10cSrcweir return( RscTop::IsDefault( rInst ) ); 767*cdf0e10cSrcweir } 768*cdf0e10cSrcweir 769*cdf0e10cSrcweir /************************************************************************* 770*cdf0e10cSrcweir |* 771*cdf0e10cSrcweir |* RscBaseCont::IsValueDefault() 772*cdf0e10cSrcweir |* 773*cdf0e10cSrcweir |* Beschreibung 774*cdf0e10cSrcweir |* Ersterstellung MM 25.04.91 775*cdf0e10cSrcweir |* Letzte Aenderung MM 15.01.92 776*cdf0e10cSrcweir |* 777*cdf0e10cSrcweir *************************************************************************/ 778*cdf0e10cSrcweir sal_Bool RscBaseCont::IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef ) 779*cdf0e10cSrcweir { 780*cdf0e10cSrcweir RscBaseContInst * pClassData; 781*cdf0e10cSrcweir 782*cdf0e10cSrcweir if( !RscTop::IsValueDefault( rInst, pDef ) ) 783*cdf0e10cSrcweir return sal_False; 784*cdf0e10cSrcweir 785*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 786*cdf0e10cSrcweir 787*cdf0e10cSrcweir if( pClassData->nEntries ) 788*cdf0e10cSrcweir return sal_False; 789*cdf0e10cSrcweir else 790*cdf0e10cSrcweir return sal_True; 791*cdf0e10cSrcweir } 792*cdf0e10cSrcweir 793*cdf0e10cSrcweir /************************************************************************* 794*cdf0e10cSrcweir |* 795*cdf0e10cSrcweir |* RscBaseCont::Delete() 796*cdf0e10cSrcweir |* 797*cdf0e10cSrcweir |* Beschreibung 798*cdf0e10cSrcweir |* Ersterstellung MM 12.06.91 799*cdf0e10cSrcweir |* Letzte Aenderung MM 12.06.91 800*cdf0e10cSrcweir |* 801*cdf0e10cSrcweir *************************************************************************/ 802*cdf0e10cSrcweir void RscBaseCont::Delete( const RSCINST & rInst, RscTop * pClass, 803*cdf0e10cSrcweir const RscId & rId ) 804*cdf0e10cSrcweir { 805*cdf0e10cSrcweir sal_uInt32 i = 0; 806*cdf0e10cSrcweir RscBaseContInst * pClassData; 807*cdf0e10cSrcweir 808*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 809*cdf0e10cSrcweir if( !pClass ) 810*cdf0e10cSrcweir pClass = pTypeClass; 811*cdf0e10cSrcweir 812*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ){ 813*cdf0e10cSrcweir if( pClassData->pEntries[ i ].aName == rId ) 814*cdf0e10cSrcweir if( pClassData->pEntries[ i ].aInst.pClass == pClass || !pClass ){ 815*cdf0e10cSrcweir DeletePos( rInst, i ); 816*cdf0e10cSrcweir return; 817*cdf0e10cSrcweir }; 818*cdf0e10cSrcweir }; 819*cdf0e10cSrcweir 820*cdf0e10cSrcweir } 821*cdf0e10cSrcweir 822*cdf0e10cSrcweir /************************************************************************* 823*cdf0e10cSrcweir |* 824*cdf0e10cSrcweir |* RscBaseCont::DeletePos() 825*cdf0e10cSrcweir |* 826*cdf0e10cSrcweir |* Beschreibung 827*cdf0e10cSrcweir |* Ersterstellung MM 12.06.91 828*cdf0e10cSrcweir |* Letzte Aenderung MM 12.06.91 829*cdf0e10cSrcweir |* 830*cdf0e10cSrcweir *************************************************************************/ 831*cdf0e10cSrcweir void RscBaseCont::DeletePos( const RSCINST & rInst, sal_uInt32 nPos ){ 832*cdf0e10cSrcweir RscBaseContInst * pClassData; 833*cdf0e10cSrcweir sal_uInt32 i = 0; 834*cdf0e10cSrcweir 835*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir if( nPos < pClassData->nEntries ){ 838*cdf0e10cSrcweir if( 1 == pClassData->nEntries ) 839*cdf0e10cSrcweir DestroyElements( pClassData ); 840*cdf0e10cSrcweir else{ 841*cdf0e10cSrcweir pClassData->pEntries[ nPos ].Destroy(); 842*cdf0e10cSrcweir pClassData->nEntries--; 843*cdf0e10cSrcweir for( i = nPos; i < pClassData->nEntries; i++ ) 844*cdf0e10cSrcweir pClassData->pEntries[ i ] = pClassData->pEntries[ i + 1 ]; 845*cdf0e10cSrcweir }; 846*cdf0e10cSrcweir }; 847*cdf0e10cSrcweir } 848*cdf0e10cSrcweir 849*cdf0e10cSrcweir /************************************************************************* 850*cdf0e10cSrcweir |* 851*cdf0e10cSrcweir |* RscBaseCont::ContWriteSrc() 852*cdf0e10cSrcweir |* 853*cdf0e10cSrcweir |* Beschreibung 854*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 855*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 856*cdf0e10cSrcweir |* 857*cdf0e10cSrcweir *************************************************************************/ 858*cdf0e10cSrcweir void RscBaseCont::ContWriteSrc( const RSCINST & rInst, FILE * fOutput, 859*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nTab, 860*cdf0e10cSrcweir const char * pVarName ) 861*cdf0e10cSrcweir { 862*cdf0e10cSrcweir sal_uInt32 i = 0, t = 0; 863*cdf0e10cSrcweir RscBaseContInst * pClassData; 864*cdf0e10cSrcweir 865*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 866*cdf0e10cSrcweir 867*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries; i++ ) 868*cdf0e10cSrcweir { 869*cdf0e10cSrcweir for( t = 0; t < nTab; t++ ) 870*cdf0e10cSrcweir fputc( '\t', fOutput ); 871*cdf0e10cSrcweir pClassData->pEntries[ i ].aInst.pClass-> 872*cdf0e10cSrcweir WriteSrcHeader( pClassData->pEntries[ i ].aInst, 873*cdf0e10cSrcweir fOutput, pTC, nTab, 874*cdf0e10cSrcweir pClassData->pEntries[ i ].aName, pVarName ); 875*cdf0e10cSrcweir fprintf( fOutput, ";\n" ); 876*cdf0e10cSrcweir }; 877*cdf0e10cSrcweir } 878*cdf0e10cSrcweir 879*cdf0e10cSrcweir /************************************************************************* 880*cdf0e10cSrcweir |* 881*cdf0e10cSrcweir |* RscBaseCont::ContWriteRc() 882*cdf0e10cSrcweir |* 883*cdf0e10cSrcweir |* Beschreibung 884*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 885*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 886*cdf0e10cSrcweir |* 887*cdf0e10cSrcweir *************************************************************************/ 888*cdf0e10cSrcweir ERRTYPE RscBaseCont::ContWriteRc( const RSCINST & rInst, RscWriteRc & rMem, 889*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 890*cdf0e10cSrcweir { 891*cdf0e10cSrcweir sal_uInt32 i = 0; 892*cdf0e10cSrcweir RscBaseContInst * pClassData; 893*cdf0e10cSrcweir ERRTYPE aError; 894*cdf0e10cSrcweir 895*cdf0e10cSrcweir if( bExtra || bNoId ) 896*cdf0e10cSrcweir { // Nur Subresourcen schreiben, wenn bExtra == sal_True 897*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 898*cdf0e10cSrcweir 899*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries && aError.IsOk(); i++ ){ 900*cdf0e10cSrcweir aError = pClassData->pEntries[ i ].aInst.pClass-> 901*cdf0e10cSrcweir WriteRcHeader( pClassData->pEntries[ i ].aInst, 902*cdf0e10cSrcweir rMem, pTC, 903*cdf0e10cSrcweir pClassData->pEntries[ i ].aName, 904*cdf0e10cSrcweir nDeep, bExtra ); 905*cdf0e10cSrcweir } 906*cdf0e10cSrcweir } 907*cdf0e10cSrcweir 908*cdf0e10cSrcweir return( aError ); 909*cdf0e10cSrcweir } 910*cdf0e10cSrcweir 911*cdf0e10cSrcweir //================================================================== 912*cdf0e10cSrcweir void RscBaseCont::ContWriteRcAccess 913*cdf0e10cSrcweir ( 914*cdf0e10cSrcweir FILE * fOutput, 915*cdf0e10cSrcweir RscTypCont * pTC, 916*cdf0e10cSrcweir const char * pName, 917*cdf0e10cSrcweir sal_Bool bWriteSize 918*cdf0e10cSrcweir ) 919*cdf0e10cSrcweir { 920*cdf0e10cSrcweir if( (bNoId || bWriteSize) && !pTypeClass1 ) 921*cdf0e10cSrcweir { 922*cdf0e10cSrcweir fprintf( fOutput, "\t\tsal_uInt32 nItems = *(sal_uInt32 *)(pResData+nOffset) );\n" ); 923*cdf0e10cSrcweir fprintf( fOutput, "\t\tnOffset += sizeof( sal_uInt32 );\n" ); 924*cdf0e10cSrcweir 925*cdf0e10cSrcweir fprintf( fOutput, "\t\t// Items hinzufuegen\n" ); 926*cdf0e10cSrcweir fprintf( fOutput, "\t\tfor( sal_uInt32 i = 0; i < nItems; i++ )\n" ); 927*cdf0e10cSrcweir fprintf( fOutput, "\t\t{\n" ); 928*cdf0e10cSrcweir pTypeClass->WriteRcAccess( fOutput, pTC, "Item" ); 929*cdf0e10cSrcweir fprintf( fOutput, "\t\t}\n" ); 930*cdf0e10cSrcweir } 931*cdf0e10cSrcweir else 932*cdf0e10cSrcweir { 933*cdf0e10cSrcweir fprintf( fOutput, "\t\tSet%s( %s ", pName, pHS->getString( GetId() ).getStr() ); 934*cdf0e10cSrcweir fprintf( fOutput, "%s ", aCallPar2.GetBuffer() ); 935*cdf0e10cSrcweir fprintf( fOutput, "ResId( (RSHEADER_TYPE*)(pResData+nOffset) ) ) );\n" ); 936*cdf0e10cSrcweir fprintf( fOutput, "\t\tnOffset += GetObjSizeRes( (RSHEADER_TYPE*)(pResData+nOffset) );\n" ); 937*cdf0e10cSrcweir } 938*cdf0e10cSrcweir } 939*cdf0e10cSrcweir 940*cdf0e10cSrcweir 941*cdf0e10cSrcweir /************************************************************************* 942*cdf0e10cSrcweir |* 943*cdf0e10cSrcweir |* RscBaseCont::WriteSrc() 944*cdf0e10cSrcweir |* 945*cdf0e10cSrcweir |* Beschreibung 946*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 947*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 948*cdf0e10cSrcweir |* 949*cdf0e10cSrcweir *************************************************************************/ 950*cdf0e10cSrcweir void RscBaseCont::WriteSrc( const RSCINST & rInst, FILE * fOutput, 951*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nTab, 952*cdf0e10cSrcweir const char * pVarName ) 953*cdf0e10cSrcweir { 954*cdf0e10cSrcweir RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName ); 955*cdf0e10cSrcweir ContWriteSrc( rInst, fOutput, pTC, nTab, pVarName ); 956*cdf0e10cSrcweir } 957*cdf0e10cSrcweir 958*cdf0e10cSrcweir /************************************************************************* 959*cdf0e10cSrcweir |* 960*cdf0e10cSrcweir |* RscBaseCont::WriteRc() 961*cdf0e10cSrcweir |* 962*cdf0e10cSrcweir |* Beschreibung 963*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 964*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 965*cdf0e10cSrcweir |* 966*cdf0e10cSrcweir *************************************************************************/ 967*cdf0e10cSrcweir ERRTYPE RscBaseCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, 968*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 969*cdf0e10cSrcweir { 970*cdf0e10cSrcweir ERRTYPE aError; 971*cdf0e10cSrcweir 972*cdf0e10cSrcweir aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 973*cdf0e10cSrcweir if( aError.IsOk() ) 974*cdf0e10cSrcweir aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra ); 975*cdf0e10cSrcweir 976*cdf0e10cSrcweir return( aError ); 977*cdf0e10cSrcweir } 978*cdf0e10cSrcweir 979*cdf0e10cSrcweir /************************************************************************* 980*cdf0e10cSrcweir |* 981*cdf0e10cSrcweir |* RscBaseCont::WriteHxx() 982*cdf0e10cSrcweir |* 983*cdf0e10cSrcweir |* Beschreibung 984*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 985*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 986*cdf0e10cSrcweir |* 987*cdf0e10cSrcweir *************************************************************************/ 988*cdf0e10cSrcweir ERRTYPE RscBaseCont::WriteHxx( const RSCINST & rInst, FILE * fOutput, 989*cdf0e10cSrcweir RscTypCont * pTC, const RscId & rRscId ) 990*cdf0e10cSrcweir { 991*cdf0e10cSrcweir sal_uInt32 i = 0; 992*cdf0e10cSrcweir RscBaseContInst * pClassData; 993*cdf0e10cSrcweir ERRTYPE aError; 994*cdf0e10cSrcweir 995*cdf0e10cSrcweir aError = RscTop::WriteHxx( rInst, fOutput, pTC, rRscId ); 996*cdf0e10cSrcweir 997*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 998*cdf0e10cSrcweir 999*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries && aError.IsOk(); i++ ) 1000*cdf0e10cSrcweir { 1001*cdf0e10cSrcweir if( pClassData->pEntries[ i ].aName.IsId() 1002*cdf0e10cSrcweir && pClassData->pEntries[ i ].aInst.pClass->IsCodeWriteable() ) 1003*cdf0e10cSrcweir { 1004*cdf0e10cSrcweir aError = pClassData->pEntries[ i ].aInst.pClass-> 1005*cdf0e10cSrcweir WriteHxx( pClassData->pEntries[ i ].aInst, 1006*cdf0e10cSrcweir fOutput, pTC, 1007*cdf0e10cSrcweir pClassData->pEntries[ i ].aName ); 1008*cdf0e10cSrcweir } 1009*cdf0e10cSrcweir }; 1010*cdf0e10cSrcweir 1011*cdf0e10cSrcweir return( aError ); 1012*cdf0e10cSrcweir } 1013*cdf0e10cSrcweir 1014*cdf0e10cSrcweir /************************************************************************* 1015*cdf0e10cSrcweir |* 1016*cdf0e10cSrcweir |* RscBaseCont::WriteCxx() 1017*cdf0e10cSrcweir |* 1018*cdf0e10cSrcweir |* Beschreibung 1019*cdf0e10cSrcweir |* Ersterstellung MM 26.04.91 1020*cdf0e10cSrcweir |* Letzte Aenderung MM 26.04.91 1021*cdf0e10cSrcweir |* 1022*cdf0e10cSrcweir *************************************************************************/ 1023*cdf0e10cSrcweir ERRTYPE RscBaseCont::WriteCxx( const RSCINST & rInst, FILE * fOutput, 1024*cdf0e10cSrcweir RscTypCont * pTC, const RscId & rRscId ) 1025*cdf0e10cSrcweir { 1026*cdf0e10cSrcweir sal_uInt32 i = 0; 1027*cdf0e10cSrcweir RscBaseContInst * pClassData; 1028*cdf0e10cSrcweir ERRTYPE aError; 1029*cdf0e10cSrcweir 1030*cdf0e10cSrcweir aError = RscTop::WriteCxx( rInst, fOutput, pTC, rRscId ); 1031*cdf0e10cSrcweir 1032*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 1033*cdf0e10cSrcweir 1034*cdf0e10cSrcweir for( i = 0; i < pClassData->nEntries && aError.IsOk(); i++ ) 1035*cdf0e10cSrcweir { 1036*cdf0e10cSrcweir if( pClassData->pEntries[ i ].aName.IsId() 1037*cdf0e10cSrcweir && pClassData->pEntries[ i ].aInst.pClass->IsCodeWriteable() ) 1038*cdf0e10cSrcweir { 1039*cdf0e10cSrcweir aError = pClassData->pEntries[ i ].aInst.pClass-> 1040*cdf0e10cSrcweir WriteCxx( pClassData->pEntries[ i ].aInst, 1041*cdf0e10cSrcweir fOutput, pTC, 1042*cdf0e10cSrcweir pClassData->pEntries[ i ].aName ); 1043*cdf0e10cSrcweir } 1044*cdf0e10cSrcweir }; 1045*cdf0e10cSrcweir 1046*cdf0e10cSrcweir return( aError ); 1047*cdf0e10cSrcweir } 1048*cdf0e10cSrcweir 1049*cdf0e10cSrcweir /*************** R s c C o n t W r i t e S r c ***************************/ 1050*cdf0e10cSrcweir /************************************************************************* 1051*cdf0e10cSrcweir |* 1052*cdf0e10cSrcweir |* RscContWriteSrc::RscContWriteSrc() 1053*cdf0e10cSrcweir |* 1054*cdf0e10cSrcweir |* Beschreibung 1055*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1056*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1057*cdf0e10cSrcweir |* 1058*cdf0e10cSrcweir *************************************************************************/ 1059*cdf0e10cSrcweir RscContWriteSrc::RscContWriteSrc( Atom nId, sal_uInt32 nTypeId, 1060*cdf0e10cSrcweir RscTop * pSuper, sal_Bool bNoIdent ) 1061*cdf0e10cSrcweir : RscBaseCont( nId, nTypeId, pSuper, bNoIdent ) 1062*cdf0e10cSrcweir {} 1063*cdf0e10cSrcweir 1064*cdf0e10cSrcweir /************************************************************************* 1065*cdf0e10cSrcweir |* 1066*cdf0e10cSrcweir |* RscContWriteSrc::WriteSrc() 1067*cdf0e10cSrcweir |* 1068*cdf0e10cSrcweir |* Beschreibung 1069*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1070*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1071*cdf0e10cSrcweir |* 1072*cdf0e10cSrcweir *************************************************************************/ 1073*cdf0e10cSrcweir void RscContWriteSrc::WriteSrc( const RSCINST & rInst, FILE * fOutput, 1074*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nTab, 1075*cdf0e10cSrcweir const char * pVarName ) 1076*cdf0e10cSrcweir { 1077*cdf0e10cSrcweir sal_uInt32 i; 1078*cdf0e10cSrcweir 1079*cdf0e10cSrcweir RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName ); 1080*cdf0e10cSrcweir 1081*cdf0e10cSrcweir fprintf( fOutput, "\n" ); 1082*cdf0e10cSrcweir for( i = 0; i < nTab; i++ ) 1083*cdf0e10cSrcweir fputc( '\t', fOutput ); 1084*cdf0e10cSrcweir fprintf( fOutput, "{\n" ); 1085*cdf0e10cSrcweir 1086*cdf0e10cSrcweir ContWriteSrc( rInst, fOutput, pTC, nTab +1, pVarName ); 1087*cdf0e10cSrcweir 1088*cdf0e10cSrcweir for( i = 0; i < nTab; i++ ) 1089*cdf0e10cSrcweir fputc( '\t', fOutput ); 1090*cdf0e10cSrcweir fprintf( fOutput, "}" ); 1091*cdf0e10cSrcweir } 1092*cdf0e10cSrcweir 1093*cdf0e10cSrcweir /*************** R s c C o n t *******************************************/ 1094*cdf0e10cSrcweir /************************************************************************* 1095*cdf0e10cSrcweir |* 1096*cdf0e10cSrcweir |* RscCont::RscCont() 1097*cdf0e10cSrcweir |* 1098*cdf0e10cSrcweir |* Beschreibung 1099*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1100*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1101*cdf0e10cSrcweir |* 1102*cdf0e10cSrcweir *************************************************************************/ 1103*cdf0e10cSrcweir RscCont::RscCont( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper, sal_Bool bNoIdent ) 1104*cdf0e10cSrcweir : RscContWriteSrc( nId, nTypeId, pSuper, bNoIdent ) 1105*cdf0e10cSrcweir {} 1106*cdf0e10cSrcweir 1107*cdf0e10cSrcweir /************************************************************************* 1108*cdf0e10cSrcweir |* 1109*cdf0e10cSrcweir |* RscCont::WriteRc() 1110*cdf0e10cSrcweir |* 1111*cdf0e10cSrcweir |* Beschreibung 1112*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1113*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1114*cdf0e10cSrcweir |* 1115*cdf0e10cSrcweir *************************************************************************/ 1116*cdf0e10cSrcweir ERRTYPE RscCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, 1117*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 1118*cdf0e10cSrcweir { 1119*cdf0e10cSrcweir RscBaseContInst * pClassData; 1120*cdf0e10cSrcweir ERRTYPE aError; 1121*cdf0e10cSrcweir 1122*cdf0e10cSrcweir aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1123*cdf0e10cSrcweir 1124*cdf0e10cSrcweir pClassData = (RscBaseContInst *)(rInst.pData + nOffInstData); 1125*cdf0e10cSrcweir 1126*cdf0e10cSrcweir rMem.Put( pClassData->nEntries ); 1127*cdf0e10cSrcweir 1128*cdf0e10cSrcweir if( aError.IsOk() ) 1129*cdf0e10cSrcweir aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1130*cdf0e10cSrcweir 1131*cdf0e10cSrcweir return aError; 1132*cdf0e10cSrcweir } 1133*cdf0e10cSrcweir 1134*cdf0e10cSrcweir //================================================================== 1135*cdf0e10cSrcweir void RscCont::WriteRcAccess 1136*cdf0e10cSrcweir ( 1137*cdf0e10cSrcweir FILE * fOutput, 1138*cdf0e10cSrcweir RscTypCont * pTC, 1139*cdf0e10cSrcweir const char * pName 1140*cdf0e10cSrcweir ) 1141*cdf0e10cSrcweir { 1142*cdf0e10cSrcweir ContWriteRcAccess( fOutput, pTC, pName, sal_True ); 1143*cdf0e10cSrcweir } 1144*cdf0e10cSrcweir 1145*cdf0e10cSrcweir /************************************************************************* 1146*cdf0e10cSrcweir |* 1147*cdf0e10cSrcweir |* RscContExtraData::RscContExtraData() 1148*cdf0e10cSrcweir |* 1149*cdf0e10cSrcweir |* Beschreibung 1150*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1151*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1152*cdf0e10cSrcweir |* 1153*cdf0e10cSrcweir *************************************************************************/ 1154*cdf0e10cSrcweir RscContExtraData::RscContExtraData( Atom nId, sal_uInt32 nTypeId, 1155*cdf0e10cSrcweir RscTop * pSuper, sal_Bool bNoIdent ) 1156*cdf0e10cSrcweir : RscContWriteSrc( nId, nTypeId, pSuper, bNoIdent ) 1157*cdf0e10cSrcweir {} 1158*cdf0e10cSrcweir 1159*cdf0e10cSrcweir /************************************************************************* 1160*cdf0e10cSrcweir |* 1161*cdf0e10cSrcweir |* RscContExtraData::WriteRc() 1162*cdf0e10cSrcweir |* 1163*cdf0e10cSrcweir |* Beschreibung 1164*cdf0e10cSrcweir |* Ersterstellung MM 08.05.91 1165*cdf0e10cSrcweir |* Letzte Aenderung MM 08.05.91 1166*cdf0e10cSrcweir |* 1167*cdf0e10cSrcweir *************************************************************************/ 1168*cdf0e10cSrcweir ERRTYPE RscContExtraData::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, 1169*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 1170*cdf0e10cSrcweir { 1171*cdf0e10cSrcweir ERRTYPE aError; 1172*cdf0e10cSrcweir 1173*cdf0e10cSrcweir if( bExtra ) 1174*cdf0e10cSrcweir aError = RscContWriteSrc::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1175*cdf0e10cSrcweir else 1176*cdf0e10cSrcweir aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1177*cdf0e10cSrcweir 1178*cdf0e10cSrcweir return aError; 1179*cdf0e10cSrcweir } 1180