/*
 * 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);
    }
}