1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 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. 14 * 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). 20 * 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. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_basic.hxx" 30 31 #include "runtime.hxx" 32 #include "stdobj.hxx" 33 #include <basic/sbstdobj.hxx> 34 #include "rtlproto.hxx" 35 #include "sbintern.hxx" 36 37 // Das nArgs-Feld eines Tabelleneintrags ist wie folgt verschluesselt: 38 // Zur Zeit wird davon ausgegangen, dass Properties keine Parameter 39 // benoetigen! 40 41 #define _ARGSMASK 0x007F // Bis zu 127 Argumente 42 #define _COMPTMASK 0x0080 // Only valid in compatibility mode 43 #define _RWMASK 0x0F00 // Maske fuer R/W-Bits 44 #define _TYPEMASK 0xF000 // Maske fuer den Typ des Eintrags 45 46 #define _READ 0x0100 // kann gelesen werden 47 #define _BWRITE 0x0200 // kann as Lvalue verwendet werden 48 #define _LVALUE _BWRITE // kann as Lvalue verwendet werden 49 #define _READWRITE 0x0300 // beides 50 #define _OPT 0x0400 // Parameter ist optional 51 #define _CONST 0x0800 // Property ist const 52 #define _METHOD 0x3000 // Masken-Bits fuer eine Methode 53 #define _PROPERTY 0x4000 // Masken-Bit fuer eine Property 54 #define _OBJECT 0x8000 // Masken-Bit fuer ein Objekt 55 // Kombination von oberen Bits: 56 #define _FUNCTION 0x1100 // Maske fuer Function 57 #define _LFUNCTION 0x1300 // Maske fuer Function, die auch als Lvalue geht 58 #define _SUB 0x2100 // Maske fuer Sub 59 #define _ROPROP 0x4100 // Maske Read Only-Property 60 #define _WOPROP 0x4200 // Maske Write Only-Property 61 #define _RWPROP 0x4300 // Maske Read/Write-Property 62 #define _CPROP 0x4900 // Maske fuer Konstante 63 64 struct Methods { 65 const char* pName; // Name des Eintrags 66 SbxDataType eType; // Datentyp 67 short nArgs; // Argumente und Flags 68 RtlCall pFunc; // Function Pointer 69 sal_uInt16 nHash; // Hashcode 70 }; 71 72 static Methods aMethods[] = { 73 74 { "AboutStarBasic", SbxNULL, 1 | _FUNCTION, RTLNAME(AboutStarBasic),0 }, 75 { "Name", SbxSTRING, 0,NULL,0 }, 76 { "Abs", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Abs),0 }, 77 { "number", SbxDOUBLE, 0,NULL,0 }, 78 { "Array", SbxOBJECT, _FUNCTION, RTLNAME(Array),0 }, 79 { "Asc", SbxLONG, 1 | _FUNCTION, RTLNAME(Asc),0 }, 80 { "string", SbxSTRING, 0,NULL,0 }, 81 { "AscW", SbxLONG, 1 | _FUNCTION | _COMPTMASK, RTLNAME(Asc),0}, 82 { "string", SbxSTRING, 0,NULL,0 }, 83 { "Atn", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Atn),0 }, 84 { "number", SbxDOUBLE, 0,NULL,0 }, 85 { "ATTR_ARCHIVE", SbxINTEGER, _CPROP, RTLNAME(ATTR_ARCHIVE),0 }, 86 { "ATTR_DIRECTORY", SbxINTEGER, _CPROP, RTLNAME(ATTR_DIRECTORY),0 }, 87 { "ATTR_HIDDEN", SbxINTEGER, _CPROP, RTLNAME(ATTR_HIDDEN),0 }, 88 { "ATTR_NORMAL", SbxINTEGER, _CPROP, RTLNAME(ATTR_NORMAL),0 }, 89 { "ATTR_READONLY", SbxINTEGER, _CPROP, RTLNAME(ATTR_READONLY),0 }, 90 { "ATTR_SYSTEM", SbxINTEGER, _CPROP, RTLNAME(ATTR_SYSTEM),0 }, 91 { "ATTR_VOLUME", SbxINTEGER, _CPROP, RTLNAME(ATTR_VOLUME),0 }, 92 93 { "Beep", SbxNULL, _FUNCTION, RTLNAME(Beep),0 }, 94 { "Blue", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Blue),0 }, 95 { "RGB-Value", SbxLONG, 0,NULL,0 }, 96 97 { "CallByName", SbxVARIANT, 3 | _FUNCTION, RTLNAME(CallByName),0 }, 98 { "Object", SbxOBJECT, 0,NULL,0 }, 99 { "ProcedureName",SbxSTRING, 0,NULL,0 }, 100 { "CallType", SbxINTEGER, 0,NULL,0 }, 101 { "CBool", SbxBOOL, 1 | _FUNCTION, RTLNAME(CBool),0 }, 102 { "expression", SbxVARIANT, 0,NULL,0 }, 103 { "CByte", SbxBYTE, 1 | _FUNCTION, RTLNAME(CByte),0 }, 104 { "expression", SbxVARIANT, 0,NULL,0 }, 105 { "CCur", SbxCURRENCY, 1 | _FUNCTION, RTLNAME(CCur),0 }, 106 { "expression", SbxVARIANT, 0,NULL,0 }, 107 { "CDate", SbxDATE, 1 | _FUNCTION, RTLNAME(CDate),0 }, 108 { "expression", SbxVARIANT, 0,NULL,0 }, 109 { "CDateFromIso", SbxDATE, 1 | _FUNCTION, RTLNAME(CDateFromIso),0 }, 110 { "IsoDate", SbxSTRING, 0,NULL,0 }, 111 { "CDateToIso", SbxSTRING, 1 | _FUNCTION, RTLNAME(CDateToIso),0 }, 112 { "Date", SbxDATE, 0,NULL,0 }, 113 { "CDec", SbxDECIMAL, 1 | _FUNCTION, RTLNAME(CDec),0 }, 114 { "expression", SbxVARIANT, 0,NULL,0 }, 115 { "CDbl", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(CDbl),0 }, 116 { "expression", SbxVARIANT, 0,NULL,0 }, 117 { "CF_BITMAP", SbxINTEGER, _CPROP, RTLNAME(CF_BITMAP),0 }, 118 { "CF_METAFILEPICT",SbxINTEGER, _CPROP, RTLNAME(CF_METAFILEPICT),0 }, 119 { "CF_TEXT", SbxINTEGER, _CPROP, RTLNAME(CF_TEXT),0 }, 120 { "ChDir", SbxNULL, 1 | _FUNCTION, RTLNAME(ChDir),0 }, 121 { "string", SbxSTRING, 0,NULL,0 }, 122 { "ChDrive", SbxNULL, 1 | _FUNCTION, RTLNAME(ChDrive),0 }, 123 { "string", SbxSTRING, 0,NULL,0 }, 124 125 { "Choose", SbxVARIANT, 2 | _FUNCTION, RTLNAME(Choose),0 }, 126 { "Index", SbxINTEGER, 0,NULL,0 }, 127 { "Expression", SbxVARIANT, 0,NULL,0 }, 128 129 { "Chr", SbxSTRING, 1 | _FUNCTION, RTLNAME(Chr),0 }, 130 { "string", SbxINTEGER, 0,NULL,0 }, 131 { "ChrW", SbxSTRING, 1 | _FUNCTION | _COMPTMASK, RTLNAME(ChrW),0}, 132 { "string", SbxINTEGER, 0,NULL,0 }, 133 134 { "CInt", SbxINTEGER, 1 | _FUNCTION, RTLNAME(CInt),0 }, 135 { "expression", SbxVARIANT, 0,NULL,0 }, 136 { "CLEAR_ALLTABS", SbxINTEGER, _CPROP, RTLNAME(CLEAR_ALLTABS),0 }, 137 { "CLEAR_TAB", SbxINTEGER, _CPROP, RTLNAME(CLEAR_TAB),0 }, 138 { "CLng", SbxLONG, 1 | _FUNCTION, RTLNAME(CLng),0 }, 139 { "expression", SbxVARIANT, 0,NULL,0 }, 140 { "CompatibilityMode", SbxBOOL, 1 | _FUNCTION, RTLNAME(CompatibilityMode),0}, 141 { "bEnable", SbxBOOL, 0,NULL,0 }, 142 { "ConvertFromUrl", SbxSTRING, 1 | _FUNCTION, RTLNAME(ConvertFromUrl),0 }, 143 { "Url", SbxSTRING, 0,NULL,0 }, 144 { "ConvertToUrl", SbxSTRING, 1 | _FUNCTION, RTLNAME(ConvertToUrl),0 }, 145 { "SystemPath", SbxSTRING, 0,NULL,0 }, 146 { "Cos", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Cos),0 }, 147 { "number", SbxDOUBLE, 0,NULL,0 }, 148 { "CreateObject", SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateObject ),0 }, 149 { "class", SbxSTRING, 0,NULL,0 }, 150 { "CaptureAssertions", SbxNULL, 1 | _FUNCTION, RTLNAME(CaptureAssertions), 0 }, 151 { "methodName", SbxSTRING, 0, NULL, 0 }, 152 { "CreateUnoListener",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoListener ),0 }, 153 { "prefix", SbxSTRING, 0,NULL,0 }, 154 { "typename", SbxSTRING, 0,NULL,0 }, 155 { "CreateUnoDialog",SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoDialog ),0 }, 156 { "dialoglibrary",SbxOBJECT, 0,NULL,0 }, 157 { "dialogname", SbxSTRING, 0,NULL,0 }, 158 { "CreateUnoService",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoService ),0 }, 159 { "servicename", SbxSTRING, 0,NULL,0 }, 160 { "CreateUnoServiceWithArguments",SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoServiceWithArguments ),0 }, 161 { "servicename", SbxSTRING, 0,NULL,0 }, 162 { "arguments", SbxARRAY, 0,NULL,0 }, 163 { "CreateUnoStruct",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreateUnoStruct ),0 }, 164 { "classname", SbxSTRING, 0,NULL,0 }, 165 { "CreateUnoValue", SbxOBJECT, 2 | _FUNCTION, RTLNAME( CreateUnoValue ),0 }, 166 { "type", SbxSTRING, 0,NULL,0 }, 167 { "value", SbxVARIANT, 0,NULL,0 }, 168 { "CreatePropertySet",SbxOBJECT, 1 | _FUNCTION, RTLNAME( CreatePropertySet ),0 }, 169 { "values", SbxARRAY, 0,NULL,0 }, 170 { "CSng", SbxSINGLE, 1 | _FUNCTION, RTLNAME(CSng),0 }, 171 { "expression", SbxVARIANT, 0,NULL,0 }, 172 { "CStr", SbxSTRING, 1 | _FUNCTION, RTLNAME(CStr),0 }, 173 { "expression", SbxVARIANT, 0,NULL,0 }, 174 { "CurDir", SbxSTRING, 1 | _FUNCTION, RTLNAME(CurDir),0 }, 175 { "string", SbxSTRING, 0,NULL,0 }, 176 { "CVar", SbxVARIANT, 1 | _FUNCTION, RTLNAME(CVar),0 }, 177 { "expression", SbxVARIANT, 0,NULL,0 }, 178 { "CVErr", SbxVARIANT, 1 | _FUNCTION, RTLNAME(CVErr),0 }, 179 { "expression", SbxVARIANT, 0,NULL,0 }, 180 181 { "Date", SbxDATE, _LFUNCTION,RTLNAME(Date),0 }, 182 { "DateAdd", SbxDATE, 3 | _FUNCTION, RTLNAME(DateAdd),0 }, 183 { "Interval", SbxSTRING, 0,NULL,0 }, 184 { "Number", SbxLONG, 0,NULL,0 }, 185 { "Date", SbxDATE, 0,NULL,0 }, 186 { "DateDiff", SbxDOUBLE, 5 | _FUNCTION, RTLNAME(DateDiff),0 }, 187 { "Interval", SbxSTRING, 0,NULL,0 }, 188 { "Date1", SbxDATE, 0,NULL,0 }, 189 { "Date2", SbxDATE, 0,NULL,0 }, 190 { "Firstdayofweek" , SbxINTEGER, _OPT,NULL,0 }, 191 { "Firstweekofyear", SbxINTEGER, _OPT,NULL,0 }, 192 { "DatePart", SbxLONG, 4 | _FUNCTION, RTLNAME(DatePart),0 }, 193 { "Interval", SbxSTRING, 0,NULL,0 }, 194 { "Date", SbxDATE, 0,NULL,0 }, 195 { "Firstdayofweek" , SbxINTEGER, _OPT, NULL,0 }, 196 { "Firstweekofyear", SbxINTEGER, _OPT, NULL,0 }, 197 { "DateSerial", SbxDATE, 3 | _FUNCTION, RTLNAME(DateSerial),0 }, 198 { "Year", SbxINTEGER, 0,NULL,0 }, 199 { "Month", SbxINTEGER, 0,NULL,0 }, 200 { "Day", SbxINTEGER, 0,NULL,0 }, 201 { "DateValue", SbxDATE, 1 | _FUNCTION, RTLNAME(DateValue),0 }, 202 { "String", SbxSTRING, 0,NULL,0 }, 203 { "Day", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Day),0 }, 204 { "Date", SbxDATE, 0,NULL,0 }, 205 { "Ddeexecute", SbxNULL, 2 | _FUNCTION, RTLNAME(DDEExecute),0 }, 206 { "Channel", SbxLONG, 0,NULL,0 }, 207 { "Command", SbxSTRING, 0,NULL,0 }, 208 { "Ddeinitiate", SbxINTEGER, 2 | _FUNCTION, RTLNAME(DDEInitiate),0 }, 209 { "Application", SbxSTRING, 0,NULL,0 }, 210 { "Topic", SbxSTRING, 0,NULL,0 }, 211 { "Ddepoke", SbxNULL, 3 | _FUNCTION, RTLNAME(DDEPoke),0 }, 212 { "Channel", SbxLONG, 0,NULL,0 }, 213 { "Item", SbxSTRING, 0,NULL,0 }, 214 { "Data", SbxSTRING, 0,NULL,0 }, 215 { "Dderequest", SbxSTRING, 2 | _FUNCTION, RTLNAME(DDERequest),0 }, 216 { "Channel", SbxLONG, 0,NULL,0 }, 217 { "Item", SbxSTRING, 0,NULL,0 }, 218 { "Ddeterminate", SbxNULL, 1 | _FUNCTION, RTLNAME(DDETerminate),0 }, 219 { "Channel", SbxLONG, 0,NULL,0 }, 220 { "Ddeterminateall", SbxNULL, _FUNCTION, RTLNAME(DDETerminateAll),0 }, 221 { "DimArray", SbxOBJECT, _FUNCTION, RTLNAME(DimArray),0 }, 222 { "Dir", SbxSTRING, 2 | _FUNCTION, RTLNAME(Dir),0 }, 223 { "FileSpec", SbxSTRING, _OPT, NULL,0 }, 224 { "attrmask", SbxINTEGER, _OPT, NULL,0 }, 225 { "DoEvents", SbxEMPTY, _FUNCTION, RTLNAME(DoEvents),0 }, 226 { "DumpAllObjects", SbxEMPTY, 2 | _SUB, RTLNAME(DumpAllObjects),0 }, 227 { "FileSpec", SbxSTRING, 0,NULL,0 }, 228 { "DumpAll", SbxINTEGER, _OPT, NULL,0 }, 229 230 { "Empty", SbxVARIANT, _CPROP, RTLNAME(Empty),0 }, 231 { "EqualUnoObjects",SbxBOOL, 2 | _FUNCTION, RTLNAME(EqualUnoObjects),0 }, 232 { "Variant", SbxVARIANT, 0,NULL,0 }, 233 { "Variant", SbxVARIANT, 0,NULL,0 }, 234 { "EnableReschedule", SbxNULL, 1 | _FUNCTION, RTLNAME(EnableReschedule),0}, 235 { "bEnable", SbxBOOL, 0,NULL,0 }, 236 { "Environ", SbxSTRING, 1 | _FUNCTION, RTLNAME(Environ),0 }, 237 { "Environmentstring",SbxSTRING, 0,NULL,0 }, 238 { "EOF", SbxBOOL, 1 | _FUNCTION, RTLNAME(EOF),0 }, 239 { "Channel", SbxINTEGER, 0,NULL,0 }, 240 { "Erl", SbxLONG, _ROPROP, RTLNAME( Erl ),0 }, 241 { "Err", SbxVARIANT, _RWPROP, RTLNAME( Err ),0 }, 242 { "Error", SbxSTRING, 1 | _FUNCTION, RTLNAME( Error ),0 }, 243 { "code", SbxLONG, 0,NULL,0 }, 244 { "Exp", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Exp),0 }, 245 { "number", SbxDOUBLE, 0,NULL,0 }, 246 247 { "False", SbxBOOL, _CPROP, RTLNAME(False),0 }, 248 { "FileAttr", SbxINTEGER, 2 | _FUNCTION, RTLNAME(FileAttr),0 }, 249 { "Channel", SbxINTEGER, 0,NULL,0 }, 250 { "Attributes", SbxINTEGER, 0,NULL,0 }, 251 { "FileCopy", SbxNULL, 2 | _FUNCTION, RTLNAME(FileCopy),0 }, 252 { "Source", SbxSTRING, 0,NULL,0 }, 253 { "Destination", SbxSTRING, 0,NULL,0 }, 254 { "FileDateTime", SbxSTRING, 1 | _FUNCTION, RTLNAME(FileDateTime),0 }, 255 { "filename", SbxSTRING, 0,NULL,0 }, 256 { "FileExists", SbxBOOL, 1 | _FUNCTION, RTLNAME(FileExists),0 }, 257 { "filename", SbxSTRING, 0,NULL,0 }, 258 { "FileLen", SbxLONG, 1 | _FUNCTION, RTLNAME(FileLen),0 }, 259 { "filename", SbxSTRING, 0,NULL,0 }, 260 { "FindObject", SbxOBJECT, 1 | _FUNCTION, RTLNAME(FindObject),0 }, 261 { "Name", SbxSTRING, 0,NULL,0 }, 262 { "FindPropertyObject", SbxOBJECT, 2 | _FUNCTION, RTLNAME(FindPropertyObject),0 }, 263 { "Object", SbxOBJECT, 0,NULL,0 }, 264 { "Name", SbxSTRING, 0,NULL,0 }, 265 { "Fix", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Fix),0 }, 266 { "number", SbxDOUBLE, 0,NULL,0 }, 267 { "Format", SbxSTRING, 2 | _FUNCTION, RTLNAME(Format),0 }, 268 { "expression", SbxVARIANT, 0,NULL,0 }, 269 { "format", SbxSTRING, _OPT, NULL,0 }, 270 { "FormatDateTime", SbxSTRING, 2 | _FUNCTION | _COMPTMASK, RTLNAME(FormatDateTime),0 }, 271 { "Date", SbxDATE, 0,NULL,0 }, 272 { "NamedFormat", SbxINTEGER, _OPT, NULL,0 }, 273 { "FRAMEANCHORCHAR", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORCHAR),0 }, 274 { "FRAMEANCHORPAGE", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORPAGE),0 }, 275 { "FRAMEANCHORPARA", SbxINTEGER, _CPROP, RTLNAME(FRAMEANCHORPARA),0 }, 276 { "FreeFile", SbxINTEGER, _FUNCTION, RTLNAME(FreeFile),0 }, 277 { "FreeLibrary", SbxNULL, 1 | _FUNCTION, RTLNAME(FreeLibrary),0 }, 278 { "Modulename", SbxSTRING, 0,NULL,0 }, 279 280 { "Get", SbxNULL, 3 | _FUNCTION, RTLNAME(Get),0 }, 281 { "filenumber", SbxINTEGER, 0,NULL,0 }, 282 { "recordnumber", SbxLONG, 0,NULL,0 }, 283 { "variablename", SbxVARIANT, 0,NULL,0 }, 284 { "GetAttr", SbxINTEGER, 1 | _FUNCTION, RTLNAME(GetAttr),0 }, 285 { "filename", SbxSTRING, 0,NULL,0 }, 286 { "GetDefaultContext", SbxOBJECT, 0 | _FUNCTION, RTLNAME(GetDefaultContext),0 }, 287 { "GetDialogZoomFactorX", SbxDOUBLE, _FUNCTION,RTLNAME(GetDialogZoomFactorX),0 }, 288 { "GetDialogZoomFactorY", SbxDOUBLE, _FUNCTION,RTLNAME(GetDialogZoomFactorY),0 }, 289 { "GetGUIType", SbxINTEGER, _FUNCTION,RTLNAME(GetGUIType),0 }, 290 { "GetGUIVersion", SbxLONG, _FUNCTION,RTLNAME(GetGUIVersion),0 }, 291 { "GetPathSeparator", SbxSTRING, _FUNCTION,RTLNAME(GetPathSeparator),0 }, 292 { "GetProcessServiceManager", SbxOBJECT, 0 | _FUNCTION, RTLNAME(GetProcessServiceManager),0 }, 293 { "GetSolarVersion", SbxLONG, _FUNCTION,RTLNAME(GetSolarVersion),0 }, 294 { "GetSystemTicks", SbxLONG, _FUNCTION,RTLNAME(GetSystemTicks),0 }, 295 { "GetSystemType", SbxINTEGER, _FUNCTION,RTLNAME(GetSystemType),0 }, 296 { "GlobalScope", SbxOBJECT, _FUNCTION,RTLNAME(GlobalScope),0 }, 297 { "Green", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Green),0 }, 298 { "RGB-Value", SbxLONG, 0,NULL,0 }, 299 300 { "HasUnoInterfaces", SbxBOOL, 1 | _FUNCTION, RTLNAME(HasUnoInterfaces),0}, 301 { "InterfaceName",SbxSTRING, 0,NULL,0 }, 302 { "Hex", SbxSTRING, 1 | _FUNCTION, RTLNAME(Hex),0 }, 303 { "number", SbxLONG, 0,NULL,0 }, 304 { "Hour", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Hour),0 }, 305 { "Date", SbxDATE, 0,NULL,0 }, 306 307 { "IDABORT", SbxINTEGER, _CPROP, RTLNAME(IDABORT),0 }, 308 { "IDCANCEL", SbxINTEGER, _CPROP, RTLNAME(IDCANCEL),0 }, 309 { "IDNO", SbxINTEGER, _CPROP, RTLNAME(IDNO),0 }, 310 { "IDOK", SbxINTEGER, _CPROP, RTLNAME(IDOK),0 }, 311 { "IDRETRY", SbxINTEGER, _CPROP, RTLNAME(IDRETRY),0 }, 312 { "IDYES", SbxINTEGER, _CPROP, RTLNAME(IDYES),0 }, 313 314 { "Iif", SbxVARIANT, 3 | _FUNCTION, RTLNAME(Iif),0 }, 315 { "Bool", SbxBOOL, 0,NULL,0 }, 316 { "Variant1", SbxVARIANT, 0,NULL,0 }, 317 { "Variant2", SbxVARIANT, 0,NULL,0 }, 318 319 { "Input", SbxSTRING, 2 | _FUNCTION | _COMPTMASK, RTLNAME(Input),0}, 320 { "Number", SbxLONG, 0,NULL,0 }, 321 { "FileNumber", SbxLONG, 0,NULL,0 }, 322 { "InputBox", SbxSTRING, 5 | _FUNCTION, RTLNAME(InputBox),0 }, 323 { "Prompt", SbxSTRING, 0,NULL,0 }, 324 { "Title", SbxSTRING, _OPT, NULL,0 }, 325 { "Default", SbxSTRING, _OPT, NULL,0 }, 326 { "XPosTwips", SbxLONG, _OPT, NULL,0 }, 327 { "YPosTwips", SbxLONG, _OPT, NULL,0 }, 328 { "InStr", SbxLONG, 4 | _FUNCTION, RTLNAME(InStr),0 }, 329 { "Start", SbxSTRING, _OPT, NULL,0 }, 330 { "String1", SbxSTRING, 0,NULL,0 }, 331 { "String2", SbxSTRING, 0,NULL,0 }, 332 { "Compare", SbxINTEGER, _OPT, NULL,0 }, 333 { "InStrRev", SbxLONG, 4 | _FUNCTION | _COMPTMASK, RTLNAME(InStrRev),0}, 334 { "String1", SbxSTRING, 0,NULL,0 }, 335 { "String2", SbxSTRING, 0,NULL,0 }, 336 { "Start", SbxSTRING, _OPT, NULL,0 }, 337 { "Compare", SbxINTEGER, _OPT, NULL,0 }, 338 { "Int", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Int),0 }, 339 { "number", SbxDOUBLE, 0,NULL,0 }, 340 { "IsArray", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsArray),0 }, 341 { "Variant", SbxVARIANT, 0,NULL,0 }, 342 { "IsDate", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsDate),0 }, 343 { "Variant", SbxVARIANT, 0,NULL,0 }, 344 { "IsEmpty", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsEmpty),0 }, 345 { "Variant", SbxVARIANT, 0,NULL,0 }, 346 { "IsError", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsError),0 }, 347 { "Variant", SbxVARIANT, 0,NULL,0 }, 348 { "IsMissing", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsMissing),0 }, 349 { "Variant", SbxVARIANT, 0,NULL,0 }, 350 { "IsNull", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsNull),0 }, 351 { "Variant", SbxVARIANT, 0,NULL,0 }, 352 { "IsNumeric", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsNumeric),0 }, 353 { "Variant", SbxVARIANT, 0,NULL,0 }, 354 { "IsObject", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsObject),0 }, 355 { "Variant", SbxVARIANT, 0,NULL,0 }, 356 { "IsUnoStruct", SbxBOOL, 1 | _FUNCTION, RTLNAME(IsUnoStruct),0 }, 357 { "Variant", SbxVARIANT, 0,NULL,0 }, 358 { "Join", SbxSTRING, 2 | _FUNCTION, RTLNAME(Join),0 }, 359 { "list", SbxOBJECT, 0,NULL,0 }, 360 { "delimiter", SbxSTRING, 0,NULL,0 }, 361 { "Kill", SbxNULL, 1 | _FUNCTION, RTLNAME(Kill),0 }, 362 { "filespec", SbxSTRING, 0,NULL,0 }, 363 { "LBound", SbxLONG, 1 | _FUNCTION, RTLNAME(LBound),0 }, 364 { "Variant", SbxVARIANT, 0,NULL,0 }, 365 { "LCase", SbxSTRING, 1 | _FUNCTION, RTLNAME(LCase),0 }, 366 { "string", SbxSTRING, 0,NULL,0 }, 367 { "Left", SbxSTRING, 2 | _FUNCTION, RTLNAME(Left),0 }, 368 { "String", SbxSTRING, 0,NULL,0 }, 369 { "Count", SbxLONG, 0,NULL,0 }, 370 { "Len", SbxLONG, 1 | _FUNCTION, RTLNAME(Len),0 }, 371 { "StringOrVariant", SbxVARIANT, 0,NULL,0 }, 372 { "LenB", SbxLONG, 1 | _FUNCTION, RTLNAME(Len),0 }, 373 { "StringOrVariant", SbxVARIANT, 0,NULL,0 }, 374 { "Load", SbxNULL, 1 | _FUNCTION, RTLNAME(Load),0 }, 375 { "object", SbxOBJECT, 0,NULL,0 }, 376 { "LoadPicture", SbxOBJECT, 1 | _FUNCTION, RTLNAME(LoadPicture),0 }, 377 { "string", SbxSTRING, 0,NULL,0 }, 378 { "Loc", SbxLONG, 1 | _FUNCTION, RTLNAME(Loc),0 }, 379 { "Channel", SbxINTEGER, 0,NULL,0 }, 380 { "Lof", SbxLONG, 1 | _FUNCTION, RTLNAME(Lof),0 }, 381 { "Channel", SbxINTEGER, 0,NULL,0 }, 382 { "Log", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Log),0 }, 383 { "number", SbxDOUBLE, 0,NULL,0 }, 384 { "LTrim", SbxSTRING, 1 | _FUNCTION, RTLNAME(LTrim),0 }, 385 { "string", SbxSTRING, 0,NULL,0 }, 386 387 { "MB_ABORTRETRYIGNORE", SbxINTEGER, _CPROP, RTLNAME(MB_ABORTRETRYIGNORE),0}, 388 { "MB_APPLMODAL", SbxINTEGER, _CPROP, RTLNAME(MB_APPLMODAL),0 }, 389 { "MB_DEFBUTTON1", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON1),0 }, 390 { "MB_DEFBUTTON2", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON2),0 }, 391 { "MB_DEFBUTTON3", SbxINTEGER, _CPROP, RTLNAME(MB_DEFBUTTON3),0 }, 392 { "MB_ICONEXCLAMATION", SbxINTEGER, _CPROP, RTLNAME(MB_ICONEXCLAMATION),0}, 393 { "MB_ICONINFORMATION", SbxINTEGER, _CPROP, RTLNAME(MB_ICONINFORMATION),0}, 394 { "MB_ICONQUESTION",SbxINTEGER, _CPROP, RTLNAME(MB_ICONQUESTION),0 }, 395 { "MB_ICONSTOP", SbxINTEGER, _CPROP, RTLNAME(MB_ICONSTOP),0 }, 396 { "MB_OK", SbxINTEGER, _CPROP, RTLNAME(MB_OK),0 }, 397 { "MB_OKCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_OKCANCEL),0 }, 398 { "MB_RETRYCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_RETRYCANCEL),0 }, 399 { "MB_SYSTEMMODAL", SbxINTEGER, _CPROP, RTLNAME(MB_SYSTEMMODAL),0 }, 400 { "MB_YESNO", SbxINTEGER, _CPROP, RTLNAME(MB_YESNO),0 }, 401 { "MB_YESNOCANCEL", SbxINTEGER, _CPROP, RTLNAME(MB_YESNOCANCEL),0 }, 402 403 { "Me", SbxOBJECT, 0 | _FUNCTION | _COMPTMASK, RTLNAME(Me),0 }, 404 { "Mid", SbxSTRING, 3 | _LFUNCTION,RTLNAME(Mid),0 }, 405 { "String", SbxSTRING, 0,NULL,0 }, 406 { "StartPos", SbxLONG, 0,NULL,0 }, 407 { "Length", SbxLONG, _OPT, NULL,0 }, 408 { "Minute", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Minute),0 }, 409 { "Date", SbxDATE, 0,NULL,0 }, 410 { "MkDir", SbxNULL, 1 | _FUNCTION, RTLNAME(MkDir),0 }, 411 { "pathname", SbxSTRING, 0,NULL,0 }, 412 { "Month", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Month),0 }, 413 { "Date", SbxDATE, 0,NULL,0 }, 414 { "MonthName", SbxSTRING, 2 | _FUNCTION | _COMPTMASK, RTLNAME(MonthName),0 }, 415 { "Month", SbxINTEGER, 0,NULL,0 }, 416 { "Abbreviate", SbxBOOL, _OPT, NULL,0 }, 417 { "MsgBox", SbxINTEGER, 5 | _FUNCTION, RTLNAME(MsgBox),0 }, 418 { "Prompt", SbxSTRING, 0,NULL,0 }, 419 { "Buttons", SbxINTEGER, _OPT, NULL,0 }, 420 { "Title", SbxSTRING, _OPT, NULL,0 }, 421 { "Helpfile", SbxSTRING, _OPT, NULL,0 }, 422 { "Context", SbxINTEGER, _OPT, NULL,0 }, 423 424 { "Nothing", SbxOBJECT, _CPROP, RTLNAME(Nothing),0 }, 425 { "Now", SbxDATE, _FUNCTION, RTLNAME(Now),0 }, 426 { "Null", SbxNULL, _CPROP, RTLNAME(Null),0 }, 427 428 { "Oct", SbxSTRING, 1 | _FUNCTION, RTLNAME(Oct),0 }, 429 { "number", SbxLONG, 0,NULL,0 }, 430 431 { "Partition", SbxSTRING, 4 | _FUNCTION, RTLNAME(Partition),0 }, 432 { "number", SbxLONG, 0,NULL,0 }, 433 { "start", SbxLONG, 0,NULL,0 }, 434 { "stop", SbxLONG, 0,NULL,0 }, 435 { "interval", SbxLONG, 0,NULL,0 }, 436 { "Pi", SbxDOUBLE, _CPROP, RTLNAME(PI),0 }, 437 { "Put", SbxNULL, 3 | _FUNCTION, RTLNAME(Put),0 }, 438 { "filenumber", SbxINTEGER, 0,NULL,0 }, 439 { "recordnumber", SbxLONG, 0,NULL,0 }, 440 { "variablename", SbxVARIANT, 0,NULL,0 }, 441 442 { "QBColor", SbxLONG, 1 | _FUNCTION, RTLNAME(QBColor),0 }, 443 { "number", SbxINTEGER, 0,NULL,0 }, 444 445 { "Randomize", SbxNULL, 1 | _FUNCTION, RTLNAME(Randomize),0 }, 446 { "Number", SbxDOUBLE, _OPT, NULL,0 }, 447 { "Red", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Red),0 }, 448 { "RGB-Value", SbxLONG, 0,NULL,0 }, 449 { "Reset", SbxNULL, 0 | _FUNCTION, RTLNAME(Reset),0 }, 450 { "ResolvePath", SbxSTRING, 1 | _FUNCTION, RTLNAME(ResolvePath),0 }, 451 { "Path", SbxSTRING, 0,NULL,0 }, 452 { "RGB", SbxLONG, 3 | _FUNCTION, RTLNAME(RGB),0 }, 453 { "Red", SbxINTEGER, 0,NULL,0 }, 454 { "Green", SbxINTEGER, 0,NULL,0 }, 455 { "Blue", SbxINTEGER, 0,NULL,0 }, 456 { "Replace", SbxSTRING, 6 | _FUNCTION, RTLNAME(Replace),0 }, 457 { "Expression", SbxSTRING, 0,NULL,0 }, 458 { "Find", SbxSTRING, 0,NULL,0 }, 459 { "Replace", SbxSTRING, 0,NULL,0 }, 460 { "Start", SbxINTEGER, _OPT, NULL,0 }, 461 { "Count", SbxINTEGER, _OPT, NULL,0 }, 462 { "Compare", SbxINTEGER, _OPT, NULL,0 }, 463 { "Right", SbxSTRING, 2 | _FUNCTION, RTLNAME(Right),0 }, 464 { "String", SbxSTRING, 0,NULL,0 }, 465 { "Count", SbxLONG, 0,NULL,0 }, 466 { "RmDir", SbxNULL, 1 | _FUNCTION, RTLNAME(RmDir),0 }, 467 { "pathname", SbxSTRING, 0,NULL,0 }, 468 { "Round", SbxDOUBLE, 2 | _FUNCTION | _COMPTMASK, RTLNAME(Round),0}, 469 { "Expression", SbxDOUBLE, 0,NULL,0 }, 470 { "Numdecimalplaces", SbxINTEGER, _OPT, NULL,0 }, 471 { "Rnd", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Rnd),0 }, 472 { "Number", SbxDOUBLE, _OPT, NULL,0 }, 473 { "RTL", SbxOBJECT, 0 | _FUNCTION | _COMPTMASK, RTLNAME(RTL),0}, 474 { "RTrim", SbxSTRING, 1 | _FUNCTION, RTLNAME(RTrim),0 }, 475 { "string", SbxSTRING, 0,NULL,0 }, 476 477 { "SavePicture", SbxNULL, 2 | _FUNCTION, RTLNAME(SavePicture),0 }, 478 { "object", SbxOBJECT, 0,NULL,0 }, 479 { "string", SbxSTRING, 0,NULL,0 }, 480 { "Second", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Second),0 }, 481 { "Date", SbxDATE, 0,NULL,0 }, 482 { "Seek", SbxLONG, 1 | _FUNCTION, RTLNAME(Seek),0 }, 483 { "Channel", SbxINTEGER, 0,NULL,0 }, 484 { "SendKeys", SbxNULL, 2 | _FUNCTION, RTLNAME(SendKeys),0 }, 485 { "String", SbxSTRING, 0,NULL,0 }, 486 { "Wait", SbxBOOL, _OPT, NULL,0 }, 487 { "SetAttr", SbxNULL, 2 | _FUNCTION, RTLNAME(SetAttr),0 }, 488 { "File" , SbxSTRING, 0,NULL,0 }, 489 { "Attributes", SbxINTEGER, 0,NULL,0 }, 490 { "SET_OFF", SbxINTEGER, _CPROP, RTLNAME(SET_OFF),0 }, 491 { "SET_ON", SbxINTEGER, _CPROP, RTLNAME(SET_ON),0 }, 492 { "SET_TAB", SbxINTEGER, _CPROP, RTLNAME(SET_TAB),0 }, 493 { "Sgn", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Sgn),0 }, 494 { "number", SbxDOUBLE, 0,NULL,0 }, 495 { "Shell", SbxLONG, 2 | _FUNCTION, RTLNAME(Shell),0 }, 496 { "Commandstring",SbxSTRING, 0,NULL,0 }, 497 { "WindowStyle", SbxINTEGER, _OPT, NULL,0 }, 498 { "Sin", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Sin),0 }, 499 { "number", SbxDOUBLE, 0,NULL,0 }, 500 { "Space", SbxSTRING, 1 | _FUNCTION, RTLNAME(Space),0 }, 501 { "string", SbxLONG, 0,NULL,0 }, 502 { "Spc", SbxSTRING, 1 | _FUNCTION, RTLNAME(Spc),0 }, 503 { "Count", SbxLONG, 0,NULL,0 }, 504 { "Split", SbxOBJECT, 3 | _FUNCTION, RTLNAME(Split),0 }, 505 { "expression", SbxSTRING, 0,NULL,0 }, 506 { "delimiter", SbxSTRING, 0,NULL,0 }, 507 { "count", SbxLONG, 0,NULL,0 }, 508 { "Sqr", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Sqr),0 }, 509 { "number", SbxDOUBLE, 0,NULL,0 }, 510 { "Str", SbxSTRING, 1 | _FUNCTION, RTLNAME(Str),0 }, 511 { "number", SbxDOUBLE, 0,NULL,0 }, 512 { "StrComp", SbxINTEGER, 3 | _FUNCTION, RTLNAME(StrComp),0 }, 513 { "String1", SbxSTRING, 0,NULL,0 }, 514 { "String2", SbxSTRING, 0,NULL,0 }, 515 { "Compare", SbxINTEGER, _OPT, NULL,0 }, 516 { "StrConv", SbxOBJECT, 3 | _FUNCTION, RTLNAME(StrConv),0 }, 517 { "String", SbxSTRING, 0,NULL,0 }, 518 { "Conversion", SbxSTRING, 0,NULL,0 }, 519 { "LCID", SbxINTEGER, _OPT,NULL,0 }, 520 { "String", SbxSTRING, 2 | _FUNCTION, RTLNAME(String),0 }, 521 { "Count", SbxLONG, 0,NULL,0 }, 522 { "Filler", SbxVARIANT, 0,NULL,0 }, 523 { "StrReverse", SbxSTRING, 1 | _FUNCTION | _COMPTMASK, RTLNAME(StrReverse),0 }, 524 { "String1", SbxSTRING, 0,NULL,0 }, 525 { "Switch", SbxVARIANT, 2 | _FUNCTION, RTLNAME(Switch),0 }, 526 { "Expression", SbxVARIANT, 0,NULL,0 }, 527 { "Value", SbxVARIANT, 0,NULL,0 }, 528 529 { "Tan", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Tan),0 }, 530 { "number", SbxDOUBLE, 0,NULL,0 }, 531 { "Time", SbxVARIANT, _LFUNCTION,RTLNAME(Time),0 }, 532 { "Timer", SbxDATE, _FUNCTION, RTLNAME(Timer),0 }, 533 { "TimeSerial", SbxDATE, 3 | _FUNCTION, RTLNAME(TimeSerial),0 }, 534 { "Hour", SbxLONG, 0,NULL,0 }, 535 { "Minute", SbxLONG, 0,NULL,0 }, 536 { "Second", SbxLONG, 0,NULL,0 }, 537 { "TimeValue", SbxDATE, 1 | _FUNCTION, RTLNAME(TimeValue),0 }, 538 { "String", SbxSTRING, 0,NULL,0 }, 539 { "TOGGLE", SbxINTEGER, _CPROP, RTLNAME(TOGGLE),0 }, 540 #ifdef DBG_TRACE_BASIC 541 { "TraceCommand", SbxNULL, 1 | _FUNCTION, RTLNAME(TraceCommand),0 }, 542 { "Command", SbxSTRING, 0,NULL,0 }, 543 #endif 544 { "Trim", SbxSTRING, 1 | _FUNCTION, RTLNAME(Trim),0 }, 545 { "String", SbxSTRING, 0,NULL,0 }, 546 { "True", SbxBOOL, _CPROP, RTLNAME(True),0 }, 547 { "TwipsPerPixelX", SbxLONG, _FUNCTION, RTLNAME(TwipsPerPixelX),0 }, 548 { "TwipsPerPixelY", SbxLONG, _FUNCTION, RTLNAME(TwipsPerPixelY),0 }, 549 550 { "TYP_AUTHORFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_AUTHORFLD),0 }, 551 { "TYP_CHAPTERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_CHAPTERFLD),0 }, 552 { "TYP_CONDTXTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_CONDTXTFLD),0 }, 553 { "TYP_DATEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DATEFLD),0 }, 554 { "TYP_DBFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBFLD),0 }, 555 { "TYP_DBNAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNAMEFLD),0 }, 556 { "TYP_DBNEXTSETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNEXTSETFLD),0 }, 557 { "TYP_DBNUMSETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBNUMSETFLD),0 }, 558 { "TYP_DBSETNUMBERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DBSETNUMBERFLD),0 }, 559 { "TYP_DDEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DDEFLD),0 }, 560 { "TYP_DOCINFOFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DOCINFOFLD),0 }, 561 { "TYP_DOCSTATFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_DOCSTATFLD),0 }, 562 { "TYP_EXTUSERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_EXTUSERFLD),0 }, 563 { "TYP_FILENAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FILENAMEFLD),0 }, 564 { "TYP_FIXDATEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FIXDATEFLD),0 }, 565 { "TYP_FIXTIMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FIXTIMEFLD),0 }, 566 { "TYP_FORMELFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_FORMELFLD),0 }, 567 { "TYP_GETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETFLD),0 }, 568 { "TYP_GETREFFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETREFFLD),0 }, 569 { "TYP_GETREFPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_GETREFPAGEFLD),0 }, 570 { "TYP_HIDDENPARAFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_HIDDENPARAFLD),0 }, 571 { "TYP_HIDDENTXTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_HIDDENTXTFLD),0 }, 572 { "TYP_INPUTFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_INPUTFLD),0 }, 573 { "TYP_INTERNETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_INTERNETFLD),0 }, 574 { "TYP_JUMPEDITFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_JUMPEDITFLD),0 }, 575 { "TYP_MACROFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_MACROFLD),0 }, 576 { "TYP_NEXTPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_NEXTPAGEFLD),0 }, 577 { "TYP_PAGENUMBERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_PAGENUMBERFLD),0 }, 578 { "TYP_POSTITFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_POSTITFLD),0 }, 579 { "TYP_PREVPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_PREVPAGEFLD),0 }, 580 { "TYP_SEQFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SEQFLD),0 }, 581 { "TYP_SETFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETFLD),0 }, 582 { "TYP_SETINPFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETINPFLD),0 }, 583 { "TYP_SETREFFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETREFFLD),0 }, 584 { "TYP_SETREFPAGEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_SETREFPAGEFLD),0 }, 585 { "TYP_TEMPLNAMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_TEMPLNAMEFLD),0}, 586 { "TYP_TIMEFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_TIMEFLD),0 }, 587 { "TYP_USERFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_USERFLD),0 }, 588 { "TYP_USRINPFLD", SbxINTEGER, _CPROP, RTLNAME(TYP_USRINPFLD),0 }, 589 590 { "TypeLen", SbxINTEGER, 1 | _FUNCTION, RTLNAME(TypeLen),0 }, 591 { "Var", SbxVARIANT, 0,NULL,0 }, 592 { "TypeName", SbxSTRING, 1 | _FUNCTION, RTLNAME(TypeName),0 }, 593 { "Var", SbxVARIANT, 0,NULL,0 }, 594 595 { "UBound", SbxLONG, 1 | _FUNCTION, RTLNAME(UBound),0 }, 596 { "Var", SbxVARIANT, 0,NULL,0 }, 597 { "UCase", SbxSTRING, 1 | _FUNCTION, RTLNAME(UCase),0 }, 598 { "String", SbxSTRING, 0,NULL,0 }, 599 { "Unload", SbxNULL, 1 | _FUNCTION, RTLNAME(Unload),0 }, 600 { "Dialog", SbxOBJECT, 0,NULL,0 }, 601 602 { "Val", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Val),0 }, 603 { "String", SbxSTRING, 0,NULL,0 }, 604 { "VarType", SbxINTEGER, 1 | _FUNCTION, RTLNAME(VarType),0 }, 605 { "Var", SbxVARIANT, 0,NULL,0 }, 606 { "V_EMPTY", SbxINTEGER, _CPROP, RTLNAME(V_EMPTY),0 }, 607 { "V_NULL", SbxINTEGER, _CPROP, RTLNAME(V_NULL),0 }, 608 { "V_INTEGER", SbxINTEGER, _CPROP, RTLNAME(V_INTEGER),0 }, 609 { "V_LONG", SbxINTEGER, _CPROP, RTLNAME(V_LONG),0 }, 610 { "V_SINGLE", SbxINTEGER, _CPROP, RTLNAME(V_SINGLE),0 }, 611 { "V_DOUBLE", SbxINTEGER, _CPROP, RTLNAME(V_DOUBLE),0 }, 612 { "V_CURRENCY", SbxINTEGER, _CPROP, RTLNAME(V_CURRENCY),0 }, 613 { "V_DATE", SbxINTEGER, _CPROP, RTLNAME(V_DATE),0 }, 614 { "V_STRING", SbxINTEGER, _CPROP, RTLNAME(V_STRING),0 }, 615 616 { "Wait", SbxNULL, 1 | _FUNCTION, RTLNAME(Wait),0 }, 617 { "Milliseconds", SbxLONG, 0,NULL,0 }, 618 //#i64882# 619 { "WaitUntil", SbxNULL, 1 | _FUNCTION, RTLNAME(WaitUntil),0 }, 620 { "Date", SbxDOUBLE, 0,NULL,0 }, 621 { "Weekday", SbxINTEGER, 2 | _FUNCTION, RTLNAME(Weekday),0 }, 622 { "Date", SbxDATE, 0,NULL,0 }, 623 { "Firstdayofweek", SbxINTEGER, _OPT, NULL,0 }, 624 { "WeekdayName", SbxSTRING, 3 | _FUNCTION | _COMPTMASK, RTLNAME(WeekdayName),0 }, 625 { "Weekday", SbxINTEGER, 0,NULL,0 }, 626 { "Abbreviate", SbxBOOL, _OPT, NULL,0 }, 627 { "Firstdayofweek", SbxINTEGER, _OPT, NULL,0 }, 628 { "Year", SbxINTEGER, 1 | _FUNCTION, RTLNAME(Year),0 }, 629 { "Date", SbxDATE, 0,NULL,0 }, 630 631 { NULL, SbxNULL, -1,NULL,0 }}; // Tabellenende 632 633 SbiStdObject::SbiStdObject( const String& r, StarBASIC* pb ) : SbxObject( r ) 634 { 635 // Muessen wir die Hashcodes initialisieren? 636 Methods* p = aMethods; 637 if( !p->nHash ) 638 while( p->nArgs != -1 ) 639 { 640 String aName_ = String::CreateFromAscii( p->pName ); 641 p->nHash = SbxVariable::MakeHashCode( aName_ ); 642 p += ( p->nArgs & _ARGSMASK ) + 1; 643 } 644 645 // #i92642: Remove default properties 646 Remove( XubString( RTL_CONSTASCII_USTRINGPARAM("Name") ), SbxCLASS_DONTCARE ); 647 Remove( XubString( RTL_CONSTASCII_USTRINGPARAM("Parent") ), SbxCLASS_DONTCARE ); 648 649 SetParent( pb ); 650 651 pStdFactory = new SbStdFactory; 652 SbxBase::AddFactory( pStdFactory ); 653 654 Insert( new SbStdClipboard ); 655 } 656 657 SbiStdObject::~SbiStdObject() 658 { 659 SbxBase::RemoveFactory( pStdFactory ); 660 delete pStdFactory; 661 } 662 663 // Suche nach einem Element: 664 // Hier wird linear durch die Methodentabelle gegangen, bis eine 665 // passende Methode gefunden wurde. Auf Grund der Bits im nArgs-Feld 666 // wird dann die passende Instanz eines SbxObjElement generiert. 667 // Wenn die Methode/Property nicht gefunden wurde, nur NULL ohne 668 // Fehlercode zurueckliefern, da so auch eine ganze Chain von 669 // Objekten nach der Methode/Property befragt werden kann. 670 671 SbxVariable* SbiStdObject::Find( const String& rName, SbxClassType t ) 672 { 673 // Bereits eingetragen? 674 SbxVariable* pVar = SbxObject::Find( rName, t ); 675 if( !pVar ) 676 { 677 // sonst suchen 678 sal_uInt16 nHash_ = SbxVariable::MakeHashCode( rName ); 679 Methods* p = aMethods; 680 sal_Bool bFound = sal_False; 681 short nIndex = 0; 682 sal_uInt16 nSrchMask = _TYPEMASK; 683 switch( t ) 684 { 685 case SbxCLASS_METHOD: nSrchMask = _METHOD; break; 686 case SbxCLASS_PROPERTY: nSrchMask = _PROPERTY; break; 687 case SbxCLASS_OBJECT: nSrchMask = _OBJECT; break; 688 default: break; 689 } 690 while( p->nArgs != -1 ) 691 { 692 if( ( p->nArgs & nSrchMask ) 693 && ( p->nHash == nHash_ ) 694 && ( rName.EqualsIgnoreCaseAscii( p->pName ) ) ) 695 { 696 bFound = sal_True; 697 if( p->nArgs & _COMPTMASK ) 698 { 699 SbiInstance* pInst = pINST; 700 if( !pInst || !pInst->IsCompatibility() ) 701 bFound = sal_False; 702 } 703 break; 704 } 705 nIndex += ( p->nArgs & _ARGSMASK ) + 1; 706 p = aMethods + nIndex; 707 } 708 709 if( bFound ) 710 { 711 // Args-Felder isolieren: 712 short nAccess = ( p->nArgs & _RWMASK ) >> 8; 713 short nType = ( p->nArgs & _TYPEMASK ); 714 if( p->nArgs & _CONST ) 715 nAccess |= SBX_CONST; 716 String aName_ = String::CreateFromAscii( p->pName ); 717 SbxClassType eCT = SbxCLASS_OBJECT; 718 if( nType & _PROPERTY ) 719 eCT = SbxCLASS_PROPERTY; 720 else if( nType & _METHOD ) 721 eCT = SbxCLASS_METHOD; 722 pVar = Make( aName_, eCT, p->eType ); 723 pVar->SetUserData( nIndex + 1 ); 724 pVar->SetFlags( nAccess ); 725 } 726 } 727 return pVar; 728 } 729 730 // SetModified mu� bei der RTL abgklemmt werden 731 void SbiStdObject::SetModified( sal_Bool ) 732 { 733 } 734 735 // Aufruf einer Property oder Methode. 736 737 void SbiStdObject::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType, 738 const SfxHint& rHint, const TypeId& rHintType ) 739 740 { 741 const SbxHint* pHint = PTR_CAST(SbxHint,&rHint); 742 if( pHint ) 743 { 744 SbxVariable* pVar = pHint->GetVar(); 745 SbxArray* pPar_ = pVar->GetParameters(); 746 sal_uIntPtr t = pHint->GetId(); 747 sal_uInt16 nCallId = (sal_uInt16) pVar->GetUserData(); 748 if( nCallId ) 749 { 750 if( t == SBX_HINT_INFOWANTED ) 751 pVar->SetInfo( GetInfo( (short) pVar->GetUserData() ) ); 752 else 753 { 754 sal_Bool bWrite = sal_False; 755 if( t == SBX_HINT_DATACHANGED ) 756 bWrite = sal_True; 757 if( t == SBX_HINT_DATAWANTED || bWrite ) 758 { 759 RtlCall p = (RtlCall) aMethods[ nCallId-1 ].pFunc; 760 SbxArrayRef rPar( pPar_ ); 761 if( !pPar_ ) 762 { 763 rPar = pPar_ = new SbxArray; 764 pPar_->Put( pVar, 0 ); 765 } 766 p( (StarBASIC*) GetParent(), *pPar_, bWrite ); 767 return; 768 } 769 } 770 } 771 SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType ); 772 } 773 } 774 775 // Zusammenbau der Infostruktur fuer einzelne Elemente 776 // Falls nIdx = 0, nix erzeugen (sind Std-Props!) 777 778 SbxInfo* SbiStdObject::GetInfo( short nIdx ) 779 { 780 if( !nIdx ) 781 return NULL; 782 Methods* p = &aMethods[ --nIdx ]; 783 // Wenn mal eine Hilfedatei zur Verfuegung steht: 784 // SbxInfo* pInfo_ = new SbxInfo( Hilfedateiname, p->nHelpId ); 785 SbxInfo* pInfo_ = new SbxInfo; 786 short nPar = p->nArgs & _ARGSMASK; 787 for( short i = 0; i < nPar; i++ ) 788 { 789 p++; 790 String aName_ = String::CreateFromAscii( p->pName ); 791 sal_uInt16 nFlags_ = ( p->nArgs >> 8 ) & 0x03; 792 if( p->nArgs & _OPT ) 793 nFlags_ |= SBX_OPTIONAL; 794 pInfo_->AddParam( aName_, p->eType, nFlags_ ); 795 } 796 return pInfo_; 797 } 798 799