/*
 * Copyright 2011 Jacek Caban for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

import "oaidl.idl";

#include "vbscript_defs.h"

[
    helpstring("Microsoft VBScript Globals"),
    uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b185),
    version(1.0)
]
library VBScript_Global
{
    importlib("stdole2.tlb");

    [
        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2B186)
    ]
    dispinterface GlobalObj {
    properties:
        [id(DISPID_GLOBAL_VBUSESYSTEM), readonly]
        VARIANT vbUseSystem;

        [id(DISPID_GLOBAL_USESYSTEMDAYOFWEEK), readonly]
        VARIANT vbUseSystemDayOfWeek;

        [id(DISPID_GLOBAL_VBSUNDAY), readonly]
        VARIANT vbSunday;

        [id(DISPID_GLOBAL_VBMONDAY), readonly]
        VARIANT vbMonday;

        [id(DISPID_GLOBAL_VBTUESDAY), readonly]
        VARIANT vbTuesday;

        [id(DISPID_GLOBAL_VBWEDNESDAY), readonly]
        VARIANT vbWednesday;

        [id(DISPID_GLOBAL_VBTHURSDAY), readonly]
        VARIANT vbThursday;

        [id(DISPID_GLOBAL_VBFRIDAY), readonly]
        VARIANT vbFriday;

        [id(DISPID_GLOBAL_VBSATURDAY), readonly]
        VARIANT vbSaturday;

        [id(DISPID_GLOBAL_VBFIRSTJAN1), readonly]
        VARIANT vbFirstJan1;

        [id(DISPID_GLOBAL_VBFIRSTFOURDAYS), readonly]
        VARIANT vbFirstFourDays;

        [id(DISPID_GLOBAL_VBFIRSTFULLWEEK), readonly]
        VARIANT vbFirstFullWeek;

        [id(DISPID_GLOBAL_VBOKONLY), readonly]
        VARIANT vbOKOnly;

        [id(DISPID_GLOBAL_VBOKCANCEL), readonly]
        VARIANT vbOKCancel;

        [id(DISPID_GLOBAL_VBABORTRETRYIGNORE), readonly]
        VARIANT vbAbortRetryIgnore;

        [id(DISPID_GLOBAL_VBYESNOCANCEL), readonly]
        VARIANT vbYesNoCancel;

        [id(DISPID_GLOBAL_VBYESNO), readonly]
        VARIANT vbYesNo;

        [id(DISPID_GLOBAL_VBRETRYCANCEL), readonly]
        VARIANT vbRetryCancel;

        [id(DISPID_GLOBAL_VBCRITICAL), readonly]
        VARIANT vbCritical;

        [id(DISPID_GLOBAL_VBQUESTION), readonly]
        VARIANT vbQuestion;

        [id(DISPID_GLOBAL_VBEXCLAMATION), readonly]
        VARIANT vbExclamation;

        [id(DISPID_GLOBAL_VBINFORMATION), readonly]
        VARIANT vbInformation;

        [id(DISPID_GLOBAL_VBDEFAULTBUTTON1), readonly]
        VARIANT vbDefaultButton1;

        [id(DISPID_GLOBAL_VBDEFAULTBUTTON2), readonly]
        VARIANT vbDefaultButton2;

        [id(DISPID_GLOBAL_VBDEFAULTBUTTON3), readonly]
        VARIANT vbDefaultButton3;

        [id(DISPID_GLOBAL_VBDEFAULTBUTTON4), readonly]
        VARIANT vbDefaultButton4;

        [id(DISPID_GLOBAL_VBAPPLICATIONMODAL), readonly]
        VARIANT vbApplicationModal;

        [id(DISPID_GLOBAL_VBSYSTEMMODAL), readonly]
        VARIANT vbSystemModal;

        [id(DISPID_GLOBAL_VBOK), readonly]
        VARIANT vbOK;

        [id(DISPID_GLOBAL_VBCANCEL), readonly]
        VARIANT vbCancel;

        [id(DISPID_GLOBAL_VBABORT), readonly]
        VARIANT vbAbort;

        [id(DISPID_GLOBAL_VBRETRY), readonly]
        VARIANT vbRetry;

        [id(DISPID_GLOBAL_VBIGNORE), readonly]
        VARIANT vbIgnore;

        [id(DISPID_GLOBAL_VBYES), readonly]
        VARIANT vbYes;

        [id(DISPID_GLOBAL_VBNO), readonly]
        VARIANT vbNo;

        [id(DISPID_GLOBAL_VBEMPTY), readonly]
        VARIANT vbEmpty;

        [id(DISPID_GLOBAL_VBNULL), readonly]
        VARIANT vbNull;

        [id(DISPID_GLOBAL_VBINTEGER), readonly]
        VARIANT vbInteger;

        [id(DISPID_GLOBAL_VBLONG), readonly]
        VARIANT vbLong;

        [id(DISPID_GLOBAL_VBSINGLE), readonly]
        VARIANT vbSingle;

        [id(DISPID_GLOBAL_VBDOUBLE), readonly]
        VARIANT vbDouble;

        [id(DISPID_GLOBAL_VBCURRENCY), readonly]
        VARIANT vbCurrency;

        [id(DISPID_GLOBAL_VBDATE), readonly]
        VARIANT vbDate;

        [id(DISPID_GLOBAL_VBSTRING), readonly]
        VARIANT vbString;

        [id(DISPID_GLOBAL_VBOBJECT), readonly]
        VARIANT vbObject;

        [id(DISPID_GLOBAL_VBERROR), readonly]
        VARIANT vbError;

        [id(DISPID_GLOBAL_VBBOOLEAN), readonly]
        VARIANT vbBoolean;

        [id(DISPID_GLOBAL_VBVARIANT), readonly]
        VARIANT vbVariant;

        [id(DISPID_GLOBAL_VBDATAOBJECT), readonly]
        VARIANT vbDataObject;

        [id(DISPID_GLOBAL_VBDECIMAL), readonly]
        VARIANT vbDecimal;

        [id(DISPID_GLOBAL_VBBYTE), readonly]
        VARIANT vbByte;

        [id(DISPID_GLOBAL_VBARRAY), readonly]
        VARIANT vbArray;

        [id(DISPID_GLOBAL_VBTRUE), readonly]
        VARIANT vbTrue;

        [id(DISPID_GLOBAL_VBFALSE), readonly]
        VARIANT vbFalse;

        [id(DISPID_GLOBAL_VBUSEDEFAULT), readonly]
        VARIANT vbUseDefault;

        [id(DISPID_GLOBAL_VBBINARYCOMPARE), readonly]
        VARIANT vbBinaryCompare;

        [id(DISPID_GLOBAL_VBTEXTCOMPARE), readonly]
        VARIANT vbTextCompare;

        [id(DISPID_GLOBAL_VBDATABASECOMPARE), readonly]
        VARIANT vbDatabaseCompare;

        [id(DISPID_GLOBAL_VBGENERALDATE), readonly]
        VARIANT vbGeneralDate;

        [id(DISPID_GLOBAL_VBLONGDATE), readonly]
        VARIANT vbLongDate;

        [id(DISPID_GLOBAL_VBSHORTDATE), readonly]
        VARIANT vbShortDate;

        [id(DISPID_GLOBAL_VBLONGTIME), readonly]
        VARIANT vbLongTime;

        [id(DISPID_GLOBAL_VBSHORTTIME), readonly]
        VARIANT vbShortTime;

        [id(DISPID_GLOBAL_VBOBJECTERROR), readonly]
        VARIANT vbObjectError;

        [id(DISPID_GLOBAL_VBBLACK), readonly]
        VARIANT vbBlack;

        [id(DISPID_GLOBAL_VBBLUE), readonly]
        VARIANT vbBlue;

        [id(DISPID_GLOBAL_VBCYAN), readonly]
        VARIANT vbCyan;

        [id(DISPID_GLOBAL_VBGREEN), readonly]
        VARIANT vbGreen;

        [id(DISPID_GLOBAL_VBMAGENTA), readonly]
        VARIANT vbMagenta;

        [id(DISPID_GLOBAL_VBRED), readonly]
        VARIANT vbRed;

        [id(DISPID_GLOBAL_VBWHITE), readonly]
        VARIANT vbWhite;

        [id(DISPID_GLOBAL_VBYELLOW), readonly]
        VARIANT vbYellow;

        [id(DISPID_GLOBAL_VBCR), readonly]
        VARIANT vbCr;

        [id(DISPID_GLOBAL_VBCRLF), readonly]
        VARIANT vbCrLf;

        [id(DISPID_GLOBAL_VBNEWLINE), readonly]
        VARIANT vbNewLine;

        [id(DISPID_GLOBAL_VBFORMFEED), readonly]
        VARIANT vbFormFeed;

        [id(DISPID_GLOBAL_VBLF), readonly]
        VARIANT vbLf;

        [id(DISPID_GLOBAL_VBNULLCHAR), readonly]
        VARIANT vbNullChar;

        [id(DISPID_GLOBAL_VBNULLSTRING), readonly]
        VARIANT vbNullString;

        [id(DISPID_GLOBAL_VBTAB), readonly]
        VARIANT vbTab;

        [id(DISPID_GLOBAL_VBVERTICALTAB), readonly]
        VARIANT vbVerticalTab;

        [id(DISPID_GLOBAL_VBMSGBOXHELPBUTTON), readonly]
        VARIANT vbMsgBoxHelpButton;

        [id(DISPID_GLOBAL_VBMSGBOXSETFOREGROUND), readonly]
        VARIANT vbMsgBoxSetForeground;

        [id(DISPID_GLOBAL_VBMSGBOXRIGHT), readonly]
        VARIANT vbMsgBoxRight;

        [id(DISPID_GLOBAL_VBMSGBOXRTLREADING), readonly]
        VARIANT vbMsgBoxRtlReading;

    methods:
        [id(DISPID_GLOBAL_CCUR)]
        VARIANT CCur(VARIANT expression);

        [id(DISPID_GLOBAL_CINT)]
        VARIANT CInt(VARIANT expression);

        [id(DISPID_GLOBAL_CLNG)]
        VARIANT CLng(VARIANT expression);

        [id(DISPID_GLOBAL_CBOOL)]
        VARIANT CBool(VARIANT expression);

        [id(DISPID_GLOBAL_CBYTE)]
        VARIANT CByte(VARIANT expression);

        [id(DISPID_GLOBAL_CDATE)]
        VARIANT CDate(VARIANT expression);

        [id(DISPID_GLOBAL_CDBL)]
        VARIANT CDbl(VARIANT expression);

        [id(DISPID_GLOBAL_CSNG)]
        VARIANT CSng(VARIANT expression);

        [id(DISPID_GLOBAL_CSTR)]
        VARIANT CStr(VARIANT expression);

        [id(DISPID_GLOBAL_HEX)]
        VARIANT Hex(VARIANT number);

        [id(DISPID_GLOBAL_OCT)]
        VARIANT Oct(VARIANT number);

        [id(DISPID_GLOBAL_VARTYPE)]
        VARIANT VarType(VARIANT varname);

        [id(DISPID_GLOBAL_ISDATE)]
        VARIANT IsDate(VARIANT expression);

        [id(DISPID_GLOBAL_ISEMPTY)]
        VARIANT IsEmpty(VARIANT expression);

        [id(DISPID_GLOBAL_ISNULL)]
        VARIANT IsNull(VARIANT expression);

        [id(DISPID_GLOBAL_ISNUMERIC)]
        VARIANT IsNumeric(VARIANT expression);

        [id(DISPID_GLOBAL_ISARRAY)]
        VARIANT IsArray(VARIANT expression);

        [id(DISPID_GLOBAL_ISOBJECT)]
        VARIANT IsObject(VARIANT identifier);

        [id(DISPID_GLOBAL_ATN)]
        VARIANT Atn(VARIANT number);

        [id(DISPID_GLOBAL_COS)]
        VARIANT Cos(VARIANT number);

        [id(DISPID_GLOBAL_SIN)]
        VARIANT Sin(VARIANT number);

        [id(DISPID_GLOBAL_TAN)]
        VARIANT Tan(VARIANT number);

        [id(DISPID_GLOBAL_EXP)]
        VARIANT Exp(VARIANT number);

        [id(DISPID_GLOBAL_LOG)]
        VARIANT Log(VARIANT number);

        [id(DISPID_GLOBAL_SQR)]
        VARIANT Sqr(VARIANT number);

        [id(DISPID_GLOBAL_RANDOMIZE)]
        VARIANT Randomize(VARIANT number);

        [id(DISPID_GLOBAL_RND)]
        VARIANT Rnd(VARIANT number);

        [id(DISPID_GLOBAL_TIMER)]
        VARIANT Timer();

        [id(DISPID_GLOBAL_LBOUND)]
        VARIANT LBound(VARIANT arrayname);

        [id(DISPID_GLOBAL_UBOUND)]
        VARIANT UBound(VARIANT arrayname);

        [id(DISPID_GLOBAL_RGB)]
        VARIANT RGB(
                VARIANT red,
                VARIANT green,
                VARIANT blue);

        [id(DISPID_GLOBAL_LEN)]
        VARIANT Len(VARIANT string);

        [id(DISPID_GLOBAL_LENB)]
        VARIANT LenB(VARIANT string);

        [id(DISPID_GLOBAL_LEFT)]
        VARIANT Left(
                VARIANT string,
                VARIANT length);

        [id(DISPID_GLOBAL_LEFTB)]
        VARIANT LeftB(
                VARIANT string,
                VARIANT length);

        [id(DISPID_GLOBAL_RIGHT)]
        VARIANT Right(
                VARIANT string,
                VARIANT length);

        [id(DISPID_GLOBAL_RIGHTB)]
        VARIANT RightB(
                VARIANT string,
                VARIANT length);

        [id(DISPID_GLOBAL_MID)]
        VARIANT Mid(
                VARIANT string,
                VARIANT start,
                [optional] VARIANT length);

        [id(DISPID_GLOBAL_MIDB)]
        VARIANT MidB(
                VARIANT string,
                VARIANT start,
                [optional] VARIANT length);

        [id(DISPID_GLOBAL_STRCOMP)]
        VARIANT StrComp(
                VARIANT string1,
                VARIANT string2,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_LCASE)]
        VARIANT LCase(VARIANT string);

        [id(DISPID_GLOBAL_UCASE)]
        VARIANT UCase(VARIANT string);

        [id(DISPID_GLOBAL_LTRIM)]
        VARIANT LTrim(VARIANT string);

        [id(DISPID_GLOBAL_RTRIM)]
        VARIANT RTrim(VARIANT string);

        [id(DISPID_GLOBAL_TRIM)]
        VARIANT Trim(VARIANT string);

        [id(DISPID_GLOBAL_SPACE)]
        VARIANT Space(VARIANT number);

        [id(DISPID_GLOBAL_STRING)]
        VARIANT string(
                [optional] VARIANT number,
                [optional] VARIANT character);

        [id(DISPID_GLOBAL_INSTR)]
        VARIANT InStr(
                VARIANT start,
                VARIANT string,
                VARIANT string2,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_INSTRB)]
        VARIANT InStrB(
                VARIANT start,
                VARIANT string,
                VARIANT string2,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_ASCB)]
        VARIANT AscB(VARIANT string);

        [id(DISPID_GLOBAL_CHRB)]
        VARIANT ChrB(VARIANT charcode);

        [id(DISPID_GLOBAL_ASC)]
        VARIANT Asc(VARIANT string);

        [id(DISPID_GLOBAL_CHR)]
        VARIANT Chr(VARIANT charcode);

        [id(DISPID_GLOBAL_ASCW)]
        VARIANT AscW(VARIANT string);

        [id(DISPID_GLOBAL_CHRW)]
        VARIANT ChrW(VARIANT charcode);

        [id(DISPID_GLOBAL_ABS)]
        VARIANT Abs(VARIANT number);

        [id(DISPID_GLOBAL_FIX)]
        VARIANT Fix(VARIANT number);

        [id(DISPID_GLOBAL_INT)]
        VARIANT Int(VARIANT number);

        [id(DISPID_GLOBAL_SGN)]
        VARIANT Sgn(VARIANT number);

        [id(DISPID_GLOBAL_NOW)]
        VARIANT Now();

        [id(DISPID_GLOBAL_DATE)]
        VARIANT Date();

        [id(DISPID_GLOBAL_TIME)]
        VARIANT Time();

        [id(DISPID_GLOBAL_DAY)]
        VARIANT Day(VARIANT Date);

        [id(DISPID_GLOBAL_MONTH)]
        VARIANT Month(VARIANT Date);

        [id(DISPID_GLOBAL_WEEKDAY)]
        VARIANT Weekday(
                VARIANT Date,
                [optional] VARIANT firstdayofweek);

        [id(DISPID_GLOBAL_YEAR)]
        VARIANT Year(VARIANT Date);

        [id(DISPID_GLOBAL_HOUR)]
        VARIANT Hour(VARIANT Time);

        [id(DISPID_GLOBAL_MINUTE)]
        VARIANT Minute(VARIANT Time);

        [id(DISPID_GLOBAL_SECOND)]
        VARIANT Second(VARIANT Time);

        [id(DISPID_GLOBAL_DATEVALUE)]
        VARIANT DateValue(VARIANT Date);

        [id(DISPID_GLOBAL_TIMEVALUE)]
        VARIANT TimeValue(VARIANT Time);

        [id(DISPID_GLOBAL_DATESERIAL)]
        VARIANT DateSerial(
                VARIANT Year,
                VARIANT Month,
                VARIANT Date);

        [id(DISPID_GLOBAL_TIMESERIAL)]
        VARIANT TimeSerial(
                VARIANT Hour,
                VARIANT Minute,
                VARIANT Second);

        [id(DISPID_GLOBAL_INPUTBOX)]
        VARIANT InputBox(
                VARIANT prompt,
                [optional] VARIANT title,
                [optional] VARIANT defaultValue,
                [optional] VARIANT xpos,
                [optional] VARIANT ypos,
                [optional] VARIANT helpfile,
                [optional] VARIANT context);

        [id(DISPID_GLOBAL_MSGBOX)]
        VARIANT MsgBox(
                VARIANT prompt,
                [optional] VARIANT buttons,
                [optional] VARIANT title,
                [optional] VARIANT helpfile,
                [optional] VARIANT context);

        [id(DISPID_GLOBAL_CREATEOBJECT)]
        VARIANT CreateObject(VARIANT classValue);

        [id(DISPID_GLOBAL_GETOBJECT)]
        VARIANT GetObject(
                [optional] VARIANT pathname,
                [optional] VARIANT classValue);

        [id(DISPID_GLOBAL_DATEADD)]
        VARIANT DateAdd(
                VARIANT interval,
                VARIANT number,
                VARIANT Date);

        [id(DISPID_GLOBAL_DATEDIFF)]
        VARIANT DateDiff(
                VARIANT interval,
                VARIANT date1,
                VARIANT date2,
                [optional] VARIANT firstdayofweek,
                [optional] VARIANT firstdayofyear);

        [id(DISPID_GLOBAL_DATEPART)]
        VARIANT DatePart(
                VARIANT interval,
                VARIANT Date,
                [optional] VARIANT firstdayofweek,
                [optional] VARIANT firstdayofyear);

        [id(DISPID_GLOBAL_TYPENAME)]
        VARIANT TypeName(VARIANT varname);

        [id(DISPID_GLOBAL_ARRAY)]
        VARIANT Array(VARIANT arglist);

        [id(DISPID_GLOBAL_ERASE)]
        VARIANT Erase(VARIANT arraylist);

        [id(DISPID_GLOBAL_FILTER)]
        VARIANT Filter(
                VARIANT InputStrings,
                VARIANT Value,
                [optional] VARIANT Include,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_JOIN)]
        VARIANT Join(
                VARIANT list,
                [optional] VARIANT delimiter);

        [id(DISPID_GLOBAL_SPLIT)]
        VARIANT Split(
                VARIANT expression,
                [optional] VARIANT delimiter,
                [optional] VARIANT count,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_REPLACE)]
        VARIANT Replace(
                VARIANT expression,
                VARIANT find,
                VARIANT replacement,
                [optional] VARIANT start,
                [optional] VARIANT count,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_STRREVERSE)]
        VARIANT StrReverse(VARIANT string1);

        [id(DISPID_GLOBAL_INSTRREV)]
        VARIANT InStrRev(
                VARIANT string1,
                VARIANT string2,
                [optional] VARIANT start,
                [optional] VARIANT compare);

        [id(DISPID_GLOBAL_LOADPICTURE)]
        VARIANT LoadPicture([optional] VARIANT stringexpression);

        [id(DISPID_GLOBAL_SCRIPTENGINE)]
        VARIANT ScriptEngine();

        [id(DISPID_GLOBAL_SCRIPTENGINEMAJORVERSION)]
        VARIANT ScriptEngineMajorVersion();

        [id(DISPID_GLOBAL_SCRIPTENGINEMINORVERSION)]
        VARIANT ScriptEngineMinorVersion();

        [id(DISPID_GLOBAL_SCRIPTENGINEBUILDVERSION)]
        VARIANT ScriptEngineBuildVersion();

        [id(DISPID_GLOBAL_FORMATNUMBER)]
        VARIANT FormatNumber(
                VARIANT expression,
                [optional] VARIANT NumDigitsAfterDecimal,
                [optional] VARIANT IncludeLeadingDigit,
                [optional] VARIANT UseParensForNegativeNumbers,
                [optional] VARIANT GroupDigits);

        [id(DISPID_GLOBAL_FORMATCURRENCY)]
        VARIANT FormatCurrency(
                VARIANT expression,
                [optional] VARIANT NumDigitsAfterDecimal,
                [optional] VARIANT IncludeLeadingDigit,
                [optional] VARIANT UseParensForNegativeNumbers,
                [optional] VARIANT GroupDigits);

        [id(DISPID_GLOBAL_FORMATPERCENT)]
        VARIANT FormatPercent(
                VARIANT expression,
                [optional] VARIANT NumDigitsAfterDecimal,
                [optional] VARIANT IncludeLeadingDigit,
                [optional] VARIANT UseParensForNegativeNumbers,
                [optional] VARIANT GroupDigits);

        [id(DISPID_GLOBAL_FORMATDATETIME)]
        VARIANT FormatDateTime(
                VARIANT Date,
                [optional] VARIANT NamedFormat);

        [id(DISPID_GLOBAL_WEEKDAYNAME)]
        VARIANT WeekdayName(
                VARIANT Weekday,
                VARIANT abbreviate,
                VARIANT firstdayofweek);

        [id(DISPID_GLOBAL_MONTHNAME)]
        VARIANT MonthName(
                VARIANT Month,
                [optional] VARIANT abbreviate);

        [id(DISPID_GLOBAL_ROUND)]
        VARIANT Round(
                VARIANT expression,
                [optional] VARIANT numdecimalplaces);

        [id(DISPID_GLOBAL_ESCAPE)]
        VARIANT Escape(VARIANT string);

        [id(DISPID_GLOBAL_UNESCAPE)]
        VARIANT Unescape(VARIANT string);

        [id(DISPID_GLOBAL_EVAL)]
        VARIANT Eval(VARIANT string);

        [id(DISPID_GLOBAL_EXECUTE)]
        VARIANT Execute(VARIANT string);

        [id(DISPID_GLOBAL_EXECUTEGLOBAL)]
        VARIANT ExecuteGlobal(VARIANT string);

        [id(DISPID_GLOBAL_GETREF)]
        VARIANT GetRef(VARIANT string);
    }

    [
        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b187)
    ]
    dispinterface ErrObj {
    properties:
        [id(DISPID_ERR_DESCRIPTION)]
        VARIANT Description;

        [id(DISPID_ERR_HELPCONTEXT)]
        VARIANT HelpContext;

        [id(DISPID_ERR_HELPFILE)]
        VARIANT helpfile;

        [id(DISPID_ERR_NUMBER)]
        VARIANT number;

        [id(DISPID_ERR_SOURCE)]
        VARIANT Source;

    methods:
        [id(DISPID_ERR_CLEAR)]
        VARIANT Clear();

        [id(DISPID_ERR_RAISE)]
        VARIANT Raise(
                VARIANT number,
                VARIANT Source,
                VARIANT Description,
                VARIANT helpfile,
                VARIANT HelpContext);
    }
}
