CWS-TOOLING: integrate CWS os146
[LibreOffice.git] / rsc / inc / rsctop.hxx
blob2e23d5ef410a0cc6ae022a0f6979f5e2b7bf0bd8
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
27 #ifndef _RSCTOP_HXX
28 #define _RSCTOP_HXX
30 #include <rscerror.h>
31 #include <rsctools.hxx>
32 #include <rschash.hxx>
33 #include <rscclobj.hxx>
35 /****************** T Y P E S ********************************************/
36 typedef sal_uInt32 RSCVAR;
37 #define VAR_POINTER 0x0001
38 #define VAR_HIDDEN 0x0002
39 #define VAR_NODATAINST 0x0004
40 #define VAR_NORC 0x0008
41 #define VAR_SVDYNAMIC 0x0010
42 #define VAR_NOENUM 0x0020
43 #define VAR_EXTENDABLE 0x0040 /* Auch die Ableitung einer Klasse kann angegeben werden */
45 /****************** C L A S S E S ****************************************/
46 /******************* R s c C l a s s *************************************/
47 class RscTop : public RefNode
49 RscTop * pSuperClass;
50 RSCINST aDfltInst;
51 sal_uInt32 nTypId;
52 RscTop * pRefClass;
54 protected:
55 RscTop( Atom nId, sal_uInt32 nTypIdent,
56 RscTop * pSuperCl = NULL );
58 public:
59 ByteString aCallPar1; // Klassenaufruf ohne Typen bis ResId
60 ByteString aCallPar2; // Klassenaufruf ohne Typen ab ResId
61 ByteString aCallParType; // Klassenaufruf mit Typen
63 void SetSuperClass( RscTop * pClass )
65 pSuperClass = pClass;
67 RscTop* GetSuperClass() const
68 { return pSuperClass; }
69 // Gibt den Typidentifier zurueck
70 sal_uInt32 GetTypId() const
71 { return nTypId; };
72 // Gibt die Oberklasse zurueck
73 sal_Bool InHierarchy( RscTop * pClass );
74 sal_Bool IsCodeWriteable() const
76 return( 0 != aCallParType.Len() );
78 void SetCallPar( const ByteString & rPar1, const ByteString & rPar2,
79 const ByteString & rParType );
80 void SetRefClass( RscTop * pRef ) { pRefClass = pRef; }
81 RscTop* GetRefClass() const { return pRefClass; }
82 virtual RSCCLASS_TYPE GetClassType() const = 0;
83 RSCINST GetDefault();
85 // Vorbereitung auf den dtor aufruf
86 // Da die Klassen gegenseitige Abhaengigkeiten
87 // aufweisen koennen, kann man im dtor nicht davon
88 // ausgehen, dass alle Klassenzeiger noch gueltig sind
89 virtual void Pre_dtor();
91 virtual Atom GetConstant( sal_uInt32 );
93 virtual RscTop * GetTypeClass() const;
95 // Gibt die Groesse der Klasse in Bytes
96 virtual sal_uInt32 Size();
98 // Gibt die Referenz zurueck
99 virtual ERRTYPE GetRef( const RSCINST & rInst, RscId * );
101 // Gibt die Referenz zurueck
102 virtual ERRTYPE SetRef( const RSCINST & rInst, const RscId & rRefId );
104 // Variable anlegen
105 virtual ERRTYPE SetVariable( Atom nVarName, RscTop * pClass,
106 RSCINST * pDflt = NULL,
107 RSCVAR nVarType = 0, sal_uInt32 nMask = 0,
108 Atom nDataBaseName = InvalidAtom );
110 // Zaehlt alle Variablen auf
111 virtual void EnumVariables( void * pData, VarEnumCallbackProc );
113 // Liefert Instanz der Variablen zurueck
114 // pData, pClass im return koennen NULL sein
115 virtual RSCINST GetVariable( const RSCINST & rInst, Atom nVarName,
116 const RSCINST & rInitInst,
117 sal_Bool nInitDflt = sal_False,
118 RscTop * pCreateClass = NULL );
119 virtual RSCINST GetCopyVar( const RSCINST & rInst, Atom nVarName );
121 virtual RSCINST GetTupelVar( const RSCINST & rInst, sal_uInt32 nPos,
122 const RSCINST & rInitInst );
124 // Liefert Instanz aus einem Feld zurueck
125 // pGetInst im return kann NULL sein
126 virtual ERRTYPE GetElement( const RSCINST & rInst, const RscId & rEleName,
127 RscTop *pCreateClass, const RSCINST & rCreateInst,
128 RSCINST * pGetInst );
130 // Liefert Instanz aus einem Feld zurueck
131 // pGetInst im return kann NULL sein
132 virtual ERRTYPE GetValueEle( const RSCINST & rInst, sal_Int32 lValue,
133 RscTop * pCreateClass,
134 RSCINST * pGetInst );
136 // Liefert Instanz aus einem Feld zurueck
137 // pGetInst im return kann NULL sein
138 virtual ERRTYPE GetArrayEle( const RSCINST & rInst, Atom nId,
139 RscTop * pCreateClass,
140 RSCINST * pGetInst );
142 virtual RSCINST SearchEle( const RSCINST & rInst, const RscId & rEleName,
143 RscTop * pClass );
145 // Liefert Instanz an der Position zurueck
146 virtual RSCINST GetPosEle( const RSCINST & rInst, sal_uInt32 nPos );
148 // verschiebt eine Instanz
149 virtual ERRTYPE MovePosEle( const RSCINST & rInst, sal_uInt32 nDestPos,
150 sal_uInt32 nSourcePos );
152 // aendert RscId an Position
153 virtual ERRTYPE SetPosRscId( const RSCINST & rInst, sal_uInt32 nPos,
154 const RscId & rRscId);
156 // Liefert Information ueber Instanz
157 // an der Position zurueck
158 virtual SUBINFO_STRUCT GetInfoEle( const RSCINST & rInst, sal_uInt32 nPos );
160 // Anzahl der Eintraege
161 virtual sal_uInt32 GetCount( const RSCINST & rInst );
163 // Eine Zuweisung an eine Variable
164 virtual ERRTYPE SetNumber( const RSCINST & rInst, sal_Int32 lValue );
166 // Eine Zuweisung an eine Variable
167 virtual ERRTYPE SetBool( const RSCINST & rInst, sal_Bool bValue );
169 // Eine Zuweisung an eine Variable
170 virtual ERRTYPE SetConst( const RSCINST & rInst, Atom nValueId,
171 sal_Int32 nValue );
173 // Eine Zuweisung an eine Variable
174 virtual ERRTYPE SetNotConst( const RSCINST & rInst, Atom nId );
176 virtual ERRTYPE SetString( const RSCINST & rInst, const char * pStr );
178 virtual ERRTYPE GetNumber( const RSCINST & rInst, sal_Int32 * pN );
180 virtual ERRTYPE GetBool( const RSCINST & rInst, sal_Bool * pB );
182 virtual ERRTYPE GetConst( const RSCINST & rInst, Atom * pH );
184 virtual ERRTYPE GetString( const RSCINST & rInst, char ** ppStr );
186 virtual RSCINST Create( RSCINST * pInst,
187 const RSCINST & rDefInst, sal_Bool bOwnClass = sal_False );
189 // Instanz zerstoeren
190 virtual void Destroy( const RSCINST & rInst );
192 // prueft auf konsistenz
193 virtual sal_Bool IsConsistent( const RSCINST & rInst,
194 RscInconsList * pList = NULL );
196 // Alles auf Default setzen
197 virtual void SetToDefault( const RSCINST & rInst );
199 // Ist Eingabe = Default
200 virtual sal_Bool IsDefault( const RSCINST & rInst );
202 // Gleiche Werte auf Default setzen
203 virtual sal_Bool IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
205 // Instanz auf Default setzen
206 virtual void SetDefault( const RSCINST & rInst, Atom nVarId );
208 // Default zu einer Variablen holen
209 virtual RSCINST GetDefault( Atom nVarId );
211 virtual void Delete( const RSCINST & rInst, RscTop * pClass,
212 const RscId & rId );
214 virtual void DeletePos( const RSCINST & rInst, sal_uInt32 nPos );
216 // Schreibt den Kopf und das Ende einer Resource
217 // Script Datei
218 virtual void WriteSrcHeader( const RSCINST & rInst, FILE * fOutput,
219 RscTypCont * pTC, sal_uInt32 nTab,
220 const RscId & aId, const char * );
221 virtual void WriteSrc( const RSCINST & rInst, FILE * fOutput,
222 RscTypCont * pTC, sal_uInt32 nTab,const char * );
223 virtual ERRTYPE WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem,
224 RscTypCont * pTC, const RscId & aId,
225 sal_uInt32 nDeep, sal_Bool bExtra );
226 virtual ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem,
227 RscTypCont * pTC, sal_uInt32 nDeep, sal_Bool bExtra );
229 // Weiterleitung an Superklassen wird unterbunden
230 virtual ERRTYPE WriteHxxHeader( const RSCINST & rInst, FILE * fOutput,
231 RscTypCont * pTC, const RscId & rId );
232 virtual ERRTYPE WriteHxx( const RSCINST & rInst, FILE * fOutput,
233 RscTypCont * pTC, const RscId &rId );
234 virtual ERRTYPE WriteCxxHeader( const RSCINST & rInst, FILE * fOutput,
235 RscTypCont * pTC, const RscId &rId );
236 virtual ERRTYPE WriteCxx( const RSCINST & rInst, FILE * fOutput,
237 RscTypCont * pTC, const RscId &rId );
239 void WriteSyntaxHeader( FILE * fOutput, RscTypCont * pTC );
240 virtual void WriteSyntax( FILE * fOutput, RscTypCont * pTC );
242 virtual void WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
243 const char * );
244 virtual void WriteRcCtor( FILE * fOutput, RscTypCont * pTC );
247 #endif //_RSCTOP_HXX