mirror of
https://github.com/reactos/wine.git
synced 2025-02-22 22:01:51 +00:00
Most of the currency variant conversion functions implemented.
Minor bugfixes and header tidying.
This commit is contained in:
parent
b6eda08113
commit
bc93bc833e
16
include/mapidefs.h
Normal file
16
include/mapidefs.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef __WINE_MAPIDEFS_H
|
||||
#define __WINE_MAPIDEFS_H
|
||||
|
||||
#include "wintypes.h"
|
||||
|
||||
typedef union tagCY CY;
|
||||
|
||||
union tagCY{
|
||||
struct {
|
||||
unsigned long Lo;
|
||||
long Hi;
|
||||
} u;
|
||||
LONGLONG int64;
|
||||
};
|
||||
|
||||
#endif /*__WINE_MAPIDEFS_H*/
|
@ -2,6 +2,7 @@
|
||||
#define __WINE_OLEAUTO_H
|
||||
|
||||
#include <ole.h>
|
||||
#include "mapidefs.h"
|
||||
|
||||
BSTR16 WINAPI SysAllocString16(LPOLESTR16);
|
||||
BSTR32 WINAPI SysAllocString32(LPOLESTR32);
|
||||
@ -38,7 +39,6 @@ typedef short VARIANT_BOOL;
|
||||
#define VARIANT_TRUE 0xFFFF
|
||||
#define VARIANT_FALSE 0x0000
|
||||
|
||||
typedef double DATE;
|
||||
typedef LONG SCODE;
|
||||
|
||||
enum VARENUM {
|
||||
@ -135,9 +135,9 @@ struct tagVARIANT {
|
||||
SCODE scode;
|
||||
DATE date;
|
||||
BSTR32 bstrVal;
|
||||
CY cyVal;
|
||||
/*
|
||||
DECIMAL decVal;
|
||||
CY cyVal;
|
||||
IUnknown* punkVal;
|
||||
IDispatch* pdispVal;
|
||||
SAFEARRAY* parray;
|
||||
@ -161,9 +161,9 @@ struct tagVARIANT {
|
||||
BSTR32* pbstrVal;
|
||||
VARIANT* pvarVal;
|
||||
PVOID byref;
|
||||
CY* pcyVal;
|
||||
/*
|
||||
DECIMAL* pdecVal;
|
||||
CY* pcyVal;
|
||||
IUnknown** ppunkVal;
|
||||
IDispatch** ppdispVal;
|
||||
SAFEARRAY** pparray;
|
||||
@ -296,14 +296,14 @@ HRESULT WINAPI VarUI1FromUI432(ULONG ulIn, BYTE*pbOut);
|
||||
#define VarUI1FromUI4 WINELIB_NAME(VarUI1FromUI4)
|
||||
HRESULT WINAPI VarUI1FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, BYTE* pbOut);
|
||||
#define VarUI1FromStr WINELIB_NAME(VarUI1FromStr)
|
||||
HRESULT WINAPI VarUI1FromCy32(CY cyIn, BYTE* pbOut);
|
||||
#define VarUI1FromCy WINELIB_NAME(VarUI1FromCy)
|
||||
|
||||
/*
|
||||
HRESULT WINAPI VarUI1FromDec32(DECIMAL*pdecIn, BYTE*pbOut);
|
||||
#define VarUI1FromDec WINELIB_NAME(VarUI1FromDec)
|
||||
HRESULT WINAPI VarUI1FromDisp32(IDispatch* pdispIn, LCID lcid, BYTE* pbOut);
|
||||
#define VarUI1FromDisp WINELIB_NAME(VarUI1FromDisp)
|
||||
HRESULT WINAPI VarUI1FromCy32(CY cyIn, BYTE* pbOut);
|
||||
#define VarUI1FromCy WINELIB_NAME(VarUI1FromCy)
|
||||
*/
|
||||
|
||||
HRESULT WINAPI VarI2FromUI132(BYTE bIn, short* psOut);
|
||||
@ -326,13 +326,13 @@ HRESULT WINAPI VarI2FromUI432(ULONG ulIn, short*psOut);
|
||||
#define VarI2FromUI4 WINELIB_NAME(VarI2FromUI4)
|
||||
HRESULT WINAPI VarI2FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, short* psOut);
|
||||
#define VarI2FromStr WINELIB_NAME(VarI2FromStr)
|
||||
HRESULT WINAPI VarI2FromCy32(CY cyIn, short* psOut);
|
||||
#define VarI2FromCy WINELIB_NAME(VarI2FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarI2FromDec32(DECIMAL*pdecIn, short*psOut);
|
||||
#define VarI2FromDec WINELIB_NAME(VarI2FromDec)
|
||||
HRESULT WINAPI VarI2FromDisp32(IDispatch* pdispIn, LCID lcid, short* psOut);
|
||||
#define VarI2FromDisp WINELIB_NAME(VarI2FromDisp)
|
||||
HRESULT WINAPI VarI2FromCy32(CY cyIn, short* psOut);
|
||||
#define VarI2FromCy WINELIB_NAME(VarI2FromCy)
|
||||
*/
|
||||
|
||||
HRESULT WINAPI VarI4FromUI132(BYTE bIn, LONG* plOut);
|
||||
@ -355,9 +355,9 @@ HRESULT WINAPI VarI4FromUI432(ULONG ulIn, LONG*plOut);
|
||||
#define VarI4FromUI4 WINELIB_NAME(VarI4FromUI4)
|
||||
HRESULT WINAPI VarI4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, LONG* plOut);
|
||||
#define VarI4FromStr WINELIB_NAME(VarI4FromStr)
|
||||
/*
|
||||
HRESULT WINAPI VarI4FromCy32(CY cyIn, LONG* plOut);
|
||||
#define VarI4FromCy WINELIB_NAME(VarI4FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarI4FromDec32(DECIMAL*pdecIn, LONG*plOut);
|
||||
#define VarI4FromDec WINELIB_NAME(VarI4FromDec)
|
||||
HRESULT WINAPI VarI4FromDisp32(IDispatch* pdispIn, LCID lcid, LONG* plOut);
|
||||
@ -384,13 +384,13 @@ HRESULT WINAPI VarR4FromUI432(ULONG ulIn, FLOAT*pfltOut);
|
||||
#define VarR4FromUI4 WINELIB_NAME(VarR4FromUI4)
|
||||
HRESULT WINAPI VarR4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, FLOAT*pfltOut);
|
||||
#define VarR4FromStr WINELIB_NAME(VarR4FromStr)
|
||||
HRESULT WINAPI VarR4FromCy32(CY cyIn, FLOAT* pfltOut);
|
||||
#define VarR4FromCy WINELIB_NAME(VarR4FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarR4FromDec32(DECIMAL*pdecIn, FLOAT*pfltOut);
|
||||
#define VarR4FromDec WINELIB_NAME(VarR4FromDec)
|
||||
HRESULT WINAPI VarR4FromDisp32(IDispatch* pdispIn, LCID lcid, FLOAT* pfltOut);
|
||||
#define VarR4FromDisp WINELIB_NAME(VarR4FromDisp)
|
||||
HRESULT WINAPI VarR4FromCy32(CY cyIn, FLOAT* pfltOut);
|
||||
#define VarR4FromCy WINELIB_NAME(VarR4FromCy)
|
||||
*/
|
||||
|
||||
HRESULT WINAPI VarR8FromUI132(BYTE bIn, double* pdblOut);
|
||||
@ -413,11 +413,11 @@ HRESULT WINAPI VarR8FromUI432(ULONG ulIn, double*pdblOut);
|
||||
#define VarR8FromUI4 WINELIB_NAME(VarR8FromUI4)
|
||||
HRESULT WINAPI VarR8FromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, double*pdblOut);
|
||||
#define VarR8FromStr WINELIB_NAME(VarR8FromStr)
|
||||
HRESULT WINAPI VarR8FromCy32(CY cyIn, double* pdblOut);
|
||||
#define VarR8FromCy WINELIB_NAME(VarR8FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarR8FromDec32(DECIMAL*pdecIn, double*pdblOut);
|
||||
#define VarR8FromDec WINELIB_NAME(VarR8FromDec)
|
||||
HRESULT WINAPI VarR8FromCy32(CY cyIn, double* pdblOut);
|
||||
#define VarR8FromCy WINELIB_NAME(VarR8FromCy)
|
||||
HRESULT WINAPI VarR8FromDisp32(IDispatch* pdispIn, LCID lcid, double* pdblOut);
|
||||
#define VarR8FromDisp WINELIB_NAME(VarR8FromDisp)
|
||||
*/
|
||||
@ -442,14 +442,14 @@ HRESULT WINAPI VarDateFromUI432(ULONG ulIn, DATE*pdateOut);
|
||||
#define VarDateFromUI4 WINELIB_NAME(VarDateFromUI4)
|
||||
HRESULT WINAPI VarDateFromBool32(VARIANT_BOOL boolIn, DATE* pdateOut);
|
||||
#define VarDateFromBool WINELIB_NAME(VarDateFromBool)
|
||||
HRESULT WINAPI VarDateFromCy32(CY cyIn, DATE* pdateOut);
|
||||
#define VarDateFromCy WINELIB_NAME(VarDateFromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarDateFromDec32(DECIMAL*pdecIn, DATE*pdateOut);
|
||||
#define VarDateFromDec WINELIB_NAME(VarDateFromDec)
|
||||
HRESULT WINAPI VarDateFromDisp32(IDispatch* pdispIn, LCID lcid, DATE* pdateOut);
|
||||
#define VarDateFromDisp WINELIB_NAME(VarDateFromDisp)
|
||||
HRESULT WINAPI VarDateFromCy32(CY cyIn, DATE* pdateOut);
|
||||
#define VarDateFromCy WINELIB_NAME(VarDateFromCy)
|
||||
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromUI132(BYTE bIn, CY* pcyOut);
|
||||
#define VarCyFromUI1 WINELIB_NAME(VarCyFromUI1)
|
||||
HRESULT WINAPI VarCyFromI232(short sIn, CY* pcyOut);
|
||||
@ -462,10 +462,6 @@ HRESULT WINAPI VarCyFromR832(double dblIn, CY* pcyOut);
|
||||
#define VarCyFromR8 WINELIB_NAME(VarCyFromR8)
|
||||
HRESULT WINAPI VarCyFromDate32(DATE dateIn, CY* pcyOut);
|
||||
#define VarCyFromDate WINELIB_NAME(VarCyFromDate)
|
||||
HRESULT WINAPI VarCyFromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, CY* pcyOut);
|
||||
#define VarCyFromStr WINELIB_NAME(VarCyFromStr)
|
||||
HRESULT WINAPI VarCyFromDisp32(IDispatch* pdispIn, LCID lcid, CY* pcyOut);
|
||||
#define VarCyFromDisp WINELIB_NAME(VarCyFromDisp)
|
||||
HRESULT WINAPI VarCyFromBool32(VARIANT_BOOL boolIn, CY* pcyOut);
|
||||
#define VarCyFromBool WINELIB_NAME(VarCyFromBool)
|
||||
HRESULT WINAPI VarCyFromI132(CHAR cIn, CY*pcyOut);
|
||||
@ -474,8 +470,13 @@ HRESULT WINAPI VarCyFromUI232(USHORT uiIn, CY*pcyOut);
|
||||
#define VarCyFromUI2 WINELIB_NAME(VarCyFromUI2)
|
||||
HRESULT WINAPI VarCyFromUI432(ULONG ulIn, CY*pcyOut);
|
||||
#define VarCyFromUI4 WINELIB_NAME(VarCyFromUI4)
|
||||
/*
|
||||
HRESULT WINAPI VarCyFromDec32(DECIMAL*pdecIn, CY*pcyOut);
|
||||
#define VarCyFromDec WINELIB_NAME(VarCyFromDec)
|
||||
HRESULT WINAPI VarCyFromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, CY* pcyOut);
|
||||
#define VarCyFromStr WINELIB_NAME(VarCyFromStr)
|
||||
HRESULT WINAPI VarCyFromDisp32(IDispatch* pdispIn, LCID lcid, CY* pcyOut);
|
||||
#define VarCyFromDisp WINELIB_NAME(VarCyFromDisp)
|
||||
*/
|
||||
|
||||
HRESULT WINAPI VarBstrFromUI132(BYTE bVal, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
|
||||
@ -498,11 +499,11 @@ HRESULT WINAPI VarBstrFromUI232(USHORT uiIn, LCID lcid, ULONG dwFlags, BSTR32*pb
|
||||
#define VarBstrFromUI2 WINELIB_NAME(VarBstrFromUI2)
|
||||
HRESULT WINAPI VarBstrFromUI432(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
|
||||
#define VarBstrFromUI4 WINELIB_NAME(VarBstrFromUI4)
|
||||
HRESULT WINAPI VarBstrFromCy32(CY cyIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
|
||||
#define VarBstrFromCy WINELIB_NAME(VarBstrFromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarBstrFromDec32(DECIMAL*pdecIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
|
||||
#define VarBstrFromDec WINELIB_NAME(VarBstrFromDec)
|
||||
HRESULT WINAPI VarBstrFromCy32(CY cyIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
|
||||
#define VarBstrFromCy WINELIB_NAME(VarBstrFromCy)
|
||||
HRESULT WINAPI VarBstrFromDisp32(IDispatch* pdispIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
|
||||
#define VarBstrFromDisp WINELIB_NAME(VarBstrFromDisp)
|
||||
*/
|
||||
@ -527,11 +528,11 @@ HRESULT WINAPI VarBoolFromUI232(USHORT uiIn, VARIANT_BOOL*pboolOut);
|
||||
#define VarBoolFromUI2 WINELIB_NAME(VarBoolFromUI2)
|
||||
HRESULT WINAPI VarBoolFromUI432(ULONG ulIn, VARIANT_BOOL*pboolOut);
|
||||
#define VarBoolFromUI4 WINELIB_NAME(VarBoolFromUI4)
|
||||
HRESULT WINAPI VarBoolFromCy32(CY cyIn, VARIANT_BOOL* pboolOut);
|
||||
#define VarBoolFromCy WINELIB_NAME(VarBoolFromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarBoolFromDec32(DECIMAL*pdecIn, VARIANT_BOOL*pboolOut);
|
||||
#define VarBoolFromDec WINELIB_NAME(VarBoolFromDec)
|
||||
HRESULT WINAPI VarBoolFromCy32(CY cyIn, VARIANT_BOOL* pboolOut);
|
||||
#define VarBoolFromCy WINELIB_NAME(VarBoolFromCy)
|
||||
HRESULT WINAPI VarBoolFromDisp32(IDispatch* pdispIn, LCID lcid, VARIANT_BOOL* pboolOut);
|
||||
#define VarBoolFromDisp WINELIB_NAME(VarBoolFromDisp)
|
||||
*/
|
||||
@ -556,13 +557,13 @@ HRESULT WINAPI VarI1FromUI232(USHORT uiIn, CHAR*pcOut);
|
||||
#define VarI1FromUI2 WINELIB_NAME(VarI1FromUI2)
|
||||
HRESULT WINAPI VarI1FromUI432(ULONG ulIn, CHAR*pcOut);
|
||||
#define VarI1FromUI4 WINELIB_NAME(VarI1FromUI4)
|
||||
HRESULT WINAPI VarI1FromCy32(CY cyIn, CHAR*pcOut);
|
||||
#define VarI1FromCy WINELIB_NAME(VarI1FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarI1FromDec32(DECIMAL*pdecIn, CHAR*pcOut);
|
||||
#define VarI1FromDec WINELIB_NAME(VarI1FromDec)
|
||||
HRESULT WINAPI VarI1FromDisp32(IDispatch*pdispIn, LCID lcid, CHAR*pcOut);
|
||||
#define VarI1FromDisp WINELIB_NAME(VarI1FromDisp)
|
||||
HRESULT WINAPI VarI1FromCy32(CY cyIn, CHAR*pcOut);
|
||||
#define VarI1FromCy WINELIB_NAME(VarI1FromCy)
|
||||
*/
|
||||
|
||||
HRESULT WINAPI VarUI2FromUI132(BYTE bIn, USHORT*puiOut);
|
||||
@ -585,11 +586,11 @@ HRESULT WINAPI VarUI2FromI132(CHAR cIn, USHORT*puiOut);
|
||||
#define VarUI2FromI1 WINELIB_NAME(VarUI2FromI1)
|
||||
HRESULT WINAPI VarUI2FromUI432(ULONG ulIn, USHORT*puiOut);
|
||||
#define VarUI2FromUI4 WINELIB_NAME(VarUI2FromUI4)
|
||||
HRESULT WINAPI VarUI2FromCy32(CY cyIn, USHORT*puiOut);
|
||||
#define VarUI2FromCy WINELIB_NAME(VarUI2FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarUI2FromDec32(DECIMAL*pdecIn, USHORT*puiOut);
|
||||
#define VarUI2FromDec WINELIB_NAME(VarUI2FromDec)
|
||||
HRESULT WINAPI VarUI2FromCy32(CY cyIn, USHORT*puiOut);
|
||||
#define VarUI2FromCy WINELIB_NAME(VarUI2FromCy)
|
||||
HRESULT WINAPI VarUI2FromDisp32(IDispatch*pdispIn, LCID lcid, USHORT*puiOut);
|
||||
#define VarUI2FromDisp WINELIB_NAME(VarUI2FromDisp)
|
||||
*/
|
||||
@ -614,13 +615,13 @@ HRESULT WINAPI VarUI4FromI132(CHAR cIn, ULONG*pulOut);
|
||||
#define VarUI4FromI1 WINELIB_NAME(VarUI4FromI1)
|
||||
HRESULT WINAPI VarUI4FromUI232(USHORT uiIn, ULONG*pulOut);
|
||||
#define VarUI4FromUI2 WINELIB_NAME(VarUI4FromUI2)
|
||||
HRESULT WINAPI VarUI4FromCy32(CY cyIn, ULONG*pulOut);
|
||||
#define VarUI4FromCy WINELIB_NAME(VarUI4FromCy)
|
||||
/*
|
||||
HRESULT WINAPI VarUI4FromDec32(DECIMAL*pdecIn, ULONG*pulOut);
|
||||
#define VarUI4FromDec WINELIB_NAME(VarUI4FromDec)
|
||||
HRESULT WINAPI VarUI4FromDisp32(IDispatch*pdispIn, LCID lcid, ULONG*pulOut);
|
||||
#define VarUI4FromDisp WINELIB_NAME(VarUI4FromDisp)
|
||||
HRESULT WINAPI VarUI4FromCy32(CY cyIn, ULONG*pulOut);
|
||||
#define VarUI4FromCy WINELIB_NAME(VarUI4FromCy)
|
||||
|
||||
HRESULT WINAPI VarDecFromUI132(BYTE bIn, DECIMAL*pdecOut);
|
||||
#define VarDecFromUI1 WINELIB_NAME(VarDecFromUI1)
|
||||
|
@ -110,8 +110,6 @@ typedef struct PDEVICE_HEADER
|
||||
LOADED_PRINTER_DRIVER *pLPD; /* Associated printer driver */
|
||||
} PDEVICE_HEADER;
|
||||
|
||||
typedef short SHORT;
|
||||
|
||||
#pragma pack(1)
|
||||
#define PCOLOR DWORD
|
||||
typedef struct DRAWMODE
|
||||
|
@ -80,6 +80,7 @@ typedef unsigned long DWORD;
|
||||
typedef unsigned long ULONG;
|
||||
typedef unsigned char BYTE;
|
||||
typedef long LONG;
|
||||
typedef short SHORT;
|
||||
typedef unsigned short USHORT;
|
||||
typedef char CHAR;
|
||||
typedef unsigned char UCHAR;
|
||||
@ -87,6 +88,11 @@ typedef unsigned char UCHAR;
|
||||
typedef unsigned short WCHAR;
|
||||
typedef unsigned short BOOL16;
|
||||
typedef int BOOL32;
|
||||
typedef double DATE;
|
||||
#ifdef __i386__
|
||||
typedef double LONGLONG;
|
||||
typedef double ULONGLONG;
|
||||
#endif /*__i386__*/
|
||||
|
||||
/* Integer types. These are the same for emulator and library. */
|
||||
|
||||
|
@ -448,7 +448,7 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
|
||||
|
||||
TRACE(ole, "%p", pguid);
|
||||
|
||||
return 1;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
338
ole/variant.c
338
ole/variant.c
@ -19,10 +19,12 @@
|
||||
* working on this.
|
||||
*/
|
||||
|
||||
#include "wintypes.h"
|
||||
#include "oleauto.h"
|
||||
#include "heap.h"
|
||||
#include "debug.h"
|
||||
#include "winerror.h"
|
||||
#include "mapidefs.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@ -41,7 +43,7 @@ static const short I2_MIN = -32768;
|
||||
static const unsigned long UI4_MAX = 4294967295;
|
||||
static const unsigned long UI4_MIN = 0;
|
||||
static const long I4_MAX = 2147483647;
|
||||
static const long I4_MIN = -2147483648.0;
|
||||
static const long I4_MIN = -2147483648;
|
||||
static const DATE DATE_MIN = -657434;
|
||||
static const DATE DATE_MAX = 2958465;
|
||||
|
||||
@ -138,20 +140,18 @@ static BSTR32 StringDupAtoBstr( char* strIn )
|
||||
*/
|
||||
static double round( double d )
|
||||
{
|
||||
double decimals = 0.0;
|
||||
unsigned long integerValue = 0.0;
|
||||
double roundedValue = 0.0;
|
||||
double decimals = 0.0, integerValue = 0.0, roundedValue = 0.0;
|
||||
BOOL32 bEvenNumber = FALSE;
|
||||
int nSign = 0;
|
||||
|
||||
/* Save the sign of the number
|
||||
*/
|
||||
nSign = d >= 0.0 ? 1 : -1;
|
||||
nSign = (d >= 0.0) ? 1 : -1;
|
||||
d = fabs( d );
|
||||
|
||||
/* Remove the decimals.
|
||||
*/
|
||||
integerValue = (unsigned long) d;
|
||||
integerValue = floor( d );
|
||||
|
||||
/* Set the Even flag. This is used to round the number when
|
||||
* the decimals are exactly 1/2. If the integer part is
|
||||
@ -159,7 +159,7 @@ static double round( double d )
|
||||
* is even the number is rounded down. Using this method
|
||||
* numbers are rounded up|down half the time.
|
||||
*/
|
||||
bEvenNumber = ((integerValue % 2) == 0) ? TRUE : FALSE;
|
||||
bEvenNumber = (((short)fmod(integerValue, 2)) == 0) ? TRUE : FALSE;
|
||||
|
||||
/* Remove the integral part of the number.
|
||||
*/
|
||||
@ -198,7 +198,6 @@ static double round( double d )
|
||||
return roundedValue * nSign;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* RemoveCharacterFromString [INTERNAL]
|
||||
*
|
||||
@ -535,7 +534,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarI1FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.cVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarI1FromCY32( ps->u.cyVal, &(pd->u.cVal) );*/
|
||||
res = VarI1FromCy32( ps->u.cyVal, &(pd->u.cVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarI1FromDisp32( ps->u.pdispVal, lcid, &(pd->u.cVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -588,7 +587,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarI2FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.iVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarI2FromCY32( ps->u.cyVal, &(pd->u.iVal) );*/
|
||||
res = VarI2FromCy32( ps->u.cyVal, &(pd->u.iVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarI2FromDisp32( ps->u.pdispVal, lcid, &(pd->u.iVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -642,7 +641,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarI4FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.lVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarI4FromCY32( ps->u.cyVal, &(pd->u.lVal) );*/
|
||||
res = VarI4FromCy32( ps->u.cyVal, &(pd->u.lVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarI4FromDisp32( ps->u.pdispVal, lcid, &(pd->u.lVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -695,7 +694,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarUI1FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.bVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarUI1FromCY32( ps->u.cyVal, &(pd->u.bVal) );*/
|
||||
res = VarUI1FromCy32( ps->u.cyVal, &(pd->u.bVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarUI1FromDisp32( ps->u.pdispVal, lcid, &(pd->u.bVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -748,7 +747,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarUI2FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.uiVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarUI2FromCY32( ps->u.cyVal, &(pd->u.uiVal) );*/
|
||||
res = VarUI2FromCy32( ps->u.cyVal, &(pd->u.uiVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarUI2FromDisp32( ps->u.pdispVal, lcid, &(pd->u.uiVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -801,7 +800,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarUI4FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.ulVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarUI4FromCY32( ps->u.cyVal, &(pd->u.ulVal) );*/
|
||||
res = VarUI4FromCy32( ps->u.cyVal, &(pd->u.ulVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarUI4FromDisp32( ps->u.pdispVal, lcid, &(pd->u.ulVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -854,7 +853,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarR4FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.fltVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarR4FromCY32( ps->u.cyVal, &(pd->u.fltVal) );*/
|
||||
res = VarR4FromCy32( ps->u.cyVal, &(pd->u.fltVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarR4FromDisp32( ps->u.pdispVal, lcid, &(pd->u.fltVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -907,7 +906,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarR8FromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.dblVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarR8FromCY32( ps->u.cyVal, &(pd->u.dblVal) );*/
|
||||
res = VarR8FromCy32( ps->u.cyVal, &(pd->u.dblVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarR8FromDisp32( ps->u.pdispVal, lcid, &(pd->u.dblVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -964,7 +963,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarDateFromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.date) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarDateFromCY32( ps->u.cyVal, &(pd->u.date) );*/
|
||||
res = VarDateFromCy32( ps->u.cyVal, &(pd->u.date) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarDateFromDisp32( ps->u.pdispVal, lcid, &(pd->u.date) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -1021,7 +1020,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VarBoolFromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.boolVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarBoolFromCY32( ps->u.cyVal, &(pd->u.boolVal) );*/
|
||||
res = VarBoolFromCy32( ps->u.cyVal, &(pd->u.boolVal) );
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarBoolFromDisp32( ps->u.pdispVal, lcid, &(pd->u.boolVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -1078,7 +1077,7 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
res = VariantCopy32( pd, ps );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
/*res = VarBstrFromCY32( ps->u.cyVal, lcid, dwFlags, &(pd->u.bstrVal) );*/
|
||||
/*res = VarBstrFromCy32( ps->u.cyVal, lcid, dwFlags, &(pd->u.bstrVal) );*/
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarBstrFromDisp32( ps->u.pdispVal, lcid, lcid, dwFlags, &(pd->u.bstrVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
@ -1092,6 +1091,63 @@ static HRESULT Coerce( VARIANTARG* pd, LCID lcid, ULONG dwFlags, VARIANTARG* ps,
|
||||
}
|
||||
break;
|
||||
|
||||
case( VT_CY ):
|
||||
switch( vtFrom )
|
||||
{
|
||||
case( VT_I1 ):
|
||||
res = VarCyFromI132( ps->u.cVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_I2 ):
|
||||
res = VarCyFromI232( ps->u.iVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_INT ):
|
||||
res = VarCyFromInt32( ps->u.intVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_I4 ):
|
||||
res = VarCyFromI432( ps->u.lVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_UI1 ):
|
||||
res = VarCyFromUI132( ps->u.bVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_UI2 ):
|
||||
res = VarCyFromUI232( ps->u.uiVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_UINT ):
|
||||
res = VarCyFromUint32( ps->u.uintVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_UI4 ):
|
||||
res = VarCyFromUI432( ps->u.ulVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_R4 ):
|
||||
res = VarCyFromR432( ps->u.fltVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_R8 ):
|
||||
res = VarCyFromR832( ps->u.dblVal, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_DATE ):
|
||||
res = VarCyFromDate32( ps->u.date, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_BOOL ):
|
||||
res = VarCyFromBool32( ps->u.date, &(pd->u.cyVal) );
|
||||
break;
|
||||
case( VT_CY ):
|
||||
res = VariantCopy32( pd, ps );
|
||||
break;
|
||||
case( VT_BSTR ):
|
||||
/*res = VarCyFromStr32( ps->u.bstrVal, lcid, dwFlags, &(pd->u.cyVal) );*/
|
||||
case( VT_DISPATCH ):
|
||||
/*res = VarCyFromDisp32( ps->u.pdispVal, lcid, &(pd->u.boolVal) );*/
|
||||
case( VT_UNKNOWN ):
|
||||
/*res = VarCyFrom32( ps->u.lVal, &(pd->u.boolVal) );*/
|
||||
case( VT_DECIMAL ):
|
||||
/*res = VarCyFromDec32( ps->u.deiVal, &(pd->u.boolVal) );*/
|
||||
default:
|
||||
res = DISP_E_TYPEMISMATCH;
|
||||
FIXME(ole,"Coercion from %d to %d\n", vtFrom, vt );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
res = DISP_E_TYPEMISMATCH;
|
||||
FIXME(ole,"Coercion from %d to %d\n", vtFrom, vt );
|
||||
@ -1367,7 +1423,7 @@ HRESULT WINAPI VariantCopyInd32(VARIANT* pvargDest, VARIANTARG* pvargSrc)
|
||||
{
|
||||
/* Prevent from cycling. According to tests on
|
||||
* VariantCopyInd in Windows and the documentation
|
||||
* this API dereferences the inner Variants to only on depth.
|
||||
* this API dereferences the inner Variants to only one depth.
|
||||
* If the inner Variant itself contains an
|
||||
* other inner variant the E_INVALIDARG error is
|
||||
* returned.
|
||||
@ -1707,6 +1763,19 @@ HRESULT WINAPI VarUI1FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, BYTE*
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarUI1FromCy32 [OLEAUT32.134]
|
||||
* Convert currency to unsigned char
|
||||
*/
|
||||
HRESULT WINAPI VarUI1FromCy32(CY cyIn, BYTE* pbOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > UI1_MAX || t < UI1_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*pbOut = (BYTE)t;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarI2FromUI132 [OLEAUT32.48]
|
||||
*/
|
||||
@ -1900,6 +1969,19 @@ HRESULT WINAPI VarI2FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, short*
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarI2FromCy32 [OLEAUT32.52]
|
||||
* Convert currency to signed short
|
||||
*/
|
||||
HRESULT WINAPI VarI2FromCy32(CY cyIn, short* psOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > I2_MAX || t < I2_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*psOut = (SHORT)t;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarI4FromUI132 [OLEAUT32.58]
|
||||
*/
|
||||
@ -2080,6 +2162,19 @@ HRESULT WINAPI VarI4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, LONG*
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarI4FromCy32 [OLEAUT32.62]
|
||||
* Convert currency to signed long
|
||||
*/
|
||||
HRESULT WINAPI VarI4FromCy32(CY cyIn, LONG* plOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > I4_MAX || t < I4_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*plOut = (LONG)t;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarR4FromUI132 [OLEAUT32.68]
|
||||
*/
|
||||
@ -2241,6 +2336,16 @@ HRESULT WINAPI VarR4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, FLOAT*
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarR4FromCy32 [OLEAUT32.72]
|
||||
* Convert currency to float
|
||||
*/
|
||||
HRESULT WINAPI VarR4FromCy32(CY cyIn, FLOAT* pfltOut) {
|
||||
*pfltOut = (FLOAT)((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarR8FromUI132 [OLEAUT32.68]
|
||||
*/
|
||||
@ -2381,6 +2486,16 @@ HRESULT WINAPI VarR8FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, double
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarR8FromCy32 [OLEAUT32.82]
|
||||
* Convert currency to double
|
||||
*/
|
||||
HRESULT WINAPI VarR8FromCy32(CY cyIn, double* pdblOut) {
|
||||
*pdblOut = (double)((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarDateFromUI132 [OLEAUT32.]
|
||||
*/
|
||||
@ -2554,6 +2669,16 @@ HRESULT WINAPI VarDateFromBool32(VARIANT_BOOL boolIn, DATE* pdateOut)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarDateFromCy32 [OLEAUT32.93]
|
||||
* Convert currency to date
|
||||
*/
|
||||
HRESULT WINAPI VarDateFromCy32(CY cyIn, DATE* pdateOut) {
|
||||
*pdateOut = (DATE)((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (*pdateOut > DATE_MAX || *pdateOut < DATE_MIN) return DISP_E_TYPEMISMATCH;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarBstrFromUI132 [OLEAUT32.108]
|
||||
@ -3050,6 +3175,17 @@ HRESULT WINAPI VarBoolFromUI432(ULONG ulIn, VARIANT_BOOL* pboolOut)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarBoolFromCy32 [OLEAUT32.124]
|
||||
* Convert currency to boolean
|
||||
*/
|
||||
HRESULT WINAPI VarBoolFromCy32(CY cyIn, VARIANT_BOOL* pboolOut) {
|
||||
if (cyIn.u.Hi || cyIn.u.Lo) *pboolOut = -1;
|
||||
else *pboolOut = 0;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarI1FromUI132 [OLEAUT32.244]
|
||||
*/
|
||||
@ -3243,6 +3379,19 @@ HRESULT WINAPI VarI1FromUI432(ULONG ulIn, CHAR* pcOut)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarI1FromCy32 [OLEAUT32.250]
|
||||
* Convert currency to signed char
|
||||
*/
|
||||
HRESULT WINAPI VarI1FromCy32(CY cyIn, CHAR* pcOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > CHAR_MAX || t < CHAR_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*pcOut = (CHAR)t;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarUI2FromUI132 [OLEAUT32.257]
|
||||
*/
|
||||
@ -3464,6 +3613,20 @@ HRESULT WINAPI VarUI4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, ULONG
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarUI2FromCy32 [OLEAUT32.263]
|
||||
* Convert currency to unsigned short
|
||||
*/
|
||||
HRESULT WINAPI VarUI2FromCy32(CY cyIn, USHORT* pusOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > UI2_MAX || t < UI2_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*pusOut = (USHORT)t;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* VarUI4FromUI132 [OLEAUT32.270]
|
||||
*/
|
||||
@ -3598,3 +3761,138 @@ HRESULT WINAPI VarUI4FromUI232(USHORT uiIn, ULONG* pulOut)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarUI4FromCy32 [OLEAUT32.276]
|
||||
* Convert currency to unsigned long
|
||||
*/
|
||||
HRESULT WINAPI VarUI4FromCy32(CY cyIn, ULONG* pulOut) {
|
||||
double t = round((((double)cyIn.u.Hi * 4294967296) + (double)cyIn.u.Lo) / 10000);
|
||||
|
||||
if (t > UI4_MAX || t < UI4_MIN) return DISP_E_OVERFLOW;
|
||||
|
||||
*pulOut = (ULONG)t;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromUI132 [OLEAUT32.98]
|
||||
* Convert unsigned char to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromUI132(BYTE bIn, CY* pcyOut) {
|
||||
pcyOut->u.Hi = 0;
|
||||
pcyOut->u.Lo = ((ULONG)bIn) * 10000;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromI232 [OLEAUT32.99]
|
||||
* Convert signed short to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromI232(short sIn, CY* pcyOut) {
|
||||
if (sIn < 0) pcyOut->u.Hi = -1;
|
||||
else pcyOut->u.Hi = 0;
|
||||
pcyOut->u.Lo = ((ULONG)sIn) * 10000;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromI432 [OLEAUT32.100]
|
||||
* Convert signed long to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromI432(LONG lIn, CY* pcyOut) {
|
||||
double t = (double)lIn * (double)10000;
|
||||
pcyOut->u.Hi = (LONG)(t / (double)4294967296);
|
||||
pcyOut->u.Lo = (ULONG)fmod(t, (double)4294967296);
|
||||
if (lIn < 0) pcyOut->u.Hi--;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromR432 [OLEAUT32.101]
|
||||
* Convert float to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromR432(FLOAT fltIn, CY* pcyOut) {
|
||||
double t = round((double)fltIn * (double)10000);
|
||||
pcyOut->u.Hi = (LONG)(t / (double)4294967296);
|
||||
pcyOut->u.Lo = (ULONG)fmod(t, (double)4294967296);
|
||||
if (fltIn < 0) pcyOut->u.Hi--;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromR832 [OLEAUT32.102]
|
||||
* Convert double to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromR832(double dblIn, CY* pcyOut) {
|
||||
double t = round(dblIn * (double)10000);
|
||||
pcyOut->u.Hi = (LONG)(t / (double)4294967296);
|
||||
pcyOut->u.Lo = (ULONG)fmod(t, (double)4294967296);
|
||||
if (dblIn < 0) pcyOut->u.Hi--;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromDate32 [OLEAUT32.103]
|
||||
* Convert date to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromDate32(DATE dateIn, CY* pcyOut) {
|
||||
double t = round((double)dateIn * (double)10000);
|
||||
pcyOut->u.Hi = (LONG)(t / (double)4294967296);
|
||||
pcyOut->u.Lo = (ULONG)fmod(t, (double)4294967296);
|
||||
if (dateIn < 0) pcyOut->u.Hi--;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromBool32 [OLEAUT32.106]
|
||||
* Convert boolean to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromBool32(VARIANT_BOOL boolIn, CY* pcyOut) {
|
||||
if (boolIn < 0) pcyOut->u.Hi = -1;
|
||||
else pcyOut->u.Hi = 0;
|
||||
pcyOut->u.Lo = (ULONG)boolIn * (ULONG)10000;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromI132 [OLEAUT32.225]
|
||||
* Convert signed char to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromI132(CHAR cIn, CY* pcyOut) {
|
||||
if (cIn < 0) pcyOut->u.Hi = -1;
|
||||
else pcyOut->u.Hi = 0;
|
||||
pcyOut->u.Lo = (ULONG)cIn * (ULONG)10000;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromUI232 [OLEAUT32.226]
|
||||
* Convert unsigned short to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromUI232(USHORT usIn, CY* pcyOut) {
|
||||
pcyOut->u.Hi = 0;
|
||||
pcyOut->u.Lo = (ULONG)usIn * (ULONG)10000;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* VarCyFromUI432 [OLEAUT32.227]
|
||||
* Convert unsigned long to currency
|
||||
*/
|
||||
HRESULT WINAPI VarCyFromUI432(ULONG ulIn, CY* pcyOut) {
|
||||
double t = (double)ulIn * (double)10000;
|
||||
pcyOut->u.Hi = (LONG)(t / (double)4294967296);
|
||||
pcyOut->u.Lo = (ULONG)fmod(t, (double)4294967296);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ type win32
|
||||
49 stdcall VarI2FromI4(long ptr) VarI2FromI432
|
||||
50 stdcall VarI2FromR4(long ptr) VarI2FromR432
|
||||
51 stdcall VarI2FromR8(double ptr) VarI2FromR832
|
||||
52 stub VarI2FromCy
|
||||
52 stdcall VarI2FromCy(double ptr) VarI2FromCy32
|
||||
53 stdcall VarI2FromDate(long ptr) VarI2FromDate32
|
||||
54 stdcall VarI2FromStr(wstr long long ptr) VarI2FromStr32
|
||||
55 stub VarI2FromDisp
|
||||
@ -57,7 +57,7 @@ type win32
|
||||
59 stdcall VarI4FromI2(long ptr) VarI4FromI232
|
||||
60 stdcall VarI4FromR4(long ptr) VarI4FromR432
|
||||
61 stdcall VarI4FromR8(double ptr) VarI4FromR832
|
||||
62 stub VarI4FromCy
|
||||
62 stdcall VarI4FromCy(double ptr) VarI4FromCy32
|
||||
63 stdcall VarI4FromDate(long ptr) VarI4FromDate32
|
||||
64 stdcall VarI4FromStr(wstr long long ptr) VarI4FromStr32
|
||||
65 stub VarI4FromDisp
|
||||
@ -66,7 +66,7 @@ type win32
|
||||
69 stdcall VarR4FromI2(long ptr) VarR4FromI232
|
||||
70 stdcall VarR4FromI4(long ptr) VarR4FromI432
|
||||
71 stdcall VarR4FromR8(double ptr) VarR4FromR832
|
||||
72 stub VarR4FromCy
|
||||
72 stdcall VarR4FromCy(double ptr) VarR4FromCy32
|
||||
73 stdcall VarR4FromDate(long ptr) VarR4FromDate32
|
||||
74 stdcall VarR4FromStr(wstr long long ptr) VarR4FromStr32
|
||||
75 stub VarR4FromDisp
|
||||
@ -75,7 +75,7 @@ type win32
|
||||
79 stdcall VarR8FromI2(long ptr) VarR8FromI232
|
||||
80 stdcall VarR8FromI4(long ptr) VarR8FromI432
|
||||
81 stdcall VarR8FromR4(long ptr) VarR8FromR432
|
||||
82 stub VarR8FromCy
|
||||
82 stdcall VarR8FromCy(double ptr) VarR8FromCy32
|
||||
83 stdcall VarR8FromDate(long ptr) VarR8FromDate32
|
||||
84 stdcall VarR8FromStr(wstr long long ptr) VarR8FromStr32
|
||||
85 stub VarR8FromDisp
|
||||
@ -85,19 +85,19 @@ type win32
|
||||
90 stdcall VarDateFromI4(long ptr) VarDateFromI432
|
||||
91 stdcall VarDateFromR4(long ptr) VarDateFromR432
|
||||
92 stdcall VarDateFromR8(double ptr) VarDateFromR832
|
||||
93 stub VarDateFromCy
|
||||
93 stdcall VarDateFromCy(double ptr) VarDateFromCy32
|
||||
94 stdcall VarDateFromStr(wstr long long ptr) VarDateFromStr32
|
||||
95 stub VarDateFromDisp
|
||||
96 stdcall VarDateFromBool(long ptr) VarDateFromBool32
|
||||
98 stub VarCyFromUI1
|
||||
99 stub VarCyFromI2
|
||||
100 stub VarCyFromI4
|
||||
101 stub VarCyFromR4
|
||||
102 stub VarCyFromR8
|
||||
103 stub VarCyFromDate
|
||||
98 stdcall VarCyFromUI1(long ptr) VarCyFromUI132
|
||||
99 stdcall VarCyFromI2(long ptr) VarCyFromI232
|
||||
100 stdcall VarCyFromI4(long ptr) VarCyFromI432
|
||||
101 stdcall VarCyFromR4(long ptr) VarCyFromR432
|
||||
102 stdcall VarCyFromR8(double ptr) VarCyFromR832
|
||||
103 stdcall VarCyFromDate(double ptr) VarCyFromDate32
|
||||
104 stub VarCyFromStr
|
||||
105 stub VarCyFromDisp
|
||||
106 stub VarCyFromBool
|
||||
106 stdcall VarCyFromBool(long ptr) VarCyFromBool32
|
||||
108 stdcall VarBstrFromUI1(long long long ptr) VarBstrFromUI132
|
||||
109 stdcall VarBstrFromI2(long long long ptr) VarBstrFromI232
|
||||
110 stdcall VarBstrFromI4(long long long ptr) VarBstrFromI432
|
||||
@ -113,14 +113,14 @@ type win32
|
||||
121 stdcall VarBoolFromR4(long ptr) VarBoolFromR432
|
||||
122 stdcall VarBoolFromR8(double ptr) VarBoolFromR832
|
||||
123 stdcall VarBoolFromDate(long ptr) VarBoolFromDate32
|
||||
124 stub VarBoolFromCy
|
||||
124 stdcall VarBoolFromCy(double ptr) VarBoolFromCy32
|
||||
125 stdcall VarBoolFromStr(wstr long long ptr) VarBoolFromStr32
|
||||
126 stub VarBoolFromDisp
|
||||
130 stdcall VarUI1FromI2(long ptr) VarUI1FromI232
|
||||
131 stdcall VarUI1FromI4(long ptr) VarUI1FromI432
|
||||
132 stdcall VarUI1FromR4(long ptr) VarUI1FromR432
|
||||
133 stdcall VarUI1FromR8(double ptr) VarUI1FromR832
|
||||
134 stub VarUI1FromCy
|
||||
134 stdcall VarUI1FromCy(double ptr) VarUI1FromCy32
|
||||
135 stdcall VarUI1FromDate(long ptr) VarUI1FromDate32
|
||||
136 stdcall VarUI1FromStr(wstr long long ptr) VarUI1FromStr32
|
||||
137 stub VarUI1FromDisp
|
||||
@ -177,9 +177,9 @@ type win32
|
||||
222 stdcall VarDateFromUI2(long ptr) VarDateFromUI232
|
||||
223 stdcall VarDateFromUI4(long ptr) VarDateFromUI432
|
||||
224 stub VarDateFromDec
|
||||
225 stub VarCyFromI1
|
||||
226 stub VarCyFromUI2
|
||||
227 stub VarCyFromUI4
|
||||
225 stdcall VarCyFromI1(long ptr) VarCyFromI132
|
||||
226 stdcall VarCyFromUI2(long ptr) VarCyFromUI232
|
||||
227 stdcall VarCyFromUI4(long ptr) VarCyFromUI432
|
||||
228 stub VarCyFromDec
|
||||
229 stdcall VarBstrFromI1(long long long ptr) VarBstrFromI132
|
||||
230 stdcall VarBstrFromUI2(long long long ptr) VarBstrFromUI232
|
||||
@ -202,7 +202,7 @@ type win32
|
||||
247 stdcall VarI1FromR4(long ptr) VarI1FromR432
|
||||
248 stdcall VarI1FromR8(double ptr) VarI1FromR832
|
||||
249 stdcall VarI1FromDate(long ptr) VarI1FromDate32
|
||||
250 stub VarI1FromCy
|
||||
250 stdcall VarI1FromCy(double ptr) VarI1FromCy32
|
||||
251 stdcall VarI1FromStr(wstr long long ptr) VarI1FromStr32
|
||||
252 stub VarI1FromDisp
|
||||
253 stdcall VarI1FromBool(long ptr) VarI1FromBool32
|
||||
@ -215,7 +215,7 @@ type win32
|
||||
260 stdcall VarUI2FromR4(long ptr) VarUI2FromR432
|
||||
261 stdcall VarUI2FromR8(double ptr) VarUI2FromR832
|
||||
262 stdcall VarUI2FromDate(long ptr) VarUI2FromDate32
|
||||
263 stub VarUI2FromCy
|
||||
263 stdcall VarUI2FromCy(double ptr) VarUI2FromCy32
|
||||
264 stdcall VarUI2FromStr(wstr long long ptr) VarUI2FromStr32
|
||||
265 stub VarUI2FromDisp
|
||||
266 stdcall VarUI2FromBool(long ptr) VarUI2FromBool32
|
||||
@ -228,7 +228,7 @@ type win32
|
||||
273 stdcall VarUI4FromR4(long ptr) VarUI4FromR432
|
||||
274 stdcall VarUI4FromR8(double ptr) VarUI4FromR832
|
||||
275 stdcall VarUI4FromDate(long ptr) VarUI4FromDate32
|
||||
276 stub VarUI4FromCy
|
||||
276 stdcall VarUI4FromCy(double ptr) VarUI4FromCy32
|
||||
277 stdcall VarUI4FromStr(wstr long long ptr) VarUI4FromStr32
|
||||
278 stub VarUI4FromDisp
|
||||
279 stdcall VarUI4FromBool(long ptr) VarUI4FromBool32
|
||||
|
Loading…
x
Reference in New Issue
Block a user