fix NAMELESSUNION support for struct DECIMAL

svn path=/trunk/; revision=8503
This commit is contained in:
Martin Fuchs
2004-03-02 10:25:59 +00:00
parent 636e39eb03
commit 9cd5e17f9f
5 changed files with 22 additions and 13 deletions
+1 -1
View File
@@ -17,8 +17,8 @@ C_SRCS = \
hash.c \
oleaut.c \
olepicture.c \
stubs.c \
safearray.c \
stubs.c \
varformat.c \
variant.c \
vartype.c
+1 -1
View File
@@ -2204,7 +2204,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
ULONG64 tmp;
DECIMAL* pDec = &V_DECIMAL(pVarDst);
DECIMAL_SETZERO(pDec);
DECIMAL_SETZERO(*pDec);
DEC_LO32(pDec) = 0;
if (pNumprs->dwOutFlags & NUMPRS_NEG)
+1 -1
View File
@@ -7,7 +7,7 @@
#ifdef __cplusplus
extern "C" {
#endif
#ifdef NONAMELESSUNION
#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
#define __VARIANT_NAME_1 n1
#define __VARIANT_NAME_2 n2
#define __VARIANT_NAME_3 n3
+5 -5
View File
@@ -22,7 +22,7 @@
#define VAR_FORMAT_NOSUBSTITUTE 0x0020
#define VAR_FOURDIGITYEARS 0x0040
#define VAR_CALENDAR_THAI 0x0080
#define VAR_CALENDAR_GREGORIAN 0x0100
#define VAR_CALENDAR_GREGORIAN 0x0100
#define MEMBERID_NIL DISPID_UNKNOWN
#define ID_DEFAULTINST (-2)
#define DISPATCH_METHOD 1
@@ -34,9 +34,9 @@
#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(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_NAME_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)
@@ -90,7 +90,7 @@
#define V_ARRAYREF(X) V_UNION(X,pparray)
#define V_BYREF(X) V_UNION(X,byref)
#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
#define V_DECIMAL(X) ((X)->n1.decVal)
#define V_DECIMAL(X) ((X)->__VARIANT_NAME_1.decVal)
#else
#define V_DECIMAL(X) ((X)->decVal)
#endif
+14 -5
View File
@@ -11,19 +11,28 @@
extern "C" {
#endif
#define DEC_SIGN(d) ((d)->u.s.sign)
#define DEC_SCALE(d) ((d)->u.s.scale)
#define DEC_SIGNSCALE(d) ((d)->u.signscale)
#define DEC_HI32(d) ((d)->Hi32)
#ifdef NONAMELESSUNION
#define DEC_SIGN(d) ((d)->DUMMYUNIONNAME.DUMMYSTRUCTNAME.sign)
#define DEC_SCALE(d) ((d)->DUMMYUNIONNAME.DUMMYSTRUCTNAME.scale)
#define DEC_SIGNSCALE(d) ((d)->DUMMYUNIONNAME.signscale)
#define DEC_MID32(d) ((d)->DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.Mid32)
#define DEC_LO32(d) ((d)->DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.Lo32)
#define DEC_LO64(d) ((d)->DUMMYUNIONNAME2.Lo64)
#else
#define DEC_SIGN(d) ((d)->sign)
#define DEC_SCALE(d) ((d)->scale)
#define DEC_SIGNSCALE(d) ((d)->signscale)
#define DEC_MID32(d) ((d)->Mid32)
#define DEC_LO32(d) ((d)->Lo32)
#define DEC_LO64(d) ((d)->Lo64)
#endif
#define DEC_HI32(d) ((d)->Hi32)
#define IID_NULL GUID_NULL
#define CLSID_NULL GUID_NULL
#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
#define DECIMAL_NEG ((BYTE)0x80)
#define DECIMAL_SETZERO(d) {DEC_LO64(d)=DEC_HI32(d)=DEC_SIGNSCALE(d)=0;}
#define DECIMAL_SETZERO(d) {DEC_LO64(&d)=DEC_HI32(&d)=DEC_SIGNSCALE(&d)=0;}
#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x01
#define ROTFLAGS_ALLOWANYCLIENT 0x02