LCOV - code coverage report
Current view: top level - basic/source/runtime - stdobj.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 79 97 81.4 %
Date: 2012-08-25 Functions: 6 9 66.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 81 198 40.9 %

           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: */

Generated by: LCOV version 1.10