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

#pragma makedep regtypelib

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