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 // Programmabhaengige Includes. 38*cdf0e10cSrcweir #include <rscdb.hxx> 39*cdf0e10cSrcweir #include <rscclass.hxx> 40*cdf0e10cSrcweir 41*cdf0e10cSrcweir #include <tools/fsys.hxx> 42*cdf0e10cSrcweir #include <tools/rcid.h> 43*cdf0e10cSrcweir #include <tools/rc.h> 44*cdf0e10cSrcweir 45*cdf0e10cSrcweir /****************** C O D E **********************************************/ 46*cdf0e10cSrcweir /****************** R s c C l a s s **************************************/ 47*cdf0e10cSrcweir /************************************************************************* 48*cdf0e10cSrcweir |* 49*cdf0e10cSrcweir |* RscClass::RscClass() 50*cdf0e10cSrcweir |* 51*cdf0e10cSrcweir |* Beschreibung 52*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 53*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 54*cdf0e10cSrcweir |* 55*cdf0e10cSrcweir *************************************************************************/ 56*cdf0e10cSrcweir RscClass::RscClass( Atom nId, sal_uInt32 nTypeId, RscTop * pSuperCl ) 57*cdf0e10cSrcweir : RscTop( nId, nTypeId, pSuperCl ) 58*cdf0e10cSrcweir { 59*cdf0e10cSrcweir nEntries = 0; 60*cdf0e10cSrcweir pVarTypeList = NULL; 61*cdf0e10cSrcweir nSuperSize = RscTop::Size(); 62*cdf0e10cSrcweir nSize = nSuperSize + ALIGNED_SIZE( sizeof( RscClassInst ) ); 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir /************************************************************************* 66*cdf0e10cSrcweir |* 67*cdf0e10cSrcweir |* RscClass::Pre_dtor() 68*cdf0e10cSrcweir |* 69*cdf0e10cSrcweir |* Beschreibung 70*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 71*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 72*cdf0e10cSrcweir |* 73*cdf0e10cSrcweir *************************************************************************/ 74*cdf0e10cSrcweir void RscClass::Pre_dtor() 75*cdf0e10cSrcweir { 76*cdf0e10cSrcweir sal_uInt32 i; 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir RscTop::Pre_dtor(); 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 81*cdf0e10cSrcweir { 82*cdf0e10cSrcweir if( pVarTypeList[ i ].pDefault ) 83*cdf0e10cSrcweir { 84*cdf0e10cSrcweir pVarTypeList[ i ].pClass->Destroy( 85*cdf0e10cSrcweir RSCINST( pVarTypeList[ i ].pClass, 86*cdf0e10cSrcweir pVarTypeList[ i ].pDefault ) ); 87*cdf0e10cSrcweir rtl_freeMemory( pVarTypeList[ i ].pDefault ); 88*cdf0e10cSrcweir pVarTypeList[ i ].pDefault = NULL; 89*cdf0e10cSrcweir }; 90*cdf0e10cSrcweir }; 91*cdf0e10cSrcweir } 92*cdf0e10cSrcweir 93*cdf0e10cSrcweir /************************************************************************* 94*cdf0e10cSrcweir |* 95*cdf0e10cSrcweir |* RscClass::~RscClass() 96*cdf0e10cSrcweir |* 97*cdf0e10cSrcweir |* Beschreibung 98*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 99*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 100*cdf0e10cSrcweir |* 101*cdf0e10cSrcweir *************************************************************************/ 102*cdf0e10cSrcweir RscClass::~RscClass() 103*cdf0e10cSrcweir { 104*cdf0e10cSrcweir if( pVarTypeList ) 105*cdf0e10cSrcweir rtl_freeMemory( (void *)pVarTypeList ); 106*cdf0e10cSrcweir } 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir /************************************************************************* 109*cdf0e10cSrcweir |* 110*cdf0e10cSrcweir |* RscClass::GetClassType() 111*cdf0e10cSrcweir |* 112*cdf0e10cSrcweir |* Beschreibung 113*cdf0e10cSrcweir |* Ersterstellung MM 25.05.91 114*cdf0e10cSrcweir |* Letzte Aenderung MM 25.05.91 115*cdf0e10cSrcweir |* 116*cdf0e10cSrcweir *************************************************************************/ 117*cdf0e10cSrcweir RSCCLASS_TYPE RscClass::GetClassType() const 118*cdf0e10cSrcweir { 119*cdf0e10cSrcweir return RSCCLASS_COMPLEX; 120*cdf0e10cSrcweir } 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir /************************************************************************* 123*cdf0e10cSrcweir |* 124*cdf0e10cSrcweir |* RscClass::GetInstData() 125*cdf0e10cSrcweir |* 126*cdf0e10cSrcweir |* Beschreibung 127*cdf0e10cSrcweir |* Ersterstellung MM 15.04.91 128*cdf0e10cSrcweir |* Letzte Aenderung MM 15.04.91 129*cdf0e10cSrcweir |* 130*cdf0e10cSrcweir *************************************************************************/ 131*cdf0e10cSrcweir RSCINST RscClass::GetInstData 132*cdf0e10cSrcweir ( 133*cdf0e10cSrcweir CLASS_DATA pData, 134*cdf0e10cSrcweir sal_uInt32 nEle, 135*cdf0e10cSrcweir sal_Bool bGetCopy 136*cdf0e10cSrcweir ) 137*cdf0e10cSrcweir { 138*cdf0e10cSrcweir RSCINST aInst; 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir aInst.pClass = pVarTypeList[ nEle ].pClass; 141*cdf0e10cSrcweir if( pData ) 142*cdf0e10cSrcweir { 143*cdf0e10cSrcweir if( VAR_NODATAINST & pVarTypeList[ nEle ].nVarType ) 144*cdf0e10cSrcweir { 145*cdf0e10cSrcweir RSCINST aTmpI; 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir aTmpI.pClass = this; 148*cdf0e10cSrcweir aTmpI.pData = pData; 149*cdf0e10cSrcweir if( bGetCopy ) 150*cdf0e10cSrcweir aInst.pData = GetCopyVar( 151*cdf0e10cSrcweir aTmpI, 152*cdf0e10cSrcweir pVarTypeList[ nEle ].nDataBaseName 153*cdf0e10cSrcweir ).pData; 154*cdf0e10cSrcweir else 155*cdf0e10cSrcweir aInst.pData = GetVariable( 156*cdf0e10cSrcweir aTmpI, 157*cdf0e10cSrcweir pVarTypeList[ nEle ].nDataBaseName, 158*cdf0e10cSrcweir RSCINST() 159*cdf0e10cSrcweir ).pData; 160*cdf0e10cSrcweir } 161*cdf0e10cSrcweir else if( VAR_POINTER & pVarTypeList[ nEle ].nVarType ) 162*cdf0e10cSrcweir { 163*cdf0e10cSrcweir if( VAR_EXTENDABLE & pVarTypeList[ nEle ].nVarType ) 164*cdf0e10cSrcweir aInst = *(RSCINST *) 165*cdf0e10cSrcweir (pData + pVarTypeList[ nEle ].nOffset); 166*cdf0e10cSrcweir else 167*cdf0e10cSrcweir aInst.pData = *(CLASS_DATA *) 168*cdf0e10cSrcweir (pData + pVarTypeList[ nEle ].nOffset); 169*cdf0e10cSrcweir } 170*cdf0e10cSrcweir else 171*cdf0e10cSrcweir aInst.pData = pData + pVarTypeList[ nEle ].nOffset; 172*cdf0e10cSrcweir }; 173*cdf0e10cSrcweir return( aInst ); 174*cdf0e10cSrcweir } 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir /************************************************************************* 177*cdf0e10cSrcweir |* 178*cdf0e10cSrcweir |* RscClass::GetInstDflt() 179*cdf0e10cSrcweir |* 180*cdf0e10cSrcweir |* Beschreibung 181*cdf0e10cSrcweir |* 182*cdf0e10cSrcweir *************************************************************************/ 183*cdf0e10cSrcweir CLASS_DATA RscClass::GetDfltData( sal_uInt32 nEle ) 184*cdf0e10cSrcweir { 185*cdf0e10cSrcweir if( pVarTypeList[ nEle ].pDefault ) 186*cdf0e10cSrcweir return pVarTypeList[ nEle ].pDefault; 187*cdf0e10cSrcweir 188*cdf0e10cSrcweir return pVarTypeList[ nEle ].pClass->GetDefault().pData; 189*cdf0e10cSrcweir } 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir /************************************************************************* 192*cdf0e10cSrcweir |* 193*cdf0e10cSrcweir |* RscClass::SetVarDflt() 194*cdf0e10cSrcweir |* 195*cdf0e10cSrcweir |* Beschreibung 196*cdf0e10cSrcweir |* Ersterstellung MM 22.07.91 197*cdf0e10cSrcweir |* Letzte Aenderung MM 22.07.91 198*cdf0e10cSrcweir |* 199*cdf0e10cSrcweir *************************************************************************/ 200*cdf0e10cSrcweir void RscClass::SetVarDflt( CLASS_DATA pData, sal_uInt32 nEle, sal_Bool bSet ) 201*cdf0e10cSrcweir { 202*cdf0e10cSrcweir RscClassInst * pClass; 203*cdf0e10cSrcweir 204*cdf0e10cSrcweir pClass = (RscClassInst *)(pData + nSuperSize ); 205*cdf0e10cSrcweir if( bSet ) 206*cdf0e10cSrcweir pClass->nVarDflt |= ((sal_uLong)1 << nEle); 207*cdf0e10cSrcweir else 208*cdf0e10cSrcweir pClass->nVarDflt &= ~((sal_uLong)1 << nEle); 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir /************************************************************************* 212*cdf0e10cSrcweir |* 213*cdf0e10cSrcweir |* RscClass::IsDflt() 214*cdf0e10cSrcweir |* 215*cdf0e10cSrcweir |* Beschreibung 216*cdf0e10cSrcweir |* Ersterstellung MM 22.07.91 217*cdf0e10cSrcweir |* Letzte Aenderung MM 08.01.92 218*cdf0e10cSrcweir |* 219*cdf0e10cSrcweir *************************************************************************/ 220*cdf0e10cSrcweir sal_Bool RscClass::IsDflt( CLASS_DATA pData, sal_uInt32 nEle ) 221*cdf0e10cSrcweir { 222*cdf0e10cSrcweir RscClassInst * pClass; 223*cdf0e10cSrcweir sal_Bool bRet; 224*cdf0e10cSrcweir 225*cdf0e10cSrcweir pClass = (RscClassInst *)(pData + nSuperSize ); 226*cdf0e10cSrcweir if( pClass->nVarDflt & ((sal_uLong)1 << nEle) ) 227*cdf0e10cSrcweir bRet = sal_True; 228*cdf0e10cSrcweir else 229*cdf0e10cSrcweir bRet = sal_False; 230*cdf0e10cSrcweir /* { 231*cdf0e10cSrcweir //Variablenname ist Default 232*cdf0e10cSrcweir RSCINST aTmpI; 233*cdf0e10cSrcweir 234*cdf0e10cSrcweir aTmpI = GetInstData( pData, nEle, sal_True ); 235*cdf0e10cSrcweir if( aTmpI.IsInst() && !aTmpI.pClass->IsDefault( aTmpI ) ) 236*cdf0e10cSrcweir bRet = sal_False; 237*cdf0e10cSrcweir } 238*cdf0e10cSrcweir */ 239*cdf0e10cSrcweir return bRet; 240*cdf0e10cSrcweir } 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir /************************************************************************* 243*cdf0e10cSrcweir |* 244*cdf0e10cSrcweir |* RscClass::Create() 245*cdf0e10cSrcweir |* 246*cdf0e10cSrcweir |* Beschreibung 247*cdf0e10cSrcweir |* Ersterstellung MM 03.04.91 248*cdf0e10cSrcweir |* Letzte Aenderung MM 03.04.91 249*cdf0e10cSrcweir |* 250*cdf0e10cSrcweir *************************************************************************/ 251*cdf0e10cSrcweir RSCINST RscClass::Create 252*cdf0e10cSrcweir ( 253*cdf0e10cSrcweir RSCINST * pInst, 254*cdf0e10cSrcweir const RSCINST & rDflt, 255*cdf0e10cSrcweir sal_Bool bOwnClass 256*cdf0e10cSrcweir ) 257*cdf0e10cSrcweir { 258*cdf0e10cSrcweir sal_uInt32 i; 259*cdf0e10cSrcweir CLASS_DATA * ppData; 260*cdf0e10cSrcweir RSCINST aInst; 261*cdf0e10cSrcweir RSCINST aMemInst, aDfltI; 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir if( !pInst ) 264*cdf0e10cSrcweir { 265*cdf0e10cSrcweir aInst.pClass = this; 266*cdf0e10cSrcweir aInst.pData = (CLASS_DATA) rtl_allocateMemory( Size() ); 267*cdf0e10cSrcweir } 268*cdf0e10cSrcweir else 269*cdf0e10cSrcweir aInst = *pInst; 270*cdf0e10cSrcweir if( !bOwnClass && rDflt.IsInst() ) 271*cdf0e10cSrcweir bOwnClass = rDflt.pClass->InHierarchy( this ); 272*cdf0e10cSrcweir 273*cdf0e10cSrcweir RscTop::Create( &aInst, rDflt, bOwnClass ); 274*cdf0e10cSrcweir 275*cdf0e10cSrcweir if( bOwnClass ) 276*cdf0e10cSrcweir ((RscClassInst *)(aInst.pData + nSuperSize))->nVarDflt = 277*cdf0e10cSrcweir ((RscClassInst *)(rDflt.pData + nSuperSize))->nVarDflt; 278*cdf0e10cSrcweir else 279*cdf0e10cSrcweir ((RscClassInst *)(aInst.pData + nSuperSize))->nVarDflt = ~((sal_uLong)0); 280*cdf0e10cSrcweir 281*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 282*cdf0e10cSrcweir { 283*cdf0e10cSrcweir aDfltI = GetInstData( bOwnClass ? rDflt.pData : NULL, i, sal_True ); 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir if( (VAR_POINTER & pVarTypeList[ i ].nVarType) 286*cdf0e10cSrcweir && !(VAR_NODATAINST & pVarTypeList[ i ].nVarType) ) 287*cdf0e10cSrcweir { 288*cdf0e10cSrcweir if( VAR_EXTENDABLE & pVarTypeList[ i ].nVarType ) 289*cdf0e10cSrcweir { 290*cdf0e10cSrcweir RSCINST * pInstance = (RSCINST *) 291*cdf0e10cSrcweir (aInst.pData + pVarTypeList[ i ].nOffset ); 292*cdf0e10cSrcweir pInstance->pClass = pVarTypeList[ i ].pClass; 293*cdf0e10cSrcweir ppData = &pInstance->pData; 294*cdf0e10cSrcweir } 295*cdf0e10cSrcweir else 296*cdf0e10cSrcweir ppData = (CLASS_DATA* ) 297*cdf0e10cSrcweir (aInst.pData + pVarTypeList[ i ].nOffset ); 298*cdf0e10cSrcweir *ppData = NULL; 299*cdf0e10cSrcweir if( aDfltI.IsInst() ) 300*cdf0e10cSrcweir { 301*cdf0e10cSrcweir aMemInst = pVarTypeList[ i ].pClass->Create( NULL, aDfltI ); 302*cdf0e10cSrcweir *ppData = aMemInst.pData; 303*cdf0e10cSrcweir }; 304*cdf0e10cSrcweir } 305*cdf0e10cSrcweir else 306*cdf0e10cSrcweir { 307*cdf0e10cSrcweir aMemInst = GetInstData( aInst.pData, i, sal_True ); 308*cdf0e10cSrcweir aMemInst = aMemInst.pClass->Create( &aMemInst, aDfltI ); 309*cdf0e10cSrcweir }; 310*cdf0e10cSrcweir } 311*cdf0e10cSrcweir 312*cdf0e10cSrcweir return( aInst ); 313*cdf0e10cSrcweir } 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir /************************************************************************* 316*cdf0e10cSrcweir |* 317*cdf0e10cSrcweir |* RscClass::Destroy() 318*cdf0e10cSrcweir |* 319*cdf0e10cSrcweir |* Beschreibung 320*cdf0e10cSrcweir |* 321*cdf0e10cSrcweir *************************************************************************/ 322*cdf0e10cSrcweir void RscClass::Destroy( const RSCINST & rInst ) 323*cdf0e10cSrcweir { 324*cdf0e10cSrcweir sal_uInt32 i; 325*cdf0e10cSrcweir 326*cdf0e10cSrcweir RscTop::Destroy( rInst ); 327*cdf0e10cSrcweir 328*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 329*cdf0e10cSrcweir { 330*cdf0e10cSrcweir if( !(pVarTypeList[ i ].nVarType & VAR_NODATAINST) ) 331*cdf0e10cSrcweir { 332*cdf0e10cSrcweir RSCINST aTmpI; 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 335*cdf0e10cSrcweir if( aTmpI.IsInst() ) 336*cdf0e10cSrcweir { 337*cdf0e10cSrcweir // Objekt loeschen 338*cdf0e10cSrcweir aTmpI.pClass->Destroy( aTmpI ); 339*cdf0e10cSrcweir if( pVarTypeList[ i ].nVarType & VAR_POINTER ) 340*cdf0e10cSrcweir { 341*cdf0e10cSrcweir // Speicher freigeben 342*cdf0e10cSrcweir rtl_freeMemory( aTmpI.pData ); 343*cdf0e10cSrcweir }; 344*cdf0e10cSrcweir }; 345*cdf0e10cSrcweir } 346*cdf0e10cSrcweir }; 347*cdf0e10cSrcweir } 348*cdf0e10cSrcweir 349*cdf0e10cSrcweir /************************************************************************* 350*cdf0e10cSrcweir |* 351*cdf0e10cSrcweir |* RscClass::SetVariable() 352*cdf0e10cSrcweir |* 353*cdf0e10cSrcweir |* Beschreibung 354*cdf0e10cSrcweir |* 355*cdf0e10cSrcweir *************************************************************************/ 356*cdf0e10cSrcweir ERRTYPE RscClass::SetVariable 357*cdf0e10cSrcweir ( 358*cdf0e10cSrcweir Atom nVarName, 359*cdf0e10cSrcweir RscTop * pClass, 360*cdf0e10cSrcweir RSCINST * pDflt, 361*cdf0e10cSrcweir RSCVAR nVarType, 362*cdf0e10cSrcweir sal_uInt32 nMask, 363*cdf0e10cSrcweir Atom nDataBaseName 364*cdf0e10cSrcweir ) 365*cdf0e10cSrcweir { 366*cdf0e10cSrcweir if( pVarTypeList ) 367*cdf0e10cSrcweir pVarTypeList = (VARTYPE_STRUCT *) 368*cdf0e10cSrcweir rtl_reallocateMemory( (void *)pVarTypeList, 369*cdf0e10cSrcweir ((nEntries +1) * sizeof( VARTYPE_STRUCT )) ); 370*cdf0e10cSrcweir else 371*cdf0e10cSrcweir pVarTypeList = (VARTYPE_STRUCT *) 372*cdf0e10cSrcweir rtl_allocateMemory( ((nEntries +1) 373*cdf0e10cSrcweir * sizeof( VARTYPE_STRUCT )) ); 374*cdf0e10cSrcweir 375*cdf0e10cSrcweir pVarTypeList[ nEntries ].nVarName = nVarName; 376*cdf0e10cSrcweir pVarTypeList[ nEntries ].nMask = nMask; 377*cdf0e10cSrcweir pVarTypeList[ nEntries ].pClass = pClass; 378*cdf0e10cSrcweir pVarTypeList[ nEntries ].nOffset = nSize; 379*cdf0e10cSrcweir pVarTypeList[ nEntries ].nDataBaseName = nDataBaseName; 380*cdf0e10cSrcweir if( pDflt ) 381*cdf0e10cSrcweir pVarTypeList[ nEntries ].pDefault = pDflt->pData; 382*cdf0e10cSrcweir else 383*cdf0e10cSrcweir pVarTypeList[ nEntries ].pDefault = NULL; 384*cdf0e10cSrcweir 385*cdf0e10cSrcweir pVarTypeList[ nEntries ].nVarType = ~VAR_POINTER & nVarType; 386*cdf0e10cSrcweir if( pClass->Size() > 10 || (nVarType & VAR_EXTENDABLE) ) 387*cdf0e10cSrcweir pVarTypeList[ nEntries ].nVarType |= VAR_POINTER; 388*cdf0e10cSrcweir 389*cdf0e10cSrcweir if( !(pVarTypeList[ nEntries ].nVarType & VAR_NODATAINST) ) 390*cdf0e10cSrcweir { 391*cdf0e10cSrcweir if( pVarTypeList[ nEntries ].nVarType & VAR_POINTER ) 392*cdf0e10cSrcweir { 393*cdf0e10cSrcweir if( pVarTypeList[ nEntries ].nVarType & VAR_EXTENDABLE ) 394*cdf0e10cSrcweir nSize += sizeof( RSCINST ); 395*cdf0e10cSrcweir else 396*cdf0e10cSrcweir nSize += sizeof( CLASS_DATA ); 397*cdf0e10cSrcweir } 398*cdf0e10cSrcweir else 399*cdf0e10cSrcweir nSize += pClass->Size(); 400*cdf0e10cSrcweir } 401*cdf0e10cSrcweir 402*cdf0e10cSrcweir nEntries++; 403*cdf0e10cSrcweir if( nEntries > (sizeof( sal_uLong ) * 8) ) 404*cdf0e10cSrcweir { 405*cdf0e10cSrcweir // Bereich fuer Default zu klein 406*cdf0e10cSrcweir RscExit( 16 ); 407*cdf0e10cSrcweir }; 408*cdf0e10cSrcweir return( ERR_OK ); 409*cdf0e10cSrcweir } 410*cdf0e10cSrcweir 411*cdf0e10cSrcweir /************************************************************************* 412*cdf0e10cSrcweir |* 413*cdf0e10cSrcweir |* RscClass::EnumVariable() 414*cdf0e10cSrcweir |* 415*cdf0e10cSrcweir |* Beschreibung 416*cdf0e10cSrcweir |* 417*cdf0e10cSrcweir *************************************************************************/ 418*cdf0e10cSrcweir void RscClass::EnumVariables( void * pData, VarEnumCallbackProc pProc ) 419*cdf0e10cSrcweir { 420*cdf0e10cSrcweir sal_uInt32 i; 421*cdf0e10cSrcweir 422*cdf0e10cSrcweir RscTop::EnumVariables( pData, pProc ); 423*cdf0e10cSrcweir for( i = 0; i < nEntries; i ++ ) 424*cdf0e10cSrcweir { 425*cdf0e10cSrcweir if( !(pVarTypeList[ i ].nVarType & VAR_NOENUM) ) 426*cdf0e10cSrcweir (*pProc)( pData, pVarTypeList[ i ].pClass->GetClassType(), 427*cdf0e10cSrcweir pVarTypeList[ i ].nVarName ); 428*cdf0e10cSrcweir } 429*cdf0e10cSrcweir } 430*cdf0e10cSrcweir 431*cdf0e10cSrcweir /************************************************************************* 432*cdf0e10cSrcweir |* 433*cdf0e10cSrcweir |* RscClass::GetVariable() 434*cdf0e10cSrcweir |* 435*cdf0e10cSrcweir |* Beschreibung 436*cdf0e10cSrcweir |* 437*cdf0e10cSrcweir *************************************************************************/ 438*cdf0e10cSrcweir RSCINST RscClass::GetVariable 439*cdf0e10cSrcweir ( 440*cdf0e10cSrcweir const RSCINST & rInst, 441*cdf0e10cSrcweir Atom nVarName, 442*cdf0e10cSrcweir const RSCINST & rInitInst, 443*cdf0e10cSrcweir sal_Bool bInitDflt, 444*cdf0e10cSrcweir RscTop * pCreateClass 445*cdf0e10cSrcweir ) 446*cdf0e10cSrcweir { 447*cdf0e10cSrcweir sal_uInt32 i = 0; 448*cdf0e10cSrcweir RSCINST aTmpI; 449*cdf0e10cSrcweir 450*cdf0e10cSrcweir while( i < nEntries && pVarTypeList[ i ].nVarName != nVarName ) 451*cdf0e10cSrcweir i++; 452*cdf0e10cSrcweir if( i < nEntries ) 453*cdf0e10cSrcweir { 454*cdf0e10cSrcweir if( VAR_NODATAINST & pVarTypeList[ i ].nVarType ) 455*cdf0e10cSrcweir { 456*cdf0e10cSrcweir aTmpI = GetVariable( rInst, 457*cdf0e10cSrcweir pVarTypeList[ i ].nDataBaseName, 458*cdf0e10cSrcweir RSCINST() ); 459*cdf0e10cSrcweir aTmpI.pClass = pVarTypeList[ i ].pClass; 460*cdf0e10cSrcweir } 461*cdf0e10cSrcweir else 462*cdf0e10cSrcweir { 463*cdf0e10cSrcweir // Default Instanz generieren 464*cdf0e10cSrcweir RSCINST aDefInst = rInitInst; 465*cdf0e10cSrcweir if( !aDefInst.IsInst() && bInitDflt ) 466*cdf0e10cSrcweir { 467*cdf0e10cSrcweir // mit dem Variablen-Default besetzen 468*cdf0e10cSrcweir aDefInst.pData = pVarTypeList[ i ].pDefault; 469*cdf0e10cSrcweir aDefInst.pClass = pVarTypeList[ i ].pClass; 470*cdf0e10cSrcweir } 471*cdf0e10cSrcweir 472*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i ); 473*cdf0e10cSrcweir if( aTmpI.IsInst() ) 474*cdf0e10cSrcweir { 475*cdf0e10cSrcweir if( aDefInst.IsInst() ) 476*cdf0e10cSrcweir { 477*cdf0e10cSrcweir aTmpI.pClass->Destroy( aTmpI ); 478*cdf0e10cSrcweir aTmpI.pClass->Create( &aTmpI, aDefInst ); 479*cdf0e10cSrcweir } 480*cdf0e10cSrcweir } 481*cdf0e10cSrcweir else 482*cdf0e10cSrcweir { // Wird ueber Zeiger angegeben 483*cdf0e10cSrcweir if( VAR_EXTENDABLE & pVarTypeList[ i ].nVarType ) 484*cdf0e10cSrcweir { 485*cdf0e10cSrcweir RSCINST * pInst = (RSCINST *) 486*cdf0e10cSrcweir (rInst.pData + pVarTypeList[ i ].nOffset ); 487*cdf0e10cSrcweir if( pCreateClass && pCreateClass->InHierarchy( aTmpI.pClass ) ) 488*cdf0e10cSrcweir *pInst = pCreateClass->Create( NULL, aDefInst ); 489*cdf0e10cSrcweir else 490*cdf0e10cSrcweir *pInst = aTmpI.pClass->Create( NULL, aDefInst ); 491*cdf0e10cSrcweir aTmpI = *pInst; 492*cdf0e10cSrcweir } 493*cdf0e10cSrcweir else 494*cdf0e10cSrcweir { 495*cdf0e10cSrcweir CLASS_DATA * ppData 496*cdf0e10cSrcweir = (CLASS_DATA *)(rInst.pData + pVarTypeList[ i ].nOffset); 497*cdf0e10cSrcweir aTmpI = aTmpI.pClass->Create( NULL, aDefInst ); 498*cdf0e10cSrcweir *ppData = aTmpI.pData; 499*cdf0e10cSrcweir } 500*cdf0e10cSrcweir } 501*cdf0e10cSrcweir }; 502*cdf0e10cSrcweir // auf nicht Default setzen 503*cdf0e10cSrcweir SetVarDflt( rInst.pData, i, sal_False ); 504*cdf0e10cSrcweir return( aTmpI ); 505*cdf0e10cSrcweir }; 506*cdf0e10cSrcweir 507*cdf0e10cSrcweir return( RscTop::GetVariable( rInst, nVarName, rInitInst, 508*cdf0e10cSrcweir bInitDflt, pCreateClass ) ); 509*cdf0e10cSrcweir } 510*cdf0e10cSrcweir 511*cdf0e10cSrcweir /************************************************************************* 512*cdf0e10cSrcweir |* 513*cdf0e10cSrcweir |* RscClass::GetCopyVar() 514*cdf0e10cSrcweir |* 515*cdf0e10cSrcweir |* Beschreibung 516*cdf0e10cSrcweir |* 517*cdf0e10cSrcweir *************************************************************************/ 518*cdf0e10cSrcweir RSCINST RscClass::GetCopyVar 519*cdf0e10cSrcweir ( 520*cdf0e10cSrcweir const RSCINST & rInst, 521*cdf0e10cSrcweir Atom nVarName 522*cdf0e10cSrcweir ) 523*cdf0e10cSrcweir { 524*cdf0e10cSrcweir sal_uInt32 i = 0; 525*cdf0e10cSrcweir RSCINST aVarI; 526*cdf0e10cSrcweir 527*cdf0e10cSrcweir while( i < nEntries && pVarTypeList[ i ].nVarName != nVarName ) 528*cdf0e10cSrcweir i++; 529*cdf0e10cSrcweir 530*cdf0e10cSrcweir if( i < nEntries ) 531*cdf0e10cSrcweir { 532*cdf0e10cSrcweir if( VAR_NODATAINST & pVarTypeList[ i ].nVarType ) 533*cdf0e10cSrcweir { 534*cdf0e10cSrcweir aVarI = GetCopyVar( rInst, pVarTypeList[ i ].nDataBaseName ); 535*cdf0e10cSrcweir aVarI.pClass = pVarTypeList[ i ].pClass; 536*cdf0e10cSrcweir } 537*cdf0e10cSrcweir else 538*cdf0e10cSrcweir { 539*cdf0e10cSrcweir if( IsDflt( rInst.pData, i ) ) 540*cdf0e10cSrcweir { 541*cdf0e10cSrcweir // mit Variablen Default initialiaieren 542*cdf0e10cSrcweir aVarI = GetVariable( rInst, nVarName, RSCINST(), sal_True ); 543*cdf0e10cSrcweir SetVarDflt( rInst.pData, i, sal_True ); 544*cdf0e10cSrcweir } 545*cdf0e10cSrcweir else 546*cdf0e10cSrcweir aVarI = GetInstData( rInst.pData, i, sal_True ); 547*cdf0e10cSrcweir 548*cdf0e10cSrcweir }; 549*cdf0e10cSrcweir return aVarI ; 550*cdf0e10cSrcweir }; 551*cdf0e10cSrcweir 552*cdf0e10cSrcweir return RscTop::GetCopyVar( rInst, nVarName ); 553*cdf0e10cSrcweir } 554*cdf0e10cSrcweir 555*cdf0e10cSrcweir /************************************************************************* 556*cdf0e10cSrcweir |* 557*cdf0e10cSrcweir |* RscClass::IsConsistent() 558*cdf0e10cSrcweir |* 559*cdf0e10cSrcweir |* Beschreibung 560*cdf0e10cSrcweir |* 561*cdf0e10cSrcweir *************************************************************************/ 562*cdf0e10cSrcweir sal_Bool RscClass::IsConsistent( const RSCINST & rInst, RscInconsList * pList ) 563*cdf0e10cSrcweir { 564*cdf0e10cSrcweir sal_uInt32 i = 0; 565*cdf0e10cSrcweir RSCINST aTmpI; 566*cdf0e10cSrcweir sal_Bool bRet; 567*cdf0e10cSrcweir 568*cdf0e10cSrcweir bRet = RscTop::IsConsistent( rInst, pList ); 569*cdf0e10cSrcweir 570*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 571*cdf0e10cSrcweir { 572*cdf0e10cSrcweir if( !(VAR_NODATAINST & pVarTypeList[ i ].nVarType) ) 573*cdf0e10cSrcweir { 574*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 575*cdf0e10cSrcweir 576*cdf0e10cSrcweir if( aTmpI.IsInst() ) 577*cdf0e10cSrcweir if( ! aTmpI.pClass->IsConsistent( aTmpI, pList ) ) 578*cdf0e10cSrcweir bRet = sal_False; 579*cdf0e10cSrcweir } 580*cdf0e10cSrcweir }; 581*cdf0e10cSrcweir 582*cdf0e10cSrcweir return( bRet ); 583*cdf0e10cSrcweir } 584*cdf0e10cSrcweir 585*cdf0e10cSrcweir /************************************************************************* 586*cdf0e10cSrcweir |* 587*cdf0e10cSrcweir |* RscClass::SetToDefault() 588*cdf0e10cSrcweir |* 589*cdf0e10cSrcweir |* Beschreibung 590*cdf0e10cSrcweir |* 591*cdf0e10cSrcweir *************************************************************************/ 592*cdf0e10cSrcweir void RscClass::SetToDefault( const RSCINST & rInst ) 593*cdf0e10cSrcweir { 594*cdf0e10cSrcweir sal_uInt32 i; 595*cdf0e10cSrcweir RSCINST aTmpI; 596*cdf0e10cSrcweir RscClassInst * pClass; 597*cdf0e10cSrcweir 598*cdf0e10cSrcweir pClass = (RscClassInst *)(rInst.pData + nSuperSize ); 599*cdf0e10cSrcweir 600*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 601*cdf0e10cSrcweir { 602*cdf0e10cSrcweir // Variablen ohne eigenen Speicher werden vom "Datenserver" 603*cdf0e10cSrcweir // auf Default gesetzt 604*cdf0e10cSrcweir if( !(VAR_NODATAINST & pVarTypeList[ i ].nVarType) ) 605*cdf0e10cSrcweir { 606*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 607*cdf0e10cSrcweir if( aTmpI.IsInst() ) 608*cdf0e10cSrcweir aTmpI.pClass->SetToDefault( aTmpI ); 609*cdf0e10cSrcweir } 610*cdf0e10cSrcweir } 611*cdf0e10cSrcweir pClass->nVarDflt = ~((sal_uLong)0); // alles auf Default 612*cdf0e10cSrcweir 613*cdf0e10cSrcweir RscTop::SetToDefault( rInst ); 614*cdf0e10cSrcweir } 615*cdf0e10cSrcweir 616*cdf0e10cSrcweir /************************************************************************* 617*cdf0e10cSrcweir |* 618*cdf0e10cSrcweir |* RscClass::IsDefault() 619*cdf0e10cSrcweir |* 620*cdf0e10cSrcweir |* Beschreibung 621*cdf0e10cSrcweir |* 622*cdf0e10cSrcweir *************************************************************************/ 623*cdf0e10cSrcweir sal_Bool RscClass::IsDefault( const RSCINST & rInst ) 624*cdf0e10cSrcweir { 625*cdf0e10cSrcweir sal_uInt32 i; 626*cdf0e10cSrcweir RSCINST aTmpI; 627*cdf0e10cSrcweir 628*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 629*cdf0e10cSrcweir { 630*cdf0e10cSrcweir // Variablen ohne eigenen Speicher werden vom "Datenserver" 631*cdf0e10cSrcweir // auf Default untersucht 632*cdf0e10cSrcweir if( !(VAR_NODATAINST & pVarTypeList[ i ].nVarType) ) 633*cdf0e10cSrcweir if( !IsDflt( rInst.pData, i ) ) 634*cdf0e10cSrcweir return( sal_False ); 635*cdf0e10cSrcweir }; 636*cdf0e10cSrcweir 637*cdf0e10cSrcweir return( RscTop::IsDefault( rInst ) ); 638*cdf0e10cSrcweir } 639*cdf0e10cSrcweir 640*cdf0e10cSrcweir /************************************************************************* 641*cdf0e10cSrcweir |* 642*cdf0e10cSrcweir |* RscClass::GetDefault() 643*cdf0e10cSrcweir |* 644*cdf0e10cSrcweir |* Beschreibung 645*cdf0e10cSrcweir |* 646*cdf0e10cSrcweir *************************************************************************/ 647*cdf0e10cSrcweir RSCINST RscClass::GetDefault( Atom nVarId ) 648*cdf0e10cSrcweir { 649*cdf0e10cSrcweir sal_uInt32 i; 650*cdf0e10cSrcweir 651*cdf0e10cSrcweir i = 0; 652*cdf0e10cSrcweir while( i < nEntries && pVarTypeList[ i ].nVarName != nVarId ) 653*cdf0e10cSrcweir i++; 654*cdf0e10cSrcweir if( i < nEntries ) 655*cdf0e10cSrcweir { 656*cdf0e10cSrcweir RSCINST aTmpI; 657*cdf0e10cSrcweir 658*cdf0e10cSrcweir aTmpI.pClass = pVarTypeList[ i ].pClass; 659*cdf0e10cSrcweir aTmpI.pData = GetDfltData( i ); 660*cdf0e10cSrcweir return( aTmpI ); 661*cdf0e10cSrcweir }; 662*cdf0e10cSrcweir 663*cdf0e10cSrcweir return( RscTop::GetDefault( nVarId ) ); 664*cdf0e10cSrcweir } 665*cdf0e10cSrcweir 666*cdf0e10cSrcweir /************************************************************************* 667*cdf0e10cSrcweir |* 668*cdf0e10cSrcweir |* RscClass::IsValueDflt() 669*cdf0e10cSrcweir |* 670*cdf0e10cSrcweir |* Beschreibung 671*cdf0e10cSrcweir |* 672*cdf0e10cSrcweir *************************************************************************/ 673*cdf0e10cSrcweir sal_Bool RscClass::IsValueDflt( CLASS_DATA pData, sal_uInt32 nEle ) 674*cdf0e10cSrcweir { 675*cdf0e10cSrcweir RSCINST aTmpI; 676*cdf0e10cSrcweir 677*cdf0e10cSrcweir aTmpI = GetInstData( pData, nEle, sal_True ); 678*cdf0e10cSrcweir 679*cdf0e10cSrcweir if( aTmpI.IsInst() ) 680*cdf0e10cSrcweir { 681*cdf0e10cSrcweir if( VAR_SVDYNAMIC & pVarTypeList[ nEle ].nVarType ) 682*cdf0e10cSrcweir return sal_False; 683*cdf0e10cSrcweir 684*cdf0e10cSrcweir if( aTmpI.pClass == pVarTypeList[ nEle ].pClass ) 685*cdf0e10cSrcweir //sie haben auch die gleiche Klasse 686*cdf0e10cSrcweir return aTmpI.pClass->IsValueDefault( aTmpI, GetDfltData( nEle ) ); 687*cdf0e10cSrcweir else 688*cdf0e10cSrcweir return sal_False; 689*cdf0e10cSrcweir } 690*cdf0e10cSrcweir return sal_True; 691*cdf0e10cSrcweir } 692*cdf0e10cSrcweir 693*cdf0e10cSrcweir /************************************************************************* 694*cdf0e10cSrcweir |* 695*cdf0e10cSrcweir |* RscClass::IsValueDefault() 696*cdf0e10cSrcweir |* 697*cdf0e10cSrcweir |* Beschreibung 698*cdf0e10cSrcweir |* 699*cdf0e10cSrcweir *************************************************************************/ 700*cdf0e10cSrcweir sal_Bool RscClass::IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef ) 701*cdf0e10cSrcweir { 702*cdf0e10cSrcweir sal_uInt32 i = 0; 703*cdf0e10cSrcweir RSCINST aTmpI; 704*cdf0e10cSrcweir RSCINST aDfltI; 705*cdf0e10cSrcweir 706*cdf0e10cSrcweir if( !RscTop::IsValueDefault( rInst, pDef ) ) 707*cdf0e10cSrcweir return sal_False; 708*cdf0e10cSrcweir 709*cdf0e10cSrcweir if( pDef ) 710*cdf0e10cSrcweir { 711*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 712*cdf0e10cSrcweir { 713*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 714*cdf0e10cSrcweir if( aTmpI.IsInst() ) 715*cdf0e10cSrcweir { 716*cdf0e10cSrcweir if( aTmpI.pClass != pVarTypeList[ i ].pClass ) 717*cdf0e10cSrcweir //sie haben nicht die gleiche Klasse 718*cdf0e10cSrcweir return sal_False; 719*cdf0e10cSrcweir 720*cdf0e10cSrcweir aDfltI = GetInstData( pDef, i, sal_True ); 721*cdf0e10cSrcweir if( !aDfltI.IsInst() ) 722*cdf0e10cSrcweir aDfltI.pData = GetDfltData( i ); 723*cdf0e10cSrcweir 724*cdf0e10cSrcweir if( !aTmpI.pClass->IsValueDefault( aTmpI, aDfltI.pData ) ) 725*cdf0e10cSrcweir return sal_False; 726*cdf0e10cSrcweir } 727*cdf0e10cSrcweir } 728*cdf0e10cSrcweir } 729*cdf0e10cSrcweir else 730*cdf0e10cSrcweir return sal_False; 731*cdf0e10cSrcweir 732*cdf0e10cSrcweir return sal_True; 733*cdf0e10cSrcweir } 734*cdf0e10cSrcweir 735*cdf0e10cSrcweir /************************************************************************* 736*cdf0e10cSrcweir |* 737*cdf0e10cSrcweir |* RscClass::SetDefault() 738*cdf0e10cSrcweir |* 739*cdf0e10cSrcweir |* Beschreibung 740*cdf0e10cSrcweir |* 741*cdf0e10cSrcweir *************************************************************************/ 742*cdf0e10cSrcweir void RscClass::SetDefault( const RSCINST & rInst, Atom nVarName ) 743*cdf0e10cSrcweir { 744*cdf0e10cSrcweir sal_uInt32 i = 0; 745*cdf0e10cSrcweir RSCINST aTmpI; 746*cdf0e10cSrcweir 747*cdf0e10cSrcweir while( i < nEntries && pVarTypeList[ i ].nVarName != nVarName ) 748*cdf0e10cSrcweir i++; 749*cdf0e10cSrcweir 750*cdf0e10cSrcweir if( i < nEntries ) 751*cdf0e10cSrcweir { 752*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 753*cdf0e10cSrcweir if( aTmpI.IsInst() ) 754*cdf0e10cSrcweir { 755*cdf0e10cSrcweir aTmpI.pClass->Destroy( aTmpI ); 756*cdf0e10cSrcweir aTmpI.pClass->Create( &aTmpI, RSCINST() ); 757*cdf0e10cSrcweir SetVarDflt( rInst.pData, i, sal_True ); 758*cdf0e10cSrcweir } 759*cdf0e10cSrcweir } 760*cdf0e10cSrcweir else //In Superklasse nach Variable suchen 761*cdf0e10cSrcweir RscTop::SetDefault( rInst, nVarName ); 762*cdf0e10cSrcweir 763*cdf0e10cSrcweir } 764*cdf0e10cSrcweir 765*cdf0e10cSrcweir 766*cdf0e10cSrcweir /************************************************************************* 767*cdf0e10cSrcweir |* 768*cdf0e10cSrcweir |* RscClass::WriteSrc() 769*cdf0e10cSrcweir |* 770*cdf0e10cSrcweir |* Beschreibung 771*cdf0e10cSrcweir |* 772*cdf0e10cSrcweir *************************************************************************/ 773*cdf0e10cSrcweir void RscClass::WriteSrc 774*cdf0e10cSrcweir ( 775*cdf0e10cSrcweir const RSCINST & rInst, 776*cdf0e10cSrcweir FILE * fOutput, 777*cdf0e10cSrcweir RscTypCont * pTC, 778*cdf0e10cSrcweir sal_uInt32 nTab, 779*cdf0e10cSrcweir const char * pVarName 780*cdf0e10cSrcweir ) 781*cdf0e10cSrcweir { 782*cdf0e10cSrcweir sal_uInt32 i = 0, n = 0; 783*cdf0e10cSrcweir RSCINST aTmpI; 784*cdf0e10cSrcweir 785*cdf0e10cSrcweir RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName ); 786*cdf0e10cSrcweir 787*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 788*cdf0e10cSrcweir { 789*cdf0e10cSrcweir if( !(VAR_HIDDEN & pVarTypeList[ i ].nVarType) ) 790*cdf0e10cSrcweir { 791*cdf0e10cSrcweir // Hack wegen Position und Dimensiuon 792*cdf0e10cSrcweir if( nRsc_XYMAPMODEId == pVarTypeList[ i ].nVarName 793*cdf0e10cSrcweir || nRsc_WHMAPMODEId == pVarTypeList[ i ].nVarName ) 794*cdf0e10cSrcweir { 795*cdf0e10cSrcweir if( !IsDflt( rInst.pData, i ) //MapUnit 796*cdf0e10cSrcweir || !IsDflt( rInst.pData, i+1 ) //X, Width 797*cdf0e10cSrcweir || !IsDflt( rInst.pData, i+2 ) )//Y, Height 798*cdf0e10cSrcweir {// ein Wert ist nicht Default 799*cdf0e10cSrcweir for( n = 0; n < nTab; n++ ) 800*cdf0e10cSrcweir fputc( '\t', fOutput ); 801*cdf0e10cSrcweir if( nRsc_XYMAPMODEId == pVarTypeList[ i ].nVarName ) 802*cdf0e10cSrcweir fprintf( fOutput, "Pos = " ); 803*cdf0e10cSrcweir else 804*cdf0e10cSrcweir fprintf( fOutput, "Size = " ); 805*cdf0e10cSrcweir 806*cdf0e10cSrcweir if( !IsDflt( rInst.pData, i ) ) 807*cdf0e10cSrcweir { 808*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 809*cdf0e10cSrcweir aTmpI.pClass->WriteSrcHeader( 810*cdf0e10cSrcweir aTmpI, fOutput, pTC, nTab, RscId(), pVarName ); 811*cdf0e10cSrcweir } 812*cdf0e10cSrcweir 813*cdf0e10cSrcweir fprintf( fOutput, "( " ); 814*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i+1, sal_True ); 815*cdf0e10cSrcweir if( !aTmpI.IsInst() ) 816*cdf0e10cSrcweir aTmpI.pData = GetDfltData( i+1 ); 817*cdf0e10cSrcweir aTmpI.pClass->WriteSrcHeader( 818*cdf0e10cSrcweir aTmpI, fOutput, pTC, nTab, RscId(), pVarName ); 819*cdf0e10cSrcweir 820*cdf0e10cSrcweir fprintf( fOutput, ", " ); 821*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i+2, sal_True ); 822*cdf0e10cSrcweir if( !aTmpI.IsInst() ) 823*cdf0e10cSrcweir aTmpI.pData = GetDfltData( i+2 ); 824*cdf0e10cSrcweir aTmpI.pClass->WriteSrcHeader( 825*cdf0e10cSrcweir aTmpI, fOutput, pTC, nTab, RscId(), pVarName ); 826*cdf0e10cSrcweir fprintf( fOutput, " );\n" ); 827*cdf0e10cSrcweir } 828*cdf0e10cSrcweir i += 2; //_X, _Y oder _Widht, Height ueberlesen 829*cdf0e10cSrcweir } 830*cdf0e10cSrcweir else if( !IsDflt( rInst.pData, i ) 831*cdf0e10cSrcweir && !IsValueDflt( rInst.pData, i ) ) 832*cdf0e10cSrcweir { 833*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 834*cdf0e10cSrcweir 835*cdf0e10cSrcweir if( aTmpI.IsInst() ) 836*cdf0e10cSrcweir { 837*cdf0e10cSrcweir const char * pName = pHS->getString( pVarTypeList[ i ].nVarName ).getStr(); 838*cdf0e10cSrcweir 839*cdf0e10cSrcweir for( n = 0; n < nTab; n++ ) 840*cdf0e10cSrcweir fputc( '\t', fOutput ); 841*cdf0e10cSrcweir fprintf( fOutput, "%s", pName ); 842*cdf0e10cSrcweir fprintf( fOutput, " = " ); 843*cdf0e10cSrcweir aTmpI.pClass->WriteSrcHeader( 844*cdf0e10cSrcweir aTmpI, fOutput, pTC, nTab, RscId(), pName ); 845*cdf0e10cSrcweir fprintf( fOutput, ";\n" ); 846*cdf0e10cSrcweir } 847*cdf0e10cSrcweir }; 848*cdf0e10cSrcweir }; 849*cdf0e10cSrcweir }; 850*cdf0e10cSrcweir 851*cdf0e10cSrcweir return; 852*cdf0e10cSrcweir } 853*cdf0e10cSrcweir 854*cdf0e10cSrcweir /************************************************************************* 855*cdf0e10cSrcweir |* 856*cdf0e10cSrcweir |* RscClass::WriteInstRc() 857*cdf0e10cSrcweir |* 858*cdf0e10cSrcweir |* Beschreibung 859*cdf0e10cSrcweir |* 860*cdf0e10cSrcweir *************************************************************************/ 861*cdf0e10cSrcweir sal_Int32 RscClass::GetCorrectValues 862*cdf0e10cSrcweir ( 863*cdf0e10cSrcweir const RSCINST & rInst, 864*cdf0e10cSrcweir sal_uInt32 nVarPos, 865*cdf0e10cSrcweir sal_uInt32 nTupelIdx, 866*cdf0e10cSrcweir RscTypCont * pTC 867*cdf0e10cSrcweir ) 868*cdf0e10cSrcweir { 869*cdf0e10cSrcweir sal_Int32 nLang = 0; 870*cdf0e10cSrcweir sal_Int32 nBaseValue; 871*cdf0e10cSrcweir 872*cdf0e10cSrcweir // Basiswert holen 873*cdf0e10cSrcweir RSCINST aTmpI = GetInstData( rInst.pData, nVarPos, sal_True ); 874*cdf0e10cSrcweir aTmpI.pClass->GetNumber( aTmpI, &nBaseValue ); 875*cdf0e10cSrcweir 876*cdf0e10cSrcweir // Sprach Delta holen 877*cdf0e10cSrcweir aTmpI = rInst.pClass->GetVariable( rInst, nRsc_DELTALANG, RSCINST() ); 878*cdf0e10cSrcweir if( aTmpI.IsInst() ) 879*cdf0e10cSrcweir { 880*cdf0e10cSrcweir RscWriteRc aMem; 881*cdf0e10cSrcweir aTmpI.pClass->WriteRc( aTmpI, aMem, pTC, 0, sal_False ); 882*cdf0e10cSrcweir nLang = (sal_Int32)aMem.GetShort( nTupelIdx * sizeof(sal_uInt16) ); 883*cdf0e10cSrcweir } 884*cdf0e10cSrcweir 885*cdf0e10cSrcweir return nLang + nBaseValue; 886*cdf0e10cSrcweir } 887*cdf0e10cSrcweir 888*cdf0e10cSrcweir ERRTYPE RscClass::WriteInstRc 889*cdf0e10cSrcweir ( 890*cdf0e10cSrcweir const RSCINST & rInst, 891*cdf0e10cSrcweir RscWriteRc & rMem, 892*cdf0e10cSrcweir RscTypCont * pTC, 893*cdf0e10cSrcweir sal_uInt32 nDeep, 894*cdf0e10cSrcweir sal_Bool bExtra 895*cdf0e10cSrcweir ) 896*cdf0e10cSrcweir { 897*cdf0e10cSrcweir sal_uInt32 i = 0; 898*cdf0e10cSrcweir ERRTYPE aError; 899*cdf0e10cSrcweir RSCINST aTmpI; 900*cdf0e10cSrcweir sal_uInt32 nMaskOff = 0;// Offset um Maskenfeld zu addressieren 901*cdf0e10cSrcweir 902*cdf0e10cSrcweir // Wenn eine Variable Maskierung hat, dann Maskenfeld 903*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 904*cdf0e10cSrcweir { 905*cdf0e10cSrcweir if( pVarTypeList[ i ].nMask ) 906*cdf0e10cSrcweir { 907*cdf0e10cSrcweir nMaskOff = rMem.Size(); 908*cdf0e10cSrcweir rMem.Put( sal_uInt32(0) ); 909*cdf0e10cSrcweir break; 910*cdf0e10cSrcweir } 911*cdf0e10cSrcweir }; 912*cdf0e10cSrcweir 913*cdf0e10cSrcweir for( i = 0; i < nEntries && aError.IsOk(); i++ ) 914*cdf0e10cSrcweir { 915*cdf0e10cSrcweir if( !((VAR_NODATAINST | VAR_NORC) & pVarTypeList[ i ].nVarType )) 916*cdf0e10cSrcweir { 917*cdf0e10cSrcweir if( pVarTypeList[ i ].nMask ) 918*cdf0e10cSrcweir { 919*cdf0e10cSrcweir if( !IsDflt( rInst.pData, i ) ) 920*cdf0e10cSrcweir { 921*cdf0e10cSrcweir if( nRsc_X == pVarTypeList[ i ].nVarName ) 922*cdf0e10cSrcweir { 923*cdf0e10cSrcweir sal_Int32 nVal = GetCorrectValues( rInst, i, 0, pTC ); 924*cdf0e10cSrcweir rMem.Put( nVal ); 925*cdf0e10cSrcweir } 926*cdf0e10cSrcweir else if( nRsc_Y == pVarTypeList[ i ].nVarName ) 927*cdf0e10cSrcweir { 928*cdf0e10cSrcweir sal_Int32 nVal = GetCorrectValues( rInst, i, 1, pTC ); 929*cdf0e10cSrcweir rMem.Put( nVal ); 930*cdf0e10cSrcweir } 931*cdf0e10cSrcweir else if( nRsc_WIDTH == pVarTypeList[ i ].nVarName ) 932*cdf0e10cSrcweir { 933*cdf0e10cSrcweir sal_Int32 nVal = GetCorrectValues( rInst, i, 2, pTC ); 934*cdf0e10cSrcweir rMem.Put( nVal ); 935*cdf0e10cSrcweir } 936*cdf0e10cSrcweir else if( nRsc_HEIGHT == pVarTypeList[ i ].nVarName ) 937*cdf0e10cSrcweir { 938*cdf0e10cSrcweir sal_Int32 nVal = GetCorrectValues( rInst, i, 3, pTC ); 939*cdf0e10cSrcweir rMem.Put( nVal ); 940*cdf0e10cSrcweir } 941*cdf0e10cSrcweir else 942*cdf0e10cSrcweir { 943*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 944*cdf0e10cSrcweir // Nur an Variable Extradata bExtra nicht auf sal_False 945*cdf0e10cSrcweir // setzen 946*cdf0e10cSrcweir aError = aTmpI.pClass-> 947*cdf0e10cSrcweir WriteRcHeader( aTmpI, rMem, pTC, 948*cdf0e10cSrcweir RscId(), nDeep, 949*cdf0e10cSrcweir (nRsc_EXTRADATA 950*cdf0e10cSrcweir == pVarTypeList[ i ].nVarName) 951*cdf0e10cSrcweir ? bExtra : sal_False ); 952*cdf0e10cSrcweir } 953*cdf0e10cSrcweir sal_uInt32 nMask = rMem.GetLong( nMaskOff ); 954*cdf0e10cSrcweir nMask |= pVarTypeList[ i ].nMask; 955*cdf0e10cSrcweir rMem.PutAt( nMaskOff, nMask ); 956*cdf0e10cSrcweir } 957*cdf0e10cSrcweir } 958*cdf0e10cSrcweir else{ 959*cdf0e10cSrcweir if( IsDflt( rInst.pData, i ) ) 960*cdf0e10cSrcweir { 961*cdf0e10cSrcweir aTmpI.pClass = pVarTypeList[ i ].pClass; 962*cdf0e10cSrcweir aTmpI.pData = GetDfltData( i ); 963*cdf0e10cSrcweir } 964*cdf0e10cSrcweir else 965*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 966*cdf0e10cSrcweir // Nur an Variable Extradata bExtra nicht auf sal_False 967*cdf0e10cSrcweir // setzen 968*cdf0e10cSrcweir aError = aTmpI.pClass-> 969*cdf0e10cSrcweir WriteRcHeader( aTmpI, rMem, pTC, 970*cdf0e10cSrcweir RscId(), nDeep, 971*cdf0e10cSrcweir (nRsc_EXTRADATA 972*cdf0e10cSrcweir == pVarTypeList[ i ].nVarName) 973*cdf0e10cSrcweir ? bExtra : sal_False ); 974*cdf0e10cSrcweir } 975*cdf0e10cSrcweir } 976*cdf0e10cSrcweir } 977*cdf0e10cSrcweir 978*cdf0e10cSrcweir return( aError ); 979*cdf0e10cSrcweir } 980*cdf0e10cSrcweir 981*cdf0e10cSrcweir /************************************************************************* 982*cdf0e10cSrcweir |* 983*cdf0e10cSrcweir |* RscClass::WriteRc() 984*cdf0e10cSrcweir |* 985*cdf0e10cSrcweir |* Beschreibung 986*cdf0e10cSrcweir |* 987*cdf0e10cSrcweir *************************************************************************/ 988*cdf0e10cSrcweir ERRTYPE RscClass::WriteRc 989*cdf0e10cSrcweir ( 990*cdf0e10cSrcweir const RSCINST & rInst, 991*cdf0e10cSrcweir RscWriteRc & rMem, 992*cdf0e10cSrcweir RscTypCont * pTC, 993*cdf0e10cSrcweir sal_uInt32 nDeep, 994*cdf0e10cSrcweir sal_Bool bExtra 995*cdf0e10cSrcweir ) 996*cdf0e10cSrcweir { 997*cdf0e10cSrcweir ERRTYPE aError; 998*cdf0e10cSrcweir 999*cdf0e10cSrcweir aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1000*cdf0e10cSrcweir if( aError.IsOk() ) 1001*cdf0e10cSrcweir aError = WriteInstRc( rInst, rMem, pTC, nDeep, bExtra ); 1002*cdf0e10cSrcweir 1003*cdf0e10cSrcweir return( aError ); 1004*cdf0e10cSrcweir } 1005*cdf0e10cSrcweir 1006*cdf0e10cSrcweir /************************************************************************* 1007*cdf0e10cSrcweir |* 1008*cdf0e10cSrcweir |* RscClass::WriteSyntax() 1009*cdf0e10cSrcweir |* 1010*cdf0e10cSrcweir |* Beschreibung 1011*cdf0e10cSrcweir |* 1012*cdf0e10cSrcweir *************************************************************************/ 1013*cdf0e10cSrcweir void RscClass::WriteSyntax( FILE * fOutput, RscTypCont * pTC ) 1014*cdf0e10cSrcweir { 1015*cdf0e10cSrcweir RscTop::WriteSyntax( fOutput, pTC ); 1016*cdf0e10cSrcweir 1017*cdf0e10cSrcweir sal_uInt32 i; 1018*cdf0e10cSrcweir // Wenn eine Variable Maskierung hat, dann Maskenfeld 1019*cdf0e10cSrcweir fprintf( fOutput, "\t//%s\n", pHS->getString( GetId() ).getStr() ); 1020*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 1021*cdf0e10cSrcweir { 1022*cdf0e10cSrcweir fprintf( fOutput, "\t%s", pHS->getString( pVarTypeList[ i ].nVarName ).getStr() ); 1023*cdf0e10cSrcweir sal_uInt32 n = strlen( pHS->getString( pVarTypeList[ i ].nVarName ).getStr() ); 1024*cdf0e10cSrcweir while( n < 20 ) 1025*cdf0e10cSrcweir { 1026*cdf0e10cSrcweir putc( ' ', fOutput ); 1027*cdf0e10cSrcweir n++; 1028*cdf0e10cSrcweir } 1029*cdf0e10cSrcweir fprintf( fOutput, " = %s;\n", 1030*cdf0e10cSrcweir pHS->getString( pVarTypeList[ i ].pClass->GetId() ).getStr() ); 1031*cdf0e10cSrcweir }; 1032*cdf0e10cSrcweir } 1033*cdf0e10cSrcweir 1034*cdf0e10cSrcweir //================================================================== 1035*cdf0e10cSrcweir void RscClass::WriteRcAccess 1036*cdf0e10cSrcweir ( 1037*cdf0e10cSrcweir FILE * fOutput, 1038*cdf0e10cSrcweir RscTypCont * /*pTC*/, 1039*cdf0e10cSrcweir const char * pName 1040*cdf0e10cSrcweir ) 1041*cdf0e10cSrcweir { 1042*cdf0e10cSrcweir fprintf( fOutput, "\t\tSet%s( %s ", pName, pHS->getString( GetId() ).getStr() ); 1043*cdf0e10cSrcweir fprintf( fOutput, "%s ", aCallPar2.GetBuffer() ); 1044*cdf0e10cSrcweir fprintf( fOutput, "ResId( (RSHEADER_TYPE*)(pResData+nOffset) ) ) );\n" ); 1045*cdf0e10cSrcweir fprintf( fOutput, "\t\tnOffset += GetObjSizeRes( (RSHEADER_TYPE*)(pResData+nOffset) );\n" ); 1046*cdf0e10cSrcweir } 1047*cdf0e10cSrcweir 1048*cdf0e10cSrcweir //================================================================== 1049*cdf0e10cSrcweir void RscClass::WriteRcCtor( FILE * fOutput, RscTypCont * pTC ) 1050*cdf0e10cSrcweir { 1051*cdf0e10cSrcweir if( GetId() != InvalidAtom ) 1052*cdf0e10cSrcweir { 1053*cdf0e10cSrcweir // Konstruktor 1054*cdf0e10cSrcweir fprintf( fOutput, "%s::%s%s bFreeResource )", 1055*cdf0e10cSrcweir pHS->getString( GetId() ).getStr(), 1056*cdf0e10cSrcweir pHS->getString( GetId() ).getStr(), 1057*cdf0e10cSrcweir aCallParType.GetBuffer() ); 1058*cdf0e10cSrcweir if( GetSuperClass() ) 1059*cdf0e10cSrcweir { 1060*cdf0e10cSrcweir // Superaufruf 1061*cdf0e10cSrcweir fprintf( fOutput, "\n\t: %s", pHS->getString( GetSuperClass()->GetId() ).getStr() ); 1062*cdf0e10cSrcweir fprintf( fOutput, "%s", GetSuperClass()->aCallPar1.GetBuffer() ); 1063*cdf0e10cSrcweir fprintf( fOutput, " rResId.SetRT2( 0x%lx ) )", 1064*cdf0e10cSrcweir sal::static_int_cast< unsigned long >(GetTypId()) ); 1065*cdf0e10cSrcweir } 1066*cdf0e10cSrcweir fprintf( fOutput, "\n{\n" ); 1067*cdf0e10cSrcweir fprintf( fOutput, "\tsal_uInt32\tnObjMask;\n" ); 1068*cdf0e10cSrcweir fprintf( fOutput, "\tsal_uInt32\tnOffset = 0;\n" ); 1069*cdf0e10cSrcweir fprintf( fOutput, "\tBYTE *\tpResData;\n\n" ); 1070*cdf0e10cSrcweir fprintf( fOutput, "\tpResData = (tBYTE *)GetClassRes();\n\n" ); 1071*cdf0e10cSrcweir fprintf( fOutput, "\tnObjMask = *(sal_uInt32*)pResData;\n" ); 1072*cdf0e10cSrcweir fprintf( fOutput, "\tnOffset += 4;\n\n" ); 1073*cdf0e10cSrcweir 1074*cdf0e10cSrcweir for( sal_uInt32 i = 0; i < nEntries; i++ ) 1075*cdf0e10cSrcweir { 1076*cdf0e10cSrcweir if( !((VAR_NODATAINST | VAR_NORC) & pVarTypeList[ i ].nVarType )) 1077*cdf0e10cSrcweir { 1078*cdf0e10cSrcweir fprintf( fOutput, "\tif( nObjMask & 0x%lx )\n\t{\n", 1079*cdf0e10cSrcweir sal::static_int_cast< unsigned long >( 1080*cdf0e10cSrcweir pVarTypeList[ i ].nMask) ); 1081*cdf0e10cSrcweir 1082*cdf0e10cSrcweir pVarTypeList[ i ].pClass->WriteRcAccess( fOutput, pTC, 1083*cdf0e10cSrcweir pHS->getString( pVarTypeList[ i ].nVarName ).getStr() ); 1084*cdf0e10cSrcweir 1085*cdf0e10cSrcweir fprintf( fOutput, "\t}\n" ); 1086*cdf0e10cSrcweir } 1087*cdf0e10cSrcweir } 1088*cdf0e10cSrcweir fprintf( fOutput, "\tIncrementRes( nOffset );\n" ); 1089*cdf0e10cSrcweir fprintf( fOutput, "\tif( bFreeResource )\n" ); 1090*cdf0e10cSrcweir fprintf( fOutput, "\t\tFreeResource();\n" ); 1091*cdf0e10cSrcweir fprintf( fOutput, "}\n\n" ); 1092*cdf0e10cSrcweir } 1093*cdf0e10cSrcweir } 1094*cdf0e10cSrcweir 1095*cdf0e10cSrcweir /************************************************************************* 1096*cdf0e10cSrcweir |* 1097*cdf0e10cSrcweir |* RscSysDepend::RscSysDepend() 1098*cdf0e10cSrcweir |* 1099*cdf0e10cSrcweir |* Beschreibung 1100*cdf0e10cSrcweir |* 1101*cdf0e10cSrcweir *************************************************************************/ 1102*cdf0e10cSrcweir RscSysDepend::RscSysDepend( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper ) 1103*cdf0e10cSrcweir : RscClass( nId, nTypeId, pSuper ) 1104*cdf0e10cSrcweir {} 1105*cdf0e10cSrcweir 1106*cdf0e10cSrcweir /************************************************************************* 1107*cdf0e10cSrcweir |* 1108*cdf0e10cSrcweir |* RscSysDepend::WriteRc() 1109*cdf0e10cSrcweir |* 1110*cdf0e10cSrcweir |* Beschreibung 1111*cdf0e10cSrcweir |* 1112*cdf0e10cSrcweir *************************************************************************/ 1113*cdf0e10cSrcweir ERRTYPE RscSysDepend::WriteSysDependRc( const RSCINST & rInst, RscWriteRc & rMem, 1114*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra, sal_Bool bFirst ) 1115*cdf0e10cSrcweir { 1116*cdf0e10cSrcweir sal_uInt32 nId = 0xFFFFFFFF; 1117*cdf0e10cSrcweir ERRTYPE aError; 1118*cdf0e10cSrcweir RSCINST aFileName; 1119*cdf0e10cSrcweir 1120*cdf0e10cSrcweir //Instanz mit dem Dateinamen "FILENAME" holen 1121*cdf0e10cSrcweir aFileName = RscClass::GetCopyVar( rInst, pHS->getID( "FILE", true ) ); 1122*cdf0e10cSrcweir if( aFileName.IsInst() ) 1123*cdf0e10cSrcweir { 1124*cdf0e10cSrcweir RscWriteRc aTmpMem; 1125*cdf0e10cSrcweir aError = aFileName.pClass->WriteRcHeader( aFileName, aTmpMem, pTC, 1126*cdf0e10cSrcweir RscId(), nDeep, bExtra ); 1127*cdf0e10cSrcweir // Obsolete - need changes in VCL 1128*cdf0e10cSrcweir rMem.Put( sal_uInt32(0) ); 1129*cdf0e10cSrcweir 1130*cdf0e10cSrcweir // Identifier schreiben 1131*cdf0e10cSrcweir if( aTmpMem.Size() && pTC && (*aTmpMem.GetUTF8( 0 ) != '\0') ) 1132*cdf0e10cSrcweir { 1133*cdf0e10cSrcweir nId = pTC->PutSysName( rInst.pClass->GetTypId(), 1134*cdf0e10cSrcweir aTmpMem.GetUTF8( 0 ), 1135*cdf0e10cSrcweir 0, 0, bFirst ); 1136*cdf0e10cSrcweir } 1137*cdf0e10cSrcweir rMem.Put( nId ); 1138*cdf0e10cSrcweir aError = aFileName.pClass->WriteRcHeader( aFileName, rMem, pTC, 1139*cdf0e10cSrcweir RscId(), nDeep, bExtra ); 1140*cdf0e10cSrcweir } 1141*cdf0e10cSrcweir else 1142*cdf0e10cSrcweir aError = ERR_ERROR; 1143*cdf0e10cSrcweir 1144*cdf0e10cSrcweir return( aError ); 1145*cdf0e10cSrcweir } 1146*cdf0e10cSrcweir 1147*cdf0e10cSrcweir /************************************************************************* 1148*cdf0e10cSrcweir |* 1149*cdf0e10cSrcweir |* RscSysDepend::WriteRc() 1150*cdf0e10cSrcweir |* 1151*cdf0e10cSrcweir |* Beschreibung 1152*cdf0e10cSrcweir |* 1153*cdf0e10cSrcweir *************************************************************************/ 1154*cdf0e10cSrcweir ERRTYPE RscSysDepend::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, 1155*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 1156*cdf0e10cSrcweir { 1157*cdf0e10cSrcweir ERRTYPE aError = RscClass::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1158*cdf0e10cSrcweir 1159*cdf0e10cSrcweir if( this == rInst.pClass ) 1160*cdf0e10cSrcweir // nur wenn es eigen Klasse ist 1161*cdf0e10cSrcweir aError = WriteSysDependRc( rInst, rMem, pTC, nDeep, bExtra ); 1162*cdf0e10cSrcweir return aError; 1163*cdf0e10cSrcweir } 1164*cdf0e10cSrcweir 1165*cdf0e10cSrcweir /************************************************************************* 1166*cdf0e10cSrcweir |* 1167*cdf0e10cSrcweir |* RscFirstSysDepend::RscFirstSysDepend() 1168*cdf0e10cSrcweir |* 1169*cdf0e10cSrcweir |* Beschreibung 1170*cdf0e10cSrcweir |* 1171*cdf0e10cSrcweir *************************************************************************/ 1172*cdf0e10cSrcweir RscFirstSysDepend::RscFirstSysDepend( Atom nId, sal_uInt32 nTypeId, 1173*cdf0e10cSrcweir RscTop * pSuper ) 1174*cdf0e10cSrcweir : RscSysDepend( nId, nTypeId, pSuper ) 1175*cdf0e10cSrcweir {} 1176*cdf0e10cSrcweir 1177*cdf0e10cSrcweir /************************************************************************* 1178*cdf0e10cSrcweir |* 1179*cdf0e10cSrcweir |* RscFirstSysDepend::WriteRc() 1180*cdf0e10cSrcweir |* 1181*cdf0e10cSrcweir |* Beschreibung 1182*cdf0e10cSrcweir |* 1183*cdf0e10cSrcweir *************************************************************************/ 1184*cdf0e10cSrcweir ERRTYPE RscFirstSysDepend::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, 1185*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra ) 1186*cdf0e10cSrcweir { 1187*cdf0e10cSrcweir ERRTYPE aError = RscClass::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); 1188*cdf0e10cSrcweir aError = WriteSysDependRc( rInst, rMem, pTC, nDeep, bExtra, sal_True ); 1189*cdf0e10cSrcweir return aError; 1190*cdf0e10cSrcweir } 1191*cdf0e10cSrcweir 1192*cdf0e10cSrcweir /************************************************************************* 1193*cdf0e10cSrcweir |* 1194*cdf0e10cSrcweir |* RscTupel::RscTupel() 1195*cdf0e10cSrcweir |* 1196*cdf0e10cSrcweir |* Beschreibung 1197*cdf0e10cSrcweir |* 1198*cdf0e10cSrcweir *************************************************************************/ 1199*cdf0e10cSrcweir RscTupel::RscTupel( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper ) 1200*cdf0e10cSrcweir : RscClass( nId, nTypeId, pSuper ) 1201*cdf0e10cSrcweir {} 1202*cdf0e10cSrcweir 1203*cdf0e10cSrcweir /************************************************************************* 1204*cdf0e10cSrcweir |* 1205*cdf0e10cSrcweir |* RscTupel::GetTupelVar() 1206*cdf0e10cSrcweir |* 1207*cdf0e10cSrcweir |* Beschreibung 1208*cdf0e10cSrcweir |* 1209*cdf0e10cSrcweir *************************************************************************/ 1210*cdf0e10cSrcweir RSCINST RscTupel::GetTupelVar( const RSCINST & rInst, sal_uInt32 nPos, 1211*cdf0e10cSrcweir const RSCINST & rInitInst ) 1212*cdf0e10cSrcweir { 1213*cdf0e10cSrcweir if( nPos >= nEntries ) 1214*cdf0e10cSrcweir { 1215*cdf0e10cSrcweir return RSCINST(); 1216*cdf0e10cSrcweir } 1217*cdf0e10cSrcweir else 1218*cdf0e10cSrcweir return GetVariable( rInst, pVarTypeList[ nPos ].nVarName, rInitInst ); 1219*cdf0e10cSrcweir } 1220*cdf0e10cSrcweir 1221*cdf0e10cSrcweir /************************************************************************* 1222*cdf0e10cSrcweir |* 1223*cdf0e10cSrcweir |* RscTupel::WriteSrc() 1224*cdf0e10cSrcweir |* 1225*cdf0e10cSrcweir |* Beschreibung 1226*cdf0e10cSrcweir |* 1227*cdf0e10cSrcweir *************************************************************************/ 1228*cdf0e10cSrcweir void RscTupel::WriteSrc( const RSCINST & rInst, FILE * fOutput, 1229*cdf0e10cSrcweir RscTypCont * pTC, sal_uInt32 nTab, 1230*cdf0e10cSrcweir const char * pVarName ) 1231*cdf0e10cSrcweir { 1232*cdf0e10cSrcweir sal_uInt32 i = 0; 1233*cdf0e10cSrcweir RSCINST aTmpI; 1234*cdf0e10cSrcweir 1235*cdf0e10cSrcweir RscTop::WriteSrc( rInst, fOutput, pTC, nTab, pVarName ); 1236*cdf0e10cSrcweir 1237*cdf0e10cSrcweir fprintf( fOutput, "< " ); 1238*cdf0e10cSrcweir for( i = 0; i < nEntries; i++ ) 1239*cdf0e10cSrcweir { 1240*cdf0e10cSrcweir if( !(VAR_HIDDEN & pVarTypeList[ i ].nVarType) ) 1241*cdf0e10cSrcweir { 1242*cdf0e10cSrcweir if( !IsDflt( rInst.pData, i ) 1243*cdf0e10cSrcweir && !IsValueDflt( rInst.pData, i ) ) 1244*cdf0e10cSrcweir { 1245*cdf0e10cSrcweir aTmpI = GetInstData( rInst.pData, i, sal_True ); 1246*cdf0e10cSrcweir 1247*cdf0e10cSrcweir if( aTmpI.IsInst() ) 1248*cdf0e10cSrcweir aTmpI.pClass->WriteSrcHeader( 1249*cdf0e10cSrcweir aTmpI, fOutput, pTC, nTab, RscId(), pVarName ); 1250*cdf0e10cSrcweir else 1251*cdf0e10cSrcweir fprintf( fOutput, "Default" ); 1252*cdf0e10cSrcweir } 1253*cdf0e10cSrcweir else 1254*cdf0e10cSrcweir fprintf( fOutput, "Default" ); 1255*cdf0e10cSrcweir fprintf( fOutput, "; " ); 1256*cdf0e10cSrcweir }; 1257*cdf0e10cSrcweir }; 1258*cdf0e10cSrcweir fprintf( fOutput, ">" ); 1259*cdf0e10cSrcweir 1260*cdf0e10cSrcweir return; 1261*cdf0e10cSrcweir } 1262