Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
bc93bc83
Commit
bc93bc83
authored
Dec 11, 1998
by
Justin Bradford
Committed by
Alexandre Julliard
Dec 11, 1998
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Most of the currency variant conversion functions implemented.
Minor bugfixes and header tidying.
parent
b6eda081
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
391 additions
and
72 deletions
+391
-72
mapidefs.h
include/mapidefs.h
+16
-0
oleauto.h
include/oleauto.h
+30
-29
win16drv.h
include/win16drv.h
+0
-2
wintypes.h
include/wintypes.h
+6
-0
compobj.c
ole/compobj.c
+1
-1
variant.c
ole/variant.c
+318
-20
oleaut32.spec
relay32/oleaut32.spec
+20
-20
No files found.
include/mapidefs.h
0 → 100644
View file @
bc93bc83
#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*/
include/oleauto.h
View file @
bc93bc83
...
...
@@ -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)
...
...
include/win16drv.h
View file @
bc93bc83
...
...
@@ -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
...
...
include/wintypes.h
View file @
bc93bc83
...
...
@@ -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. */
...
...
ole/compobj.c
View file @
bc93bc83
...
...
@@ -448,7 +448,7 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
TRACE
(
ole
,
"%p"
,
pguid
);
return
1
;
return
S_OK
;
}
/******************************************************************************
...
...
ole/variant.c
View file @
bc93bc83
...
...
@@ -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 = VarBstrFromCY
32( ps->u.cyVal, lcid, dwFlags, &(pd->u.bstrVal) );*/
/*res = VarBstrFromCy
32( 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 on
e
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
;
}
relay32/oleaut32.spec
View file @
bc93bc83
...
...
@@ -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 st
ub VarI2FromCy
52 st
dcall 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 st
ub VarI4FromCy
62 st
dcall 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 st
ub VarR4FromCy
72 st
dcall 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 st
ub VarR8FromCy
82 st
dcall 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 st
ub VarDateFromCy
93 st
dcall VarDateFromCy(double ptr) VarDateFromCy32
94 stdcall VarDateFromStr(wstr long long ptr) VarDateFromStr32
95 stub VarDateFromDisp
96 stdcall VarDateFromBool(long ptr) VarDateFromBool32
98 st
ub VarCyFromUI1
99 st
ub VarCyFromI
2
100 st
ub VarCyFromI4
101 st
ub VarCyFromR4
102 st
ub VarCyFromR8
103 st
ub VarCyFromDate
98 st
dcall VarCyFromUI1(long ptr) VarCyFromUI132
99 st
dcall VarCyFromI2(long ptr) VarCyFromI23
2
100 st
dcall VarCyFromI4(long ptr) VarCyFromI432
101 st
dcall VarCyFromR4(long ptr) VarCyFromR432
102 st
dcall VarCyFromR8(double ptr) VarCyFromR832
103 st
dcall VarCyFromDate(double ptr) VarCyFromDate32
104 stub VarCyFromStr
105 stub VarCyFromDisp
106 st
ub VarCyFromBool
106 st
dcall 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 st
ub VarBoolFromCy
124 st
dcall 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 st
ub VarUI1FromCy
134 st
dcall 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 st
ub VarCyFromI1
226 st
ub VarCyFromUI
2
227 st
ub VarCyFromUI4
225 st
dcall VarCyFromI1(long ptr) VarCyFromI132
226 st
dcall VarCyFromUI2(long ptr) VarCyFromUI23
2
227 st
dcall 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 st
ub VarI1FromCy
250 st
dcall 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 st
ub VarUI2FromCy
263 st
dcall 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 st
ub VarUI4FromCy
276 st
dcall VarUI4FromCy(double ptr) VarUI4FromCy32
277 stdcall VarUI4FromStr(wstr long long ptr) VarUI4FromStr32
278 stub VarUI4FromDisp
279 stdcall VarUI4FromBool(long ptr) VarUI4FromBool32
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment