xref: /aoo42x/main/rsc/inc/rscrange.hxx (revision f7c60c9c)
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
10*f7c60c9cSAndrew Rist  *
11*f7c60c9cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*f7c60c9cSAndrew Rist  *
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.
19*f7c60c9cSAndrew Rist  *
20*f7c60c9cSAndrew Rist  *************************************************************/
21*f7c60c9cSAndrew Rist 
22*f7c60c9cSAndrew Rist 
23cdf0e10cSrcweir #ifndef _RSCRANGE_HXX
24cdf0e10cSrcweir #define _RSCRANGE_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <rscall.h>
27cdf0e10cSrcweir #include <rscerror.h>
28cdf0e10cSrcweir #include <rschash.hxx>
29cdf0e10cSrcweir #include <rsctop.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /******************* R s c R a n g e *************************************/
32cdf0e10cSrcweir class RscRange : public RscTop
33cdf0e10cSrcweir {
34cdf0e10cSrcweir protected:
35cdf0e10cSrcweir     struct RscRangeInst {
36cdf0e10cSrcweir         sal_uInt16  nValue; // nValue = Ausgangswert - nMin
37cdf0e10cSrcweir         sal_Bool    bDflt;  // Ist Default
38cdf0e10cSrcweir     };
39cdf0e10cSrcweir     sal_Int32    nMin;   // Minimum des Bereiches
40cdf0e10cSrcweir     sal_Int32    nMax;   // Maximum des Bereiches
41cdf0e10cSrcweir     sal_uInt32  nSize;
42cdf0e10cSrcweir public:
43cdf0e10cSrcweir                     RscRange( Atom nId, sal_uInt32 nTypId );
44cdf0e10cSrcweir     virtual RSCCLASS_TYPE   GetClassType() const;
45cdf0e10cSrcweir     RSCINST         Create( RSCINST * pInst, const RSCINST & rDfltInst, sal_Bool );
46cdf0e10cSrcweir                     // Der zulaessige Bereich wird gesetzt
47cdf0e10cSrcweir     ERRTYPE         SetRange( sal_Int32 nMinimum, sal_Int32 nMaximum );
48cdf0e10cSrcweir                     // Gibt die Groesse der Klasse in Bytes
Size()49cdf0e10cSrcweir     sal_uInt32          Size(){ return nSize; }
50cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
SetToDefault(const RSCINST & rInst)51cdf0e10cSrcweir     virtual void    SetToDefault( const RSCINST & rInst )
52cdf0e10cSrcweir                     {
53cdf0e10cSrcweir                         ((RscRangeInst*)rInst.pData)->bDflt = sal_True;
54cdf0e10cSrcweir                     }
IsDefault(const RSCINST & rInst)55cdf0e10cSrcweir     sal_Bool            IsDefault( const RSCINST & rInst)
56cdf0e10cSrcweir                     {
57cdf0e10cSrcweir                         return( ((RscRangeInst*)rInst.pData)->bDflt );
58cdf0e10cSrcweir                     };
59cdf0e10cSrcweir                     // Als Default setzen
60cdf0e10cSrcweir     sal_Bool            IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
61cdf0e10cSrcweir     ERRTYPE         SetNumber( const RSCINST &, sal_Int32 );
62cdf0e10cSrcweir     ERRTYPE         GetNumber( const RSCINST &, sal_Int32 * );
63cdf0e10cSrcweir     void            WriteSrc( const RSCINST &, FILE * fOutput,
64cdf0e10cSrcweir                               RscTypCont * pTC, sal_uInt32 nTab, const char * );
65cdf0e10cSrcweir     ERRTYPE         WriteRc( const RSCINST &, RscWriteRc & aMem,
66cdf0e10cSrcweir                              RscTypCont * pTC, sal_uInt32, sal_Bool bExtra );
67cdf0e10cSrcweir 	void			WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
68cdf0e10cSrcweir 									const char * );
69cdf0e10cSrcweir };
70cdf0e10cSrcweir 
71cdf0e10cSrcweir /******************* R s c L o n g R a n g e ******************************/
72cdf0e10cSrcweir class RscLongRange : public RscTop
73cdf0e10cSrcweir {
74cdf0e10cSrcweir protected:
75cdf0e10cSrcweir     struct RscLongRangeInst
76cdf0e10cSrcweir     {
77cdf0e10cSrcweir         sal_Int32    nValue; // nValue = Ausgangswert - nMin
78cdf0e10cSrcweir         sal_Bool    bDflt;  // Ist Default
79cdf0e10cSrcweir     };
80cdf0e10cSrcweir     sal_Int32    nMin;   // Minimum des Bereiches
81cdf0e10cSrcweir     sal_Int32    nMax;   // Maximum des Bereiches
82cdf0e10cSrcweir     sal_uInt32  nSize;
83cdf0e10cSrcweir public:
84cdf0e10cSrcweir                     RscLongRange( Atom nId, sal_uInt32 nTypId );
85cdf0e10cSrcweir     virtual RSCCLASS_TYPE   GetClassType() const;
86cdf0e10cSrcweir     RSCINST         Create( RSCINST * pInst, const RSCINST & rDfltInst, sal_Bool );
87cdf0e10cSrcweir                     // Der zulaessige Bereich wird gesetzt
88cdf0e10cSrcweir     ERRTYPE         SetRange( sal_Int32 nMinimum, sal_Int32 nMaximum );
89cdf0e10cSrcweir                     // Gibt die Groesse der Klasse in Bytes
Size()90cdf0e10cSrcweir     sal_uInt32          Size(){ return nSize; }
91cdf0e10cSrcweir                     // Eine Zuweisung an eine Variable
SetToDefault(const RSCINST & rInst)92cdf0e10cSrcweir     virtual void    SetToDefault( const RSCINST & rInst )
93cdf0e10cSrcweir                     {
94cdf0e10cSrcweir                         ((RscLongRangeInst*)rInst.pData)->bDflt = sal_True;
95cdf0e10cSrcweir                     }
IsDefault(const RSCINST & rInst)96cdf0e10cSrcweir     sal_Bool            IsDefault( const RSCINST & rInst)
97cdf0e10cSrcweir                     {
98cdf0e10cSrcweir                         return( ((RscLongRangeInst*)rInst.pData)->bDflt );
99cdf0e10cSrcweir                     };
100cdf0e10cSrcweir                     // Als Default setzen
101cdf0e10cSrcweir     sal_Bool            IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
102cdf0e10cSrcweir     ERRTYPE         SetNumber( const RSCINST &, sal_Int32 );
103cdf0e10cSrcweir     ERRTYPE         GetNumber( const RSCINST &, sal_Int32 * );
104cdf0e10cSrcweir     void            WriteSrc( const RSCINST &, FILE * fOutput,
105cdf0e10cSrcweir                               RscTypCont * pTC, sal_uInt32 nTab, const char * );
106cdf0e10cSrcweir     ERRTYPE         WriteRc( const RSCINST &, RscWriteRc & aMem,
107cdf0e10cSrcweir                              RscTypCont * pTC, sal_uInt32, sal_Bool bExtra );
108cdf0e10cSrcweir 	void			WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
109cdf0e10cSrcweir 									const char * );
110cdf0e10cSrcweir 
111cdf0e10cSrcweir };
112cdf0e10cSrcweir 
113cdf0e10cSrcweir /******************* R s c L o n g E n u m R a n g e ******************/
114cdf0e10cSrcweir class RscLongEnumRange : public RscLongRange
115cdf0e10cSrcweir {
116cdf0e10cSrcweir public:
117cdf0e10cSrcweir                     RscLongEnumRange( Atom nId, sal_uInt32 nTypId );
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     ERRTYPE         SetConst( const RSCINST & rInst, Atom nValueId,
120cdf0e10cSrcweir 							  sal_Int32 nValue );
121cdf0e10cSrcweir };
122cdf0e10cSrcweir 
123cdf0e10cSrcweir /******************* R s c I d R a n g e ***********************************/
124cdf0e10cSrcweir class RscIdRange : public RscTop
125cdf0e10cSrcweir {
126cdf0e10cSrcweir     sal_uInt32  nSize;
127cdf0e10cSrcweir protected:
128cdf0e10cSrcweir     sal_Int32    nMin;   // Minimum des Bereiches
129cdf0e10cSrcweir     sal_Int32    nMax;   // Maximum des Bereiches
130cdf0e10cSrcweir public:
131cdf0e10cSrcweir                     RscIdRange( Atom nId, sal_uInt32 nTypId );
132cdf0e10cSrcweir     virtual RSCCLASS_TYPE   GetClassType() const;
133cdf0e10cSrcweir                     // Der zulaessige Bereich wird gesetzt
SetRange(sal_Int32 nMinimum,sal_Int32 nMaximum)134cdf0e10cSrcweir     ERRTYPE         SetRange( sal_Int32 nMinimum, sal_Int32 nMaximum ){
135cdf0e10cSrcweir                         nMin = nMinimum;
136cdf0e10cSrcweir                         nMax = nMaximum;
137cdf0e10cSrcweir                         return ERR_OK;
138cdf0e10cSrcweir                     }
139cdf0e10cSrcweir     RSCINST         Create( RSCINST * pInst, const RSCINST & rDfltInst, sal_Bool );
140cdf0e10cSrcweir     void            Destroy( const RSCINST & rInst );
Size()141cdf0e10cSrcweir     sal_uInt32          Size(){ return nSize; }
SetToDefault(const RSCINST & rInst)142cdf0e10cSrcweir     virtual void    SetToDefault( const RSCINST & rInst )
143cdf0e10cSrcweir                     {
144cdf0e10cSrcweir                         ((RscId*)rInst.pData)->aExp.cUnused = sal_True;
145cdf0e10cSrcweir                     }
IsDefault(const RSCINST & rInst)146cdf0e10cSrcweir     sal_Bool            IsDefault( const RSCINST & rInst)
147cdf0e10cSrcweir                     {
148cdf0e10cSrcweir                         //cUnused wird fuer Defaultkennung verwendet
149cdf0e10cSrcweir                         return ((RscId*)rInst.pData)->aExp.cUnused
150cdf0e10cSrcweir                                ? sal_True : sal_False;
151cdf0e10cSrcweir                     }
152cdf0e10cSrcweir                     // Als Default setzen
153cdf0e10cSrcweir     sal_Bool            IsValueDefault( const RSCINST & rInst, CLASS_DATA pDef );
154cdf0e10cSrcweir     ERRTYPE         SetNumber( const RSCINST &, sal_Int32 );
155cdf0e10cSrcweir     ERRTYPE         GetNumber( const RSCINST &, sal_Int32 * );
156cdf0e10cSrcweir     ERRTYPE         SetRef( const RSCINST &, const RscId & rRscId );
157cdf0e10cSrcweir     ERRTYPE         GetRef( const RSCINST & rInst, RscId * );
158cdf0e10cSrcweir     void            WriteSrc( const RSCINST &, FILE * fOutput,
159cdf0e10cSrcweir                               RscTypCont * pTC, sal_uInt32 nTab, const char * );
160cdf0e10cSrcweir     ERRTYPE         WriteRc( const RSCINST &, RscWriteRc & aMem,
161cdf0e10cSrcweir                              RscTypCont * pTC, sal_uInt32, sal_Bool bExtra );
162cdf0e10cSrcweir     sal_Bool            IsConsistent( const RSCINST & rInst, RscInconsList * pList );
163cdf0e10cSrcweir 	void			WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
164cdf0e10cSrcweir 									const char * );
165cdf0e10cSrcweir 
166cdf0e10cSrcweir };
167cdf0e10cSrcweir 
168cdf0e10cSrcweir /******************* R s c B o o l ***************************************/
169cdf0e10cSrcweir class RscBool : public RscRange
170cdf0e10cSrcweir {
171cdf0e10cSrcweir public:
172cdf0e10cSrcweir                     RscBool( Atom nId, sal_uInt32 nTypId );
173cdf0e10cSrcweir     virtual RSCCLASS_TYPE   GetClassType() const;
174cdf0e10cSrcweir                     // Der zulaessige Bereich wird gesetzt
SetRange(sal_Int32,sal_Int32)175cdf0e10cSrcweir     ERRTYPE         SetRange( sal_Int32, sal_Int32 ){
176cdf0e10cSrcweir                         return( ERR_UNKNOWN_METHOD );
177cdf0e10cSrcweir                     };
SetBool(const RSCINST & rInst,sal_Bool b)178cdf0e10cSrcweir     ERRTYPE         SetBool( const RSCINST & rInst, sal_Bool b ){
179cdf0e10cSrcweir                         return( SetNumber( rInst, (sal_Int32)b ) );
180cdf0e10cSrcweir                     };
GetBool(const RSCINST & rInst,sal_Bool * pB)181cdf0e10cSrcweir     ERRTYPE         GetBool( const RSCINST & rInst, sal_Bool * pB){
182cdf0e10cSrcweir                         sal_Int32 l;
183cdf0e10cSrcweir                         GetNumber( rInst, &l );
184cdf0e10cSrcweir                         *pB = (0 != l);
185cdf0e10cSrcweir                         return( ERR_OK );
186cdf0e10cSrcweir                     };
187cdf0e10cSrcweir     void            WriteSrc( const RSCINST &, FILE * fOutput,
188cdf0e10cSrcweir                               RscTypCont * pTC, sal_uInt32 nTab, const char * );
189cdf0e10cSrcweir 	void			WriteRcAccess( FILE * fOutput, RscTypCont * pTC,
190cdf0e10cSrcweir 									const char * );
191cdf0e10cSrcweir 
192cdf0e10cSrcweir };
193cdf0e10cSrcweir 
194cdf0e10cSrcweir class RscBreakRange : public RscRange {
195cdf0e10cSrcweir     sal_Int32    nOutRange;
196cdf0e10cSrcweir public:
197cdf0e10cSrcweir                     RscBreakRange( Atom nId, sal_uInt32 nTypId );
SetOutRange(sal_Int32 nNumber)198cdf0e10cSrcweir     void            SetOutRange( sal_Int32 nNumber ){
199cdf0e10cSrcweir                         nOutRange = nNumber;
200cdf0e10cSrcweir                     }
201cdf0e10cSrcweir     RSCINST         Create( RSCINST * pInst, const RSCINST & rDfltInst, sal_Bool );
202cdf0e10cSrcweir     ERRTYPE         SetNumber( const RSCINST &, sal_Int32 );
203cdf0e10cSrcweir };
204cdf0e10cSrcweir 
205cdf0e10cSrcweir #endif // _RSCRANGE_HXX
206