xref: /aoo4110/main/basic/inc/basic/sbxdef.hxx (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 
25*b1cdbd2cSJim Jagielski #ifndef _SBXDEF_HXX
26*b1cdbd2cSJim Jagielski #define _SBXDEF_HXX
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #ifndef __RSC
30*b1cdbd2cSJim Jagielski #ifndef _SOLAR_H
31*b1cdbd2cSJim Jagielski #include <tools/solar.h>
32*b1cdbd2cSJim Jagielski #endif
33*b1cdbd2cSJim Jagielski #include "tools/errcode.hxx"
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #ifndef _SBX_CLASS_TYPE
36*b1cdbd2cSJim Jagielski #define _SBX_CLASS_TYPE
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski enum SbxClassType {			// SBX-class-IDs (order is important!)
39*b1cdbd2cSJim Jagielski 	SbxCLASS_DONTCARE = 1,	// don't care (search, not 0 due to StarBASIC)
40*b1cdbd2cSJim Jagielski 	SbxCLASS_ARRAY,			// Array of SbxVariables
41*b1cdbd2cSJim Jagielski 	SbxCLASS_VALUE,			// simple value
42*b1cdbd2cSJim Jagielski 	SbxCLASS_VARIABLE,		// Variable (from here there is Broadcaster)
43*b1cdbd2cSJim Jagielski 	SbxCLASS_METHOD, 		// Method (Function or Sub)
44*b1cdbd2cSJim Jagielski 	SbxCLASS_PROPERTY,		// Property
45*b1cdbd2cSJim Jagielski 	SbxCLASS_OBJECT			// Object
46*b1cdbd2cSJim Jagielski };
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski #endif
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski #ifndef _SBX_DATA_TYPE
51*b1cdbd2cSJim Jagielski #define _SBX_DATA_TYPE
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski enum SbxDataType {
54*b1cdbd2cSJim Jagielski 	SbxEMPTY 	  =  0,	// * Uninitialized
55*b1cdbd2cSJim Jagielski 	SbxNULL 	  =  1,	// * Contains no valid data
56*b1cdbd2cSJim Jagielski 	SbxINTEGER	  =  2,	// * Integer (sal_Int16)
57*b1cdbd2cSJim Jagielski 	SbxLONG		  =  3,	// * Long integer (sal_Int32)
58*b1cdbd2cSJim Jagielski 	SbxSINGLE	  =  4,	// * Single-precision floating point number (float)
59*b1cdbd2cSJim Jagielski 	SbxDOUBLE	  =  5,	// * Double-precision floating point number (double)
60*b1cdbd2cSJim Jagielski 	SbxCURRENCY   =  6,	//   Currency (sal_Int64)
61*b1cdbd2cSJim Jagielski 	SbxDATE		  =  7,	// * Date (double)
62*b1cdbd2cSJim Jagielski 	SbxSTRING	  =  8,	// * String (StarView)
63*b1cdbd2cSJim Jagielski 	SbxOBJECT     =  9,	// * SbxBase object pointer
64*b1cdbd2cSJim Jagielski 	SbxERROR      = 10,	// * Error (sal_uInt16)
65*b1cdbd2cSJim Jagielski 	SbxBOOL		  = 11,	// * Boolean (0 or -1)
66*b1cdbd2cSJim Jagielski 	SbxVARIANT    = 12,	// * Anzeige fuer varianten Datentyp
67*b1cdbd2cSJim Jagielski 	SbxDATAOBJECT = 13,	// * Common data object w/o ref count
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 	SbxCHAR		  = 16,	// * signed char
70*b1cdbd2cSJim Jagielski 	SbxBYTE 	  = 17,	// * unsigned char
71*b1cdbd2cSJim Jagielski 	SbxUSHORT	  = 18,	// * unsigned short (sal_uInt16)
72*b1cdbd2cSJim Jagielski 	SbxULONG 	  = 19,	// * unsigned long (sal_uInt32)
73*b1cdbd2cSJim Jagielski 	SbxLONG64	  = 20,	//   signed 64-bit int
74*b1cdbd2cSJim Jagielski 	SbxULONG64	  = 21,	//   unsigned 64-bit int
75*b1cdbd2cSJim Jagielski 	SbxINT		  = 22,	// * signed machine-dependent int
76*b1cdbd2cSJim Jagielski 	SbxUINT		  = 23,	// * unsigned machine-dependent int
77*b1cdbd2cSJim Jagielski 	SbxVOID		  = 24,	// * no value (= SbxEMPTY)
78*b1cdbd2cSJim Jagielski 	SbxHRESULT	  = 25,	//   HRESULT
79*b1cdbd2cSJim Jagielski 	SbxPOINTER	  = 26,	//   generic pointer
80*b1cdbd2cSJim Jagielski 	SbxDIMARRAY	  = 27,	//   dimensioned array
81*b1cdbd2cSJim Jagielski 	SbxCARRAY	  = 28,	//   C style array
82*b1cdbd2cSJim Jagielski 	SbxUSERDEF	  = 29, //   user defined
83*b1cdbd2cSJim Jagielski 	SbxLPSTR	  = 30,	// * null terminated string
84*b1cdbd2cSJim Jagielski 	SbxLPWSTR	  = 31,	//   wide null terminated string
85*b1cdbd2cSJim Jagielski 	SbxCoreSTRING = 32,	//   AB 10.4.97, fuer GetCoreString(), nur zum Konvertieren
86*b1cdbd2cSJim Jagielski 	SbxWSTRING	  = 33,	//   AB 4.10.2000 Reimplemented for backwards compatibility (#78919)
87*b1cdbd2cSJim Jagielski 	SbxWCHAR	  = 34,	//   AB 4.10.2000 Reimplemented for backwards compatibility (#78919)
88*b1cdbd2cSJim Jagielski 	SbxSALINT64	  = 35,	//   for UNO hyper
89*b1cdbd2cSJim Jagielski 	SbxSALUINT64  = 36,	//   for UNO unsigned hyper
90*b1cdbd2cSJim Jagielski 	SbxDECIMAL    = 37,	//   for UNO/automation Decimal
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	SbxVECTOR = 0x1000,	// simple counted array
93*b1cdbd2cSJim Jagielski 	SbxARRAY  = 0x2000,	// array
94*b1cdbd2cSJim Jagielski 	SbxBYREF  = 0x4000,	// access by reference
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 	SbxSV1 	  = 128,  	// first defined data type for StarView
97*b1cdbd2cSJim Jagielski 	SbxMEMORYSTREAM,	// SvMemoryStream
98*b1cdbd2cSJim Jagielski 	SbxSTORAGE,			// SvStorage
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 	SbxUSER1  = 256,  	// first user defined data type
101*b1cdbd2cSJim Jagielski 	SbxUSERn  = 2047  	// last user defined data type
102*b1cdbd2cSJim Jagielski };
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski const sal_uInt32 SBX_TYPE_WITH_EVENTS_FLAG = 0x10000;
105*b1cdbd2cSJim Jagielski const sal_uInt32 SBX_TYPE_DIM_AS_NEW_FLAG  = 0x20000;
106*b1cdbd2cSJim Jagielski const sal_uInt32 SBX_FIXED_LEN_STRING_FLAG = 0x10000;	// same value as above as no conflict possible
107*b1cdbd2cSJim Jagielski const sal_uInt32 SBX_TYPE_VAR_TO_DIM_FLAG  = 0x40000;
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski #endif
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski #ifndef _SBX_OPERATOR
112*b1cdbd2cSJim Jagielski #define _SBX_OPERATOR
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski enum SbxOperator {
115*b1cdbd2cSJim Jagielski 						// Arithmetical:
116*b1cdbd2cSJim Jagielski 	SbxEXP, 			// this ^ var
117*b1cdbd2cSJim Jagielski 	SbxMUL, 			// this * var
118*b1cdbd2cSJim Jagielski 	SbxDIV, 			// this / var
119*b1cdbd2cSJim Jagielski 	SbxMOD, 			// this MOD var
120*b1cdbd2cSJim Jagielski 	SbxPLUS, 			// this + var
121*b1cdbd2cSJim Jagielski 	SbxMINUS, 			// this - var
122*b1cdbd2cSJim Jagielski 	SbxNEG,				// -this (var is ignored)
123*b1cdbd2cSJim Jagielski 	SbxIDIV,			// this / var (both operands max. sal_Int32!)
124*b1cdbd2cSJim Jagielski 						// Boolean operators (max sal_Int32!):
125*b1cdbd2cSJim Jagielski 	SbxAND,				// this & var
126*b1cdbd2cSJim Jagielski 	SbxOR,				// this | var
127*b1cdbd2cSJim Jagielski 	SbxXOR,				// this ^ var
128*b1cdbd2cSJim Jagielski 	SbxEQV,				// ~this ^ var
129*b1cdbd2cSJim Jagielski 	SbxIMP,				// ~this | var
130*b1cdbd2cSJim Jagielski 	SbxNOT,				// ~this (var is ignored)
131*b1cdbd2cSJim Jagielski 						// String-concat:
132*b1cdbd2cSJim Jagielski 	SbxCAT,				// this & var
133*b1cdbd2cSJim Jagielski 						// Comparisons:
134*b1cdbd2cSJim Jagielski 	SbxEQ, 				// this = var
135*b1cdbd2cSJim Jagielski 	SbxNE, 				// this <> var
136*b1cdbd2cSJim Jagielski 	SbxLT, 				// this < var
137*b1cdbd2cSJim Jagielski 	SbxGT, 				// this > var
138*b1cdbd2cSJim Jagielski 	SbxLE, 				// this <= var
139*b1cdbd2cSJim Jagielski 	SbxGE				// this >= var
140*b1cdbd2cSJim Jagielski };
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski #endif
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski #ifndef _SBX_NAME_TYPE
145*b1cdbd2cSJim Jagielski #define _SBX_NAME_TYPE
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski enum SbxNameType {				// Type of the questioned name of a variable
148*b1cdbd2cSJim Jagielski 	SbxNAME_NONE,				// plain name
149*b1cdbd2cSJim Jagielski 	SbxNAME_SHORT,				// Name(A,B)
150*b1cdbd2cSJim Jagielski 	SbxNAME_SHORT_TYPES,		// Name%(A%,B$)
151*b1cdbd2cSJim Jagielski 	SbxNAME_LONG_TYPES			// Name(A As Integer, B As String) As Integer
152*b1cdbd2cSJim Jagielski };
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski #endif
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski // AB: 20.3.96: New error messages
157*b1cdbd2cSJim Jagielski typedef sal_uIntPtr SbxError;			// Preserve old type
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski #endif
160*b1cdbd2cSJim Jagielski // von #ifndef __RSC
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski // New error codes per define
164*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_OK							ERRCODE_NONE					// processed
165*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_SYNTAX					    (1UL | ERRCODE_AREA_SBX | \
166*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_COMPILER)			// Syntaxerror in parser (where else could syntax errors happen? ;-)
167*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NOTIMP					    (2UL | ERRCODE_AREA_SBX | \
168*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_NOTSUPPORTED)		// not possible
169*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_OVERFLOW					(3UL | ERRCODE_AREA_SBX | \
170*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// overflow
171*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BOUNDS					    (4UL | ERRCODE_AREA_SBX | \
172*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// Invalid array index
173*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_ZERODIV					    (5UL | ERRCODE_AREA_SBX | \
174*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// Division by zero
175*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_CONVERSION					(6UL | ERRCODE_AREA_SBX | \
176*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// wrong data type
177*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_PARAMETER				(7UL | ERRCODE_AREA_SBX | \
178*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// invalid Parameter
179*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_PROC_UNDEFINED			    (8UL | ERRCODE_AREA_SBX | \
180*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// BASIC-Sub or Function undefined
181*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_ERROR					    (9UL | ERRCODE_AREA_SBX | \
182*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_UNKNOWN)			// other object-related error
183*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NO_OBJECT				    (10UL | ERRCODE_AREA_SBX | \
184*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Object variable unassigned
185*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_CANNOT_LOAD				    (11UL | ERRCODE_AREA_SBX | \
186*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_CREATE)			// Object cannot be loaded or initialized
187*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_INDEX				    (12UL | ERRCODE_AREA_SBX | \
188*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// Invalid object index
189*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NO_ACTIVE_OBJECT		    (13UL | ERRCODE_AREA_SBX | \
190*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_ACCESS)			// Object ist not activated
191*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_PROP_VALUE			    (14UL | ERRCODE_AREA_SBX | \
192*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Bad property value
193*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_PROP_READONLY			    (15UL | ERRCODE_AREA_SBX | \
194*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_READ)				// Property is read only
195*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_PROP_WRITEONLY			    (16UL | ERRCODE_AREA_SBX | \
196*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_WRITE)			// Property is write only
197*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_INVALID_OBJECT			    (17UL | ERRCODE_AREA_SBX | \
198*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_ACCESS)			// Invalid object reference
199*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NO_METHOD				    (18UL | ERRCODE_AREA_SBX | \
200*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Property oder Methode unbekannt
201*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_INVALID_USAGE_OBJECT	    (19UL | ERRCODE_AREA_SBX | \
202*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_ACCESS)			// Invalid object usage
203*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NO_OLE					    (20UL | ERRCODE_AREA_SBX | \
204*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_ACCESS)			// No OLE-Object
205*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_METHOD				    (21UL | ERRCODE_AREA_SBX | \
206*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Method not supported
207*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_OLE_ERROR				    (22UL | ERRCODE_AREA_SBX | \
208*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// OLE Automation Error
209*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_ACTION				    (23UL | ERRCODE_AREA_SBX | \
210*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_NOTSUPPORTED)		// Action not supported
211*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NO_NAMED_ARGS			    (24UL | ERRCODE_AREA_SBX | \
212*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// No named arguments
213*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_BAD_LOCALE				    (25UL | ERRCODE_AREA_SBX | \
214*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_NOTSUPPORTED)		// Locale settings not supported
215*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NAMED_NOT_FOUND			    (26UL | ERRCODE_AREA_SBX | \
216*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Unknown named argument
217*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NOT_OPTIONAL			    (27UL | ERRCODE_AREA_SBX | \
218*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Argument not optional
219*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_WRONG_ARGS				    (28UL | ERRCODE_AREA_SBX | \
220*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_SBX)				// Invalid number of arguments
221*b1cdbd2cSJim Jagielski #define ERRCODE_SBX_NOT_A_COLL				    (29UL | ERRCODE_AREA_SBX | \
222*b1cdbd2cSJim Jagielski 												ERRCODE_CLASS_RUNTIME)			// Object contains no elements
223*b1cdbd2cSJim Jagielski #define LAST_SBX_ERROR_ID						29UL
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski // Less important for resources
227*b1cdbd2cSJim Jagielski #ifndef __RSC
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski // Map old codes to new ones
230*b1cdbd2cSJim Jagielski #define SbxERR_OK								ERRCODE_SBX_OK
231*b1cdbd2cSJim Jagielski #define SbxERR_SYNTAX							ERRCODE_SBX_SYNTAX
232*b1cdbd2cSJim Jagielski #define SbxERR_NOTIMP							ERRCODE_SBX_NOTIMP
233*b1cdbd2cSJim Jagielski #define SbxERR_OVERFLOW							ERRCODE_SBX_OVERFLOW
234*b1cdbd2cSJim Jagielski #define SbxERR_BOUNDS							ERRCODE_SBX_BOUNDS
235*b1cdbd2cSJim Jagielski #define SbxERR_ZERODIV							ERRCODE_SBX_ZERODIV
236*b1cdbd2cSJim Jagielski #define SbxERR_CONVERSION						ERRCODE_SBX_CONVERSION
237*b1cdbd2cSJim Jagielski #define SbxERR_BAD_PARAMETER					ERRCODE_SBX_BAD_PARAMETER
238*b1cdbd2cSJim Jagielski #define SbxERR_PROC_UNDEFINED					ERRCODE_SBX_PROC_UNDEFINED
239*b1cdbd2cSJim Jagielski #define SbxERR_ERROR							ERRCODE_SBX_ERROR
240*b1cdbd2cSJim Jagielski #define SbxERR_NO_OBJECT						ERRCODE_SBX_NO_OBJECT
241*b1cdbd2cSJim Jagielski #define SbxERR_CANNOT_LOAD						ERRCODE_SBX_CANNOT_LOAD
242*b1cdbd2cSJim Jagielski #define SbxERR_BAD_INDEX						ERRCODE_SBX_BAD_INDEX
243*b1cdbd2cSJim Jagielski #define SbxERR_NO_ACTIVE_OBJECT					ERRCODE_SBX_NO_ACTIVE_OBJECT
244*b1cdbd2cSJim Jagielski #define SbxERR_BAD_PROP_VALUE					ERRCODE_SBX_BAD_PROP_VALUE
245*b1cdbd2cSJim Jagielski #define SbxERR_PROP_READONLY					ERRCODE_SBX_PROP_READONLY
246*b1cdbd2cSJim Jagielski #define SbxERR_PROP_WRITEONLY					ERRCODE_SBX_PROP_WRITEONLY
247*b1cdbd2cSJim Jagielski #define SbxERR_INVALID_OBJECT					ERRCODE_SBX_INVALID_OBJECT
248*b1cdbd2cSJim Jagielski #define SbxERR_NO_METHOD						ERRCODE_SBX_NO_METHOD
249*b1cdbd2cSJim Jagielski #define SbxERR_INVALID_USAGE_OBJECT				ERRCODE_SBX_INVALID_USAGE_OBJECT
250*b1cdbd2cSJim Jagielski #define SbxERR_NO_OLE							ERRCODE_SBX_NO_OLE
251*b1cdbd2cSJim Jagielski #define SbxERR_BAD_METHOD						ERRCODE_SBX_BAD_METHOD
252*b1cdbd2cSJim Jagielski #define SbxERR_OLE_ERROR						ERRCODE_SBX_OLE_ERROR
253*b1cdbd2cSJim Jagielski #define SbxERR_BAD_ACTION						ERRCODE_SBX_BAD_ACTION
254*b1cdbd2cSJim Jagielski #define SbxERR_NO_NAMED_ARGS					ERRCODE_SBX_NO_NAMED_ARGS
255*b1cdbd2cSJim Jagielski #define SbxERR_BAD_LOCALE						ERRCODE_SBX_BAD_LOCALE
256*b1cdbd2cSJim Jagielski #define SbxERR_NAMED_NOT_FOUND					ERRCODE_SBX_NAMED_NOT_FOUND
257*b1cdbd2cSJim Jagielski #define SbxERR_NOT_OPTIONAL						ERRCODE_SBX_NOT_OPTIONAL
258*b1cdbd2cSJim Jagielski #define SbxERR_WRONG_ARGS						ERRCODE_SBX_WRONG_ARGS
259*b1cdbd2cSJim Jagielski #define SbxERR_NOT_A_COLL						ERRCODE_SBX_NOT_A_COLL
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski /* Old codes with VB error codes
263*b1cdbd2cSJim Jagielski enum SbxError {					// Ergebnis einer Rechenoperation/Konversion
264*b1cdbd2cSJim Jagielski 	SbxERR_OK = 0, 		   		// durchgefuehrt
265*b1cdbd2cSJim Jagielski 	SbxERR_SYNTAX = 2,			// Syntaxfehler im Parser
266*b1cdbd2cSJim Jagielski 	SbxERR_NOTIMP = 5,	   		// nicht moeglich
267*b1cdbd2cSJim Jagielski 	SbxERR_OVERFLOW = 6,   		// Ueberlauf
268*b1cdbd2cSJim Jagielski 	SbxERR_BOUNDS = 9,	   		// Array-Index ungueltig
269*b1cdbd2cSJim Jagielski 	SbxERR_ZERODIV = 11,   		// Division durch Null
270*b1cdbd2cSJim Jagielski 	SbxERR_CONVERSION = 13,		// falscher Datentyp
271*b1cdbd2cSJim Jagielski 	SbxERR_BAD_PARAMETER = 14,	// ung�ltiger Parameter
272*b1cdbd2cSJim Jagielski 	SbxERR_PROC_UNDEFINED = 35,	// BASIC-Sub oder Function undefiniert
273*b1cdbd2cSJim Jagielski 	SbxERR_ERROR = 51,			// andere Fehler
274*b1cdbd2cSJim Jagielski 								// Objektbezogene Fehler
275*b1cdbd2cSJim Jagielski 	SbxERR_NO_OBJECT = 91,		// Objektvariable nicht belegt
276*b1cdbd2cSJim Jagielski 	SbxERR_CANNOT_LOAD = 323,	// Objekt kann nicht geladen/eingerichtet werden
277*b1cdbd2cSJim Jagielski 	SbxERR_BAD_INDEX = 341,		// Invalid object index
278*b1cdbd2cSJim Jagielski 	SbxERR_NO_ACTIVE_OBJECT=366,// Objekt ist nicht aktiviert
279*b1cdbd2cSJim Jagielski 	SbxERR_BAD_PROP_VALUE = 380,// Bad property value
280*b1cdbd2cSJim Jagielski 	SbxERR_PROP_READONLY = 382,	// Property is read only
281*b1cdbd2cSJim Jagielski 	SbxERR_PROP_WRITEONLY = 394,// Property is write only
282*b1cdbd2cSJim Jagielski 	SbxERR_INVALID_OBJECT = 420,// Invalid object reference
283*b1cdbd2cSJim Jagielski 	SbxERR_NO_METHOD = 423,		// Property oder Methode unbekannt
284*b1cdbd2cSJim Jagielski 	SbxERR_INVALID_USAGE_OBJECT=425,// Falsche Verwendung eines Objekts
285*b1cdbd2cSJim Jagielski 	SbxERR_NO_OLE = 430,		// Kein OLE-Objekt
286*b1cdbd2cSJim Jagielski 	SbxERR_BAD_METHOD = 438,	// Methode nicht unterst�tzt
287*b1cdbd2cSJim Jagielski 	SbxERR_OLE_ERROR = 440,		// OLE Automation-Fehler
288*b1cdbd2cSJim Jagielski 	SbxERR_BAD_ACTION = 445,   	// Aktion nicht unterst�tzt
289*b1cdbd2cSJim Jagielski 	SbxERR_NO_NAMED_ARGS = 446,	// Keine benannten Argumente
290*b1cdbd2cSJim Jagielski 	SbxERR_BAD_LOCALE = 447,	// Laenderspezifische Einstellungen nicht unterst�tzt
291*b1cdbd2cSJim Jagielski 	SbxERR_NAMED_NOT_FOUND = 448,// Unbekanntes benanntes Argument
292*b1cdbd2cSJim Jagielski 	SbxERR_NOT_OPTIONAL	= 449,	// Argument nicht optional
293*b1cdbd2cSJim Jagielski 	SbxERR_WRONG_ARGS = 450,	// Falsche Zahl von Argumenten
294*b1cdbd2cSJim Jagielski 	SbxERR_NOT_A_COLL = 451		// Objekt enth�lt keine Elemente
295*b1cdbd2cSJim Jagielski };
296*b1cdbd2cSJim Jagielski */
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski // Flag-Bits:
299*b1cdbd2cSJim Jagielski #define SBX_READ      0x0001    // Read permission
300*b1cdbd2cSJim Jagielski #define SBX_WRITE     0x0002    // Write permission
301*b1cdbd2cSJim Jagielski #define SBX_READWRITE 0x0003    // Read/Write permission
302*b1cdbd2cSJim Jagielski #define	SBX_DONTSTORE 0x0004	// Don't store object
303*b1cdbd2cSJim Jagielski #define	SBX_MODIFIED  0x0008	// Object was changed
304*b1cdbd2cSJim Jagielski #define SBX_FIXED     0x0010    // Fixed data type (SbxVariable)
305*b1cdbd2cSJim Jagielski #define SBX_CONST	  0x0020	// Definition of const value
306*b1cdbd2cSJim Jagielski #define	SBX_OPTIONAL  0x0040	// Parameter is optional
307*b1cdbd2cSJim Jagielski #define SBX_HIDDEN	  0x0080	// Element is invisible
308*b1cdbd2cSJim Jagielski #define	SBX_INVISIBLE 0x0100	// Element is not found by Find()
309*b1cdbd2cSJim Jagielski #define	SBX_EXTSEARCH 0x0200	// Object is searched completely
310*b1cdbd2cSJim Jagielski #define	SBX_EXTFOUND  0x0400	// Variable was found through extended search
311*b1cdbd2cSJim Jagielski #define	SBX_GBLSEARCH 0x0800	// Global search via Parents
312*b1cdbd2cSJim Jagielski #define	SBX_RESERVED  0x1000	// reserved
313*b1cdbd2cSJim Jagielski #define	SBX_PRIVATE   0x1000	// #110004, #112015, cannot conflict with SBX_RESERVED
314*b1cdbd2cSJim Jagielski #define	SBX_NO_BROADCAST 0x2000	// No broadcast on Get/Put
315*b1cdbd2cSJim Jagielski #define	SBX_REFERENCE 0x4000	// Parameter is Reference (DLL-call)
316*b1cdbd2cSJim Jagielski #define	SBX_NO_MODIFY 0x8000	// SetModified is suppressed
317*b1cdbd2cSJim Jagielski #define SBX_WITH_EVENTS 0x0080	// Same value as unused SBX_HIDDEN
318*b1cdbd2cSJim Jagielski #define SBX_DIM_AS_NEW  0x0800	// Same value as SBX_GBLSEARCH, cannot conflict as one
319*b1cdbd2cSJim Jagielski 								// is used for objects, the other for variables only
320*b1cdbd2cSJim Jagielski #define SBX_VAR_TO_DIM  0x2000	// Same value as SBX_NO_BROADCAST, cannot conflict as
321*b1cdbd2cSJim Jagielski 								// used for variables without broadcaster only
322*b1cdbd2cSJim Jagielski 
323*b1cdbd2cSJim Jagielski // Broadcaster-IDs:
324*b1cdbd2cSJim Jagielski #define SBX_HINT_DYING			SFX_HINT_DYING
325*b1cdbd2cSJim Jagielski #define	SBX_HINT_DATAWANTED		SFX_HINT_USER00
326*b1cdbd2cSJim Jagielski #define SBX_HINT_DATACHANGED	SFX_HINT_DATACHANGED
327*b1cdbd2cSJim Jagielski #define	SBX_HINT_CONVERTED		SFX_HINT_USER01
328*b1cdbd2cSJim Jagielski #define SBX_HINT_INFOWANTED		SFX_HINT_USER02
329*b1cdbd2cSJim Jagielski #define SBX_HINT_OBJECTCHANGED	SFX_HINT_USER03
330*b1cdbd2cSJim Jagielski 
331*b1cdbd2cSJim Jagielski // List of all creators for Load/Store
332*b1cdbd2cSJim Jagielski 
333*b1cdbd2cSJim Jagielski #define SBXCR_SBX			0x20584253		// SBX(blank)
334*b1cdbd2cSJim Jagielski 
335*b1cdbd2cSJim Jagielski // List of predefined SBX-IDs. New SBX-IDs must be precisly defined so that
336*b1cdbd2cSJim Jagielski // they are unique within the Stream and appropriate Factory.
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski #define	SBXID_VALUE 		0x4E4E	// NN: SbxValue
339*b1cdbd2cSJim Jagielski #define	SBXID_VARIABLE 		0x4156	// VA: SbxVariable
340*b1cdbd2cSJim Jagielski #define	SBXID_ARRAY			0x5241	// AR: SbxArray
341*b1cdbd2cSJim Jagielski #define	SBXID_DIMARRAY		0x4944	// DI: SbxDimArray
342*b1cdbd2cSJim Jagielski #define	SBXID_OBJECT		0x424F	// OB: SbxObject
343*b1cdbd2cSJim Jagielski #define	SBXID_COLLECTION	0x4F43	// CO: SbxCollection
344*b1cdbd2cSJim Jagielski #define	SBXID_FIXCOLLECTION	0x4346	// FC: SbxStdCollection
345*b1cdbd2cSJim Jagielski #define	SBXID_METHOD		0x454D	// ME: SbxMethod
346*b1cdbd2cSJim Jagielski #define	SBXID_PROPERTY		0x5250	// PR: SbxProperty
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski // StarBASIC restricts the base data type to different intervals.
349*b1cdbd2cSJim Jagielski // These intervals are fixed due to portability and independent
350*b1cdbd2cSJim Jagielski // of the implementation. Only type double is greedy and takes
351*b1cdbd2cSJim Jagielski // what it gets.
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski #define	SbxMAXCHAR			((sal_Unicode)65535)
354*b1cdbd2cSJim Jagielski #define	SbxMINCHAR			(0)
355*b1cdbd2cSJim Jagielski #define	SbxMAXBYTE			( 255)
356*b1cdbd2cSJim Jagielski #define SbxMAXINT			( 32767)
357*b1cdbd2cSJim Jagielski #define SbxMININT			(-32768)
358*b1cdbd2cSJim Jagielski #define	SbxMAXUINT			((sal_uInt16) 65535)
359*b1cdbd2cSJim Jagielski #define SbxMAXLNG			( 2147483647)
360*b1cdbd2cSJim Jagielski #define SbxMINLNG			((sal_Int32)(-2147483647-1))
361*b1cdbd2cSJim Jagielski #define SbxMAXULNG			((sal_uInt32) 0xffffffff)
362*b1cdbd2cSJim Jagielski 
363*b1cdbd2cSJim Jagielski #define SbxMAXSALINT64   	SAL_MAX_INT64
364*b1cdbd2cSJim Jagielski #define SbxMINSALINT64		SAL_MIN_INT64
365*b1cdbd2cSJim Jagielski #define SbxMAXSALUINT64   	SAL_MAX_UINT64
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski #define SbxMAXSNG			( 3.402823e+38)
368*b1cdbd2cSJim Jagielski #define SbxMINSNG			(-3.402823e+38)
369*b1cdbd2cSJim Jagielski #define SbxMAXSNG2			( 1.175494351e-38)
370*b1cdbd2cSJim Jagielski #define SbxMINSNG2			(-1.175494351e-38)
371*b1cdbd2cSJim Jagielski #define SbxMAXCURR			( 922337203685477.5807)
372*b1cdbd2cSJim Jagielski #define SbxMINCURR			(-922337203685477.5808)
373*b1cdbd2cSJim Jagielski #define CURRENCY_FACTOR		10000
374*b1cdbd2cSJim Jagielski #define SbxMAXCURRLNG		(SbxMAXLNG/CURRENCY_FACTOR)
375*b1cdbd2cSJim Jagielski #define SbxMINCURRLNG		(SbxMINLNG/CURRENCY_FACTOR)
376*b1cdbd2cSJim Jagielski 
377*b1cdbd2cSJim Jagielski // Max valid offset index of a Sbx-Array (due to 64K limit)
378*b1cdbd2cSJim Jagielski #define	SBX_MAXINDEX		0x3FF0
379*b1cdbd2cSJim Jagielski #define	SBX_MAXINDEX32		SbxMAXLNG
380*b1cdbd2cSJim Jagielski 
381*b1cdbd2cSJim Jagielski // The numeric values of sal_True and FALSE
382*b1cdbd2cSJim Jagielski enum SbxBOOL { SbxFALSE = 0, SbxTRUE = -1 };
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski #endif // __RSC
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski #endif
387