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