bump product version to 5.0.4.1
[LibreOffice.git] / rsc / inc / rsctop.hxx
blob4570dd0752a5f77330d1086d70fcd2f6885792f9
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_RSC_INC_RSCTOP_HXX
20 #define INCLUDED_RSC_INC_RSCTOP_HXX
22 #include <rscerror.h>
23 #include <rsctools.hxx>
24 #include <rschash.hxx>
25 #include <rscclobj.hxx>
27 typedef sal_uInt32 RSCVAR;
28 #define VAR_POINTER 0x0001
29 #define VAR_HIDDEN 0x0002
30 #define VAR_NODATAINST 0x0004
31 #define VAR_NORC 0x0008
32 #define VAR_SVDYNAMIC 0x0010
33 #define VAR_NOENUM 0x0020
34 #define VAR_EXTENDABLE 0x0040 /* Auch die Ableitung einer Klasse kann angegeben werden */
36 class RscTop : public RefNode
38 RscTop * pSuperClass;
39 RSCINST aDfltInst;
40 sal_uInt32 nTypId;
41 RscTop * pRefClass;
43 protected:
44 RscTop( Atom nId, sal_uInt32 nTypIdent,
45 RscTop * pSuperCl = NULL );
47 public:
48 OString aCallPar1; // Klassenaufruf ohne Typen bis ResId
49 OString aCallPar2; // Klassenaufruf ohne Typen ab ResId
50 OString aCallParType; // Klassenaufruf mit Typen
52 void SetSuperClass( RscTop * pClass )
54 pSuperClass = pClass;
56 RscTop* GetSuperClass() const
57 { return pSuperClass; }
58 // Gibt den Typidentifier zurueck
59 sal_uInt32 GetTypId() const
60 { return nTypId; };
61 // Gibt die Oberklasse zurueck
62 bool InHierarchy( RscTop * pClass );
63 bool IsCodeWriteable() const
65 return( 0 != aCallParType.getLength() );
67 void SetCallPar( const OString& rPar1, const OString& rPar2,
68 const OString& rParType );
69 void SetRefClass( RscTop * pRef ) { pRefClass = pRef; }
70 RscTop* GetRefClass() const { return pRefClass; }
71 virtual RSCCLASS_TYPE GetClassType() const = 0;
72 RSCINST GetDefault();
74 // Vorbereitung auf den dtor aufruf
75 // Da die Klassen gegenseitige Abhaengigkeiten
76 // aufweisen koennen, kann man im dtor nicht davon
77 // ausgehen, dass alle Klassenzeiger noch gueltig sind
78 virtual void Pre_dtor();
80 virtual Atom GetConstant( sal_uInt32 );
82 virtual RscTop* GetTypeClass() const;
84 // Gibt die Groesse der Klasse in Bytes
85 virtual sal_uInt32 Size();
87 // Gibt die Referenz zurueck
88 virtual ERRTYPE GetRef( const RSCINST & rInst, RscId * );
90 // Gibt die Referenz zurueck
91 virtual ERRTYPE SetRef( const RSCINST & rInst, const RscId & rRefId );
93 // Variable anlegen
94 virtual ERRTYPE SetVariable( Atom nVarName, RscTop * pClass,
95 RSCINST * pDflt = NULL,
96 RSCVAR nVarType = 0, sal_uInt32 nMask = 0,
97 Atom nDataBaseName = InvalidAtom );
99 // Zaehlt alle Variablen auf
100 virtual void EnumVariables( void * pData, VarEnumCallbackProc );
102 // Liefert Instanz der Variablen zurueck
103 // pData, pClass im return koennen NULL sein
104 virtual RSCINST GetVariable( const RSCINST & rInst, Atom nVarName,
105 const RSCINST & rInitInst,
106 bool nInitDflt = false,
107 RscTop * pCreateClass = NULL );
108 virtual RSCINST GetCopyVar( const RSCINST & rInst, Atom nVarName );
110 virtual RSCINST GetTupelVar( const RSCINST & rInst, sal_uInt32 nPos,
111 const RSCINST & rInitInst );
113 // Liefert Instanz aus einem Feld zurueck
114 // pGetInst im return kann NULL sein
115 virtual ERRTYPE GetElement( const RSCINST & rInst, const RscId & rEleName,
116 RscTop *pCreateClass, const RSCINST & rCreateInst,
117 RSCINST * pGetInst );
119 // Liefert Instanz aus einem Feld zurueck
120 // pGetInst im return kann NULL sein
121 virtual ERRTYPE GetValueEle( const RSCINST & rInst, sal_Int32 lValue,
122 RscTop * pCreateClass,
123 RSCINST * pGetInst );
125 // Liefert Instanz aus einem Feld zurueck
126 // pGetInst im return kann NULL sein
127 virtual ERRTYPE GetArrayEle( const RSCINST & rInst, Atom nId,
128 RscTop * pCreateClass,
129 RSCINST * pGetInst );
131 virtual RSCINST SearchEle( const RSCINST & rInst, const RscId & rEleName,
132 RscTop * pClass );
134 // Liefert Instanz an der Position zurueck
135 virtual RSCINST GetPosEle( const RSCINST & rInst, sal_uInt32 nPos );
137 // verschiebt eine Instanz
138 virtual ERRTYPE MovePosEle( const RSCINST & rInst, sal_uInt32 nDestPos,
139 sal_uInt32 nSourcePos );
141 // aendert RscId an Position
142 virtual ERRTYPE SetPosRscId( const RSCINST & rInst, sal_uInt32 nPos,
143 const RscId & rRscId);
145 // Liefert Information ueber Instanz
146 // an der Position zurueck
147 virtual SUBINFO_STRUCT GetInfoEle( const RSCINST & rInst, sal_uInt32 nPos );
149 // Anzahl der Eintraege
150 virtual sal_uInt32 GetCount( const RSCINST & rInst );
152 // Eine Zuweisung an eine Variable
153 virtual ERRTYPE SetNumber( const RSCINST & rInst, sal_Int32 lValue );
155 // Eine Zuweisung an eine Variable
156 virtual ERRTYPE SetBool( const RSCINST & rInst, bool bValue );
158 // Eine Zuweisung an eine Variable
159 virtual ERRTYPE SetConst( const RSCINST & rInst, Atom nValueId,
160 sal_Int32 nValue );
162 // Eine Zuweisung an eine Variable
163 virtual ERRTYPE SetNotConst( const RSCINST & rInst, Atom nId );
165 virtual ERRTYPE SetString( const RSCINST & rInst, const char * pStr );
167 virtual ERRTYPE GetNumber( const RSCINST & rInst, sal_Int32 * pN );
169 virtual ERRTYPE GetBool( const RSCINST & rInst, bool * pB );
171 virtual ERRTYPE GetConst( const RSCINST & rInst, Atom * pH );
173 virtual ERRTYPE GetString( const RSCINST & rInst, char ** ppStr );
175 virtual RSCINST Create( RSCINST * pInst,
176 const RSCINST & rDefInst, bool bOwnClass = false );
178 // Instanz zerstoeren
179 virtual void Destroy( const RSCINST & rInst );
181 // prueft auf konsistenz
182 virtual bool IsConsistent( const RSCINST & rInst );
184 // Alles auf Default setzen
185 virtual void SetToDefault( const RSCINST & rInst );
187 // Ist Eingabe = Default
188 virtual bool IsDefault( const RSCINST & rInst );
190 // Gleiche Werte auf Default setzen
191 virtual bool IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
193 // Instanz auf Default setzen
194 virtual void SetDefault( const RSCINST & rInst, Atom nVarId );
196 // Default zu einer Variablen holen
197 virtual RSCINST GetDefault( Atom nVarId );
199 virtual void Delete( const RSCINST & rInst, RscTop * pClass,
200 const RscId & rId );
202 virtual void DeletePos( const RSCINST & rInst, sal_uInt32 nPos );
204 // Schreibt den Kopf und das Ende einer Resource
205 // Script Datei
206 virtual void WriteSrcHeader( const RSCINST & rInst, FILE * fOutput,
207 RscTypCont * pTC, sal_uInt32 nTab,
208 const RscId & aId, const char * );
209 virtual void WriteSrc( const RSCINST & rInst, FILE * fOutput,
210 RscTypCont * pTC, sal_uInt32 nTab,const char * );
211 virtual ERRTYPE WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem,
212 RscTypCont * pTC, const RscId & aId,
213 sal_uInt32 nDeep, bool bExtra );
214 virtual ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem,
215 RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra );
218 #endif // INCLUDED_RSC_INC_RSCTOP_HXX
220 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */