Adding support for DECIMAL
François Gouget
fgouget at codeweavers.com
Sat May 5 15:17:12 CDT 2001
Gee, we still had functions and types that were suffixed with 32!
Changelog:
François Gouget <fgouget at codeweavers.com>
* include/wtypes.h,
include/wine/obj_oleaut.h,
include/oleauto.h
Add support for the DECIMAL type
Names are no longer suffixed with 32! Remove it
Fixes bug #181 reported by Andres Kruse
--
François Gouget
fgouget at codeweavers.com
-------------- next part --------------
Index: include/wtypes.h
===================================================================
RCS file: /home/cvs/wine/wine/include/wtypes.h,v
retrieving revision 1.28
diff -u -r1.28 wtypes.h
--- include/wtypes.h 2001/01/02 22:31:07 1.28
+++ include/wtypes.h 2001/05/05 19:55:07
@@ -163,6 +163,39 @@
#endif /* _tagCY_DEFINED */
+typedef struct tagDEC {
+ USHORT wReserved;
+ union {
+ struct {
+ BYTE scale;
+ BYTE sign;
+ } DUMMYSTRUCTNAME1;
+ USHORT signscale;
+ } DUMMYUNIONNAME1;
+ ULONG Hi32;
+ union {
+ struct {
+#ifdef BIG_ENDIAN
+ ULONG Mid32;
+ ULONG Lo32;
+#else /* defined(BIG_ENDIAN) */
+ ULONG Lo32;
+ ULONG Mid32;
+#endif /* defined(BIG_ENDIAN) */
+ } DUMMYSTRUCTNAME2;
+ ULONGLONG Lo64;
+ } DUMMYUNIONNAME2;
+} DECIMAL;
+
+#define DECIMAL_NEG ((BYTE)0x80)
+#ifndef NONAMELESSUNION
+#define DECIMAL_SETZERO(d) \
+ do {(d).Lo64 = 0; (d).Hi32 = 0; (d).signscale = 0;} while (0)
+#else
+#define DECIMAL_SETZERO(d) \
+ do {(d).u2.Lo64 = 0; (d).Hi32 = 0; (d).u1.signscale = 0;} while (0)
+#endif
+
/*
* 0 == FALSE and -1 == TRUE
*/
Index: include/wine/obj_oleaut.h
===================================================================
RCS file: /home/cvs/wine/wine/include/wine/obj_oleaut.h,v
retrieving revision 1.24
diff -u -r1.24 obj_oleaut.h
--- include/wine/obj_oleaut.h 2000/11/25 23:51:30 1.24
+++ include/wine/obj_oleaut.h 2001/05/05 19:55:08
@@ -141,7 +141,7 @@
DATE date;
BSTR bstrVal;
CY cyVal;
- /* DECIMAL decVal; */
+ DECIMAL decVal;
IUnknown* punkVal;
IDispatch* pdispVal;
SAFEARRAY* parray;
@@ -164,7 +164,7 @@
VARIANT* pvarVal;
PVOID byref;
CY* pcyVal;
- /* DECIMAL* pdecVal; */
+ DECIMAL* pdecVal;
IUnknown** ppunkVal;
IDispatch** ppdispVal;
SAFEARRAY** pparray;
Index: include/oleauto.h
===================================================================
RCS file: /home/cvs/wine/wine/include/oleauto.h,v
retrieving revision 1.35
diff -u -r1.35 oleauto.h
--- include/oleauto.h 2001/02/12 19:33:43 1.35
+++ include/oleauto.h 2001/05/05 19:55:05
@@ -223,12 +223,9 @@
HRESULT WINAPI VarUI1FromUI4(ULONG ulIn, BYTE*pbOut);
HRESULT WINAPI VarUI1FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, BYTE* pbOut);
HRESULT WINAPI VarUI1FromCy(CY cyIn, BYTE* pbOut);
+HRESULT WINAPI VarUI1FromDec(DECIMAL* pdecIn, BYTE* pbOut);
+HRESULT WINAPI VarUI1FromDisp(IDispatch* pdispIn, LCID lcid, BYTE* pbOut);
-/*
-HRESULT WINAPI VarUI1FromDec32(DECIMAL*pdecIn, BYTE*pbOut);
-HRESULT WINAPI VarUI1FromDisp32(IDispatch* pdispIn, LCID lcid, BYTE* pbOut);
-*/
-
HRESULT WINAPI VarI2FromUI1(BYTE bIn, short* psOut);
HRESULT WINAPI VarI2FromI4(LONG lIn, short* psOut);
HRESULT WINAPI VarI2FromR4(FLOAT fltIn, short* psOut);
@@ -240,10 +237,8 @@
HRESULT WINAPI VarI2FromUI4(ULONG ulIn, short*psOut);
HRESULT WINAPI VarI2FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, short* psOut);
HRESULT WINAPI VarI2FromCy(CY cyIn, short* psOut);
-/*
-HRESULT WINAPI VarI2FromDec32(DECIMAL*pdecIn, short*psOut);
-HRESULT WINAPI VarI2FromDisp32(IDispatch* pdispIn, LCID lcid, short* psOut);
-*/
+HRESULT WINAPI VarI2FromDec(DECIMAL* pdecIn, short* psOut);
+HRESULT WINAPI VarI2FromDisp(IDispatch* pdispIn, LCID lcid, short* psOut);
HRESULT WINAPI VarI4FromUI1(BYTE bIn, LONG* plOut);
HRESULT WINAPI VarI4FromI2(short sIn, LONG* plOut);
@@ -256,10 +251,8 @@
HRESULT WINAPI VarI4FromUI4(ULONG ulIn, LONG*plOut);
HRESULT WINAPI VarI4FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, LONG* plOut);
HRESULT WINAPI VarI4FromCy(CY cyIn, LONG* plOut);
-/*
-HRESULT WINAPI VarI4FromDec32(DECIMAL*pdecIn, LONG*plOut);
-HRESULT WINAPI VarI4FromDisp32(IDispatch* pdispIn, LCID lcid, LONG* plOut);
-*/
+HRESULT WINAPI VarI4FromDec(DECIMAL* pdecIn, LONG* plOut);
+HRESULT WINAPI VarI4FromDisp(IDispatch* pdispIn, LCID lcid, LONG* plOut);
HRESULT WINAPI VarR4FromUI1(BYTE bIn, FLOAT* pfltOut);
HRESULT WINAPI VarR4FromI2(short sIn, FLOAT* pfltOut);
@@ -272,10 +265,8 @@
HRESULT WINAPI VarR4FromUI4(ULONG ulIn, FLOAT*pfltOut);
HRESULT WINAPI VarR4FromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, FLOAT*pfltOut);
HRESULT WINAPI VarR4FromCy(CY cyIn, FLOAT* pfltOut);
-/*
-HRESULT WINAPI VarR4FromDec32(DECIMAL*pdecIn, FLOAT*pfltOut);
-HRESULT WINAPI VarR4FromDisp32(IDispatch* pdispIn, LCID lcid, FLOAT* pfltOut);
-*/
+HRESULT WINAPI VarR4FromDec(DECIMAL* pdecIn, FLOAT* pfltOut);
+HRESULT WINAPI VarR4FromDisp(IDispatch* pdispIn, LCID lcid, FLOAT* pfltOut);
HRESULT WINAPI VarR8FromUI1(BYTE bIn, double* pdblOut);
HRESULT WINAPI VarR8FromI2(short sIn, double* pdblOut);
@@ -288,10 +279,8 @@
HRESULT WINAPI VarR8FromUI4(ULONG ulIn, double*pdblOut);
HRESULT WINAPI VarR8FromStr(OLECHAR*strIn, LCID lcid, ULONG dwFlags, double*pdblOut);
HRESULT WINAPI VarR8FromCy(CY cyIn, double* pdblOut);
-/*
-HRESULT WINAPI VarR8FromDec32(DECIMAL*pdecIn, double*pdblOut);
-HRESULT WINAPI VarR8FromDisp32(IDispatch* pdispIn, LCID lcid, double* pdblOut);
-*/
+HRESULT WINAPI VarR8FromDec(DECIMAL* pdecIn, double* pdblOut);
+HRESULT WINAPI VarR8FromDisp(IDispatch* pdispIn, LCID lcid, double* pdblOut);
HRESULT WINAPI VarDateFromUI1(BYTE bIn, DATE* pdateOut);
HRESULT WINAPI VarDateFromI2(short sIn, DATE* pdateOut);
@@ -304,10 +293,9 @@
HRESULT WINAPI VarDateFromUI4(ULONG ulIn, DATE*pdateOut);
HRESULT WINAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE* pdateOut);
HRESULT WINAPI VarDateFromCy(CY cyIn, DATE* pdateOut);
-/*
-HRESULT WINAPI VarDateFromDec32(DECIMAL*pdecIn, DATE*pdateOut);
-HRESULT WINAPI VarDateFromDisp32(IDispatch* pdispIn, LCID lcid, DATE* pdateOut);
-*/
+HRESULT WINAPI VarDateFromDec(DECIMAL* pdecIn, DATE* pdateOut);
+HRESULT WINAPI VarDateFromDisp(IDispatch* pdispIn, LCID lcid, DATE* pdateOut);
+
HRESULT WINAPI VarCyFromUI1(BYTE bIn, CY* pcyOut);
HRESULT WINAPI VarCyFromI2(short sIn, CY* pcyOut);
HRESULT WINAPI VarCyFromI4(LONG lIn, CY* pcyOut);
@@ -319,11 +307,9 @@
HRESULT WINAPI VarCyFromI1(signed char cIn, CY*pcyOut);
HRESULT WINAPI VarCyFromUI2(USHORT uiIn, CY*pcyOut);
HRESULT WINAPI VarCyFromUI4(ULONG ulIn, CY*pcyOut);
-/*
-HRESULT WINAPI VarCyFromDec32(DECIMAL*pdecIn, CY*pcyOut);
-HRESULT WINAPI VarCyFromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, CY* pcyOut);
-HRESULT WINAPI VarCyFromDisp32(IDispatch* pdispIn, LCID lcid, CY* pcyOut);
-*/
+HRESULT WINAPI VarCyFromDec(DECIMAL*pdecIn, CY*pcyOut);
+HRESULT WINAPI VarCyFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, CY* pcyOut);
+HRESULT WINAPI VarCyFromDisp(IDispatch* pdispIn, LCID lcid, CY* pcyOut);
HRESULT WINAPI VarBstrFromUI1(BYTE bVal, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
HRESULT WINAPI VarBstrFromI2(short iVal, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
@@ -337,10 +323,8 @@
HRESULT WINAPI VarBstrFromUI2(USHORT uiIn, LCID lcid, ULONG dwFlags, BSTR*pbstrOut);
HRESULT WINAPI VarBstrFromUI4(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR*pbstrOut);
HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
-/*
-HRESULT WINAPI VarBstrFromDec32(DECIMAL*pdecIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
-HRESULT WINAPI VarBstrFromDisp32(IDispatch* pdispIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
-*/
+HRESULT WINAPI VarBstrFromDec(DECIMAL* pdecIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
+HRESULT WINAPI VarBstrFromDisp(IDispatch* pdispIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
HRESULT WINAPI VarBoolFromUI1(BYTE bIn, VARIANT_BOOL* pboolOut);
HRESULT WINAPI VarBoolFromI2(short sIn, VARIANT_BOOL* pboolOut);
@@ -353,10 +337,8 @@
HRESULT WINAPI VarBoolFromUI2(USHORT uiIn, VARIANT_BOOL*pboolOut);
HRESULT WINAPI VarBoolFromUI4(ULONG ulIn, VARIANT_BOOL*pboolOut);
HRESULT WINAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL* pboolOut);
-/*
-HRESULT WINAPI VarBoolFromDec32(DECIMAL*pdecIn, VARIANT_BOOL*pboolOut);
-HRESULT WINAPI VarBoolFromDisp32(IDispatch* pdispIn, LCID lcid, VARIANT_BOOL* pboolOut);
-*/
+HRESULT WINAPI VarBoolFromDec(DECIMAL* pdecIn, VARIANT_BOOL* pboolOut);
+HRESULT WINAPI VarBoolFromDisp(IDispatch* pdispIn, LCID lcid, VARIANT_BOOL* pboolOut);
HRESULT WINAPI VarI1FromUI1(BYTE bIn, CHAR*pcOut);
HRESULT WINAPI VarI1FromI2(short uiIn, CHAR*pcOut);
@@ -369,10 +351,8 @@
HRESULT WINAPI VarI1FromUI2(USHORT uiIn, CHAR*pcOut);
HRESULT WINAPI VarI1FromUI4(ULONG ulIn, CHAR*pcOut);
HRESULT WINAPI VarI1FromCy(CY cyIn, CHAR*pcOut);
-/*
-HRESULT WINAPI VarI1FromDec32(DECIMAL*pdecIn, CHAR*pcOut);
-HRESULT WINAPI VarI1FromDisp32(IDispatch*pdispIn, LCID lcid, CHAR*pcOut);
-*/
+HRESULT WINAPI VarI1FromDec(DECIMAL* pdecIn, CHAR* pcOut);
+HRESULT WINAPI VarI1FromDisp(IDispatch* pdispIn, LCID lcid, CHAR* pcOut);
HRESULT WINAPI VarUI2FromUI1(BYTE bIn, USHORT*puiOut);
HRESULT WINAPI VarUI2FromI2(short uiIn, USHORT*puiOut);
@@ -385,10 +365,8 @@
HRESULT WINAPI VarUI2FromI1(CHAR cIn, USHORT*puiOut);
HRESULT WINAPI VarUI2FromUI4(ULONG ulIn, USHORT*puiOut);
HRESULT WINAPI VarUI2FromCy(CY cyIn, USHORT*puiOut);
-/*
-HRESULT WINAPI VarUI2FromDec32(DECIMAL*pdecIn, USHORT*puiOut);
-HRESULT WINAPI VarUI2FromDisp32(IDispatch*pdispIn, LCID lcid, USHORT*puiOut);
-*/
+HRESULT WINAPI VarUI2FromDec(DECIMAL* pdecIn, USHORT* puiOut);
+HRESULT WINAPI VarUI2FromDisp(IDispatch* pdispIn, LCID lcid, USHORT* puiOut);
HRESULT WINAPI VarUI4FromStr(OLECHAR*strIn, LCID lcid, ULONG dwFlags, ULONG*pulOut);
HRESULT WINAPI VarUI4FromUI1(BYTE bIn, ULONG*pulOut);
@@ -401,24 +379,22 @@
HRESULT WINAPI VarUI4FromI1(CHAR cIn, ULONG*pulOut);
HRESULT WINAPI VarUI4FromUI2(USHORT uiIn, ULONG*pulOut);
HRESULT WINAPI VarUI4FromCy(CY cyIn, ULONG*pulOut);
-/*
-HRESULT WINAPI VarUI4FromDec32(DECIMAL*pdecIn, ULONG*pulOut);
-HRESULT WINAPI VarUI4FromDisp32(IDispatch*pdispIn, LCID lcid, ULONG*pulOut);
-
-HRESULT WINAPI VarDecFromUI132(BYTE bIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromI232(short uiIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromI432(LONG lIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromR432(FLOAT fltIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromR832(double dblIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromDate32(DATE dateIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromBool32(VARIANT_BOOL boolIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromI132(CHAR cIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromUI232(USHORT uiIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromUI432(ULONG ulIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromCy32(CY cyIn, DECIMAL*pdecOut);
-HRESULT WINAPI VarDecFromDisp32(IDispatch*pdispIn, LCID lcid, DECIMAL*pdecOut);
-*/
+HRESULT WINAPI VarUI4FromDec(DECIMAL* pdecIn, ULONG* pulOut);
+HRESULT WINAPI VarUI4FromDisp(IDispatch* pdispIn, LCID lcid, ULONG* pulOut);
+
+HRESULT WINAPI VarDecFromUI1(BYTE bIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromI2(short uiIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromR4(FLOAT fltIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromR8(double dblIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromDate(DATE dateIn, DECIMAL*pdecOut);
+HRESULT WINAPI VarDecFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromBool(VARIANT_BOOL boolIn, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromI1(CHAR cIn, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromUI2(USHORT uiIn, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromUI4(ULONG ulIn, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromCy(CY cyIn, DECIMAL* pdecOut);
+HRESULT WINAPI VarDecFromDisp(IDispatch* pdispIn, LCID lcid, DECIMAL* pdecOut);
@@ -429,7 +405,7 @@
#define VarUI1FromUint VarUI1FromUI4
#define VarI2FromInt VarI2FromI4
#define VarI2FromUint VarI2FromUI4
-#define VarI4FromInt VarI4FromI432
+#define VarI4FromInt VarI4FromI4
#define VarI4FromUint VarI4FromUI4
#define VarR4FromInt VarR4FromI4
#define VarR4FromUint VarR4FromUI4
@@ -448,23 +424,23 @@
#define VarUI2FromInt VarUI2FromI4
#define VarUI2FromUint VarUI2FromUI4
#define VarUI4FromInt VarUI4FromI4
-#define VarUI4FromUint VarUI4FromUI432
-#define VarDecFromInt VarDecFromI432
-#define VarDecFromUint VarDecFromUI432
+#define VarUI4FromUint VarUI4FromUI4
+#define VarDecFromInt VarDecFromI4
+#define VarDecFromUint VarDecFromUI4
#define VarIntFromUI1 VarI4FromUI1
#define VarIntFromI2 VarI4FromI2
-#define VarIntFromI4 VarI4FromI432
+#define VarIntFromI4 VarI4FromI4
#define VarIntFromR4 VarI4FromR4
#define VarIntFromR8 VarI4FromR8
#define VarIntFromDate VarI4FromDate
#define VarIntFromCy VarI4FromCy
#define VarIntFromStr VarI4FromStr
-#define VarIntFromDisp VarI4FromDisp32
+#define VarIntFromDisp VarI4FromDisp
#define VarIntFromBool VarI4FromBool
#define VarIntFromI1 VarI4FromI1
#define VarIntFromUI2 VarI4FromUI2
#define VarIntFromUI4 VarI4FromUI4
-#define VarIntFromDec VarI4FromDec32
+#define VarIntFromDec VarI4FromDec
#define VarIntFromUint VarI4FromUI4
#define VarUintFromUI1 VarUI4FromUI1
#define VarUintFromI2 VarUI4FromI2
@@ -474,12 +450,12 @@
#define VarUintFromDate VarUI4FromDate
#define VarUintFromCy VarUI4FromCy
#define VarUintFromStr VarUI4FromStr
-#define VarUintFromDisp VarUI4FromDisp32
+#define VarUintFromDisp VarUI4FromDisp
#define VarUintFromBool VarUI4FromBool
#define VarUintFromI1 VarUI4FromI1
#define VarUintFromUI2 VarUI4FromUI2
-#define VarUintFromUI4 VarUI4FromUI432
-#define VarUintFromDec VarUI4FromDec32
+#define VarUintFromUI4 VarUI4FromUI4
+#define VarUintFromDec VarUI4FromDec
#define VarUintFromInt VarUI4FromI4
/*
More information about the wine-patches
mailing list