xref: /aoo4110/main/rsc/source/res/rscarray.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 <rscconst.hxx>
35*b1cdbd2cSJim Jagielski #ifndef _RSCSARRAY_HXX
36*b1cdbd2cSJim Jagielski #include <rscarray.hxx>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski #include <rscdb.hxx>
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski /****************** C O D E **********************************************/
41*b1cdbd2cSJim Jagielski /****************** R s c I n s t N o d e ********************************/
42*b1cdbd2cSJim Jagielski /*************************************************************************
43*b1cdbd2cSJim Jagielski |*
44*b1cdbd2cSJim Jagielski |*    RscInstNode::RscInstNode()
45*b1cdbd2cSJim Jagielski |*
46*b1cdbd2cSJim Jagielski |*    Beschreibung
47*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 06.08.91
48*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 06.08.91
49*b1cdbd2cSJim Jagielski |*
50*b1cdbd2cSJim Jagielski *************************************************************************/
RscInstNode(sal_uInt32 nId)51*b1cdbd2cSJim Jagielski RscInstNode::RscInstNode( sal_uInt32 nId )
52*b1cdbd2cSJim Jagielski {
53*b1cdbd2cSJim Jagielski     nTypeId = nId;
54*b1cdbd2cSJim Jagielski }
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski /*************************************************************************
57*b1cdbd2cSJim Jagielski |*
58*b1cdbd2cSJim Jagielski |*    RscInstNode::~RscInstNode()
59*b1cdbd2cSJim Jagielski |*
60*b1cdbd2cSJim Jagielski |*    Beschreibung
61*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 06.08.91
62*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 06.08.91
63*b1cdbd2cSJim Jagielski |*
64*b1cdbd2cSJim Jagielski *************************************************************************/
~RscInstNode()65*b1cdbd2cSJim Jagielski RscInstNode::~RscInstNode()
66*b1cdbd2cSJim Jagielski {
67*b1cdbd2cSJim Jagielski     if( aInst.IsInst() )
68*b1cdbd2cSJim Jagielski     {
69*b1cdbd2cSJim Jagielski         aInst.pClass->Destroy( aInst );
70*b1cdbd2cSJim Jagielski         rtl_freeMemory( aInst.pData );
71*b1cdbd2cSJim Jagielski     }
72*b1cdbd2cSJim Jagielski }
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski /*************************************************************************
75*b1cdbd2cSJim Jagielski |*
76*b1cdbd2cSJim Jagielski |*    RscInstNode::GetId()
77*b1cdbd2cSJim Jagielski |*
78*b1cdbd2cSJim Jagielski |*    Beschreibung
79*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 06.08.91
80*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 06.08.91
81*b1cdbd2cSJim Jagielski |*
82*b1cdbd2cSJim Jagielski *************************************************************************/
GetId() const83*b1cdbd2cSJim Jagielski sal_uInt32 RscInstNode::GetId() const
84*b1cdbd2cSJim Jagielski {
85*b1cdbd2cSJim Jagielski     return nTypeId;
86*b1cdbd2cSJim Jagielski }
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski /****************** R s c A r r a y *************************************/
89*b1cdbd2cSJim Jagielski /*************************************************************************
90*b1cdbd2cSJim Jagielski |*
91*b1cdbd2cSJim Jagielski |*    RscArray::RscArray()
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 *************************************************************************/
RscArray(Atom nId,sal_uInt32 nTypeId,RscTop * pSuper,RscEnum * pTypeCl)98*b1cdbd2cSJim Jagielski RscArray::RscArray( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper, RscEnum * pTypeCl )
99*b1cdbd2cSJim Jagielski         : RscTop( nId, nTypeId, pSuper )
100*b1cdbd2cSJim Jagielski {
101*b1cdbd2cSJim Jagielski     pTypeClass = pTypeCl;
102*b1cdbd2cSJim Jagielski     nOffInstData = RscTop::Size();
103*b1cdbd2cSJim Jagielski     nSize = nOffInstData + ALIGNED_SIZE( sizeof( RscArrayInst ) );
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski /*************************************************************************
107*b1cdbd2cSJim Jagielski |*
108*b1cdbd2cSJim Jagielski |*    RscArray::~RscArray()
109*b1cdbd2cSJim Jagielski |*
110*b1cdbd2cSJim Jagielski |*    Beschreibung
111*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
112*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
113*b1cdbd2cSJim Jagielski |*
114*b1cdbd2cSJim Jagielski *************************************************************************/
~RscArray()115*b1cdbd2cSJim Jagielski RscArray::~RscArray()
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski /*************************************************************************
120*b1cdbd2cSJim Jagielski |*
121*b1cdbd2cSJim Jagielski |*    RscArray::~RscArray()
122*b1cdbd2cSJim Jagielski |*
123*b1cdbd2cSJim Jagielski |*    Beschreibung
124*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
125*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
126*b1cdbd2cSJim Jagielski |*
127*b1cdbd2cSJim Jagielski *************************************************************************/
GetClassType() const128*b1cdbd2cSJim Jagielski RSCCLASS_TYPE RscArray::GetClassType() const
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski     return RSCCLASS_ENUMARRAY;
131*b1cdbd2cSJim Jagielski }
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski /*************************************************************************
134*b1cdbd2cSJim Jagielski |*
135*b1cdbd2cSJim Jagielski |*    RscArray::GetIndexType()
136*b1cdbd2cSJim Jagielski |*
137*b1cdbd2cSJim Jagielski |*    Beschreibung
138*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 23.12.92
139*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM
140*b1cdbd2cSJim Jagielski |*
141*b1cdbd2cSJim Jagielski *************************************************************************/
GetTypeClass() const142*b1cdbd2cSJim Jagielski RscTop * RscArray::GetTypeClass() const
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski     return pTypeClass;
145*b1cdbd2cSJim Jagielski }
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski /*************************************************************************
148*b1cdbd2cSJim Jagielski |*
149*b1cdbd2cSJim Jagielski |*    RscArray::Create()
150*b1cdbd2cSJim Jagielski |*
151*b1cdbd2cSJim Jagielski |*    Beschreibung
152*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 26.04.91
153*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 26.04.91
154*b1cdbd2cSJim Jagielski |*
155*b1cdbd2cSJim Jagielski *************************************************************************/
Create(RscInstNode * pNode)156*b1cdbd2cSJim Jagielski static RscInstNode * Create( RscInstNode * pNode )
157*b1cdbd2cSJim Jagielski {
158*b1cdbd2cSJim Jagielski     RscInstNode * pRetNode = NULL;
159*b1cdbd2cSJim Jagielski     RscInstNode * pTmpNode;
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski     if( pNode )
162*b1cdbd2cSJim Jagielski     {
163*b1cdbd2cSJim Jagielski         pRetNode = new RscInstNode( pNode->GetId() );
164*b1cdbd2cSJim Jagielski         pRetNode->aInst = pNode->aInst.pClass->Create( NULL, pNode->aInst );
165*b1cdbd2cSJim Jagielski         if( (pTmpNode = Create( pNode->Left() )) != NULL )
166*b1cdbd2cSJim Jagielski             pRetNode->Insert( pTmpNode );
167*b1cdbd2cSJim Jagielski         if( (pTmpNode = Create( pNode->Right() )) != NULL )
168*b1cdbd2cSJim Jagielski             pRetNode->Insert( pTmpNode );
169*b1cdbd2cSJim Jagielski     }
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski     return pRetNode;
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski 
Create(RSCINST * pInst,const RSCINST & rDflt,sal_Bool bOwnClass)174*b1cdbd2cSJim Jagielski RSCINST RscArray::Create( RSCINST * pInst, const RSCINST & rDflt,
175*b1cdbd2cSJim Jagielski                           sal_Bool bOwnClass )
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski     RSCINST aInst;
178*b1cdbd2cSJim Jagielski     RscArrayInst *  pClassData;
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski     if( !pInst )
181*b1cdbd2cSJim Jagielski 	{
182*b1cdbd2cSJim Jagielski         aInst.pClass = this;
183*b1cdbd2cSJim Jagielski         aInst.pData = (CLASS_DATA) rtl_allocateMemory( Size() );
184*b1cdbd2cSJim Jagielski     }
185*b1cdbd2cSJim Jagielski     else
186*b1cdbd2cSJim Jagielski         aInst = *pInst;
187*b1cdbd2cSJim Jagielski     if( !bOwnClass && rDflt.IsInst() )
188*b1cdbd2cSJim Jagielski         bOwnClass = rDflt.pClass->InHierarchy( this );
189*b1cdbd2cSJim Jagielski 
190*b1cdbd2cSJim Jagielski     RscTop::Create( &aInst, rDflt, bOwnClass );
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski     pClassData          = (RscArrayInst *)(aInst.pData + nOffInstData);
193*b1cdbd2cSJim Jagielski     pClassData->pNode   = NULL;
194*b1cdbd2cSJim Jagielski     if( bOwnClass )
195*b1cdbd2cSJim Jagielski     {
196*b1cdbd2cSJim Jagielski         RscArrayInst *   pDfltClassData;
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski         pDfltClassData = (RscArrayInst *)(rDflt.pData + nOffInstData);
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski         pClassData->pNode = ::Create( pDfltClassData->pNode );
201*b1cdbd2cSJim Jagielski     }
202*b1cdbd2cSJim Jagielski     return( aInst );
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski /*************************************************************************
206*b1cdbd2cSJim Jagielski |*
207*b1cdbd2cSJim Jagielski |*    RscArray::Destroy()
208*b1cdbd2cSJim Jagielski |*
209*b1cdbd2cSJim Jagielski |*    Beschreibung
210*b1cdbd2cSJim Jagielski |*
211*b1cdbd2cSJim Jagielski *************************************************************************/
Destroy(RscInstNode * pNode)212*b1cdbd2cSJim Jagielski static void Destroy( RscInstNode * pNode )
213*b1cdbd2cSJim Jagielski {
214*b1cdbd2cSJim Jagielski     if( pNode )
215*b1cdbd2cSJim Jagielski     {
216*b1cdbd2cSJim Jagielski         Destroy( pNode->Left() );
217*b1cdbd2cSJim Jagielski         Destroy( pNode->Right() );
218*b1cdbd2cSJim Jagielski         delete pNode;
219*b1cdbd2cSJim Jagielski     }
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski 
Destroy(const RSCINST & rInst)222*b1cdbd2cSJim Jagielski void RscArray::Destroy( const RSCINST & rInst )
223*b1cdbd2cSJim Jagielski {
224*b1cdbd2cSJim Jagielski     RscArrayInst *  pClassData;
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski     RscTop::Destroy( rInst );
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski     //Baum rekursiv loeschen
231*b1cdbd2cSJim Jagielski     ::Destroy( pClassData->pNode );
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski /*************************************************************************
235*b1cdbd2cSJim Jagielski |*
236*b1cdbd2cSJim Jagielski |*    RscArray::GetValueEle()
237*b1cdbd2cSJim Jagielski |*
238*b1cdbd2cSJim Jagielski |*    Beschreibung
239*b1cdbd2cSJim Jagielski |*
240*b1cdbd2cSJim Jagielski *************************************************************************/
GetValueEle(const RSCINST & rInst,sal_Int32 lValue,RscTop * pCreateClass,RSCINST * pGetInst)241*b1cdbd2cSJim Jagielski ERRTYPE RscArray::GetValueEle
242*b1cdbd2cSJim Jagielski (
243*b1cdbd2cSJim Jagielski 	const RSCINST & rInst,
244*b1cdbd2cSJim Jagielski 	sal_Int32 lValue,
245*b1cdbd2cSJim Jagielski 	RscTop * pCreateClass,
246*b1cdbd2cSJim Jagielski     RSCINST * pGetInst
247*b1cdbd2cSJim Jagielski )
248*b1cdbd2cSJim Jagielski {
249*b1cdbd2cSJim Jagielski     RscArrayInst *  pClassData;
250*b1cdbd2cSJim Jagielski     RscInstNode *   pNode;
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski     ERRTYPE     aError;
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski     Atom  nId;
257*b1cdbd2cSJim Jagielski     if( !pTypeClass->GetValueConst( sal_uInt32(lValue), &nId ) )
258*b1cdbd2cSJim Jagielski     { // nicht gefunden
259*b1cdbd2cSJim Jagielski         return ERR_ARRAY_INVALIDINDEX;
260*b1cdbd2cSJim Jagielski     }
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski     if( pClassData->pNode )
263*b1cdbd2cSJim Jagielski         pNode = pClassData->pNode->Search( sal_uInt32(lValue) );
264*b1cdbd2cSJim Jagielski     else
265*b1cdbd2cSJim Jagielski         pNode = NULL;
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski /*
268*b1cdbd2cSJim Jagielski     if( pNode )
269*b1cdbd2cSJim Jagielski     {
270*b1cdbd2cSJim Jagielski         if( pNode->aInst.pClass->IsDefault( pNode->aInst ) )
271*b1cdbd2cSJim Jagielski         {
272*b1cdbd2cSJim Jagielski             GetSuperClass()->Destroy( pNode->aInst );
273*b1cdbd2cSJim Jagielski             GetSuperClass()->Create( &pNode->aInst, rInst );
274*b1cdbd2cSJim Jagielski             pNode->aInst.pClass->SetToDefault( pNode->aInst );
275*b1cdbd2cSJim Jagielski         }
276*b1cdbd2cSJim Jagielski     }
277*b1cdbd2cSJim Jagielski     else
278*b1cdbd2cSJim Jagielski */
279*b1cdbd2cSJim Jagielski     if( !pNode )
280*b1cdbd2cSJim Jagielski     {
281*b1cdbd2cSJim Jagielski         pNode = new RscInstNode( sal_uInt32(lValue) );
282*b1cdbd2cSJim Jagielski 		if( pCreateClass && GetSuperClass()->InHierarchy( pCreateClass ) )
283*b1cdbd2cSJim Jagielski 	        pNode->aInst = pCreateClass->Create( NULL, rInst );
284*b1cdbd2cSJim Jagielski 		else
285*b1cdbd2cSJim Jagielski 	        pNode->aInst = GetSuperClass()->Create( NULL, rInst );
286*b1cdbd2cSJim Jagielski         pNode->aInst.pClass->SetToDefault( pNode->aInst );
287*b1cdbd2cSJim Jagielski         if( pClassData->pNode )
288*b1cdbd2cSJim Jagielski             pClassData->pNode->Insert( pNode );
289*b1cdbd2cSJim Jagielski         else
290*b1cdbd2cSJim Jagielski             pClassData->pNode = pNode;
291*b1cdbd2cSJim Jagielski     }
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski     *pGetInst = pNode->aInst;
294*b1cdbd2cSJim Jagielski     return aError;
295*b1cdbd2cSJim Jagielski }
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski /*************************************************************************
298*b1cdbd2cSJim Jagielski |*
299*b1cdbd2cSJim Jagielski |*    RscArray::GetArrayEle()
300*b1cdbd2cSJim Jagielski |*
301*b1cdbd2cSJim Jagielski |*    Beschreibung
302*b1cdbd2cSJim Jagielski |*
303*b1cdbd2cSJim Jagielski *************************************************************************/
GetArrayEle(const RSCINST & rInst,Atom nId,RscTop * pCreateClass,RSCINST * pGetInst)304*b1cdbd2cSJim Jagielski ERRTYPE RscArray::GetArrayEle
305*b1cdbd2cSJim Jagielski (
306*b1cdbd2cSJim Jagielski 	const RSCINST & rInst,
307*b1cdbd2cSJim Jagielski 	Atom nId,
308*b1cdbd2cSJim Jagielski 	RscTop * pCreateClass,
309*b1cdbd2cSJim Jagielski 	RSCINST * pGetInst
310*b1cdbd2cSJim Jagielski )
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski     sal_Int32  lValue;
313*b1cdbd2cSJim Jagielski     if( !pTypeClass->GetConstValue( nId, &lValue ) )
314*b1cdbd2cSJim Jagielski     { // nicht gefunden
315*b1cdbd2cSJim Jagielski         return ERR_ARRAY_INVALIDINDEX;
316*b1cdbd2cSJim Jagielski     }
317*b1cdbd2cSJim Jagielski 
318*b1cdbd2cSJim Jagielski     return GetValueEle( rInst, lValue, pCreateClass, pGetInst );
319*b1cdbd2cSJim Jagielski }
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski /*************************************************************************
322*b1cdbd2cSJim Jagielski |*
323*b1cdbd2cSJim Jagielski |*    RscArray::IsConsistent()
324*b1cdbd2cSJim Jagielski |*
325*b1cdbd2cSJim Jagielski |*    Beschreibung
326*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 23.09.91
327*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 23.09.91
328*b1cdbd2cSJim Jagielski |*
329*b1cdbd2cSJim Jagielski *************************************************************************/
IsConsistent(RscInstNode * pNode,RscInconsList * pList)330*b1cdbd2cSJim Jagielski static sal_Bool IsConsistent( RscInstNode * pNode, RscInconsList * pList )
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski     sal_Bool bRet = sal_True;
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski     if( pNode )
335*b1cdbd2cSJim Jagielski     {
336*b1cdbd2cSJim Jagielski         bRet = pNode->aInst.pClass->IsConsistent( pNode->aInst, pList );
337*b1cdbd2cSJim Jagielski         if( !IsConsistent( pNode->Left(), pList ) )
338*b1cdbd2cSJim Jagielski             bRet = sal_False;
339*b1cdbd2cSJim Jagielski         if( !IsConsistent( pNode->Right(), pList ) )
340*b1cdbd2cSJim Jagielski             bRet = sal_False;
341*b1cdbd2cSJim Jagielski     }
342*b1cdbd2cSJim Jagielski     return bRet;
343*b1cdbd2cSJim Jagielski }
344*b1cdbd2cSJim Jagielski 
IsConsistent(const RSCINST & rInst,RscInconsList * pList)345*b1cdbd2cSJim Jagielski sal_Bool RscArray::IsConsistent( const RSCINST & rInst, RscInconsList * pList )
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
348*b1cdbd2cSJim Jagielski     sal_Bool    bRet;
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski     bRet = RscTop::IsConsistent( rInst, pList );
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
353*b1cdbd2cSJim Jagielski     if( !::IsConsistent( pClassData->pNode, pList ) )
354*b1cdbd2cSJim Jagielski         bRet = sal_False;
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski     return( bRet );
357*b1cdbd2cSJim Jagielski }
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski /*************************************************************************
360*b1cdbd2cSJim Jagielski |*
361*b1cdbd2cSJim Jagielski |*    RscArray::SetToDefault()
362*b1cdbd2cSJim Jagielski |*
363*b1cdbd2cSJim Jagielski |*    Beschreibung
364*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.04.91
365*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.04.91
366*b1cdbd2cSJim Jagielski |*
367*b1cdbd2cSJim Jagielski *************************************************************************/
SetToDefault(RscInstNode * pNode)368*b1cdbd2cSJim Jagielski static void SetToDefault( RscInstNode * pNode )
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski     if( pNode )
371*b1cdbd2cSJim Jagielski     {
372*b1cdbd2cSJim Jagielski         pNode->aInst.pClass->SetToDefault( pNode->aInst );
373*b1cdbd2cSJim Jagielski         SetToDefault( pNode->Left() );
374*b1cdbd2cSJim Jagielski         SetToDefault( pNode->Right() );
375*b1cdbd2cSJim Jagielski     }
376*b1cdbd2cSJim Jagielski }
377*b1cdbd2cSJim Jagielski 
SetToDefault(const RSCINST & rInst)378*b1cdbd2cSJim Jagielski void RscArray::SetToDefault( const RSCINST & rInst )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
381*b1cdbd2cSJim Jagielski 
382*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski     ::SetToDefault( pClassData->pNode );
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski     RscTop::SetToDefault( rInst );
387*b1cdbd2cSJim Jagielski }
388*b1cdbd2cSJim Jagielski 
389*b1cdbd2cSJim Jagielski /*************************************************************************
390*b1cdbd2cSJim Jagielski |*
391*b1cdbd2cSJim Jagielski |*    RscArray::IsDefault()
392*b1cdbd2cSJim Jagielski |*
393*b1cdbd2cSJim Jagielski |*    Beschreibung
394*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.04.91
395*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.04.91
396*b1cdbd2cSJim Jagielski |*
397*b1cdbd2cSJim Jagielski *************************************************************************/
IsDefault(RscInstNode * pNode)398*b1cdbd2cSJim Jagielski static sal_Bool IsDefault( RscInstNode * pNode )
399*b1cdbd2cSJim Jagielski {
400*b1cdbd2cSJim Jagielski     sal_Bool bRet = sal_True;
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski     if( pNode )
403*b1cdbd2cSJim Jagielski     {
404*b1cdbd2cSJim Jagielski         bRet = pNode->aInst.pClass->IsDefault( pNode->aInst );
405*b1cdbd2cSJim Jagielski         if( bRet )
406*b1cdbd2cSJim Jagielski             bRet = IsDefault( pNode->Left() );
407*b1cdbd2cSJim Jagielski         if( bRet )
408*b1cdbd2cSJim Jagielski             bRet = IsDefault( pNode->Right() );
409*b1cdbd2cSJim Jagielski     }
410*b1cdbd2cSJim Jagielski     return bRet;
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski 
IsDefault(const RSCINST & rInst)413*b1cdbd2cSJim Jagielski sal_Bool RscArray::IsDefault( const RSCINST & rInst )
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski     sal_Bool bRet = ::IsDefault( pClassData->pNode );
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski     if( bRet )
422*b1cdbd2cSJim Jagielski         bRet = RscTop::IsDefault( rInst );
423*b1cdbd2cSJim Jagielski     return bRet;
424*b1cdbd2cSJim Jagielski }
425*b1cdbd2cSJim Jagielski 
426*b1cdbd2cSJim Jagielski /*************************************************************************
427*b1cdbd2cSJim Jagielski |*
428*b1cdbd2cSJim Jagielski |*    RscArray::IsValueDefault()
429*b1cdbd2cSJim Jagielski |*
430*b1cdbd2cSJim Jagielski |*    Beschreibung
431*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.04.91
432*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 15.01.92
433*b1cdbd2cSJim Jagielski |*
434*b1cdbd2cSJim Jagielski *************************************************************************/
IsValueDefault(RscInstNode * pNode,CLASS_DATA pDef)435*b1cdbd2cSJim Jagielski static sal_Bool IsValueDefault( RscInstNode * pNode, CLASS_DATA pDef )
436*b1cdbd2cSJim Jagielski {
437*b1cdbd2cSJim Jagielski     sal_Bool bRet = sal_True;
438*b1cdbd2cSJim Jagielski 
439*b1cdbd2cSJim Jagielski     if( pNode )
440*b1cdbd2cSJim Jagielski     {
441*b1cdbd2cSJim Jagielski         bRet = pNode->aInst.pClass->IsValueDefault( pNode->aInst, pDef );
442*b1cdbd2cSJim Jagielski         if( bRet )
443*b1cdbd2cSJim Jagielski             bRet = IsValueDefault( pNode->Left(), pDef );
444*b1cdbd2cSJim Jagielski         if( bRet )
445*b1cdbd2cSJim Jagielski             bRet = IsValueDefault( pNode->Right(), pDef );
446*b1cdbd2cSJim Jagielski     }
447*b1cdbd2cSJim Jagielski     return bRet;
448*b1cdbd2cSJim Jagielski }
449*b1cdbd2cSJim Jagielski 
IsValueDefault(const RSCINST & rInst,CLASS_DATA pDef)450*b1cdbd2cSJim Jagielski sal_Bool RscArray::IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef )
451*b1cdbd2cSJim Jagielski {
452*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
453*b1cdbd2cSJim Jagielski     sal_Bool bRet;
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski     bRet = RscTop::IsValueDefault( rInst, pDef );
456*b1cdbd2cSJim Jagielski 
457*b1cdbd2cSJim Jagielski     if( bRet )
458*b1cdbd2cSJim Jagielski     {
459*b1cdbd2cSJim Jagielski         pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
460*b1cdbd2cSJim Jagielski 
461*b1cdbd2cSJim Jagielski         bRet = ::IsValueDefault( pClassData->pNode, pDef );
462*b1cdbd2cSJim Jagielski     }
463*b1cdbd2cSJim Jagielski     return bRet;
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski /*************************************************************************
467*b1cdbd2cSJim Jagielski |*    RscArray::WriteSrcHeader()
468*b1cdbd2cSJim Jagielski |*
469*b1cdbd2cSJim Jagielski |*    Beschreibung
470*b1cdbd2cSJim Jagielski *************************************************************************/
WriteSrcHeader(const RSCINST & rInst,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const RscId & aId,const char * pVarName)471*b1cdbd2cSJim Jagielski void RscArray::WriteSrcHeader( const RSCINST & rInst, FILE * fOutput,
472*b1cdbd2cSJim Jagielski                                RscTypCont * pTC, sal_uInt32 nTab,
473*b1cdbd2cSJim Jagielski                                const RscId & aId, const char * pVarName )
474*b1cdbd2cSJim Jagielski {
475*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
476*b1cdbd2cSJim Jagielski 
477*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski 	if( pTC->IsSrsDefault() )
480*b1cdbd2cSJim Jagielski 	{ // nur einen Wert schreiben
481*b1cdbd2cSJim Jagielski 	    RscInstNode *   pNode = NULL;
482*b1cdbd2cSJim Jagielski 	    if( pClassData->pNode )
483*b1cdbd2cSJim Jagielski 		{
484*b1cdbd2cSJim Jagielski             std::vector< sal_uInt32 >::const_iterator it;
485*b1cdbd2cSJim Jagielski             for( it = pTC->GetFallbacks().begin(); !pNode && it != pTC->GetFallbacks().end(); ++it )
486*b1cdbd2cSJim Jagielski                 pNode = pClassData->pNode->Search( *it );
487*b1cdbd2cSJim Jagielski 		}
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski 	    if( pNode )
490*b1cdbd2cSJim Jagielski 		{
491*b1cdbd2cSJim Jagielski 	        if( pNode->aInst.pClass->IsDefault( pNode->aInst ) )
492*b1cdbd2cSJim Jagielski 		        fprintf( fOutput, "Default" );
493*b1cdbd2cSJim Jagielski 			else
494*b1cdbd2cSJim Jagielski 		        pNode->aInst.pClass->WriteSrcHeader(
495*b1cdbd2cSJim Jagielski 										pNode->aInst, fOutput,
496*b1cdbd2cSJim Jagielski 										pTC, nTab, aId, pVarName );
497*b1cdbd2cSJim Jagielski 			return;
498*b1cdbd2cSJim Jagielski 	    }
499*b1cdbd2cSJim Jagielski 	}
500*b1cdbd2cSJim Jagielski 
501*b1cdbd2cSJim Jagielski 	if( IsDefault( rInst ) )
502*b1cdbd2cSJim Jagielski 		fprintf( fOutput, "Default" );
503*b1cdbd2cSJim Jagielski 	else
504*b1cdbd2cSJim Jagielski 	{
505*b1cdbd2cSJim Jagielski 		RSCINST aSuper( GetSuperClass(), rInst.pData );
506*b1cdbd2cSJim Jagielski 		aSuper.pClass->WriteSrcHeader( aSuper, fOutput, pTC,
507*b1cdbd2cSJim Jagielski 										nTab, aId, pVarName );
508*b1cdbd2cSJim Jagielski 	}
509*b1cdbd2cSJim Jagielski 	if( !pTC->IsSrsDefault() )
510*b1cdbd2cSJim Jagielski 		WriteSrc( rInst, fOutput, pTC, nTab, pVarName );
511*b1cdbd2cSJim Jagielski }
512*b1cdbd2cSJim Jagielski 
513*b1cdbd2cSJim Jagielski /*************************************************************************
514*b1cdbd2cSJim Jagielski |*    RscArray::WriteSrc()
515*b1cdbd2cSJim Jagielski |*
516*b1cdbd2cSJim Jagielski |*    Beschreibung
517*b1cdbd2cSJim Jagielski *************************************************************************/
WriteSrc(RscInstNode * pNode,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const char * pVarName,CLASS_DATA pDfltData,RscConst * pTypeClass)518*b1cdbd2cSJim Jagielski static void WriteSrc( RscInstNode * pNode, FILE * fOutput, RscTypCont * pTC,
519*b1cdbd2cSJim Jagielski                          sal_uInt32 nTab, const char * pVarName,
520*b1cdbd2cSJim Jagielski                          CLASS_DATA pDfltData, RscConst * pTypeClass )
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski     if( pNode )
523*b1cdbd2cSJim Jagielski     {
524*b1cdbd2cSJim Jagielski         WriteSrc( pNode->Left(), fOutput, pTC, nTab, pVarName,
525*b1cdbd2cSJim Jagielski                     pDfltData, pTypeClass );
526*b1cdbd2cSJim Jagielski         if( !pNode->aInst.pClass->IsValueDefault( pNode->aInst, pDfltData ) )
527*b1cdbd2cSJim Jagielski         {
528*b1cdbd2cSJim Jagielski             fprintf( fOutput, ";\n" );
529*b1cdbd2cSJim Jagielski             for( sal_uInt32 n = 0; n < nTab; n++ )
530*b1cdbd2cSJim Jagielski                 fputc( '\t', fOutput );
531*b1cdbd2cSJim Jagielski 
532*b1cdbd2cSJim Jagielski             Atom  nIdxId;
533*b1cdbd2cSJim Jagielski             pTypeClass->GetValueConst( pNode->GetId(), &nIdxId );
534*b1cdbd2cSJim Jagielski             fprintf( fOutput, "%s[ %s ] = ", pVarName, pHS->getString( nIdxId ).getStr() );
535*b1cdbd2cSJim Jagielski             pNode->aInst.pClass->WriteSrcHeader( pNode->aInst, fOutput, pTC,
536*b1cdbd2cSJim Jagielski                                                 nTab, RscId(), pVarName );
537*b1cdbd2cSJim Jagielski         }
538*b1cdbd2cSJim Jagielski         WriteSrc( pNode->Right(), fOutput, pTC, nTab, pVarName,
539*b1cdbd2cSJim Jagielski                     pDfltData, pTypeClass );
540*b1cdbd2cSJim Jagielski     }
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski 
WriteSrcArray(const RSCINST & rInst,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const char * pVarName)543*b1cdbd2cSJim Jagielski void RscArray::WriteSrcArray( const RSCINST & rInst, FILE * fOutput,
544*b1cdbd2cSJim Jagielski                          	RscTypCont * pTC, sal_uInt32 nTab,
545*b1cdbd2cSJim Jagielski                          	const char * pVarName )
546*b1cdbd2cSJim Jagielski {
547*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
548*b1cdbd2cSJim Jagielski 
549*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
550*b1cdbd2cSJim Jagielski 
551*b1cdbd2cSJim Jagielski     ::WriteSrc( pClassData->pNode, fOutput, pTC, nTab, pVarName,
552*b1cdbd2cSJim Jagielski                 rInst.pData, pTypeClass );
553*b1cdbd2cSJim Jagielski };
554*b1cdbd2cSJim Jagielski 
WriteSrc(const RSCINST & rInst,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const char * pVarName)555*b1cdbd2cSJim Jagielski void RscArray::WriteSrc( const RSCINST & rInst, FILE * fOutput,
556*b1cdbd2cSJim Jagielski                          RscTypCont * pTC, sal_uInt32 nTab,
557*b1cdbd2cSJim Jagielski                          const char * pVarName )
558*b1cdbd2cSJim Jagielski {
559*b1cdbd2cSJim Jagielski 	WriteSrcArray( rInst, fOutput, pTC, nTab, pVarName );
560*b1cdbd2cSJim Jagielski }
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski /*************************************************************************
563*b1cdbd2cSJim Jagielski |*    RscArray::WriteRc()
564*b1cdbd2cSJim Jagielski |*
565*b1cdbd2cSJim Jagielski |*    Beschreibung
566*b1cdbd2cSJim Jagielski *************************************************************************/
WriteRc(const RSCINST & rInst,RscWriteRc & rMem,RscTypCont * pTC,sal_uInt32 nDeep,sal_Bool bExtra)567*b1cdbd2cSJim Jagielski ERRTYPE RscArray::WriteRc( const RSCINST & rInst, RscWriteRc & rMem,
568*b1cdbd2cSJim Jagielski                             RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra )
569*b1cdbd2cSJim Jagielski {
570*b1cdbd2cSJim Jagielski     ERRTYPE aError;
571*b1cdbd2cSJim Jagielski     RscArrayInst * pClassData;
572*b1cdbd2cSJim Jagielski     RscInstNode *   pNode = NULL;
573*b1cdbd2cSJim Jagielski 
574*b1cdbd2cSJim Jagielski     pClassData = (RscArrayInst *)(rInst.pData + nOffInstData);
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski     if( pClassData->pNode )
577*b1cdbd2cSJim Jagielski 	{
578*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 2
579*b1cdbd2cSJim Jagielski         fprintf( stderr, "RscArray::WriteRc: Fallback " );
580*b1cdbd2cSJim Jagielski #endif
581*b1cdbd2cSJim Jagielski         std::vector< sal_uInt32 >::const_iterator it;
582*b1cdbd2cSJim Jagielski         for( it = pTC->GetFallbacks().begin(); !pNode && it != pTC->GetFallbacks().end(); ++it )
583*b1cdbd2cSJim Jagielski         {
584*b1cdbd2cSJim Jagielski             pNode = pClassData->pNode->Search( *it );
585*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 2
586*b1cdbd2cSJim Jagielski             fprintf( stderr, " 0x%hx", *it );
587*b1cdbd2cSJim Jagielski #endif
588*b1cdbd2cSJim Jagielski         }
589*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 2
590*b1cdbd2cSJim Jagielski             fprintf( stderr, "\n" );
591*b1cdbd2cSJim Jagielski #endif
592*b1cdbd2cSJim Jagielski 	}
593*b1cdbd2cSJim Jagielski 
594*b1cdbd2cSJim Jagielski     if( pNode )
595*b1cdbd2cSJim Jagielski         aError = pNode->aInst.pClass->WriteRc( pNode->aInst, rMem, pTC,
596*b1cdbd2cSJim Jagielski                                                 nDeep, bExtra );
597*b1cdbd2cSJim Jagielski     else
598*b1cdbd2cSJim Jagielski         aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra );
599*b1cdbd2cSJim Jagielski 
600*b1cdbd2cSJim Jagielski     return aError;
601*b1cdbd2cSJim Jagielski }
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski //========================================================================
WriteRcAccess(FILE * fOutput,RscTypCont * pTC,const char * pName)604*b1cdbd2cSJim Jagielski void RscArray::WriteRcAccess
605*b1cdbd2cSJim Jagielski (
606*b1cdbd2cSJim Jagielski 	FILE * fOutput,
607*b1cdbd2cSJim Jagielski 	RscTypCont * pTC,
608*b1cdbd2cSJim Jagielski 	const char * pName
609*b1cdbd2cSJim Jagielski )
610*b1cdbd2cSJim Jagielski {
611*b1cdbd2cSJim Jagielski 	GetSuperClass()->WriteRcAccess( fOutput, pTC, pName );
612*b1cdbd2cSJim Jagielski }
613*b1cdbd2cSJim Jagielski 
614*b1cdbd2cSJim Jagielski /*************************************************************************
615*b1cdbd2cSJim Jagielski |*
616*b1cdbd2cSJim Jagielski |*    RscClassArray::RscClassArray()
617*b1cdbd2cSJim Jagielski |*
618*b1cdbd2cSJim Jagielski |*    Beschreibung
619*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
620*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
621*b1cdbd2cSJim Jagielski |*
622*b1cdbd2cSJim Jagielski *************************************************************************/
RscClassArray(Atom nId,sal_uInt32 nTypeId,RscTop * pSuper,RscEnum * pTypeCl)623*b1cdbd2cSJim Jagielski RscClassArray::RscClassArray( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper,
624*b1cdbd2cSJim Jagielski                               RscEnum * pTypeCl )
625*b1cdbd2cSJim Jagielski     : RscArray( nId, nTypeId, pSuper, pTypeCl )
626*b1cdbd2cSJim Jagielski {
627*b1cdbd2cSJim Jagielski }
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski /*************************************************************************
630*b1cdbd2cSJim Jagielski |*
631*b1cdbd2cSJim Jagielski |*    RscClassArray::~RscClassArray()
632*b1cdbd2cSJim Jagielski |*
633*b1cdbd2cSJim Jagielski |*    Beschreibung
634*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
635*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
636*b1cdbd2cSJim Jagielski |*
637*b1cdbd2cSJim Jagielski *************************************************************************/
~RscClassArray()638*b1cdbd2cSJim Jagielski RscClassArray::~RscClassArray()
639*b1cdbd2cSJim Jagielski {
640*b1cdbd2cSJim Jagielski }
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski /*************************************************************************
643*b1cdbd2cSJim Jagielski |*
644*b1cdbd2cSJim Jagielski |*    RscClassArray::WriteSrcHeader()
645*b1cdbd2cSJim Jagielski |*
646*b1cdbd2cSJim Jagielski |*    Beschreibung
647*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
648*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
649*b1cdbd2cSJim Jagielski |*
650*b1cdbd2cSJim Jagielski *************************************************************************/
WriteSrcHeader(const RSCINST & rInst,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const RscId & aId,const char * pName)651*b1cdbd2cSJim Jagielski void RscClassArray::WriteSrcHeader( const RSCINST & rInst, FILE * fOutput,
652*b1cdbd2cSJim Jagielski 									RscTypCont * pTC, sal_uInt32 nTab,
653*b1cdbd2cSJim Jagielski 									const RscId & aId, const char * pName )
654*b1cdbd2cSJim Jagielski {
655*b1cdbd2cSJim Jagielski 	RscArray::WriteSrcHeader( rInst, fOutput, pTC, nTab, aId, pName );
656*b1cdbd2cSJim Jagielski }
657*b1cdbd2cSJim Jagielski 
658*b1cdbd2cSJim Jagielski /*************************************************************************
659*b1cdbd2cSJim Jagielski |*
660*b1cdbd2cSJim Jagielski |*    RscClassArray::WriteSrc()
661*b1cdbd2cSJim Jagielski |*
662*b1cdbd2cSJim Jagielski |*    Beschreibung
663*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
664*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
665*b1cdbd2cSJim Jagielski |*
666*b1cdbd2cSJim Jagielski *************************************************************************/
WriteSrc(const RSCINST & rInst,FILE * fOutput,RscTypCont * pTC,sal_uInt32 nTab,const char * pVarName)667*b1cdbd2cSJim Jagielski void RscClassArray::WriteSrc( const RSCINST & rInst, FILE * fOutput,
668*b1cdbd2cSJim Jagielski             	             RscTypCont * pTC, sal_uInt32 nTab,
669*b1cdbd2cSJim Jagielski 	               	          const char * pVarName )
670*b1cdbd2cSJim Jagielski {
671*b1cdbd2cSJim Jagielski 	RscArray::WriteSrc( rInst, fOutput, pTC, nTab, pVarName );
672*b1cdbd2cSJim Jagielski }
673*b1cdbd2cSJim Jagielski 
674*b1cdbd2cSJim Jagielski /*************************************************************************
675*b1cdbd2cSJim Jagielski |*
676*b1cdbd2cSJim Jagielski |*    RscClassArray::WriteRcHeader()
677*b1cdbd2cSJim Jagielski |*
678*b1cdbd2cSJim Jagielski |*    Beschreibung
679*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
680*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
681*b1cdbd2cSJim Jagielski |*
682*b1cdbd2cSJim Jagielski *************************************************************************/
WriteRcHeader(const RSCINST & rInst,RscWriteRc & aMem,RscTypCont * pTC,const RscId & aId,sal_uInt32 nDeep,sal_Bool bExtra)683*b1cdbd2cSJim Jagielski ERRTYPE RscClassArray::WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem,
684*b1cdbd2cSJim Jagielski 									   RscTypCont * pTC, const RscId & aId,
685*b1cdbd2cSJim Jagielski 									   sal_uInt32 nDeep, sal_Bool bExtra )
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski 	// Eigenen Typ schreiben
688*b1cdbd2cSJim Jagielski 	return GetSuperClass()->WriteRcHeader( rInst, aMem, pTC, aId,
689*b1cdbd2cSJim Jagielski 										nDeep, bExtra );
690*b1cdbd2cSJim Jagielski }
691*b1cdbd2cSJim Jagielski 
692*b1cdbd2cSJim Jagielski /*************************************************************************
693*b1cdbd2cSJim Jagielski |*
694*b1cdbd2cSJim Jagielski |*    RscLangArray::RscLangArray()
695*b1cdbd2cSJim Jagielski |*
696*b1cdbd2cSJim Jagielski |*    Beschreibung
697*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
698*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
699*b1cdbd2cSJim Jagielski |*
700*b1cdbd2cSJim Jagielski *************************************************************************/
RscLangArray(Atom nId,sal_uInt32 nTypeId,RscTop * pSuper,RscEnum * pTypeCl)701*b1cdbd2cSJim Jagielski RscLangArray::RscLangArray( Atom nId, sal_uInt32 nTypeId, RscTop * pSuper,
702*b1cdbd2cSJim Jagielski                           RscEnum * pTypeCl )
703*b1cdbd2cSJim Jagielski     : RscArray( nId, nTypeId, pSuper, pTypeCl )
704*b1cdbd2cSJim Jagielski {
705*b1cdbd2cSJim Jagielski }
706*b1cdbd2cSJim Jagielski 
707*b1cdbd2cSJim Jagielski /*************************************************************************
708*b1cdbd2cSJim Jagielski |*
709*b1cdbd2cSJim Jagielski |*    RscLangArray::RscLangArray()
710*b1cdbd2cSJim Jagielski |*
711*b1cdbd2cSJim Jagielski |*    Beschreibung
712*b1cdbd2cSJim Jagielski |*    Ersterstellung    MM 25.05.91
713*b1cdbd2cSJim Jagielski |*    Letzte Aenderung  MM 25.05.91
714*b1cdbd2cSJim Jagielski |*
715*b1cdbd2cSJim Jagielski *************************************************************************/
GetClassType() const716*b1cdbd2cSJim Jagielski RSCCLASS_TYPE RscLangArray::GetClassType() const
717*b1cdbd2cSJim Jagielski {
718*b1cdbd2cSJim Jagielski     if( GetSuperClass() )
719*b1cdbd2cSJim Jagielski         return GetSuperClass()->GetClassType();
720*b1cdbd2cSJim Jagielski     else
721*b1cdbd2cSJim Jagielski         return RscArray::GetClassType();
722*b1cdbd2cSJim Jagielski 
723*b1cdbd2cSJim Jagielski }
724*b1cdbd2cSJim Jagielski 
725