xref: /trunk/main/rsc/inc/rsctop.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1*f7c60c9cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*f7c60c9cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*f7c60c9cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*f7c60c9cSAndrew Rist  * distributed with this work for additional information
6*f7c60c9cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*f7c60c9cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*f7c60c9cSAndrew Rist  * "License"); you may not use this file except in compliance
9*f7c60c9cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*f7c60c9cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*f7c60c9cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*f7c60c9cSAndrew Rist  * software distributed under the License is distributed on an
15*f7c60c9cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f7c60c9cSAndrew Rist  * KIND, either express or implied.  See the License for the
17*f7c60c9cSAndrew Rist  * specific language governing permissions and limitations
18*f7c60c9cSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*f7c60c9cSAndrew Rist  *************************************************************/
21*f7c60c9cSAndrew Rist 
22*f7c60c9cSAndrew Rist 
23cdf0e10cSrcweir #ifndef _RSCTOP_HXX
24cdf0e10cSrcweir #define _RSCTOP_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <rscerror.h>
27cdf0e10cSrcweir #include <rsctools.hxx>
28cdf0e10cSrcweir #include <rschash.hxx>
29cdf0e10cSrcweir #include <rscclobj.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /****************** T Y P E S ********************************************/
32cdf0e10cSrcweir typedef sal_uInt32 RSCVAR;
33cdf0e10cSrcweir #define VAR_POINTER     0x0001
34cdf0e10cSrcweir #define VAR_HIDDEN      0x0002
35cdf0e10cSrcweir #define VAR_NODATAINST  0x0004
36cdf0e10cSrcweir #define VAR_NORC        0x0008
37cdf0e10cSrcweir #define VAR_SVDYNAMIC   0x0010
38cdf0e10cSrcweir #define VAR_NOENUM      0x0020
39cdf0e10cSrcweir #define VAR_EXTENDABLE  0x0040  /* Auch die Ableitung einer Klasse kann angegeben werden */
40cdf0e10cSrcweir 
41cdf0e10cSrcweir /****************** C L A S S E S ****************************************/
42cdf0e10cSrcweir /******************* R s c C l a s s *************************************/
43cdf0e10cSrcweir class RscTop : public RefNode
44cdf0e10cSrcweir {
45cdf0e10cSrcweir     RscTop *        pSuperClass;
46cdf0e10cSrcweir     RSCINST         aDfltInst;
47cdf0e10cSrcweir     sal_uInt32          nTypId;
48cdf0e10cSrcweir     RscTop *        pRefClass;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir protected:
51cdf0e10cSrcweir                     RscTop( Atom nId, sal_uInt32 nTypIdent,
52cdf0e10cSrcweir                             RscTop * pSuperCl = NULL );
53cdf0e10cSrcweir 
54cdf0e10cSrcweir public:
55cdf0e10cSrcweir     ByteString      aCallPar1;      // Klassenaufruf ohne Typen bis ResId
56cdf0e10cSrcweir     ByteString      aCallPar2;      // Klassenaufruf ohne Typen ab ResId
57cdf0e10cSrcweir     ByteString      aCallParType;   // Klassenaufruf mit Typen
58cdf0e10cSrcweir 
SetSuperClass(RscTop * pClass)59cdf0e10cSrcweir             void    SetSuperClass( RscTop * pClass )
60cdf0e10cSrcweir                     {
61cdf0e10cSrcweir                         pSuperClass = pClass;
62cdf0e10cSrcweir                     }
GetSuperClass() const63cdf0e10cSrcweir             RscTop* GetSuperClass() const
64cdf0e10cSrcweir                     { return pSuperClass; }
65cdf0e10cSrcweir                     // Gibt den Typidentifier zurueck
GetTypId() const66cdf0e10cSrcweir             sal_uInt32  GetTypId() const
67cdf0e10cSrcweir                     { return nTypId; };
68cdf0e10cSrcweir                     // Gibt die Oberklasse zurueck
69cdf0e10cSrcweir             sal_Bool    InHierarchy( RscTop * pClass );
IsCodeWriteable() const70cdf0e10cSrcweir             sal_Bool    IsCodeWriteable() const
71cdf0e10cSrcweir                     {
72cdf0e10cSrcweir                         return( 0 != aCallParType.Len() );
73cdf0e10cSrcweir                     }
74cdf0e10cSrcweir             void    SetCallPar( const ByteString & rPar1, const ByteString & rPar2,
75cdf0e10cSrcweir                                 const ByteString & rParType );
SetRefClass(RscTop * pRef)76cdf0e10cSrcweir             void    SetRefClass( RscTop * pRef ) { pRefClass = pRef; }
GetRefClass() const77cdf0e10cSrcweir             RscTop* GetRefClass() const { return pRefClass; }
78cdf0e10cSrcweir     virtual RSCCLASS_TYPE GetClassType() const = 0;
79cdf0e10cSrcweir             RSCINST GetDefault();
80cdf0e10cSrcweir 
81cdf0e10cSrcweir                     // Vorbereitung auf den dtor aufruf
82cdf0e10cSrcweir                     // Da die Klassen gegenseitige Abhaengigkeiten
83cdf0e10cSrcweir                     // aufweisen koennen, kann man im dtor nicht davon
84cdf0e10cSrcweir                     // ausgehen, dass alle Klassenzeiger noch gueltig sind
85cdf0e10cSrcweir     virtual void    Pre_dtor();
86cdf0e10cSrcweir 
87cdf0e10cSrcweir     virtual Atom    GetConstant( sal_uInt32 );
88cdf0e10cSrcweir 
89cdf0e10cSrcweir     virtual RscTop *    GetTypeClass() const;
90cdf0e10cSrcweir 
91cdf0e10cSrcweir                     // Gibt die Groesse der Klasse in Bytes
92cdf0e10cSrcweir     virtual sal_uInt32  Size();
93cdf0e10cSrcweir 
94cdf0e10cSrcweir                     // Gibt die Referenz zurueck
95cdf0e10cSrcweir     virtual ERRTYPE GetRef( const RSCINST & rInst, RscId * );
96cdf0e10cSrcweir 
97cdf0e10cSrcweir                     // Gibt die Referenz zurueck
98cdf0e10cSrcweir     virtual ERRTYPE SetRef( const RSCINST & rInst, const RscId & rRefId );
99cdf0e10cSrcweir 
100cdf0e10cSrcweir                     // Variable anlegen
101cdf0e10cSrcweir     virtual ERRTYPE SetVariable( Atom nVarName, RscTop * pClass,
102cdf0e10cSrcweir                                  RSCINST * pDflt = NULL,
103cdf0e10cSrcweir                                  RSCVAR nVarType = 0, sal_uInt32 nMask = 0,
104cdf0e10cSrcweir                                  Atom nDataBaseName = InvalidAtom );
105cdf0e10cSrcweir 
106cdf0e10cSrcweir                     // Zaehlt alle Variablen auf
107cdf0e10cSrcweir     virtual void    EnumVariables( void * pData, VarEnumCallbackProc );
108cdf0e10cSrcweir 
109cdf0e10cSrcweir                     // Liefert Instanz der Variablen zurueck
110cdf0e10cSrcweir                     // pData, pClass im return koennen NULL sein
111cdf0e10cSrcweir     virtual RSCINST GetVariable( const RSCINST & rInst, Atom nVarName,
112cdf0e10cSrcweir                                  const RSCINST & rInitInst,
113cdf0e10cSrcweir                                  sal_Bool nInitDflt = sal_False,
114cdf0e10cSrcweir                                  RscTop * pCreateClass = NULL );
115cdf0e10cSrcweir     virtual RSCINST GetCopyVar( const RSCINST & rInst, Atom nVarName );
116cdf0e10cSrcweir 
117cdf0e10cSrcweir     virtual RSCINST GetTupelVar( const RSCINST & rInst, sal_uInt32 nPos,
118cdf0e10cSrcweir                                  const RSCINST & rInitInst );
119cdf0e10cSrcweir 
120cdf0e10cSrcweir                     // Liefert Instanz aus einem Feld zurueck
121cdf0e10cSrcweir                     // pGetInst im return kann NULL sein
122cdf0e10cSrcweir     virtual ERRTYPE GetElement( const RSCINST & rInst, const RscId & rEleName,
123cdf0e10cSrcweir                                 RscTop *pCreateClass, const RSCINST & rCreateInst,
124cdf0e10cSrcweir                                 RSCINST * pGetInst );
125cdf0e10cSrcweir 
126cdf0e10cSrcweir                     // Liefert Instanz aus einem Feld zurueck
127cdf0e10cSrcweir                     // pGetInst im return kann NULL sein
128cdf0e10cSrcweir     virtual ERRTYPE GetValueEle( const RSCINST & rInst, sal_Int32 lValue,
129cdf0e10cSrcweir                                 RscTop * pCreateClass,
130cdf0e10cSrcweir                                 RSCINST * pGetInst );
131cdf0e10cSrcweir 
132cdf0e10cSrcweir                     // Liefert Instanz aus einem Feld zurueck
133cdf0e10cSrcweir                     // pGetInst im return kann NULL sein
134cdf0e10cSrcweir     virtual ERRTYPE GetArrayEle( const RSCINST & rInst, Atom nId,
135cdf0e10cSrcweir                                 RscTop * pCreateClass,
136cdf0e10cSrcweir                                 RSCINST * pGetInst );
137cdf0e10cSrcweir 
138cdf0e10cSrcweir     virtual RSCINST SearchEle( const RSCINST & rInst, const RscId & rEleName,
139cdf0e10cSrcweir                                RscTop * pClass );
140cdf0e10cSrcweir 
141cdf0e10cSrcweir                     // Liefert Instanz an der Position zurueck
142cdf0e10cSrcweir     virtual RSCINST GetPosEle( const RSCINST & rInst, sal_uInt32 nPos );
143cdf0e10cSrcweir 
144cdf0e10cSrcweir                     // verschiebt eine Instanz
145cdf0e10cSrcweir     virtual ERRTYPE MovePosEle( const RSCINST & rInst, sal_uInt32 nDestPos,
146cdf0e10cSrcweir                                 sal_uInt32 nSourcePos );
147cdf0e10cSrcweir 
148cdf0e10cSrcweir                     // aendert RscId an Position
149cdf0e10cSrcweir     virtual ERRTYPE SetPosRscId( const RSCINST & rInst, sal_uInt32 nPos,
150cdf0e10cSrcweir                                  const RscId & rRscId);
151cdf0e10cSrcweir 
152cdf0e10cSrcweir                     // Liefert Information ueber Instanz
153cdf0e10cSrcweir                     // an der Position zurueck
154cdf0e10cSrcweir     virtual SUBINFO_STRUCT GetInfoEle( const RSCINST & rInst, sal_uInt32 nPos );
155cdf0e10cSrcweir 
156cdf0e10cSrcweir                     // Anzahl der Eintraege
157cdf0e10cSrcweir     virtual sal_uInt32 GetCount( const RSCINST & rInst );
158cdf0e10cSrcweir 
159cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
160cdf0e10cSrcweir     virtual ERRTYPE SetNumber( const RSCINST & rInst, sal_Int32 lValue );
161cdf0e10cSrcweir 
162cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
163cdf0e10cSrcweir     virtual ERRTYPE SetBool( const RSCINST & rInst, sal_Bool bValue );
164cdf0e10cSrcweir 
165cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
166cdf0e10cSrcweir     virtual ERRTYPE SetConst( const RSCINST & rInst, Atom nValueId,
167cdf0e10cSrcweir                               sal_Int32 nValue );
168cdf0e10cSrcweir 
169cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
170cdf0e10cSrcweir     virtual ERRTYPE SetNotConst( const RSCINST & rInst, Atom nId );
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     virtual ERRTYPE SetString( const RSCINST & rInst, const char * pStr );
173cdf0e10cSrcweir 
174cdf0e10cSrcweir     virtual ERRTYPE GetNumber( const RSCINST & rInst, sal_Int32 * pN );
175cdf0e10cSrcweir 
176cdf0e10cSrcweir     virtual ERRTYPE GetBool( const RSCINST & rInst, sal_Bool * pB );
177cdf0e10cSrcweir 
178cdf0e10cSrcweir     virtual ERRTYPE GetConst( const RSCINST & rInst, Atom * pH );
179cdf0e10cSrcweir 
180cdf0e10cSrcweir     virtual ERRTYPE GetString( const RSCINST & rInst, char ** ppStr );
181cdf0e10cSrcweir 
182cdf0e10cSrcweir     virtual RSCINST Create( RSCINST * pInst,
183cdf0e10cSrcweir                             const RSCINST & rDefInst, sal_Bool bOwnClass = sal_False );
184cdf0e10cSrcweir 
185cdf0e10cSrcweir                     // Instanz zerstoeren
186cdf0e10cSrcweir     virtual void    Destroy( const RSCINST & rInst );
187cdf0e10cSrcweir 
188cdf0e10cSrcweir                     // prueft auf konsistenz
189cdf0e10cSrcweir     virtual sal_Bool    IsConsistent( const RSCINST & rInst,
190cdf0e10cSrcweir                                   RscInconsList * pList = NULL );
191cdf0e10cSrcweir 
192cdf0e10cSrcweir                     // Alles auf Default setzen
193cdf0e10cSrcweir     virtual void    SetToDefault( const RSCINST & rInst );
194cdf0e10cSrcweir 
195cdf0e10cSrcweir                     // Ist Eingabe = Default
196cdf0e10cSrcweir     virtual sal_Bool    IsDefault( const RSCINST & rInst );
197cdf0e10cSrcweir 
198cdf0e10cSrcweir                     // Gleiche Werte auf Default setzen
199cdf0e10cSrcweir     virtual sal_Bool    IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
200cdf0e10cSrcweir 
201cdf0e10cSrcweir                     // Instanz auf Default setzen
202cdf0e10cSrcweir     virtual void    SetDefault( const RSCINST & rInst, Atom nVarId );
203cdf0e10cSrcweir 
204cdf0e10cSrcweir                     // Default zu einer Variablen holen
205cdf0e10cSrcweir     virtual RSCINST GetDefault( Atom nVarId );
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     virtual void    Delete( const RSCINST & rInst, RscTop * pClass,
208cdf0e10cSrcweir                             const RscId & rId );
209cdf0e10cSrcweir 
210cdf0e10cSrcweir     virtual void    DeletePos( const RSCINST & rInst, sal_uInt32 nPos );
211cdf0e10cSrcweir 
212cdf0e10cSrcweir                     // Schreibt den Kopf und das Ende einer Resource
213cdf0e10cSrcweir                     // Script Datei
214cdf0e10cSrcweir     virtual void    WriteSrcHeader( const RSCINST & rInst, FILE * fOutput,
215cdf0e10cSrcweir                                     RscTypCont * pTC, sal_uInt32 nTab,
216cdf0e10cSrcweir                                     const RscId & aId, const char * );
217cdf0e10cSrcweir     virtual void    WriteSrc( const RSCINST & rInst, FILE * fOutput,
218cdf0e10cSrcweir                               RscTypCont * pTC, sal_uInt32 nTab,const char * );
219cdf0e10cSrcweir     virtual ERRTYPE WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem,
220cdf0e10cSrcweir                                    RscTypCont * pTC, const RscId & aId,
221cdf0e10cSrcweir                                     sal_uInt32 nDeep, sal_Bool bExtra );
222cdf0e10cSrcweir     virtual ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem,
223cdf0e10cSrcweir                              RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra );
224cdf0e10cSrcweir 
225cdf0e10cSrcweir     // Weiterleitung an Superklassen wird unterbunden
226cdf0e10cSrcweir     virtual ERRTYPE WriteHxxHeader( const RSCINST & rInst, FILE * fOutput,
227cdf0e10cSrcweir                                     RscTypCont * pTC, const RscId & rId );
228cdf0e10cSrcweir     virtual ERRTYPE WriteHxx( const RSCINST & rInst, FILE * fOutput,
229cdf0e10cSrcweir                               RscTypCont * pTC, const RscId &rId );
230cdf0e10cSrcweir     virtual ERRTYPE WriteCxxHeader( const RSCINST & rInst, FILE * fOutput,
231cdf0e10cSrcweir                                     RscTypCont * pTC, const RscId &rId );
232cdf0e10cSrcweir     virtual ERRTYPE WriteCxx( const RSCINST & rInst, FILE * fOutput,
233cdf0e10cSrcweir                               RscTypCont * pTC, const RscId &rId );
234cdf0e10cSrcweir 
235cdf0e10cSrcweir             void WriteSyntaxHeader( FILE * fOutput, RscTypCont * pTC  );
236cdf0e10cSrcweir     virtual void WriteSyntax( FILE * fOutput, RscTypCont * pTC );
237cdf0e10cSrcweir 
238cdf0e10cSrcweir     virtual void    WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
239cdf0e10cSrcweir                                     const char * );
240cdf0e10cSrcweir     virtual void    WriteRcCtor( FILE * fOutput, RscTypCont * pTC );
241cdf0e10cSrcweir };
242cdf0e10cSrcweir 
243cdf0e10cSrcweir #endif //_RSCTOP_HXX
244