| 1 | // Licensed to the .NET Foundation under one or more agreements. |
| 2 | // The .NET Foundation licenses this file to you under the MIT license. |
| 3 | // See the LICENSE file in the project root for more information. |
| 4 | // |
| 5 | |
| 6 | // |
| 7 | // =========================================================================== |
| 8 | // File: oleauto.h |
| 9 | // |
| 10 | // =========================================================================== |
| 11 | // simplified oleauto.h for PAL |
| 12 | |
| 13 | #ifndef _OLEAUTO_H_ |
| 14 | #define _OLEAUTO_H_ |
| 15 | #include "oaidl.h" |
| 16 | |
| 17 | #ifndef BEGIN_INTERFACE |
| 18 | #define BEGIN_INTERFACE |
| 19 | #define END_INTERFACE |
| 20 | #endif |
| 21 | |
| 22 | // OleAut's VT_CY and VT_DECIMAL declarations required by System.Decimal and System.Currency |
| 23 | |
| 24 | typedef struct { |
| 25 | INT cDig; |
| 26 | ULONG dwInFlags; |
| 27 | ULONG dwOutFlags; |
| 28 | INT cchUsed; |
| 29 | INT nBaseShift; |
| 30 | INT nPwr10; |
| 31 | } NUMPARSE; |
| 32 | |
| 33 | #define NUMPRS_STD 0x1FFF |
| 34 | |
| 35 | /* flags used by both dwInFlags and dwOutFlags: |
| 36 | */ |
| 37 | #define NUMPRS_LEADING_WHITE 0x0001 |
| 38 | #define NUMPRS_TRAILING_WHITE 0x0002 |
| 39 | #define NUMPRS_LEADING_PLUS 0x0004 |
| 40 | #define NUMPRS_TRAILING_PLUS 0x0008 |
| 41 | #define NUMPRS_LEADING_MINUS 0x0010 |
| 42 | #define NUMPRS_TRAILING_MINUS 0x0020 |
| 43 | #define NUMPRS_HEX_OCT 0x0040 |
| 44 | #define NUMPRS_PARENS 0x0080 |
| 45 | #define NUMPRS_DECIMAL 0x0100 |
| 46 | #define NUMPRS_THOUSANDS 0x0200 |
| 47 | #define NUMPRS_CURRENCY 0x0400 |
| 48 | #define NUMPRS_EXPONENT 0x0800 |
| 49 | #define NUMPRS_USE_ALL 0x1000 |
| 50 | |
| 51 | /* flags used by dwOutFlags only: |
| 52 | */ |
| 53 | #define NUMPRS_NEG 0x10000 |
| 54 | #define NUMPRS_INEXACT 0x20000 |
| 55 | /* flags used by VarNumFromParseNum to indicate acceptable result types: |
| 56 | */ |
| 57 | #define VTBIT_I1 (1 << VT_I1) |
| 58 | #define VTBIT_UI1 (1 << VT_UI1) |
| 59 | #define VTBIT_I2 (1 << VT_I2) |
| 60 | #define VTBIT_UI2 (1 << VT_UI2) |
| 61 | #define VTBIT_I4 (1 << VT_I4) |
| 62 | #define VTBIT_UI4 (1 << VT_UI4) |
| 63 | #define VTBIT_I8 (1 << VT_I8) |
| 64 | #define VTBIT_UI8 (1 << VT_UI8) |
| 65 | #define VTBIT_R4 (1 << VT_R4) |
| 66 | #define VTBIT_R8 (1 << VT_R8) |
| 67 | #define VTBIT_CY (1 << VT_CY) |
| 68 | #define VTBIT_DECIMAL (1 << VT_DECIMAL) |
| 69 | |
| 70 | #define LOCALE_NOUSEROVERRIDE 0x80000000 /* OR in to avoid user override */ |
| 71 | /* |
| 72 | * Use NLS functions to format date, currency, time, and number. |
| 73 | */ |
| 74 | #ifndef LOCALE_USE_NLS |
| 75 | #define LOCALE_USE_NLS 0x10000000 |
| 76 | #endif |
| 77 | |
| 78 | // Compare results for VarDecCmp. These are returned as a SUCCESS HResult. |
| 79 | // Subtracting one gives the usual values of -1 for Less Than, |
| 80 | // 0 for Equal To, +1 for Greater Than. |
| 81 | // |
| 82 | #define VARCMP_LT 0 |
| 83 | #define VARCMP_EQ 1 |
| 84 | #define VARCMP_GT 2 |
| 85 | #define VARCMP_NULL 3 |
| 86 | |
| 87 | STDAPI VariantChangeType(VARIANTARG * pvargDest, |
| 88 | VARIANTARG * pvarSrc, USHORT wFlags, VARTYPE vt); |
| 89 | |
| 90 | STDAPI VarCyFromR4(FLOAT fltIn, CY * pcyOut); |
| 91 | STDAPI VarCyFromR8(DOUBLE dblIn, CY * pcyOut); |
| 92 | STDAPI VarCyFromDec(DECIMAL *pdecIn, CY *pcyOut); |
| 93 | STDAPI VarCyAdd(CY cyLeft, CY cyRight, LPCY pcyResult); |
| 94 | STDAPI VarCySub(CY cyLeft, CY cyRight, LPCY pcyResult); |
| 95 | STDAPI VarCyMul(CY cyLeft, CY cyRight, LPCY pcyResult); |
| 96 | STDAPI VarCyInt(CY cyIn, LPCY pcyResult); |
| 97 | STDAPI VarCyRound(CY cyIn, INT cDecimals, LPCY pcyResult); |
| 98 | STDAPI VarCyFix(CY cyIn, LPCY pcyResult); |
| 99 | |
| 100 | STDAPI VarR8FromCy(CY cyIn, DOUBLE * pdblOut); |
| 101 | STDAPI VarR4FromCy(CY cyIn, FLOAT * pfltOut); |
| 102 | |
| 103 | STDAPI VarDecFromR4(FLOAT fltIn, DECIMAL *pdecOut); |
| 104 | STDAPI VarDecFromR8(DOUBLE dblIn, DECIMAL *pdecOut); |
| 105 | STDAPI VarDecFromCy(CY cyIn, DECIMAL *pdecOut); |
| 106 | STDAPI VarDecAdd(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); |
| 107 | STDAPI VarDecSub(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); |
| 108 | STDAPI VarDecMul(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); |
| 109 | STDAPI VarDecDiv(LPDECIMAL pdecLeft, LPDECIMAL pdecRight, LPDECIMAL pdecResult); |
| 110 | STDAPI VarDecCmp(LPDECIMAL pdecLeft, LPDECIMAL pdecRight); |
| 111 | STDAPI VarDecInt(LPDECIMAL pdecIn, LPDECIMAL pdecResult); |
| 112 | STDAPI VarDecRound(LPDECIMAL pdecIn, INT cDecimals, LPDECIMAL pdecResult); |
| 113 | STDAPI VarDecFix(LPDECIMAL pdecIn, LPDECIMAL pdecResult); |
| 114 | STDAPI VarDecNeg(LPDECIMAL pdecIn, LPDECIMAL pdecResult); |
| 115 | STDAPI VarDecFromI4(LONG I4in, DECIMAL *pdecOut); |
| 116 | STDAPI VarDecFromUI4(ULONG UI4in, DECIMAL *pdecOut); |
| 117 | |
| 118 | STDAPI VarI1FromDec(DECIMAL *pdecIn, CHAR *pI1In); |
| 119 | STDAPI VarUI1FromDec(DECIMAL *pdecIn, BYTE *pUI1In); |
| 120 | STDAPI VarI2FromDec(DECIMAL *pdecIn, SHORT *pI2In); |
| 121 | STDAPI VarUI2FromDec(DECIMAL *pdecIn, USHORT *pUI2In); |
| 122 | STDAPI VarI4FromDec(DECIMAL *pdecIn, LONG *pI4In); |
| 123 | STDAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pUI4In); |
| 124 | STDAPI VarR8FromDec(DECIMAL *pdecIn, DOUBLE *pdblOut); |
| 125 | STDAPI VarR4FromDec(DECIMAL *pdecIn, FLOAT *pfltOut); |
| 126 | |
| 127 | STDAPI VarI1FromR8(DOUBLE dblIn, CHAR *pcOut); |
| 128 | STDAPI VarI2FromR8(DOUBLE dblIn, SHORT * psOut); |
| 129 | STDAPI VarI4FromR8(DOUBLE dblIn, LONG * plOut); |
| 130 | STDAPI VarUI1FromR8(DOUBLE dblIn, BYTE * pbOut); |
| 131 | STDAPI VarUI2FromR8(DOUBLE dblIn, USHORT *puiOut); |
| 132 | STDAPI VarUI4FromR8(DOUBLE dblIn, ULONG *pulOut); |
| 133 | |
| 134 | #endif // _OLEAUTO_H_ |
| 135 | |