Re: oleauto.h
"Martin Fuchs" <[email protected]> Tue, 02 Mar 2004 10:25:41 +0100
| Newsgroups | gmane.comp.gnu.mingw.patches |
|---|---|
| Message-ID | <[email protected]> |
Here is the corrected oleauto.h patch.
I changed the definition of V_DECIMAL.
V_UNION and V_VT now use constants __VARIANT_NAME_... instead of plain name=
s.
Changelog:
* include/oleauto.h (VAR_...): define missing constants VAR_VALIDDATE, VAR_=
FORMAT_NOSUBSTITUTE, VAR_FOURDIGITYEARS and group them together
(V_...): define V_UI2, V_UI4, V_UI4REF, V_UI8 and V_UI8REF macros
(V_I8, V_I8REF): correct macros to use VARIANT members llVal respective pll=
Val
(V_DECIMAL): correct V_DECIMAL macro, as V_UNION doesn't wotk for this spec=
ial VARIANT member
(V_[U]INT_PTR[REF]): define macros V_INT_PTR, V_UINT_PTR, V_INT_PTRREF and =
V_UINT_PTRREF
(VTBIT_...): define VTBIT_... constants
(UDATE): define struct UDATE
(Var...FromUdate): declare functions VarDateFromUdate, VarDateFromUdateEx, =
VarUdateFromDate
(SafeArrayCreateVector): correct parameter type from UINT to ULONG
(SafeArrayCreateVectorEx): declare function
(Var...): declare VARIANT manipulation functions
(V_UNION, V_VT): use constants __VARIANT_NAME_... instead of plain names
Index: oleauto.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvs/src/src/winsup/w32api/include/oleauto.h,v
retrieving revision 1.10
diff -u -p -d -r1.10 oleauto.h
--- oleauto.h 1 Mar 2004 10:09:41 -0000 1.10
+++ oleauto.h 2 Mar 2004 09:23:34 -0000
@@ -10,12 +10,22 @@
#define STDOLE_MAJORVERNUM 1
#define STDOLE_MINORVERNUM 0
#define STDOLE_LCID 0
+
#define VARIANT_NOVALUEPROP 0x01
#define VARIANT_ALPHABOOL 0x02
#define VARIANT_NOUSEOVERRIDE 0x04
#define VARIANT_LOCALBOOL 0x08
+
#define VAR_TIMEVALUEONLY 0x0001
#define VAR_DATEVALUEONLY 0x0002
+#define VAR_VALIDDATE 0x0004
+#define VAR_CALENDAR_HIJRI 0x0008
+#define VAR_LOCALBOOL 0x0010
+#define VAR_FORMAT_NOSUBSTITUTE 0x0020
+#define VAR_FOURDIGITYEARS 0x0040
+#define VAR_CALENDAR_THAI 0x0080
+#define VAR_CALENDAR_GREGORIAN 0x0100
+
#define MEMBERID_NIL DISPID_UNKNOWN
#define ID_DEFAULTINST (-2)
#define DISPATCH_METHOD 1
@@ -27,9 +37,9 @@
#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))=3D=3D(0x00ff0=
000&(h2))))
#define ACTIVEOBJECT_STRONG 0
#define ACTIVEOBJECT_WEAK 1
-#ifdef NONAMELESSUNION
-#define V_UNION(X,Y) ((X)->n1.n2.n3.Y)
-#define V_VT(X) ((X)->n1.n2.vt)
+#if __STDC__ || defined(NONAMELESSUNION)
+#define V_UNION(X,Y) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAM=
E_3.Y)
+#define V_VT(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt)
#else
#define V_UNION(X,Y) ((X)->Y)
#define V_VT(X) ((X)->vt)
@@ -42,11 +52,16 @@
#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_I8(X) V_UNION(X,hVal)
+#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,phVal)
+#define V_UI8REF(X) V_UNION(X,puhVal)
#define V_R4(X) V_UNION(X,fltVal)
#define V_R4REF(X) V_UNION(X,pfltVal)
#define V_R8(X) V_UNION(X,dblVal)
@@ -77,17 +92,31 @@
#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) V_UNION(X,decVal)
+#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION=
)
+#define V_DECIMAL(X) ((X)->__VARIANT_NAME_1.decVal)
+#else
+#define V_DECIMAL(X) ((X)->decVal)
+#endif
#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
+
#define VARCMP_LT 0
#define VARCMP_EQ 1
#define VARCMP_GT 2
#define VARCMP_NULL 3
-#define VAR_LOCALBOOL 0x10
-
#define LOCALE_USE_NLS 0x10000000
#define VARIANT_NOUSEROVERRIDE 0x04
@@ -96,10 +125,6 @@
#define VARIANT_CALENDAR_GREGORIAN 0x40
#define VARIANT_USE_NLS 0x80
-#define VAR_CALENDAR_HIJRI 0x08
-#define VAR_CALENDAR_THAI 0x80
-#define VAR_CALENDAR_GREGORIAN 0x100
-
#define NUMPRS_LEADING_WHITE 0x00001
#define NUMPRS_TRAILING_WHITE 0x00002
#define NUMPRS_LEADING_PLUS 0x00004
@@ -117,6 +142,19 @@
#define NUMPRS_NEG 0x10000
#define NUMPRS_INEXACT 0x20000
+#define VTBIT_I1 (1<<VT_I1)
+#define VTBIT_UI1 (1<<VT_UI1)
+#define VTBIT_I2 (1<<VT_I2)
+#define VTBIT_UI2 (1<<VT_UI2)
+#define VTBIT_I4 (1<<VT_I4)
+#define VTBIT_UI4 (1<<VT_UI4)
+#define VTBIT_I8 (1<<VT_I8)
+#define VTBIT_UI8 (1<<VT_UI8)
+#define VTBIT_R4 (1<<VT_R4)
+#define VTBIT_R8 (1<<VT_R8)
+#define VTBIT_CY (1<<VT_CY)
+#define VTBIT_DECIMAL (1<<VT_DECIMAL)
+
#include <oaidl.h>
typedef enum tagREGKIND {
@@ -144,6 +182,11 @@ typedef struct tagINTERFACEDATA {
} INTERFACEDATA,*LPINTERFACEDATA;
typedef struct {
+ SYSTEMTIME st;
+ USHORT wDayOfYear;
+} UDATE;
+
+typedef struct {
int cDig;
unsigned long dwInFlags;
unsigned long dwOutFlags;
@@ -164,6 +207,9 @@ WINOLEAUTAPI_(int) DosDateTimeToVariantT
WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigne=
d short*);
WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME);
WINOLEAUTAPI_(int) SystemTimeToVariantTime(LPSYSTEMTIME, double*);
+WINOLEAUTAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
+WINOLEAUTAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
+WINOLEAUTAPI VarUdateFromDate(DATE,ULONG,UDATE*);
WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**);
WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*);
WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBO=
UND*);
@@ -183,7 +229,8 @@ WINOLEAUTAPI SafeArrayGetElement(SAFEARR
WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*);
WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**);
-WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,UINT);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,ULONG);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOI=
D);
WINOLEAUTAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
WINOLEAUTAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
WINOLEAUTAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
@@ -554,6 +601,53 @@ WINOLEAUTAPI VarDecFromCy(CY,DECIMAL*);
WINOLEAUTAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
WINOLEAUTAPI VarDecNeg(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarR4CmpR8(float,double);
+WINOLEAUTAPI VarR8Pow(double,double,double*);
+WINOLEAUTAPI VarR8Round(double,int,double*);
+WINOLEAUTAPI VarDecAbs(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecCmp(const DECIMAL*,const DECIMAL*);
+WINOLEAUTAPI VarDecCmpR8(const DECIMAL*,DOUBLE);
+WINOLEAUTAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecFix(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecInt(const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarDecRound(const DECIMAL*,int,DECIMAL*);
+WINOLEAUTAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*);
+WINOLEAUTAPI VarCyAbs(const CY,CY*);
+WINOLEAUTAPI VarCyAdd(const CY,const CY,CY*);
+WINOLEAUTAPI VarCyCmp(const CY,const CY);
+WINOLEAUTAPI VarCyCmpR8(const CY,DOUBLE);
+WINOLEAUTAPI VarCyFix(const CY,CY*);
+WINOLEAUTAPI VarCyInt(const CY,CY*);
+WINOLEAUTAPI VarCyMul(const CY,CY,CY*);
+WINOLEAUTAPI VarCyMulI4(const CY,LONG,CY*);
+WINOLEAUTAPI VarCyMulI8(const CY,LONG64,CY*);
+WINOLEAUTAPI VarCyNeg(const CY,CY*);
+WINOLEAUTAPI VarCyRound(const CY,INT,CY*);
+WINOLEAUTAPI VarCySub(const CY,const CY,CY*);
+WINOLEAUTAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarAbs(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarFix(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarInt(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarNeg(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarNot(LPVARIANT,LPVARIANT);
+WINOLEAUTAPI VarRound(LPVARIANT,int,LPVARIANT);
+WINOLEAUTAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG);
+WINOLEAUTAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG);
+WINOLEAUTAPI VarBstrCat(BSTR,BSTR,BSTR*);
#pragma pack(pop)
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click