diff options
Diffstat (limited to 'src/pal/inc/rt/oleauto.h')
-rw-r--r-- | src/pal/inc/rt/oleauto.h | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/src/pal/inc/rt/oleauto.h b/src/pal/inc/rt/oleauto.h new file mode 100644 index 0000000000..a8499f96d5 --- /dev/null +++ b/src/pal/inc/rt/oleauto.h @@ -0,0 +1,161 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. +// + +// +// =========================================================================== +// File: oleauto.h +// +// =========================================================================== +// simplified oleauto.h for PAL + +#ifndef _OLEAUTO_H_ +#define _OLEAUTO_H_ +#include "oaidl.h" + +#ifndef BEGIN_INTERFACE +#define BEGIN_INTERFACE +#define END_INTERFACE +#endif + +// OleAut's VT_CY and VT_DECIMAL declarations required by System.Decimal and System.Currency + +typedef struct { + INT cDig; + ULONG dwInFlags; + ULONG dwOutFlags; + INT cchUsed; + INT nBaseShift; + INT nPwr10; +} NUMPARSE; + +#define NUMPRS_STD 0x1FFF + +/* flags used by both dwInFlags and dwOutFlags: + */ +#define NUMPRS_LEADING_WHITE 0x0001 +#define NUMPRS_TRAILING_WHITE 0x0002 +#define NUMPRS_LEADING_PLUS 0x0004 +#define NUMPRS_TRAILING_PLUS 0x0008 +#define NUMPRS_LEADING_MINUS 0x0010 +#define NUMPRS_TRAILING_MINUS 0x0020 +#define NUMPRS_HEX_OCT 0x0040 +#define NUMPRS_PARENS 0x0080 +#define NUMPRS_DECIMAL 0x0100 +#define NUMPRS_THOUSANDS 0x0200 +#define NUMPRS_CURRENCY 0x0400 +#define NUMPRS_EXPONENT 0x0800 +#define NUMPRS_USE_ALL 0x1000 + +/* flags used by dwOutFlags only: + */ +#define NUMPRS_NEG 0x10000 +#define NUMPRS_INEXACT 0x20000 +/* flags used by VarNumFromParseNum to indicate acceptable result types: + */ +#define VTBIT_I1 (1 << VT_I1) +#define VTBIT_UI1 (1 << VT_UI1) +#define VTBIT_I2 (1 << VT_I2) +#define VTBIT_UI2 (1 << VT_UI2) +#define VTBIT_I4 (1 << VT_I4) +#define VTBIT_UI4 (1 << VT_UI4) +#define VTBIT_I8 (1 << VT_I8) +#define VTBIT_UI8 (1 << VT_UI8) +#define VTBIT_R4 (1 << VT_R4) +#define VTBIT_R8 (1 << VT_R8) +#define VTBIT_CY (1 << VT_CY) +#define VTBIT_DECIMAL (1 << VT_DECIMAL) + +#define LOCALE_NOUSEROVERRIDE 0x80000000 /* OR in to avoid user override */ +/* + * Use NLS functions to format date, currency, time, and number. + */ +#ifndef LOCALE_USE_NLS +#define LOCALE_USE_NLS 0x10000000 +#endif + +// Compare results for VarDecCmp. These are returned as a SUCCESS HResult. +// Subtracting one gives the usual values of -1 for Less Than, +// 0 for Equal To, +1 for Greater Than. +// +#define VARCMP_LT 0 +#define VARCMP_EQ 1 +#define VARCMP_GT 2 +#define VARCMP_NULL 3 + +#ifdef ENABLE_DOWNLEVEL_FOR_NLS +STDAPI VarParseNumFromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, + NUMPARSE * pnumprs, BYTE * rgbDig); + +STDAPI VarNumFromParseNum(NUMPARSE * pnumprs, BYTE * rgbDig, + ULONG dwVtBits, VARIANT * pvar); +#endif + +STDAPI VariantChangeType(VARIANTARG * pvargDest, + VARIANTARG * pvarSrc, USHORT wFlags, VARTYPE vt); + +STDAPI VarCyFromR4(FLOAT fltIn, CY * pcyOut); +STDAPI VarCyFromR8(DOUBLE dblIn, CY * pcyOut); +STDAPI VarCyFromDec(DECIMAL *pdecIn, CY *pcyOut); +STDAPI VarCyAdd(CY cyLeft, CY cyRight, LPCY pcyResult); +STDAPI VarCySub(CY cyLeft, CY cyRight, LPCY pcyResult); +STDAPI VarCyMul(CY cyLeft, CY cyRight, LPCY pcyResult); +STDAPI VarCyInt(CY cyIn, LPCY pcyResult); +STDAPI VarCyRound(CY cyIn, INT cDecimals, LPCY pcyResult); +STDAPI VarCyFix(CY cyIn, LPCY pcyResult); + +STDAPI VarR8FromCy(CY cyIn, DOUBLE * pdblOut); +STDAPI VarR4FromCy(CY cyIn, FLOAT * pfltOut); + +#ifdef ENABLE_DOWNLEVEL_FOR_NLS +STDAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromUI1(BYTE bVal, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromI2(SHORT iVal, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromI8(LONG64 i64In, LCID lcid, ULONG dwFlags, BSTR FAR* pbstrOut); +STDAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromR8(DOUBLE dblIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut); +STDAPI VarBstrFromI1(CHAR cIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut); +STDAPI VarBstrFromUI2(USHORT uiIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut); +STDAPI VarBstrFromUI4(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut); +STDAPI VarBstrFromUI8(ULONG64 ui64In, LCID lcid, ULONG dwFlags, BSTR FAR* pbstrOut); +STDAPI VarBstrFromDec(DECIMAL *pdecIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut); +#endif + +STDAPI VarDecFromR4(FLOAT fltIn, DECIMAL *pdecOut); +STDAPI VarDecFromR8(DOUBLE dblIn, DECIMAL *pdecOut); +STDAPI VarDecFromCy(CY cyIn, DECIMAL *pdecOut); +STDAPI VarDecAdd(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); +STDAPI VarDecSub(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); +STDAPI VarDecMul(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); +STDAPI VarDecDiv(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); +STDAPI VarDecCmp(LPDECIMAL pdecLeft, LPDECIMAL pdecRight); +STDAPI VarDecInt(LPDECIMAL pdecIn, LPDECIMAL pdecResult); +STDAPI VarDecRound(LPDECIMAL pdecIn, INT cDecimals, LPDECIMAL pdecResult); +STDAPI VarDecFix(LPDECIMAL pdecIn, LPDECIMAL pdecResult); +STDAPI VarDecNeg(LPDECIMAL pdecIn, LPDECIMAL pdecResult); +STDAPI VarDecFromI4(LONG I4in, DECIMAL *pdecOut); +STDAPI VarDecFromUI4(ULONG UI4in, DECIMAL *pdecOut); + +STDAPI VarI1FromDec(DECIMAL *pdecIn, CHAR *pI1In); +STDAPI VarUI1FromDec(DECIMAL *pdecIn, BYTE *pUI1In); +STDAPI VarI2FromDec(DECIMAL *pdecIn, SHORT *pI2In); +STDAPI VarUI2FromDec(DECIMAL *pdecIn, USHORT *pUI2In); +STDAPI VarI4FromDec(DECIMAL *pdecIn, LONG *pI4In); +STDAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pUI4In); +STDAPI VarR8FromDec(DECIMAL *pdecIn, DOUBLE *pdblOut); +STDAPI VarR4FromDec(DECIMAL *pdecIn, FLOAT *pfltOut); + +#ifdef ENABLE_DOWNLEVEL_FOR_NLS +STDAPI VarR8FromStr(OLECHAR *strin, LCID lcid, ULONG dwFlags, DOUBLE *pdblOut); +#endif + +STDAPI VarI1FromR8(DOUBLE dblIn, CHAR *pcOut); +STDAPI VarI2FromR8(DOUBLE dblIn, SHORT * psOut); +STDAPI VarI4FromR8(DOUBLE dblIn, LONG * plOut); +STDAPI VarUI1FromR8(DOUBLE dblIn, BYTE * pbOut); +STDAPI VarUI2FromR8(DOUBLE dblIn, USHORT *puiOut); +STDAPI VarUI4FromR8(DOUBLE dblIn, ULONG *pulOut); + +#endif // _OLEAUTO_H_ |