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