diff win32/oleauto.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/oleauto.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,684 @@
+/***********************************************************************\
+*                               oleauto.d                               *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.oleauto;
+pragma(lib, "oleaut32.lib");
+
+import win32.oaidl;
+private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes;
+private import win32.winbase; // for SYSTEMTIME
+
+align(8):
+const STDOLE_MAJORVERNUM = 1;
+const STDOLE_MINORVERNUM = 0;
+const STDOLE_LCID = 0;
+
+const VARIANT_NOVALUEPROP = 0x01;
+const VARIANT_ALPHABOOL = 0x02;
+const VARIANT_NOUSEOVERRIDE = 0x04;
+const VARIANT_LOCALBOOL = 0x08;
+
+const VAR_TIMEVALUEONLY = 0x0001;
+const VAR_DATEVALUEONLY = 0x0002;
+const VAR_VALIDDATE = 0x0004;
+const VAR_CALENDAR_HIJRI = 0x0008;
+const VAR_LOCALBOOL = 0x0010;
+const VAR_FORMAT_NOSUBSTITUTE = 0x0020;
+const VAR_FOURDIGITYEARS = 0x0040;
+const VAR_CALENDAR_THAI = 0x0080;
+const VAR_CALENDAR_GREGORIAN = 0x0100;
+
+const MEMBERID_NIL = DISPID_UNKNOWN;
+const ID_DEFAULTINST =  -2;
+const DISPATCH_METHOD = 1;
+const DISPATCH_PROPERTYGET = 2;
+const DISPATCH_PROPERTYPUT = 4;
+const DISPATCH_PROPERTYPUTREF = 8;
+
+//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); }
+
+// DAC: These aren't in the 2003 SDK.
+//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h)))
+//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2))))
+
+enum {
+	ACTIVEOBJECT_STRONG = 0,
+	ACTIVEOBJECT_WEAK   = 1
+}
+
+// DAC: These seem to be irrelevant for D.
+//#define V_UNION(X, Y) ((X)->Y)
+//#define V_VT(X) ((X)->vt)
+//#define V_BOOL(X) V_UNION(X, boolVal)
+//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
+//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
+//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
+//#define V_NONE(X) V_I2(X)
+//#define V_UI1(X) V_UNION(X, bVal)
+//#define V_UI1REF(X) V_UNION(X, pbVal)
+//#define V_I2(X) V_UNION(X, iVal)
+//#define V_UI2(X) V_UNION(X, uiVal)
+//#define V_I2REF(X) V_UNION(X, piVal)
+//#define V_I4(X) V_UNION(X, lVal)
+//#define V_UI4(X) V_UNION(X, ulVal)
+//#define V_I4REF(X) V_UNION(X, plVal)
+//#define V_UI4REF(X) V_UNION(X, pulVal)
+//#define V_I8(X) V_UNION(X, llVal)
+//#define V_UI8(X) V_UNION(X, ullVal)
+//#define V_I8REF(X) V_UNION(X, pllVal)
+//#define V_UI8REF(X) V_UNION(X, pullVal)
+//#define V_R4(X) V_UNION(X, fltVal)
+//#define V_R4REF(X) V_UNION(X, pfltVal)
+//#define V_R8(X) V_UNION(X, dblVal)
+//#define V_R8REF(X) V_UNION(X, pdblVal)
+//#define V_CY(X) V_UNION(X, cyVal)
+//#define V_CYREF(X) V_UNION(X, pcyVal)
+//#define V_DATE(X) V_UNION(X, date)
+//#define V_DATEREF(X) V_UNION(X, pdate)
+//#define V_BSTR(X) V_UNION(X, bstrVal)
+//#define V_BSTRREF(X) V_UNION(X, pbstrVal)
+//#define V_DISPATCH(X) V_UNION(X, pdispVal)
+//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal)
+//#define V_ERROR(X) V_UNION(X, scode)
+//#define V_ERRORREF(X) V_UNION(X, pscode)
+//#define V_BOOLREF(X) V_UNION(X, pboolVal)
+//#define V_UNKNOWN(X) V_UNION(X, punkVal)
+//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal)
+//#define V_VARIANTREF(X) V_UNION(X, pvarVal)
+//#define V_LPSTR(X) V_UNION(X, pszVal)
+//#define V_LPSTRREF(X) V_UNION(X, ppszVal)
+//#define V_LPWSTR(X) V_UNION(X, pwszVal)
+//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal)
+//#define V_FILETIME(X) V_UNION(X, filetime)
+//#define V_FILETIMEREF(X) V_UNION(X, pfiletime)
+//#define V_BLOB(X) V_UNION(X, blob)
+//#define V_UUID(X) V_UNION(X, puuid)
+//#define V_CLSID(X) V_UNION(X, puuid)
+//#define V_ARRAY(X) V_UNION(X, parray)
+//#define V_ARRAYREF(X) V_UNION(X, pparray)
+//#define V_BYREF(X) V_UNION(X, byref)
+//#define V_DECIMAL(X) ((X)->decVal)
+//#define V_DECIMALREF(X) V_UNION(X, pdecVal)
+//#define V_I1(X) V_UNION(X, cVal)
+
+//#ifdef _WIN64
+//#define V_INT_PTR(X) V_I8(X)
+//#define V_UINT_PTR(X) V_UI8(X)
+//#define V_INT_PTRREF(X) V_I8REF(X)
+//#define V_UINT_PTRREF(X) V_UI8REF(X)
+//#else
+//#define V_INT_PTR(X) V_I4(X)
+//#define V_UINT_PTR(X) V_UI4(X)
+//#define V_INT_PTRREF(X) V_I4REF(X)
+//#define V_UINT_PTRREF(X) V_UI4REF(X)
+//#endif
+
+enum {
+	VARCMP_LT = 0,
+	VARCMP_EQ,
+	VARCMP_GT,
+	VARCMP_NULL // = 3
+}
+
+const LOCALE_USE_NLS = 0x10000000;
+
+const VARIANT_NOUSEROVERRIDE     = 0x04;
+const VARIANT_CALENDAR_HIJRI     = 0x08;
+const VARIANT_CALENDAR_THAI      = 0x20;
+const VARIANT_CALENDAR_GREGORIAN = 0x40;
+const VARIANT_USE_NLS            = 0x80;
+
+const NUMPRS_LEADING_WHITE  = 0x00001;
+const NUMPRS_TRAILING_WHITE = 0x00002;
+const NUMPRS_LEADING_PLUS   = 0x00004;
+const NUMPRS_TRAILING_PLUS  = 0x00008;
+const NUMPRS_LEADING_MINUS  = 0x00010;
+const NUMPRS_TRAILING_MINUS = 0x00020;
+const NUMPRS_HEX_OCT        = 0x00040;
+const NUMPRS_PARENS         = 0x00080;
+const NUMPRS_DECIMAL        = 0x00100;
+const NUMPRS_THOUSANDS      = 0x00200;
+const NUMPRS_CURRENCY       = 0x00400;
+const NUMPRS_EXPONENT       = 0x00800;
+const NUMPRS_USE_ALL        = 0x01000;
+const NUMPRS_STD            = 0x01FFF;
+const NUMPRS_NEG            = 0x10000;
+const NUMPRS_INEXACT        = 0x20000;
+
+const VTBIT_I1 = 1 << VARENUM.VT_I1;
+const VTBIT_UI1 = 1 << VARENUM.VT_UI1;
+const VTBIT_I2 = 1 << VARENUM.VT_I2;
+const VTBIT_UI2 = 1 << VARENUM.VT_UI2;
+const VTBIT_I4 = 1 << VARENUM.VT_I4;
+const VTBIT_UI4 = 1 << VARENUM.VT_UI4;
+const VTBIT_I8 = 1 << VARENUM.VT_I8;
+const VTBIT_UI8 = 1 << VARENUM.VT_UI8;
+const VTBIT_R4 = 1 << VARENUM.VT_R4;
+const VTBIT_R8 = 1 << VARENUM.VT_R8;
+const VTBIT_CY = 1 << VARENUM.VT_CY;
+const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL;
+
+
+enum REGKIND{
+	REGKIND_DEFAULT,
+	REGKIND_REGISTER,
+	REGKIND_NONE
+}
+
+struct PARAMDATA{
+	OLECHAR* szName;
+	VARTYPE vt;
+}
+alias PARAMDATA* LPPARAMDATA;
+
+struct METHODDATA{
+	OLECHAR* szName;
+	PARAMDATA* ppdata;
+	DISPID dispid;
+	UINT iMeth;
+	CALLCONV cc;
+	UINT cArgs;
+	WORD wFlags;
+	VARTYPE vtReturn;
+}
+alias METHODDATA* LPMETHODDATA;
+
+struct INTERFACEDATA{
+	METHODDATA* pmethdata;
+	UINT cMembers;
+}
+alias INTERFACEDATA* LPINTERFACEDATA;
+
+struct UDATE {
+	SYSTEMTIME st;
+	USHORT wDayOfYear;
+}
+
+struct NUMPARSE {
+	int cDig;
+	uint dwInFlags;
+	uint dwOutFlags;
+	int cchUsed;
+	int nBaseShift;
+	int nPwr10;
+}
+
+
+// DAC: In MinGW, these were declared but not defined in oaidl.
+// The SDK docs suggest they belong in this file instead.
+
+deprecated {  // not actually deprecated, but they aren't converted yet.
+              // (will need to reinstate CreateTypeLib as well)
+	interface ICreateTypeInfo {};
+	interface ICreateTypeInfo2 {};
+	interface ICreateTypeLib {};
+	interface ICreateTypeLib2 {};
+
+	alias ICreateTypeInfo* LPCREATETYPEINFO;
+	alias ICreateTypeInfo2* LPCREATETYPEINFO2;
+	alias ICreateTypeLib* LPCREATETYPELIB;
+	alias ICreateTypeLib2* LPCREATETYPELIB2;
+}
+
+extern (Windows) {
+	BSTR SysAllocString(OLECHAR*);
+	int SysReAllocString(BSTR*, OLECHAR*);
+	BSTR SysAllocStringLen(OLECHAR*, uint);
+	int SysReAllocStringLen(BSTR*, OLECHAR*, uint);
+	void SysFreeString(BSTR);
+	uint SysStringLen(BSTR);
+	uint SysStringByteLen(BSTR);
+	BSTR SysAllocStringByteLen(char*, uint);
+	int DosDateTimeToVariantTime(ushort, ushort, double*);
+	int VariantTimeToDosDateTime(double, ushort*, ushort*);
+	int VariantTimeToSystemTime(double, LPSYSTEMTIME);
+	int SystemTimeToVariantTime(LPSYSTEMTIME, double*);
+	HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*);
+	HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*);
+	HRESULT VarUdateFromDate(DATE, ULONG, UDATE*);
+	HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**);
+	HRESULT SafeArrayAllocData(SAFEARRAY*);
+	SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*);
+	HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*);
+	HRESULT SafeArrayDestroyData(SAFEARRAY*);
+	HRESULT SafeArrayDestroy(SAFEARRAY*);
+	HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*);
+	uint SafeArrayGetDim(SAFEARRAY*);
+	uint SafeArrayGetElemsize(SAFEARRAY*);
+	HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*);
+	HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*);
+	HRESULT SafeArrayLock(SAFEARRAY*);
+	HRESULT SafeArrayUnlock(SAFEARRAY*);
+	HRESULT SafeArrayAccessData(SAFEARRAY*, void**);
+	HRESULT SafeArrayUnaccessData(SAFEARRAY*);
+	HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*);
+	HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*);
+	HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**);
+	HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**);
+	SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG);
+	SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID);
+	HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**);
+	HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*);
+	HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo*);
+	HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo**);
+	HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID);
+	HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*);
+	void VariantInit(VARIANTARG*);
+	HRESULT VariantClear(VARIANTARG*);
+	HRESULT VariantCopy(VARIANTARG*, VARIANTARG*);
+	HRESULT VariantCopyInd(VARIANT*, VARIANTARG*);
+	HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE);
+	HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE);
+	HRESULT VarUI1FromI2(short, ubyte*);
+	HRESULT VarUI1FromI4(int, ubyte*);
+	HRESULT VarUI1FromR4(float, ubyte*);
+	HRESULT VarUI1FromR8(double, ubyte*);
+	HRESULT VarUI1FromCy(CY, ubyte*);
+	HRESULT VarUI1FromDate(DATE, ubyte*);
+	HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*);
+	HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*);
+	HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*);
+	HRESULT VarI2FromUI1(ubyte, short*);
+	HRESULT VarI2FromI4(int, short*);
+	HRESULT VarI2FromR4(float, short*);
+	HRESULT VarI2FromR8(double, short*);
+	HRESULT VarI2FromCy(CY cyIn, short*);
+	HRESULT VarI2FromDate(DATE, short*);
+	HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*);
+	HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*);
+	HRESULT VarI2FromBool(VARIANT_BOOL, short*);
+	HRESULT VarI4FromUI1(ubyte, int*);
+	HRESULT VarI4FromI2(short, int*);
+	HRESULT VarI4FromR4(float, int*);
+	HRESULT VarI4FromR8(double, int*);
+	HRESULT VarI4FromCy(CY, int*);
+	HRESULT VarI4FromDate(DATE, int*);
+	HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*);
+	HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*);
+	HRESULT VarI4FromBool(VARIANT_BOOL, int*);
+	HRESULT VarR4FromUI1(ubyte, float*);
+	HRESULT VarR4FromI2(short, float*);
+	HRESULT VarR4FromI4(int, float*);
+	HRESULT VarR4FromR8(double, float*);
+	HRESULT VarR4FromCy(CY, float*);
+	HRESULT VarR4FromDate(DATE, float*);
+	HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*);
+	HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*);
+	HRESULT VarR4FromBool(VARIANT_BOOL, float*);
+	HRESULT VarR8FromUI1(ubyte, double*);
+	HRESULT VarR8FromI2(short, double*);
+	HRESULT VarR8FromI4(int, double*);
+	HRESULT VarR8FromR4(float, double*);
+	HRESULT VarR8FromCy(CY, double*);
+	HRESULT VarR8FromDate(DATE, double*);
+	HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*);
+	HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*);
+	HRESULT VarR8FromBool(VARIANT_BOOL, double*);
+	HRESULT VarR8FromDec(DECIMAL*, double*);
+	HRESULT VarDateFromUI1(ubyte, DATE*);
+	HRESULT VarDateFromI2(short, DATE*);
+	HRESULT VarDateFromI4(int, DATE*);
+	HRESULT VarDateFromR4(float, DATE*);
+	HRESULT VarDateFromR8(double, DATE*);
+	HRESULT VarDateFromCy(CY, DATE*);
+	HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*);
+	HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*);
+	HRESULT VarDateFromBool(VARIANT_BOOL, DATE*);
+	HRESULT VarCyFromUI1(ubyte, CY*);
+	HRESULT VarCyFromI2(short, CY*);
+	HRESULT VarCyFromI4(int, CY*);
+	HRESULT VarCyFromR4(float, CY*);
+	HRESULT VarCyFromR8(double, CY*);
+	HRESULT VarCyFromDate(DATE, CY*);
+	HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*);
+	HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*);
+	HRESULT VarCyFromBool(VARIANT_BOOL, CY*);
+	HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*);
+	HRESULT VarBstrFromI2(short, LCID, uint, BSTR*);
+	HRESULT VarBstrFromI4(int, LCID, uint, BSTR*);
+	HRESULT VarBstrFromR4(float, LCID, uint, BSTR*);
+	HRESULT VarBstrFromR8(double, LCID, uint, BSTR*);
+	HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*);
+	HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*);
+	HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*);
+	HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*);
+	HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*);
+	HRESULT VarBoolFromI2(short, VARIANT_BOOL*);
+	HRESULT VarBoolFromI4(int, VARIANT_BOOL*);
+	HRESULT VarBoolFromR4(float, VARIANT_BOOL*);
+	HRESULT VarBoolFromR8(double, VARIANT_BOOL*);
+	HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*);
+	HRESULT VarBoolFromCy(CY, VARIANT_BOOL*);
+	HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*);
+	HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*);
+	HRESULT VarDecFromR8(double, DECIMAL*);
+	ULONG LHashValOfNameSysA(SYSKIND, LCID, char*);
+	ULONG LHashValOfNameSys(SYSKIND, LCID, OLECHAR*);
+	HRESULT LoadTypeLib(OLECHAR*, LPTYPELIB*);
+	HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*);
+	HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*);
+	HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR);
+	HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*);
+	HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND);
+	// not actually deprecated, but depends on unconverted ICreateTypeLib
+	deprecated HRESULT CreateTypeLib(SYSKIND, OLECHAR*, LPCREATETYPELIB*);
+	HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*);
+	HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*);
+	HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*);
+	HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*);
+	HRESULT CreateStdDispatch(IUnknown*, void*, LPTYPEINFO, IUnknown**);
+	HRESULT RegisterActiveObject(IUnknown*, REFCLSID, DWORD, DWORD*);
+	HRESULT RevokeActiveObject(DWORD, void*);
+	HRESULT GetActiveObject(REFCLSID, void*, IUnknown**);
+	HRESULT SetErrorInfo(uint, LPERRORINFO);
+	HRESULT GetErrorInfo(uint, LPERRORINFO*);
+	HRESULT CreateErrorInfo(LPCREATEERRORINFO*);
+	uint OaBuildVersion();
+	HRESULT VectorFromBstr (BSTR, SAFEARRAY**);
+	HRESULT BstrFromVector (SAFEARRAY*, BSTR*);
+	HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*);
+	HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*);
+
+	HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
+
+	HRESULT VarUI1FromI2(SHORT, BYTE*);
+	HRESULT VarUI1FromI4(LONG, BYTE*);
+	HRESULT VarUI1FromI8(LONG64, BYTE*);
+	HRESULT VarUI1FromR4(FLOAT, BYTE*);
+	HRESULT VarUI1FromR8(DOUBLE, BYTE*);
+	HRESULT VarUI1FromDate(DATE, BYTE*);
+	HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*);
+	HRESULT VarUI1FromI1(byte, BYTE*);
+	HRESULT VarUI1FromUI2(USHORT, BYTE*);
+	HRESULT VarUI1FromUI4(ULONG, BYTE*);
+	HRESULT VarUI1FromUI8(ULONG64, BYTE*);
+	HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*);
+	HRESULT VarUI1FromCy(CY, BYTE*);
+	HRESULT VarUI1FromDec(DECIMAL*, BYTE*);
+	HRESULT VarUI1FromDisp(IDispatch*, LCID, BYTE*);
+
+	HRESULT VarI2FromUI1(BYTE, SHORT*);
+	HRESULT VarI2FromI4(LONG, SHORT*);
+	HRESULT VarI2FromI8(LONG64, SHORT*);
+	HRESULT VarI2FromR4(FLOAT, SHORT*);
+	HRESULT VarI2FromR8(DOUBLE, SHORT*);
+	HRESULT VarI2FromDate(DATE, SHORT*);
+	HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*);
+	HRESULT VarI2FromI1(byte, SHORT*);
+	HRESULT VarI2FromUI2(USHORT, SHORT*);
+	HRESULT VarI2FromUI4(ULONG, SHORT*);
+	HRESULT VarI2FromUI8(ULONG64, SHORT*);
+	HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*);
+	HRESULT VarI2FromCy(CY, SHORT*);
+	HRESULT VarI2FromDec(DECIMAL*, SHORT*);
+	HRESULT VarI2FromDisp(IDispatch*, LCID, SHORT*);
+
+	HRESULT VarI4FromUI1(BYTE, LONG*);
+	HRESULT VarI4FromI2(SHORT, LONG*);
+	HRESULT VarI4FromI8(LONG64, LONG*);
+	HRESULT VarI4FromR4(FLOAT, LONG*);
+	HRESULT VarI4FromR8(DOUBLE, LONG*);
+	HRESULT VarI4FromDate(DATE, LONG*);
+	HRESULT VarI4FromBool(VARIANT_BOOL, LONG*);
+	HRESULT VarI4FromI1(byte, LONG*);
+	HRESULT VarI4FromUI2(USHORT, LONG*);
+	HRESULT VarI4FromUI4(ULONG, LONG*);
+	HRESULT VarI4FromUI8(ULONG64, LONG*);
+	HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*);
+	HRESULT VarI4FromCy(CY, LONG*);
+	HRESULT VarI4FromDec(DECIMAL*, LONG*);
+	HRESULT VarI4FromDisp(IDispatch*, LCID, LONG*);
+
+	HRESULT VarI8FromUI1(BYTE, LONG64*);
+	HRESULT VarI8FromI2(SHORT, LONG64*);
+	HRESULT VarI8FromI4(LONG, LONG64*);
+	HRESULT VarI8FromR4(FLOAT, LONG64*);
+	HRESULT VarI8FromR8(DOUBLE, LONG64*);
+	HRESULT VarI8FromDate(DATE, LONG64*);
+	HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*);
+	HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*);
+	HRESULT VarI8FromI1(byte, LONG64*);
+	HRESULT VarI8FromUI2(USHORT, LONG64*);
+	HRESULT VarI8FromUI4(ULONG, LONG64*);
+	HRESULT VarI8FromUI8(ULONG64, LONG64*);
+	HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*);
+	HRESULT VarI8FromInt(INT intIn, LONG64*);
+	HRESULT VarI8FromCy(CY, LONG64*);
+	HRESULT VarI8FromDisp(IDispatch*, LCID, LONG64*);
+
+	HRESULT VarR4FromUI1(BYTE, FLOAT*);
+	HRESULT VarR4FromI2(SHORT, FLOAT*);
+	HRESULT VarR4FromI4(LONG, FLOAT*);
+	HRESULT VarR4FromI8(LONG64, FLOAT*);
+	HRESULT VarR4FromR8(DOUBLE, FLOAT*);
+	HRESULT VarR4FromDate(DATE, FLOAT*);
+	HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*);
+	HRESULT VarR4FromI1(byte, FLOAT*);
+	HRESULT VarR4FromUI2(USHORT, FLOAT*);
+	HRESULT VarR4FromUI4(ULONG, FLOAT*);
+	HRESULT VarR4FromUI8(ULONG64, FLOAT*);
+	HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*);
+	HRESULT VarR4FromCy(CY, FLOAT*);
+	HRESULT VarR4FromDec(DECIMAL*, FLOAT*);
+	HRESULT VarR4FromDisp(IDispatch*, LCID, FLOAT*);
+
+	HRESULT VarR8FromUI1(BYTE, double*);
+	HRESULT VarR8FromI2(SHORT, double*);
+	HRESULT VarR8FromI4(LONG, double*);
+	HRESULT VarR8FromI8(LONG64, double*);
+	HRESULT VarR8FromR4(FLOAT, double*);
+	HRESULT VarR8FromDate(DATE, double*);
+	HRESULT VarR8FromBool(VARIANT_BOOL, double*);
+	HRESULT VarR8FromI1(byte, double*);
+	HRESULT VarR8FromUI2(USHORT, double*);
+	HRESULT VarR8FromUI4(ULONG, double*);
+	HRESULT VarR8FromUI8(ULONG64, double*);
+	HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*);
+	HRESULT VarR8FromCy(CY, double*);
+	HRESULT VarR8FromDec(DECIMAL*, double*);
+	HRESULT VarR8FromDisp(IDispatch*, LCID, double*);
+
+	HRESULT VarDateFromUI1(BYTE, DATE*);
+	HRESULT VarDateFromI2(SHORT, DATE*);
+	HRESULT VarDateFromI4(LONG, DATE*);
+	HRESULT VarDateFromI8(LONG64, DATE*);
+	HRESULT VarDateFromR4(FLOAT, DATE*);
+	HRESULT VarDateFromR8(DOUBLE, DATE*);
+	HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*);
+	HRESULT VarDateFromI1(byte, DATE*);
+	HRESULT VarDateFromUI2(USHORT, DATE*);
+	HRESULT VarDateFromUI4(ULONG, DATE*);
+	HRESULT VarDateFromUI8(ULONG64, DATE*);
+	HRESULT VarDateFromBool(VARIANT_BOOL, DATE*);
+	HRESULT VarDateFromCy(CY, DATE*);
+	HRESULT VarDateFromDec(DECIMAL*, DATE*);
+	HRESULT VarDateFromDisp(IDispatch*, LCID, DATE*);
+
+	HRESULT VarCyFromUI1(BYTE, CY*);
+	HRESULT VarCyFromI2(SHORT sIn, CY*);
+	HRESULT VarCyFromI4(LONG, CY*);
+	HRESULT VarCyFromI8(LONG64, CY*);
+	HRESULT VarCyFromR4(FLOAT, CY*);
+	HRESULT VarCyFromR8(DOUBLE, CY*);
+	HRESULT VarCyFromDate(DATE, CY*);
+	HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*);
+	HRESULT VarCyFromBool(VARIANT_BOOL, CY*);
+	HRESULT VarCyFromI1(byte, CY*);
+	HRESULT VarCyFromUI2(USHORT, CY*);
+	HRESULT VarCyFromUI4(ULONG, CY*);
+	HRESULT VarCyFromUI8(ULONG64, CY*);
+	HRESULT VarCyFromDec(DECIMAL*, CY*);
+	HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*);
+	HRESULT VarCyFromDisp(IDispatch*, LCID, CY*);
+
+	HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*);
+	HRESULT VarBstrFromDisp(IDispatch*, LCID, ULONG, BSTR*);
+
+	HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*);
+	HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*);
+	HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*);
+	HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*);
+	HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*);
+	HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*);
+	HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*);
+	HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*);
+	HRESULT VarBoolFromI1(byte, VARIANT_BOOL*);
+	HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*);
+	HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*);
+	HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*);
+	HRESULT VarBoolFromCy(CY, VARIANT_BOOL*);
+	HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*);
+	HRESULT VarBoolFromDisp(IDispatch*, LCID, VARIANT_BOOL*);
+
+	HRESULT VarI1FromUI1(BYTE, byte*);
+	HRESULT VarI1FromI2(SHORT, byte*);
+	HRESULT VarI1FromI4(LONG, byte*);
+	HRESULT VarI1FromI8(LONG64, byte*);
+	HRESULT VarI1FromR4(FLOAT, byte*);
+	HRESULT VarI1FromR8(DOUBLE, byte*);
+	HRESULT VarI1FromDate(DATE, byte*);
+	HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*);
+	HRESULT VarI1FromBool(VARIANT_BOOL, byte*);
+	HRESULT VarI1FromUI2(USHORT, byte*);
+	HRESULT VarI1FromUI4(ULONG, byte*);
+	HRESULT VarI1FromUI8(ULONG64, byte*);
+	HRESULT VarI1FromCy(CY, byte*);
+	HRESULT VarI1FromDec(DECIMAL*, byte*);
+	HRESULT VarI1FromDisp(IDispatch*, LCID, byte*);
+
+	HRESULT VarUI2FromUI1(BYTE, USHORT*);
+	HRESULT VarUI2FromI2(SHORT, USHORT*);
+	HRESULT VarUI2FromI4(LONG, USHORT*);
+	HRESULT VarUI2FromI8(LONG64, USHORT*);
+	HRESULT VarUI2FromR4(FLOAT, USHORT*);
+	HRESULT VarUI2FromR8(DOUBLE, USHORT*);
+	HRESULT VarUI2FromDate(DATE, USHORT*);
+	HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*);
+	HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*);
+	HRESULT VarUI2FromI1(byte, USHORT*);
+	HRESULT VarUI2FromUI4(ULONG, USHORT*);
+	HRESULT VarUI2FromUI8(ULONG64, USHORT*);
+	HRESULT VarUI2FromCy(CY, USHORT*);
+	HRESULT VarUI2FromDec(DECIMAL*, USHORT*);
+	HRESULT VarUI2FromDisp(IDispatch*, LCID, USHORT*);
+
+	HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*);
+	HRESULT VarUI4FromUI1(BYTE, ULONG*);
+	HRESULT VarUI4FromI2(SHORT, ULONG*);
+	HRESULT VarUI4FromI4(LONG, ULONG*);
+	HRESULT VarUI4FromI8(LONG64, ULONG*);
+	HRESULT VarUI4FromR4(FLOAT, ULONG*);
+	HRESULT VarUI4FromR8(DOUBLE, ULONG*);
+	HRESULT VarUI4FromDate(DATE, ULONG*);
+	HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*);
+	HRESULT VarUI4FromI1(byte, ULONG*);
+	HRESULT VarUI4FromUI2(USHORT, ULONG*);
+	HRESULT VarUI4FromUI8(ULONG64, ULONG*);
+	HRESULT VarUI4FromCy(CY, ULONG*);
+	HRESULT VarUI4FromDec(DECIMAL*, ULONG*);
+	HRESULT VarUI4FromDisp(IDispatch*, LCID, ULONG*);
+
+	HRESULT VarUI8FromUI1(BYTE, ULONG64*);
+	HRESULT VarUI8FromI2(SHORT, ULONG64*);
+	HRESULT VarUI8FromI4(LONG, ULONG64*);
+	HRESULT VarUI8FromI8(LONG64, ULONG64*);
+	HRESULT VarUI8FromR4(FLOAT, ULONG64*);
+	HRESULT VarUI8FromR8(DOUBLE, ULONG64*);
+	HRESULT VarUI8FromDate(DATE, ULONG64*);
+	HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*);
+	HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*);
+	HRESULT VarUI8FromI1(byte, ULONG64*);
+	HRESULT VarUI8FromUI2(USHORT, ULONG64*);
+	HRESULT VarUI8FromUI4(ULONG, ULONG64*);
+	HRESULT VarUI8FromDec(DECIMAL*, ULONG64*);
+	HRESULT VarUI8FromInt(INT, ULONG64*);
+	HRESULT VarUI8FromCy(CY, ULONG64*);
+	HRESULT VarUI8FromDisp(IDispatch*, LCID, ULONG64*);
+
+	HRESULT VarDecFromUI1(BYTE, DECIMAL*);
+	HRESULT VarDecFromI2(SHORT, DECIMAL*);
+	HRESULT VarDecFromI4(LONG, DECIMAL*);
+	HRESULT VarDecFromI8(LONG64, DECIMAL*);
+	HRESULT VarDecFromR4(FLOAT, DECIMAL*);
+	HRESULT VarDecFromR8(DOUBLE, DECIMAL*);
+	HRESULT VarDecFromDate(DATE, DECIMAL*);
+	HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*);
+	HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*);
+	HRESULT VarDecFromI1(byte, DECIMAL*);
+	HRESULT VarDecFromUI2(USHORT, DECIMAL*);
+	HRESULT VarDecFromUI4(ULONG, DECIMAL*);
+	HRESULT VarDecFromUI8(ULONG64, DECIMAL*);
+	HRESULT VarDecFromCy(CY, DECIMAL*);
+	HRESULT VarDecFromDisp(IDispatch*, LCID, DECIMAL*);
+
+	HRESULT VarDecNeg(DECIMAL*, DECIMAL*);
+	HRESULT VarR4CmpR8(float, double);
+	HRESULT VarR8Pow(double, double, double*);
+	HRESULT VarR8Round(double, int, double*);
+	HRESULT VarDecAbs(DECIMAL*, DECIMAL*);
+	HRESULT VarDecAdd(DECIMAL*, DECIMAL*, DECIMAL*);
+	HRESULT VarDecCmp(DECIMAL*, DECIMAL*);
+	HRESULT VarDecCmpR8(DECIMAL*, DOUBLE);
+	HRESULT VarDecDiv(DECIMAL*, DECIMAL*, DECIMAL*);
+	HRESULT VarDecFix(DECIMAL*, DECIMAL*);
+	HRESULT VarDecInt(DECIMAL*, DECIMAL*);
+	HRESULT VarDecMul(DECIMAL*, DECIMAL*, DECIMAL*);
+	HRESULT VarDecRound(DECIMAL*, int, DECIMAL*);
+	HRESULT VarDecSub(DECIMAL*, DECIMAL*, DECIMAL*);
+	HRESULT VarCyAbs(CY, CY*);
+	HRESULT VarCyAdd(CY, CY, CY*);
+	HRESULT VarCyCmp(CY, CY);
+	HRESULT VarCyCmpR8(CY, DOUBLE);
+	HRESULT VarCyFix(CY, CY*);
+	HRESULT VarCyInt(CY, CY*);
+	HRESULT VarCyMul(CY, CY, CY*);
+	HRESULT VarCyMulI4(CY, LONG, CY*);
+	HRESULT VarCyMulI8(CY, LONG64, CY*);
+	HRESULT VarCyNeg(CY, CY*);
+	HRESULT VarCyRound(CY, INT, CY*);
+	HRESULT VarCySub(CY, CY, CY*);
+	HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT);
+	HRESULT VarAbs(LPVARIANT, LPVARIANT);
+	HRESULT VarFix(LPVARIANT, LPVARIANT);
+	HRESULT VarInt(LPVARIANT, LPVARIANT);
+	HRESULT VarNeg(LPVARIANT, LPVARIANT);
+	HRESULT VarNot(LPVARIANT, LPVARIANT);
+	HRESULT VarRound(LPVARIANT, int, LPVARIANT);
+	HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG);
+	HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG);
+	HRESULT VarBstrCat(BSTR, BSTR, BSTR*);
+}