Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
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/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
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 .
18 : : */
19 : :
20 : :
21 : : #include "runtime.hxx"
22 : : #include "stdobj.hxx"
23 : : #include <basic/sbstdobj.hxx>
24 : : #include <sal/macros.h>
25 : : #include "rtlproto.hxx"
26 : : #include "sbintern.hxx"
27 : : #include <boost/unordered_map.hpp>
28 : : // The nArgs-field of a table entry is encrypted as follows:
29 : : // At the moment it is assumed that properties don't need any
30 : : // parameters!
31 : :
32 : : // previously _ARGSMASK was 0x007F ( e.g. up to 127 args ) however 63 should be
33 : : // enough, if not we need to increase the size of nArgs member in the Methods
34 : : // struct below.
35 : : // note: the limitation of 63 args is only for RTL functions defined here and
36 : : // does NOT impose a limit on User defined procedures ). This changes is to
37 : : // allow us space for a flag to blacklist some functions in vba mode
38 : :
39 : : #define _ARGSMASK 0x003F // 63 Arguments
40 : : #define _COMPTMASK 0x00C0 // COMPATABILITY mask
41 : : #define _COMPATONLY 0x0080 // procedure is visible in vba mode only
42 : : #define _NORMONLY 0x0040 // procedure is visible in normal mode only
43 : :
44 : : #define _RWMASK 0x0F00 // mask for R/W-bits
45 : : #define _TYPEMASK 0xF000 // mask for the entry's type
46 : :
47 : : #define _READ 0x0100 // can be read
48 : : #define _BWRITE 0x0200 // can be used as Lvalue
49 : : #define _LVALUE _BWRITE // can be used as Lvalue
50 : : #define _READWRITE 0x0300 // both
51 : : #define _OPT 0x0400 // parameter is optional
52 : : #define _CONST 0x0800 // property is const
53 : : #define _METHOD 0x3000
54 : : #define _PROPERTY 0x4000
55 : : #define _OBJECT 0x8000
56 : : // combination of bits above:
57 : : #define _FUNCTION 0x1100
58 : : #define _LFUNCTION 0x1300 // mask for function which also works as Lvalue
59 : : #define _SUB 0x2100
60 : : #define _ROPROP 0x4100 // mask Read Only-Property
61 : : #define _WOPROP 0x4200 // mask Write Only-Property
62 : : #define _RWPROP 0x4300 // mask Read/Write-Property
63 : : #define _CPROP 0x4900 // mask for constant
64 : :
65 : : struct Methods {
66 : : const char* pName;
67 : : SbxDataType eType;
68 : : short nArgs;
69 : : RtlCall pFunc;
70 : : sal_uInt16 nHash;
71 : : };
72 : :
73 : : struct StringHashCode
74 : : {
75 : : size_t operator()( const String& rStr ) const
76 : : {
77 : : return rtl_ustr_hashCode_WithLength( rStr.GetBuffer(), rStr.Len() );
78 : : }
79 : : };
80 : :
81 : : static Methods aMethods[] = {
82 : :
83 : : { "AboutStarBasic", SbxNULL, 1 | _FUNCTION, RTLNAME(AboutStarBasic),0 },
84 : : { "Name", SbxSTRING, 0,NULL,0 },
85 : : { "Abs", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Abs),0 },
86 : : { "number", SbxDOUBLE, 0,NULL,0 },
87 : : { "Array", SbxOBJECT, _FUNCTION, RTLNAME(Array),0 },
88 : : { "Asc", SbxLONG, 1 | _FUNCTION, RTLNAME(Asc),0 },
89 : : { "string", SbxSTRING, 0,NULL,0 },
90 : : { "AscW", SbxLONG, 1 | _FUNCTION | _COMPATONLY, RTLNAME(Asc),0},
91 : : { "string", SbxSTRING, 0,NULL,0 },
92 : : { "Atn", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Atn),0 },
93 : : { "number", SbxDOUBLE, 0,NULL,0 },
94 : : { "ATTR_ARCHIVE", SbxINTEGER, _CPROP, RTLNAME(ATTR_ARCHIVE),0 },
95 : : { "ATTR_DIRECTORY", SbxINTEGER, _CPROP, RTLNAME(ATTR_DIRECTORY),0 },
96 : : { "ATTR_HIDDEN", SbxINTEGER, _CPROP, RTLNAME(ATTR_HIDDEN),0 },
97 : : { "ATTR_NORMAL", SbxINTEGER, _CPROP, RTLNAME(ATTR_NORMAL),0 },
98 : : { "ATTR_READONLY", SbxINTEGER, _CPROP, RTLNAME(ATTR_READONLY),0 },
99 : : { "ATTR_SYSTEM", SbxINTEGER, _CPROP, RTLNAME(ATTR_SYSTEM),0 },
100 : : { "ATTR_VOLUME", SbxINTEGER, _CPROP, RTLNAME(ATTR_VOLUME),0 },
101 : :
102 : : { "Beep", SbxNULL, _FUNCTION, RTLNAME(Beep),0 },
103 : : { "Blue", SbxINTEGER, 1 | _FUNCTION | _NORMONLY, RTLNAME(Blue),0 },
104 : : { "RGB-Value", SbxLONG, 0,NULL,0 },
105 : :
106 : : { "CallByName", SbxVARIANT, 3 | _FUNCTION, RTLNAME(CallByName),0 },
107 : : { "Object", SbxOBJECT, 0,NULL,0 },
108 : : { "ProcedureName",SbxSTRING, 0,NULL,0 },
109 : : { "CallType", SbxINTEGER, 0,NULL,0 },
110 : : { "CBool", SbxBOOL, 1 | _FUNCTION, RTLNAME(CBool),0 },
111 : : { "expression", SbxVARIANT, 0,NULL,0 },
112 : : { "CByte", SbxBYTE, 1 | _FUNCTION, RTLNAME(CByte),0 },
113 : : { "expression", SbxVARIANT, 0,NULL,0 },
114 : : { "CCur", SbxCURRENCY, 1 | _FUNCTION, RTLNAME(CCur),0 },
115 : : { "expression", SbxVARIANT, 0,NULL,0 },
116 : : { "CDate", SbxDATE, 1 | _FUNCTION, RTLNAME(CDate),0 },
117 : : { "expression", SbxVARIANT, 0,NULL,0 },
118 : : { "CDateFromIso", SbxDATE, 1 | _FUNCTION, RTLNAME(CDateFromIso),0 },
119 : : { "IsoDate", SbxSTRING, 0,NULL,0 },
120 : : { "CDateToIso", SbxSTRING, 1 | _FUNCTION, RTLNAME(CDateToIso),0 },
121 : : { "Date", SbxDATE, 0,NULL,0 },
122 : : { "CDec", SbxDECIMAL, 1 | _FUNCTION, RTLNAME(CDec),0 },
123 : : { "expression", SbxVARIANT, 0,NULL,0 },
124 : : { "CDbl", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(CDbl),0 },
125 : : { "expression", SbxVARIANT, 0,NULL,0 },
126 : : { "CF_BITMAP", SbxINTEGER, _CPROP, RTLNAME(CF_BITMAP),0 },
127 : : { "CF_METAFILEPICT",SbxINTEGER, _CPROP, RTLNAME(CF_METAFILEPICT),0 },
128 : : { "CF_TEXT", SbxINTEGER, _CPROP, RTLNAME(CF_TEXT),0 },
129 : : { "ChDir", SbxNULL, 1 | _FUNCTION, RTLNAME(ChDir),0 },
130 : : { "string", SbxSTRING, 0,NULL,0 },
131 : : { "ChDrive", SbxNULL, 1 | _FUNCTION, RTLNAME(ChDrive),0 },
132 : : { "string", SbxSTRING, 0,NULL,0 },
133 : :
134 : : { "Choose", SbxVARIANT, 2 | _FUNCTION, RTLNAME(Choose),0 },
135 : : { "Index", SbxINTEGER, 0,NULL,0 },
136 : : { "Expression", SbxVARIANT, 0,NULL,0 },
137 : :
138 : : { "Chr", SbxSTRING, 1 | _FUNCTION, RTLNAME(Chr),0 },
139 : : { "string", SbxINTEGER, 0,NULL,0 },
140 : : { "ChrW", SbxSTRING, 1 | _FUNCTION | _COMPATONLY, RTLNAME(ChrW),0},
141 : : { "string", SbxINTEGER, 0,NULL,0 },
142 : :
143 : : { "CInt", SbxINTEGER, 1 | _FUNCTION, RTLNAME(CInt),0 },
144 : : { "expression", SbxVARIANT, 0,NULL,0 },
145 : : { "CLEAR_ALLTABS", SbxINTEGER, _CPROP, RTLNAME(CLEAR_ALLTABS),0 },
146 : : { "CLEAR_TAB", SbxINTEGER, _CPROP, RTLNAME(CLEAR_TAB),0 },
147 : : { "CLng", SbxLONG, 1 | _FUNCTION, RTLNAME(CLng),0 },
148 : : { "expression", SbxVARIANT, 0,NULL,0 },
149 : : { "CompatibilityMode", SbxBOOL, 1 | _FUNCTION, RTLNAME(CompatibilityMode),0},
150 : : { "bEnable", SbxBOOL, 0,NULL,0 },
151 : : { "ConvertFromUrl", SbxSTRING, 1 | _FUNCTION, RTLNAME(ConvertFromUrl),0 },
152 : : { "Url", SbxSTRING, 0,NULL,0 },
153 : : { "ConvertToUrl", SbxSTRING, 1 | _FUNCTION, RTLNAME(ConvertToUrl),0 },
154 : : { "SystemPath", SbxSTRING, 0,NULL,0 },
155 : : { "Cos", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Cos),0 },
156 : : { "number", SbxDOUBLE, 0,NULL,0 },
157 : : { "CreateObject", SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateObject ),0 },
158 : : { "class", SbxSTRING, 0,NULL,0 },
159 : : { "CaptureAssertions", SbxNULL, 1 | _FUNCTION, RTLNAME(CaptureAssertions), 0 },
160 : : { "methodName", SbxSTRING, 0, NULL, 0 },
161 : : { "CreateUnoListener",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoListener ),0 },
162 : : { "prefix", SbxSTRING, 0,NULL,0 },
163 : : { "typename", SbxSTRING, 0,NULL,0 },
164 : : { "CreateUnoDialog",SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoDialog ),0 },
165 : : { "dialoglibrary",SbxOBJECT, 0,NULL,0 },
166 : : { "dialogname", SbxSTRING, 0,NULL,0 },
167 : : { "CreateUnoService",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoService ),0 },
168 : : { "servicename", SbxSTRING, 0,NULL,0 },
169 : : { "CreateUnoServiceWithArguments",SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoServiceWithArguments ),0 },
170 : : { "servicename", SbxSTRING, 0,NULL,0 },
171 : : { "arguments", SbxARRAY, 0,NULL,0 },
172 : : { "CreateUnoStruct",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoStruct ),0 },
173 : : { "classname", SbxSTRING, 0,NULL,0 },
174 : : { "CreateUnoValue", SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoValue ),0 },
175 : : { "type", SbxSTRING, 0,NULL,0 },
176 : : { "value", SbxVARIANT, 0,NULL,0 },
177 : : { "CreatePropertySet",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreatePropertySet ),0 },
178 : : { "values", SbxARRAY, 0,NULL,0 },
179 : : { "CSng", SbxSINGLE, 1 | _FUNCTION, RTLNAME(CSng),0 },
180 : : { "expression", SbxVARIANT, 0,NULL,0 },
181 : : { "CStr", SbxSTRING, 1 | _FUNCTION, RTLNAME(CStr),0 },
182 : : { "expression", SbxVARIANT, 0,NULL,0 },
183 : : { "CurDir", SbxSTRING, 1 | _FUNCTION, RTLNAME(CurDir),0 },
184 : : { "string", SbxSTRING, 0,NULL,0 },
185 : : { "CVar", SbxVARIANT, 1 | _FUNCTION, RTLNAME(CVar),0 },
186 : : { "expression", SbxVARIANT, 0,NULL,0 },
187 : : { "CVErr", SbxVARIANT, 1 | _FUNCTION, RTLNAME(CVErr),0 },
188 : : { "expression", SbxVARIANT, 0,NULL,0 },
189 : : { "DDB", SbxDOUBLE, 5 | _FUNCTION | _COMPATONLY, RTLNAME(DDB),0 },
190 : : { "Cost", SbxDOUBLE, 0, NULL,0 },
191 : : { "Salvage", SbxDOUBLE, 0, NULL,0 },
192 : : { "Life", SbxDOUBLE, 0, NULL,0 },
193 : : { "Period", SbxDOUBLE, 0, NULL,0 },
194 : : { "Factor", SbxVARIANT, _OPT, NULL,0 },
195 : : { "Date", SbxDATE, _LFUNCTION,RTLNAME(Date),0 },
196 : : { "DateAdd", SbxDATE, 3 | _FUNCTION, RTLNAME(DateAdd),0 },
197 : : { "Interval", SbxSTRING, 0,NULL,0 },
198 : : { "Number", SbxLONG, 0,NULL,0 },
199 : : { "Date", SbxDATE, 0,NULL,0 },
200 : : { "DateDiff", SbxDOUBLE, 5 | _FUNCTION, RTLNAME(DateDiff),0 },
201 : : { "Interval", SbxSTRING, 0,NULL,0 },
202 : : { "Date1", SbxDATE, 0,NULL,0 },
203 : : { "Date2", SbxDATE, 0,NULL,0 },
204 : : { "Firstdayofweek" , SbxINTEGER, _OPT,NULL,0 },
205 : : { "Firstweekofyear", SbxINTEGER, _OPT,NULL,0 },
206 : : { "DatePart", SbxLONG, 4 | _FUNCTION, RTLNAME(DatePart),0 },
207 : : { "Interval", SbxSTRING, 0,NULL,0 },
208 : : { "Date", SbxDATE, 0,NULL,0 },
209 : : { "Firstdayofweek" , SbxINTEGER, _OPT, NULL,0 },
210 : : { "Firstweekofyear", SbxINTEGER, _OPT, NULL,0 },
211 : : { "DateSerial", SbxDATE, 3 | _FUNCTION, RTLNAME(DateSerial),0 },
212 : : { "Year", SbxINTEGER, 0,NULL,0 },
213 : : { "Month", SbxINTEGER, 0,NULL,0 },
214 : : { "Day", SbxINTEGER, 0,NULL,0 },
215 : : { "DateValue", SbxDATE, 1 | _FUNCTION, RTLNAME(DateValue),0 },
216 : : { "String", SbxSTRING, 0,NULL,0 },
217 : : { "Day", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Day),0 },
218 : : { "Date", SbxDATE, 0,NULL,0 },
219 : : { "Ddeexecute", SbxNULL, 2 | _FUNCTION, RTLNAME(DDEExecute),0 },
220 : : { "Channel", SbxLONG, 0,NULL,0 },
221 : : { "Command", SbxSTRING, 0,NULL,0 },
222 : : { "Ddeinitiate", SbxINTEGER, 2 | _FUNCTION, RTLNAME(DDEInitiate),0 },
223 : : { "Application", SbxSTRING, 0,NULL,0 },
224 : : { "Topic", SbxSTRING, 0,NULL,0 },
225 : : { "Ddepoke", SbxNULL, 3 | _FUNCTION, RTLNAME(DDEPoke),0 },
226 : : { "Channel", SbxLONG, 0,NULL,0 },
227 : : { "Item", SbxSTRING, 0,NULL,0 },
228 : : { "Data", SbxSTRING, 0,NULL,0 },
229 : : { "Dderequest", SbxSTRING, 2 | _FUNCTION, RTLNAME(DDERequest),0 },
230 : : { "Channel", SbxLONG, 0,NULL,0 },
231 : : { "Item", SbxSTRING, 0,NULL,0 },
232 : : { "Ddeterminate", SbxNULL, 1 | _FUNCTION, RTLNAME(DDETerminate),0 },
233 : : { "Channel", SbxLONG, 0,NULL,0 },
234 : : { "Ddeterminateall", SbxNULL, _FUNCTION, RTLNAME(DDETerminateAll),0 },
235 : : { "DimArray", SbxOBJECT, _FUNCTION, RTLNAME(DimArray),0 },
236 : : { "Dir", SbxSTRING, 2 | _FUNCTION, RTLNAME(Dir),0 },
237 : : { "FileSpec", SbxSTRING, _OPT, NULL,0 },
238 : : { "attrmask", SbxINTEGER, _OPT, NULL,0 },
239 : : { "DoEvents", SbxINTEGER, _FUNCTION, RTLNAME(DoEvents),0 },
240 : : { "DumpAllObjects", SbxEMPTY, 2 | _SUB, RTLNAME(DumpAllObjects),0 },
241 : : { "FileSpec", SbxSTRING, 0,NULL,0 },
242 : : { "DumpAll", SbxINTEGER, _OPT, NULL,0 },
243 : :
244 : : { "Empty", SbxVARIANT, _CPROP, RTLNAME(Empty),0 },
245 : : { "EqualUnoObjects",SbxBOOL, 2 | _FUNCTION, RTLNAME(EqualUnoObjects),0 },
246 : : { "Variant", SbxVARIANT, 0,NULL,0 },
247 : : { "Variant", SbxVARIANT, 0,NULL,0 },
248 : : { "EnableReschedule", SbxNULL, 1 | _FUNCTION, RTLNAME(EnableReschedule),0},
249 : : { "bEnable", SbxBOOL, 0,NULL,0 },
250 : : { "Environ", SbxSTRING, 1 | _FUNCTION, RTLNAME(Environ),0 },
251 : : { "Environmentstring",SbxSTRING, 0,NULL,0 },
252 : : { "EOF", SbxBOOL, 1 | _FUNCTION, RTLNAME(EOF),0 },
253 : : { "Channel", SbxINTEGER, 0,NULL,0 },
254 : : { "Erl", SbxLONG, _ROPROP, RTLNAME( Erl ),0 },
255 : : { "Err", SbxVARIANT, _RWPROP, RTLNAME( Err ),0 },
256 : : { "Error", SbxSTRING, 1 | _FUNCTION, RTLNAME( Error ),0 },
257 : : { "code", SbxLONG, 0,NULL,0 },
258 : : { "Exp", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Exp),0 },
259 : : { "number", SbxDOUBLE, 0,NULL,0 },
260 : :
261 : : { "False", SbxBOOL, _CPROP, RTLNAME(False),0 },
262 : : { "FileAttr", SbxINTEGER, 2 | _FUNCTION, RTLNAME(FileAttr),0 },
263 : : { "Channel", SbxINTEGER, 0,NULL,0 },
264 : : { "Attributes", SbxINTEGER, 0,NULL,0 },
265 : : { "FileCopy", SbxNULL, 2 | _FUNCTION, RTLNAME(FileCopy),0 },
266 : : { "Source", SbxSTRING, 0,NULL,0 },
267 : : { "Destination", SbxSTRING, 0,NULL,0 },
268 : : { "FileDateTime", SbxSTRING, 1 | _FUNCTION, RTLNAME(FileDateTime),0 },
269 : : { "filename", SbxSTRING, 0,NULL,0 },
270 : : { "FileExists", SbxBOOL, 1 | _FUNCTION, RTLNAME(FileExists),0 },
271 : : { "filename", SbxSTRING, 0,NULL,0 },
272 : : { "FileLen", SbxLONG, 1 | _FUNCTION, RTLNAME(FileLen),0 },
273 : : { "filename", SbxSTRING, 0,NULL,0 },
274 : : { "FindObject", SbxOBJECT, 1 | _FUNCTION, RTLNAME(FindObject),0 },
275 : : { "Name", SbxSTRING, 0,NULL,0 },
276 : : { "FindPropertyObject", SbxOBJECT, 2 | _FUNCTION, RTLNAME(FindPropertyObject),0 },
277 : : { "Object", SbxOBJECT, 0,NULL,0 },
278 : : { "Name", SbxSTRING, 0,NULL,0 },
279 : : { "Fix", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Fix),0 },
280 : : { "number", SbxDOUBLE, 0,NULL,0 },
281 : : { "Format", SbxSTRING, 2 | _FUNCTION, RTLNAME(Format),0 },
282 : : { "expression", SbxVARIANT, 0,NULL,0 },
283 : : { "format", SbxSTRING, _OPT, NULL,0 },
284 : : { "FormatDateTime", SbxSTRING, 2 | _FUNCTION | _COMPATONLY, RTLNAME(FormatDateTime),0 },
285 : : { "Date", SbxDATE, 0,NULL,0 },
286 : : { "NamedFormat", SbxINTEGER, _OPT, NULL,0 },
287 : : { "Frac", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Frac),0 },
288 : : { "number", SbxDOUBLE, 0,NULL,0 },
289 : : { "FRAMEANCHORCHAR", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORCHAR),0 },
290 : : { "FRAMEANCHORPAGE", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORPAGE),0 },
291 : : { "FRAMEANCHORPARA", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORPARA),0 },
292 : : { "FreeFile", SbxINTEGER, _FUNCTION, RTLNAME(FreeFile),0 },
293 : : { "FreeLibrary", SbxNULL, 1 | _FUNCTION, RTLNAME(FreeLibrary),0 },
294 : : { "Modulename", SbxSTRING, 0,NULL,0 },
295 : :
296 : : { "FV", SbxDOUBLE, 5 | _FUNCTION | _COMPATONLY, RTLNAME(FV),0 },
297 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
298 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
299 : : { "Pmt", SbxDOUBLE, 0, NULL,0 },
300 : : { "PV", SbxVARIANT, _OPT, NULL,0 },
301 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
302 : : { "Get", SbxNULL, 3 | _FUNCTION, RTLNAME(Get),0 },
303 : : { "filenumber", SbxINTEGER, 0,NULL,0 },
304 : : { "recordnumber", SbxLONG, 0,NULL,0 },
305 : : { "variablename", SbxVARIANT, 0,NULL,0 },
306 : : { "GetAttr", SbxINTEGER, 1 | _FUNCTION, RTLNAME(GetAttr),0 },
307 : : { "filename", SbxSTRING, 0,NULL,0 },
308 : : { "GetDefaultContext", SbxOBJECT, 0 | _FUNCTION, RTLNAME(GetDefaultContext),0 },
309 : : { "GetDialogZoomFactorX", SbxDOUBLE, _FUNCTION,RTLNAME(GetDialogZoomFactorX),0 },
310 : : { "GetDialogZoomFactorY", SbxDOUBLE, _FUNCTION,RTLNAME(GetDialogZoomFactorY),0 },
311 : : { "GetGUIType", SbxINTEGER, _FUNCTION,RTLNAME(GetGUIType),0 },
312 : : { "GetGUIVersion", SbxLONG, _FUNCTION,RTLNAME(GetGUIVersion),0 },
313 : : { "GetPathSeparator", SbxSTRING, _FUNCTION,RTLNAME(GetPathSeparator),0 },
314 : : { "GetProcessServiceManager", SbxOBJECT, 0 | _FUNCTION, RTLNAME(GetProcessServiceManager),0 },
315 : : { "GetSolarVersion", SbxLONG, _FUNCTION,RTLNAME(GetSolarVersion),0 },
316 : : { "GetSystemTicks", SbxLONG, _FUNCTION,RTLNAME(GetSystemTicks),0 },
317 : : { "GetSystemType", SbxINTEGER, _FUNCTION,RTLNAME(GetSystemType),0 },
318 : : { "GlobalScope", SbxOBJECT, _FUNCTION,RTLNAME(GlobalScope),0 },
319 : : { "Green", SbxINTEGER, 1 | _FUNCTION | _NORMONLY, RTLNAME(Green),0 },
320 : : { "RGB-Value", SbxLONG, 0,NULL,0 },
321 : :
322 : : { "HasUnoInterfaces", SbxBOOL, 1 | _FUNCTION, RTLNAME(HasUnoInterfaces),0},
323 : : { "InterfaceName",SbxSTRING, 0,NULL,0 },
324 : : { "Hex", SbxSTRING, 1 | _FUNCTION, RTLNAME(Hex),0 },
325 : : { "number", SbxLONG, 0,NULL,0 },
326 : : { "Hour", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Hour),0 },
327 : : { "Date", SbxDATE, 0,NULL,0 },
328 : :
329 : : { "IDABORT", SbxINTEGER, _CPROP, RTLNAME(IDABORT),0 },
330 : : { "IDCANCEL", SbxINTEGER, _CPROP, RTLNAME(IDCANCEL),0 },
331 : : { "IDNO", SbxINTEGER, _CPROP, RTLNAME(IDNO),0 },
332 : : { "IDOK", SbxINTEGER, _CPROP, RTLNAME(IDOK),0 },
333 : : { "IDRETRY", SbxINTEGER, _CPROP, RTLNAME(IDRETRY),0 },
334 : : { "IDYES", SbxINTEGER, _CPROP, RTLNAME(IDYES),0 },
335 : :
336 : : { "Iif", SbxVARIANT, 3 | _FUNCTION, RTLNAME(Iif),0 },
337 : : { "Bool", SbxBOOL, 0,NULL,0 },
338 : : { "Variant1", SbxVARIANT, 0,NULL,0 },
339 : : { "Variant2", SbxVARIANT, 0,NULL,0 },
340 : :
341 : : { "Input", SbxSTRING, 2 | _FUNCTION | _COMPATONLY, RTLNAME(Input),0},
342 : : { "Number", SbxLONG, 0,NULL,0 },
343 : : { "FileNumber", SbxLONG, 0,NULL,0 },
344 : : { "InputBox", SbxSTRING, 5 | _FUNCTION, RTLNAME(InputBox),0 },
345 : : { "Prompt", SbxSTRING, 0,NULL,0 },
346 : : { "Title", SbxSTRING, _OPT, NULL,0 },
347 : : { "Default", SbxSTRING, _OPT, NULL,0 },
348 : : { "XPosTwips", SbxLONG, _OPT, NULL,0 },
349 : : { "YPosTwips", SbxLONG, _OPT, NULL,0 },
350 : : { "InStr", SbxLONG, 4 | _FUNCTION, RTLNAME(InStr),0 },
351 : : { "Start", SbxSTRING, _OPT, NULL,0 },
352 : : { "String1", SbxSTRING, 0,NULL,0 },
353 : : { "String2", SbxSTRING, 0,NULL,0 },
354 : : { "Compare", SbxINTEGER, _OPT, NULL,0 },
355 : : { "InStrRev", SbxLONG, 4 | _FUNCTION | _COMPATONLY, RTLNAME(InStrRev),0},
356 : : { "String1", SbxSTRING, 0,NULL,0 },
357 : : { "String2", SbxSTRING, 0,NULL,0 },
358 : : { "Start", SbxSTRING, _OPT, NULL,0 },
359 : : { "Compare", SbxINTEGER, _OPT, NULL,0 },
360 : : { "Int", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Int),0 },
361 : : { "number", SbxDOUBLE, 0,NULL,0 },
362 : : { "IPmt", SbxDOUBLE, 6 | _FUNCTION | _COMPATONLY, RTLNAME(IPmt),0 },
363 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
364 : : { "Per", SbxDOUBLE, 0, NULL,0 },
365 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
366 : : { "PV", SbxDOUBLE, 0, NULL,0 },
367 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
368 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
369 : : { "IRR", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(IRR),0 },
370 : : { "ValueArray", SbxARRAY, 0, NULL,0 },
371 : : { "Guess", SbxVARIANT, _OPT, NULL,0 },
372 : : { "IsArray", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsArray),0 },
373 : : { "Variant", SbxVARIANT, 0,NULL,0 },
374 : : { "IsDate", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsDate),0 },
375 : : { "Variant", SbxVARIANT, 0,NULL,0 },
376 : : { "IsEmpty", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsEmpty),0 },
377 : : { "Variant", SbxVARIANT, 0,NULL,0 },
378 : : { "IsError", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsError),0 },
379 : : { "Variant", SbxVARIANT, 0,NULL,0 },
380 : : { "IsMissing", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsMissing),0 },
381 : : { "Variant", SbxVARIANT, 0,NULL,0 },
382 : : { "IsNull", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsNull),0 },
383 : : { "Variant", SbxVARIANT, 0,NULL,0 },
384 : : { "IsNumeric", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsNumeric),0 },
385 : : { "Variant", SbxVARIANT, 0,NULL,0 },
386 : : { "IsObject", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsObject),0 },
387 : : { "Variant", SbxVARIANT, 0,NULL,0 },
388 : : { "IsUnoStruct", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsUnoStruct),0 },
389 : : { "Variant", SbxVARIANT, 0,NULL,0 },
390 : : { "Join", SbxSTRING, 2 | _FUNCTION, RTLNAME(Join),0 },
391 : : { "list", SbxOBJECT, 0,NULL,0 },
392 : : { "delimiter", SbxSTRING, 0,NULL,0 },
393 : : { "Kill", SbxNULL, 1 | _FUNCTION, RTLNAME(Kill),0 },
394 : : { "filespec", SbxSTRING, 0,NULL,0 },
395 : : { "LBound", SbxLONG, 1 | _FUNCTION, RTLNAME(LBound),0 },
396 : : { "Variant", SbxVARIANT, 0,NULL,0 },
397 : : { "LCase", SbxSTRING, 1 | _FUNCTION, RTLNAME(LCase),0 },
398 : : { "string", SbxSTRING, 0,NULL,0 },
399 : : { "Left", SbxSTRING, 2 | _FUNCTION, RTLNAME(Left),0 },
400 : : { "String", SbxSTRING, 0,NULL,0 },
401 : : { "Count", SbxLONG, 0,NULL,0 },
402 : : { "Len", SbxLONG, 1 | _FUNCTION, RTLNAME(Len),0 },
403 : : { "StringOrVariant", SbxVARIANT, 0,NULL,0 },
404 : : { "LenB", SbxLONG, 1 | _FUNCTION, RTLNAME(Len),0 },
405 : : { "StringOrVariant", SbxVARIANT, 0,NULL,0 },
406 : : { "Load", SbxNULL, 1 | _FUNCTION, RTLNAME(Load),0 },
407 : : { "object", SbxOBJECT, 0,NULL,0 },
408 : : { "LoadPicture", SbxOBJECT, 1 | _FUNCTION, RTLNAME(LoadPicture),0 },
409 : : { "string", SbxSTRING, 0,NULL,0 },
410 : : { "Loc", SbxLONG, 1 | _FUNCTION, RTLNAME(Loc),0 },
411 : : { "Channel", SbxINTEGER, 0,NULL,0 },
412 : : { "Lof", SbxLONG, 1 | _FUNCTION, RTLNAME(Lof),0 },
413 : : { "Channel", SbxINTEGER, 0,NULL,0 },
414 : : { "Log", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Log),0 },
415 : : { "number", SbxDOUBLE, 0,NULL,0 },
416 : : { "LTrim", SbxSTRING, 1 | _FUNCTION, RTLNAME(LTrim),0 },
417 : : { "string", SbxSTRING, 0,NULL,0 },
418 : :
419 : : { "MB_ABORTRETRYIGNORE", SbxINTEGER, _CPROP, RTLNAME(MB_ABORTRETRYIGNORE),0},
420 : : { "MB_APPLMODAL", SbxINTEGER, _CPROP, RTLNAME(MB_APPLMODAL),0 },
421 : : { "MB_DEFBUTTON1", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON1),0 },
422 : : { "MB_DEFBUTTON2", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON2),0 },
423 : : { "MB_DEFBUTTON3", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON3),0 },
424 : : { "MB_ICONEXCLAMATION", SbxINTEGER, _CPROP, RTLNAME(MB_ICONEXCLAMATION),0},
425 : : { "MB_ICONINFORMATION", SbxINTEGER, _CPROP, RTLNAME(MB_ICONINFORMATION),0},
426 : : { "MB_ICONQUESTION",SbxINTEGER, _CPROP, RTLNAME(MB_ICONQUESTION),0 },
427 : : { "MB_ICONSTOP", SbxINTEGER, _CPROP, RTLNAME(MB_ICONSTOP),0 },
428 : : { "MB_OK", SbxINTEGER, _CPROP, RTLNAME(MB_OK),0 },
429 : : { "MB_OKCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_OKCANCEL),0 },
430 : : { "MB_RETRYCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_RETRYCANCEL),0 },
431 : : { "MB_SYSTEMMODAL", SbxINTEGER, _CPROP, RTLNAME(MB_SYSTEMMODAL),0 },
432 : : { "MB_YESNO", SbxINTEGER, _CPROP, RTLNAME(MB_YESNO),0 },
433 : : { "MB_YESNOCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_YESNOCANCEL),0 },
434 : :
435 : : { "Me", SbxOBJECT, 0 | _FUNCTION | _COMPATONLY, RTLNAME(Me),0 },
436 : : { "Mid", SbxSTRING, 3 | _LFUNCTION,RTLNAME(Mid),0 },
437 : : { "String", SbxSTRING, 0,NULL,0 },
438 : : { "StartPos", SbxLONG, 0,NULL,0 },
439 : : { "Length", SbxLONG, _OPT, NULL,0 },
440 : : { "Minute", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Minute),0 },
441 : : { "Date", SbxDATE, 0,NULL,0 },
442 : : { "MIRR", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(MIRR),0 },
443 : : { "ValueArray", SbxARRAY, 0, NULL,0 },
444 : : { "FinanceRate", SbxDOUBLE, 0, NULL,0 },
445 : : { "ReinvestRate", SbxDOUBLE, 0, NULL,0 },
446 : : { "MkDir", SbxNULL, 1 | _FUNCTION, RTLNAME(MkDir),0 },
447 : : { "pathname", SbxSTRING, 0,NULL,0 },
448 : : { "Month", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Month),0 },
449 : : { "Date", SbxDATE, 0,NULL,0 },
450 : : { "MonthName", SbxSTRING, 2 | _FUNCTION | _COMPATONLY, RTLNAME(MonthName),0 },
451 : : { "Month", SbxINTEGER, 0,NULL,0 },
452 : : { "Abbreviate", SbxBOOL, _OPT, NULL,0 },
453 : : { "MsgBox", SbxINTEGER, 5 | _FUNCTION, RTLNAME(MsgBox),0 },
454 : : { "Prompt", SbxSTRING, 0,NULL,0 },
455 : : { "Buttons", SbxINTEGER, _OPT, NULL,0 },
456 : : { "Title", SbxSTRING, _OPT, NULL,0 },
457 : : { "Helpfile", SbxSTRING, _OPT, NULL,0 },
458 : : { "Context", SbxINTEGER, _OPT, NULL,0 },
459 : :
460 : : { "Nothing", SbxOBJECT, _CPROP, RTLNAME(Nothing),0 },
461 : : { "Now", SbxDATE, _FUNCTION, RTLNAME(Now),0 },
462 : : { "NPer", SbxDOUBLE, 5 | _FUNCTION | _COMPATONLY, RTLNAME(NPer),0 },
463 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
464 : : { "Pmt", SbxDOUBLE, 0, NULL,0 },
465 : : { "PV", SbxDOUBLE, 0, NULL,0 },
466 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
467 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
468 : : { "NPV", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(NPV),0 },
469 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
470 : : { "ValueArray", SbxARRAY, 0, NULL,0 },
471 : : { "Null", SbxNULL, _CPROP, RTLNAME(Null),0 },
472 : :
473 : : { "Oct", SbxSTRING, 1 | _FUNCTION, RTLNAME(Oct),0 },
474 : : { "number", SbxLONG, 0,NULL,0 },
475 : :
476 : : { "Partition", SbxSTRING, 4 | _FUNCTION, RTLNAME(Partition),0 },
477 : : { "number", SbxLONG, 0,NULL,0 },
478 : : { "start", SbxLONG, 0,NULL,0 },
479 : : { "stop", SbxLONG, 0,NULL,0 },
480 : : { "interval", SbxLONG, 0,NULL,0 },
481 : : { "Pi", SbxDOUBLE, _CPROP, RTLNAME(PI),0 },
482 : :
483 : : { "Pmt", SbxDOUBLE, 5 | _FUNCTION | _COMPATONLY, RTLNAME(Pmt),0 },
484 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
485 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
486 : : { "PV", SbxDOUBLE, 0, NULL,0 },
487 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
488 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
489 : :
490 : : { "PPmt", SbxDOUBLE, 6 | _FUNCTION | _COMPATONLY, RTLNAME(PPmt),0 },
491 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
492 : : { "Per", SbxDOUBLE, 0, NULL,0 },
493 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
494 : : { "PV", SbxDOUBLE, 0, NULL,0 },
495 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
496 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
497 : :
498 : : { "Put", SbxNULL, 3 | _FUNCTION, RTLNAME(Put),0 },
499 : : { "filenumber", SbxINTEGER, 0,NULL,0 },
500 : : { "recordnumber", SbxLONG, 0,NULL,0 },
501 : : { "variablename", SbxVARIANT, 0,NULL,0 },
502 : :
503 : : { "PV", SbxDOUBLE, 5 | _FUNCTION | _COMPATONLY, RTLNAME(PV),0 },
504 : : { "Rate", SbxDOUBLE, 0, NULL,0 },
505 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
506 : : { "Pmt", SbxDOUBLE, 0, NULL,0 },
507 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
508 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
509 : :
510 : : { "QBColor", SbxLONG, 1 | _FUNCTION, RTLNAME(QBColor),0 },
511 : : { "number", SbxINTEGER, 0,NULL,0 },
512 : :
513 : : { "Randomize", SbxNULL, 1 | _FUNCTION, RTLNAME(Randomize),0 },
514 : : { "Number", SbxDOUBLE, _OPT, NULL,0 },
515 : : { "Rate", SbxDOUBLE, 6 | _FUNCTION | _COMPATONLY, RTLNAME(Rate),0 },
516 : : { "NPer", SbxDOUBLE, 0, NULL,0 },
517 : : { "Pmt", SbxDOUBLE, 0, NULL,0 },
518 : : { "PV", SbxDOUBLE, 0, NULL,0 },
519 : : { "FV", SbxVARIANT, _OPT, NULL,0 },
520 : : { "Due", SbxVARIANT, _OPT, NULL,0 },
521 : : { "Guess", SbxVARIANT, _OPT, NULL,0 },
522 : : { "Red", SbxINTEGER, 1 | _FUNCTION | _NORMONLY, RTLNAME(Red),0 },
523 : : { "RGB-Value", SbxLONG, 0,NULL,0 },
524 : : { "Reset", SbxNULL, 0 | _FUNCTION, RTLNAME(Reset),0 },
525 : : { "ResolvePath", SbxSTRING, 1 | _FUNCTION, RTLNAME(ResolvePath),0 },
526 : : { "Path", SbxSTRING, 0,NULL,0 },
527 : : { "RGB", SbxLONG, 3 | _FUNCTION, RTLNAME(RGB),0 },
528 : : { "Red", SbxINTEGER, 0,NULL,0 },
529 : : { "Green", SbxINTEGER, 0,NULL,0 },
530 : : { "Blue", SbxINTEGER, 0,NULL,0 },
531 : : { "Replace", SbxSTRING, 6 | _FUNCTION, RTLNAME(Replace),0 },
532 : : { "Expression", SbxSTRING, 0,NULL,0 },
533 : : { "Find", SbxSTRING, 0,NULL,0 },
534 : : { "Replace", SbxSTRING, 0,NULL,0 },
535 : : { "Start", SbxINTEGER, _OPT, NULL,0 },
536 : : { "Count", SbxINTEGER, _OPT, NULL,0 },
537 : : { "Compare", SbxINTEGER, _OPT, NULL,0 },
538 : : { "Right", SbxSTRING, 2 | _FUNCTION, RTLNAME(Right),0 },
539 : : { "String", SbxSTRING, 0,NULL,0 },
540 : : { "Count", SbxLONG, 0,NULL,0 },
541 : : { "RmDir", SbxNULL, 1 | _FUNCTION, RTLNAME(RmDir),0 },
542 : : { "pathname", SbxSTRING, 0,NULL,0 },
543 : : { "Round", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(Round),0},
544 : : { "Expression", SbxDOUBLE, 0,NULL,0 },
545 : : { "Numdecimalplaces", SbxINTEGER, _OPT, NULL,0 },
546 : : { "Rnd", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Rnd),0 },
547 : : { "Number", SbxDOUBLE, _OPT, NULL,0 },
548 : : { "RTL", SbxOBJECT, 0 | _FUNCTION | _COMPATONLY, RTLNAME(RTL),0},
549 : : { "RTrim", SbxSTRING, 1 | _FUNCTION, RTLNAME(RTrim),0 },
550 : : { "string", SbxSTRING, 0,NULL,0 },
551 : :
552 : : { "SavePicture", SbxNULL, 2 | _FUNCTION, RTLNAME(SavePicture),0 },
553 : : { "object", SbxOBJECT, 0,NULL,0 },
554 : : { "string", SbxSTRING, 0,NULL,0 },
555 : : { "Second", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Second),0 },
556 : : { "Date", SbxDATE, 0,NULL,0 },
557 : : { "Seek", SbxLONG, 1 | _FUNCTION, RTLNAME(Seek),0 },
558 : : { "Channel", SbxINTEGER, 0,NULL,0 },
559 : : { "SendKeys", SbxNULL, 2 | _FUNCTION, RTLNAME(SendKeys),0 },
560 : : { "String", SbxSTRING, 0,NULL,0 },
561 : : { "Wait", SbxBOOL, _OPT, NULL,0 },
562 : : { "SetAttr", SbxNULL, 2 | _FUNCTION, RTLNAME(SetAttr),0 },
563 : : { "File" , SbxSTRING, 0,NULL,0 },
564 : : { "Attributes", SbxINTEGER, 0,NULL,0 },
565 : : { "SET_OFF", SbxINTEGER, _CPROP, RTLNAME(SET_OFF),0 },
566 : : { "SET_ON", SbxINTEGER, _CPROP, RTLNAME(SET_ON),0 },
567 : : { "SET_TAB", SbxINTEGER, _CPROP, RTLNAME(SET_TAB),0 },
568 : : { "Sgn", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Sgn),0 },
569 : : { "number", SbxDOUBLE, 0,NULL,0 },
570 : : { "Shell", SbxLONG, 2 | _FUNCTION, RTLNAME(Shell),0 },
571 : : { "Commandstring",SbxSTRING, 0,NULL,0 },
572 : : { "WindowStyle", SbxINTEGER, _OPT, NULL,0 },
573 : : { "Sin", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Sin),0 },
574 : : { "number", SbxDOUBLE, 0,NULL,0 },
575 : : { "SLN", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(SLN),0 },
576 : : { "Cost", SbxDOUBLE, 0,NULL,0 },
577 : : { "Double", SbxDOUBLE, 0,NULL,0 },
578 : : { "Life", SbxDOUBLE, 0,NULL,0 },
579 : : { "SYD", SbxDOUBLE, 2 | _FUNCTION | _COMPATONLY, RTLNAME(SYD),0 },
580 : : { "Cost", SbxDOUBLE, 0,NULL,0 },
581 : : { "Salvage", SbxDOUBLE, 0,NULL,0 },
582 : : { "Life", SbxDOUBLE, 0,NULL,0 },
583 : : { "Period", SbxDOUBLE, 0,NULL,0 },
584 : : { "Space", SbxSTRING, 1 | _FUNCTION, RTLNAME(Space),0 },
585 : : { "string", SbxLONG, 0,NULL,0 },
586 : : { "Spc", SbxSTRING, 1 | _FUNCTION, RTLNAME(Spc),0 },
587 : : { "Count", SbxLONG, 0,NULL,0 },
588 : : { "Split", SbxOBJECT, 3 | _FUNCTION, RTLNAME(Split),0 },
589 : : { "expression", SbxSTRING, 0,NULL,0 },
590 : : { "delimiter", SbxSTRING, 0,NULL,0 },
591 : : { "count", SbxLONG, 0,NULL,0 },
592 : : { "Sqr", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Sqr),0 },
593 : : { "number", SbxDOUBLE, 0,NULL,0 },
594 : : { "Str", SbxSTRING, 1 | _FUNCTION, RTLNAME(Str),0 },
595 : : { "number", SbxDOUBLE, 0,NULL,0 },
596 : : { "StrComp", SbxINTEGER, 3 | _FUNCTION, RTLNAME(StrComp),0 },
597 : : { "String1", SbxSTRING, 0,NULL,0 },
598 : : { "String2", SbxSTRING, 0,NULL,0 },
599 : : { "Compare", SbxINTEGER, _OPT, NULL,0 },
600 : : { "StrConv", SbxOBJECT, 3 | _FUNCTION, RTLNAME(StrConv),0 },
601 : : { "String", SbxSTRING, 0,NULL,0 },
602 : : { "Conversion", SbxSTRING, 0,NULL,0 },
603 : : { "LCID", SbxINTEGER, _OPT,NULL,0 },
604 : : { "String", SbxSTRING, 2 | _FUNCTION, RTLNAME(String),0 },
605 : : { "Count", SbxLONG, 0,NULL,0 },
606 : : { "Filler", SbxVARIANT, 0,NULL,0 },
607 : : { "StrReverse", SbxSTRING, 1 | _FUNCTION | _COMPATONLY, RTLNAME(StrReverse),0 },
608 : : { "String1", SbxSTRING, 0,NULL,0 },
609 : : { "Switch", SbxVARIANT, 2 | _FUNCTION, RTLNAME(Switch),0 },
610 : : { "Expression", SbxVARIANT, 0,NULL,0 },
611 : : { "Value", SbxVARIANT, 0,NULL,0 },
612 : :
613 : : { "Tan", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Tan),0 },
614 : : { "number", SbxDOUBLE, 0,NULL,0 },
615 : : { "Time", SbxVARIANT, _LFUNCTION,RTLNAME(Time),0 },
616 : : { "Timer", SbxDATE, _FUNCTION, RTLNAME(Timer),0 },
617 : : { "TimeSerial", SbxDATE, 3 | _FUNCTION, RTLNAME(TimeSerial),0 },
618 : : { "Hour", SbxLONG, 0,NULL,0 },
619 : : { "Minute", SbxLONG, 0,NULL,0 },
620 : : { "Second", SbxLONG, 0,NULL,0 },
621 : : { "TimeValue", SbxDATE, 1 | _FUNCTION, RTLNAME(TimeValue),0 },
622 : : { "String", SbxSTRING, 0,NULL,0 },
623 : : { "TOGGLE", SbxINTEGER, _CPROP, RTLNAME(TOGGLE),0 },
624 : : #ifdef DBG_TRACE_BASIC
625 : : { "TraceCommand", SbxNULL, 1 | _FUNCTION, RTLNAME(TraceCommand),0 },
626 : : { "Command", SbxSTRING, 0,NULL,0 },
627 : : #endif
628 : : { "Trim", SbxSTRING, 1 | _FUNCTION, RTLNAME(Trim),0 },
629 : : { "String", SbxSTRING, 0,NULL,0 },
630 : : { "True", SbxBOOL, _CPROP, RTLNAME(True),0 },
631 : : { "TwipsPerPixelX", SbxLONG, _FUNCTION, RTLNAME(TwipsPerPixelX),0 },
632 : : { "TwipsPerPixelY", SbxLONG, _FUNCTION, RTLNAME(TwipsPerPixelY),0 },
633 : :
634 : : { "TYP_AUTHORFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_AUTHORFLD),0 },
635 : : { "TYP_CHAPTERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_CHAPTERFLD),0 },
636 : : { "TYP_CONDTXTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_CONDTXTFLD),0 },
637 : : { "TYP_DATEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DATEFLD),0 },
638 : : { "TYP_DBFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBFLD),0 },
639 : : { "TYP_DBNAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNAMEFLD),0 },
640 : : { "TYP_DBNEXTSETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNEXTSETFLD),0 },
641 : : { "TYP_DBNUMSETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNUMSETFLD),0 },
642 : : { "TYP_DBSETNUMBERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBSETNUMBERFLD),0 },
643 : : { "TYP_DDEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DDEFLD),0 },
644 : : { "TYP_DOCINFOFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DOCINFOFLD),0 },
645 : : { "TYP_DOCSTATFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DOCSTATFLD),0 },
646 : : { "TYP_EXTUSERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_EXTUSERFLD),0 },
647 : : { "TYP_FILENAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FILENAMEFLD),0 },
648 : : { "TYP_FIXDATEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FIXDATEFLD),0 },
649 : : { "TYP_FIXTIMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FIXTIMEFLD),0 },
650 : : { "TYP_FORMELFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FORMELFLD),0 },
651 : : { "TYP_GETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETFLD),0 },
652 : : { "TYP_GETREFFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETREFFLD),0 },
653 : : { "TYP_GETREFPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETREFPAGEFLD),0 },
654 : : { "TYP_HIDDENPARAFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_HIDDENPARAFLD),0 },
655 : : { "TYP_HIDDENTXTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_HIDDENTXTFLD),0 },
656 : : { "TYP_INPUTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_INPUTFLD),0 },
657 : : { "TYP_INTERNETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_INTERNETFLD),0 },
658 : : { "TYP_JUMPEDITFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_JUMPEDITFLD),0 },
659 : : { "TYP_MACROFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_MACROFLD),0 },
660 : : { "TYP_NEXTPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_NEXTPAGEFLD),0 },
661 : : { "TYP_PAGENUMBERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_PAGENUMBERFLD),0 },
662 : : { "TYP_POSTITFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_POSTITFLD),0 },
663 : : { "TYP_PREVPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_PREVPAGEFLD),0 },
664 : : { "TYP_SEQFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SEQFLD),0 },
665 : : { "TYP_SETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETFLD),0 },
666 : : { "TYP_SETINPFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETINPFLD),0 },
667 : : { "TYP_SETREFFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETREFFLD),0 },
668 : : { "TYP_SETREFPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETREFPAGEFLD),0 },
669 : : { "TYP_TEMPLNAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_TEMPLNAMEFLD),0},
670 : : { "TYP_TIMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_TIMEFLD),0 },
671 : : { "TYP_USERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_USERFLD),0 },
672 : : { "TYP_USRINPFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_USRINPFLD),0 },
673 : :
674 : : { "TypeLen", SbxINTEGER, 1 | _FUNCTION, RTLNAME(TypeLen),0 },
675 : : { "Var", SbxVARIANT, 0,NULL,0 },
676 : : { "TypeName", SbxSTRING, 1 | _FUNCTION, RTLNAME(TypeName),0 },
677 : : { "Var", SbxVARIANT, 0,NULL,0 },
678 : :
679 : : { "UBound", SbxLONG, 1 | _FUNCTION, RTLNAME(UBound),0 },
680 : : { "Var", SbxVARIANT, 0,NULL,0 },
681 : : { "UCase", SbxSTRING, 1 | _FUNCTION, RTLNAME(UCase),0 },
682 : : { "String", SbxSTRING, 0,NULL,0 },
683 : : { "Unload", SbxNULL, 1 | _FUNCTION, RTLNAME(Unload),0 },
684 : : { "Dialog", SbxOBJECT, 0,NULL,0 },
685 : :
686 : : { "Val", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Val),0 },
687 : : { "String", SbxSTRING, 0,NULL,0 },
688 : : { "VarType", SbxINTEGER, 1 | _FUNCTION, RTLNAME(VarType),0 },
689 : : { "Var", SbxVARIANT, 0,NULL,0 },
690 : : { "V_EMPTY", SbxINTEGER, _CPROP, RTLNAME(V_EMPTY),0 },
691 : : { "V_NULL", SbxINTEGER, _CPROP, RTLNAME(V_NULL),0 },
692 : : { "V_INTEGER", SbxINTEGER, _CPROP, RTLNAME(V_INTEGER),0 },
693 : : { "V_LONG", SbxINTEGER, _CPROP, RTLNAME(V_LONG),0 },
694 : : { "V_SINGLE", SbxINTEGER, _CPROP, RTLNAME(V_SINGLE),0 },
695 : : { "V_DOUBLE", SbxINTEGER, _CPROP, RTLNAME(V_DOUBLE),0 },
696 : : { "V_CURRENCY", SbxINTEGER, _CPROP, RTLNAME(V_CURRENCY),0 },
697 : : { "V_DATE", SbxINTEGER, _CPROP, RTLNAME(V_DATE),0 },
698 : : { "V_STRING", SbxINTEGER, _CPROP, RTLNAME(V_STRING),0 },
699 : :
700 : : { "Wait", SbxNULL, 1 | _FUNCTION, RTLNAME(Wait),0 },
701 : : { "Milliseconds", SbxLONG, 0,NULL,0 },
702 : : { "FuncCaller", SbxVARIANT, _FUNCTION, RTLNAME(FuncCaller),0 },
703 : : //#i64882#
704 : : { "WaitUntil", SbxNULL, 1 | _FUNCTION, RTLNAME(WaitUntil),0 },
705 : : { "Date", SbxDOUBLE, 0,NULL,0 },
706 : : { "Weekday", SbxINTEGER, 2 | _FUNCTION, RTLNAME(Weekday),0 },
707 : : { "Date", SbxDATE, 0,NULL,0 },
708 : : { "Firstdayofweek", SbxINTEGER, _OPT, NULL,0 },
709 : : { "WeekdayName", SbxSTRING, 3 | _FUNCTION | _COMPATONLY, RTLNAME(WeekdayName),0 },
710 : : { "Weekday", SbxINTEGER, 0,NULL,0 },
711 : : { "Abbreviate", SbxBOOL, _OPT, NULL,0 },
712 : : { "Firstdayofweek", SbxINTEGER, _OPT, NULL,0 },
713 : : { "Year", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Year),0 },
714 : : { "Date", SbxDATE, 0,NULL,0 },
715 : :
716 : : { NULL, SbxNULL, -1,NULL,0 }}; // end of the table
717 : :
718 [ + - ][ # # ]: 778 : SbiStdObject::SbiStdObject( const String& r, StarBASIC* pb ) : SbxObject( r )
719 : : {
720 : : // do we have to initialize the hashcodes?
721 : 778 : Methods* p = aMethods;
722 [ + + ][ # # ]: 778 : if( !p->nHash )
723 [ + + ][ # # ]: 38528 : while( p->nArgs != -1 )
724 : : {
725 [ + - ][ # # ]: 38400 : String aName_ = rtl::OUString::createFromAscii( p->pName );
726 [ + - # # ]: 38400 : p->nHash = SbxVariable::MakeHashCode( aName_ );
727 : 38400 : p += ( p->nArgs & _ARGSMASK ) + 1;
728 [ + - ][ # # ]: 38400 : }
729 : :
730 : : // #i92642: Remove default properties
731 [ + - ][ + - ]: 778 : Remove( rtl::OUString("Name"), SbxCLASS_DONTCARE );
[ + - ][ # # ]
[ # # ][ # # ]
732 [ + - ][ + - ]: 778 : Remove( rtl::OUString("Parent"), SbxCLASS_DONTCARE );
[ # # ][ # # ]
[ # # ][ + - ]
733 : :
734 [ + - # # ]: 778 : SetParent( pb );
735 : :
736 [ + - ][ + - ]: 778 : pStdFactory = new SbStdFactory;
[ # # ][ # # ]
737 [ + - ][ # # ]: 778 : SbxBase::AddFactory( pStdFactory );
738 : :
739 [ + - ][ + - ]: 778 : Insert( new SbStdClipboard );
[ + - ][ # # ]
[ # # ][ # # ]
740 : 778 : }
741 : :
742 [ + - ][ # # ]: 1430 : SbiStdObject::~SbiStdObject()
743 : : {
744 [ + - ][ # # ]: 715 : SbxBase::RemoveFactory( pStdFactory );
745 [ + - ][ + - ]: 715 : delete pStdFactory;
[ # # ][ # # ]
746 [ + - ][ - + ]: 2145 : }
[ # # ][ # # ]
[ # # ][ # # ]
747 : :
748 : : // Finding an element:
749 : : // It runs linearly through the method table here until an
750 : : // adequate method is has been found. Because of the bits in
751 : : // the nArgs-field the adequate instance of an SbxObjElement
752 : : // is created then. If the method/property hasn't been found,
753 : : // return NULL without error code, so that a whole chain of
754 : : // objects can be asked for the method/property.
755 : :
756 : 41840 : SbxVariable* SbiStdObject::Find( const rtl::OUString& rName, SbxClassType t )
757 : : {
758 : : // entered already?
759 : 41840 : SbxVariable* pVar = SbxObject::Find( rName, t );
760 [ + + ]: 41840 : if( !pVar )
761 : : {
762 : : // else search one
763 [ + - ]: 40946 : sal_uInt16 nHash_ = SbxVariable::MakeHashCode( rName );
764 : 40946 : Methods* p = aMethods;
765 : 40946 : bool bFound = false;
766 : 40946 : short nIndex = 0;
767 : 40946 : sal_uInt16 nSrchMask = _TYPEMASK;
768 [ + + + + ]: 40946 : switch( t )
769 : : {
770 : 289 : case SbxCLASS_METHOD: nSrchMask = _METHOD; break;
771 : 2730 : case SbxCLASS_PROPERTY: nSrchMask = _PROPERTY; break;
772 : 28030 : case SbxCLASS_OBJECT: nSrchMask = _OBJECT; break;
773 : 9897 : default: break;
774 : : }
775 [ + + ]: 12241834 : while( p->nArgs != -1 )
776 : : {
777 [ + + ]: 12202011 : if( ( p->nArgs & nSrchMask )
[ + + + + ]
[ + + ]
778 : : && ( p->nHash == nHash_ )
779 : 777 : && ( rName.equalsIgnoreAsciiCaseAscii( p->pName ) ) )
780 : : {
781 : 346 : SbiInstance* pInst = GetSbData()->pInst;
782 : 346 : bFound = true;
783 [ + + ]: 346 : if( p->nArgs & _COMPTMASK )
784 : : {
785 [ + - ][ + + ]: 4 : if ( !pInst || ( pInst->IsCompatibility() && ( _NORMONLY & p->nArgs ) ) || ( !pInst->IsCompatibility() && ( _COMPATONLY & p->nArgs ) ) )
[ + - ][ + + ]
[ + - ][ + + ]
786 : 2 : bFound = false;
787 : : }
788 : 346 : break;
789 : : }
790 : 12200888 : nIndex += ( p->nArgs & _ARGSMASK ) + 1;
791 : 12200888 : p = aMethods + nIndex;
792 : : }
793 : :
794 [ + + ]: 40946 : if( bFound )
795 : : {
796 : : // isolate Args-fields:
797 : 344 : short nAccess = ( p->nArgs & _RWMASK ) >> 8;
798 : 344 : short nType = ( p->nArgs & _TYPEMASK );
799 [ + + ]: 344 : if( p->nArgs & _CONST )
800 : 16 : nAccess |= SBX_CONST;
801 [ + - ]: 344 : String aName_ = rtl::OUString::createFromAscii( p->pName );
802 : 344 : SbxClassType eCT = SbxCLASS_OBJECT;
803 [ + + ]: 344 : if( nType & _PROPERTY )
804 : 16 : eCT = SbxCLASS_PROPERTY;
805 [ + - ]: 328 : else if( nType & _METHOD )
806 : 328 : eCT = SbxCLASS_METHOD;
807 [ + - ]: 344 : pVar = Make( aName_, eCT, p->eType );
808 : 344 : pVar->SetUserData( nIndex + 1 );
809 [ + - ]: 344 : pVar->SetFlags( nAccess );
810 : : }
811 : : }
812 : 41840 : return pVar;
813 : : }
814 : :
815 : : // SetModified must be pinched off at the RTL
816 : 3596 : void SbiStdObject::SetModified( sal_Bool )
817 : : {
818 : 3596 : }
819 : :
820 : :
821 : 660 : void SbiStdObject::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
822 : : const SfxHint& rHint, const TypeId& rHintType )
823 : :
824 : : {
825 [ + - ][ + - ]: 660 : const SbxHint* pHint = PTR_CAST(SbxHint,&rHint);
826 [ + - ]: 660 : if( pHint )
827 : : {
828 : 660 : SbxVariable* pVar = pHint->GetVar();
829 : 660 : SbxArray* pPar_ = pVar->GetParameters();
830 : 660 : sal_uIntPtr t = pHint->GetId();
831 : 660 : sal_uInt16 nCallId = (sal_uInt16) pVar->GetUserData();
832 [ + - ]: 660 : if( nCallId )
833 : : {
834 [ - + ]: 660 : if( t == SBX_HINT_INFOWANTED )
835 : 0 : pVar->SetInfo( GetInfo( (short) pVar->GetUserData() ) );
836 : : else
837 : : {
838 : 660 : sal_Bool bWrite = sal_False;
839 [ - + ]: 660 : if( t == SBX_HINT_DATACHANGED )
840 : 0 : bWrite = sal_True;
841 [ - + ][ # # ]: 660 : if( t == SBX_HINT_DATAWANTED || bWrite )
842 : : {
843 : 660 : RtlCall p = (RtlCall) aMethods[ nCallId-1 ].pFunc;
844 : 660 : SbxArrayRef rPar( pPar_ );
845 [ + + ]: 660 : if( !pPar_ )
846 : : {
847 [ + - ][ + - ]: 230 : rPar = pPar_ = new SbxArray;
[ + - ]
848 [ + - ]: 230 : pPar_->Put( pVar, 0 );
849 : : }
850 [ + - ][ + - ]: 660 : p( (StarBASIC*) GetParent(), *pPar_, bWrite );
851 [ + - ]: 660 : return;
852 : : }
853 : : }
854 : : }
855 : 0 : SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
856 : : }
857 : : }
858 : :
859 : : // building the info-structure for single elements
860 : : // if nIdx = 0, don't create anything (Std-Props!)
861 : :
862 : 0 : SbxInfo* SbiStdObject::GetInfo( short nIdx )
863 : : {
864 [ # # ]: 0 : if( !nIdx )
865 : 0 : return NULL;
866 : 0 : Methods* p = &aMethods[ --nIdx ];
867 [ # # ]: 0 : SbxInfo* pInfo_ = new SbxInfo;
868 : 0 : short nPar = p->nArgs & _ARGSMASK;
869 [ # # ]: 0 : for( short i = 0; i < nPar; i++ )
870 : : {
871 : 0 : p++;
872 [ # # ]: 0 : String aName_ = rtl::OUString::createFromAscii( p->pName );
873 : 0 : sal_uInt16 nFlags_ = ( p->nArgs >> 8 ) & 0x03;
874 [ # # ]: 0 : if( p->nArgs & _OPT )
875 : 0 : nFlags_ |= SBX_OPTIONAL;
876 [ # # ][ # # ]: 0 : pInfo_->AddParam( aName_, p->eType, nFlags_ );
877 [ # # ]: 0 : }
878 : 0 : return pInfo_;
879 : : }
880 : :
881 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|