1 #ifndef __MONO_DECIMAL_MS_H__
2 #define __MONO_DECIMAL_MS_H__
3 typedef struct tagDECIMAL {
4 // Decimal.cs treats the first two shorts as one long
5 // And they seriable the data so we need to little endian
7 // The wReserved overlaps with Variant's vt member
8 #if G_BYTE_ORDER != G_LITTLE_ENDIAN
38 MONO_DECIMAL_CMP_LT=-1,
41 } MonoDecimalCompareResult;
43 MonoDecimalCompareResult
44 mono_decimal_compare (MonoDecimal *left, MonoDecimal *right) MONO_INTERNAL;
46 void mono_decimal_init_single (MonoDecimal *_this, float value) MONO_INTERNAL;
47 void mono_decimal_init_double (MonoDecimal *_this, double value) MONO_INTERNAL;
48 void mono_decimal_floor (MonoDecimal *d) MONO_INTERNAL;
49 int32_t mono_decimal_get_hash_code (MonoDecimal *d) MONO_INTERNAL;
50 void mono_decimal_multiply (MonoDecimal *d1, MonoDecimal *d2) MONO_INTERNAL;
51 void mono_decimal_round (MonoDecimal *d, int32_t decimals) MONO_INTERNAL;
52 void mono_decimal_tocurrency (MonoDecimal *decimal) MONO_INTERNAL;
53 double mono_decimal_to_double (MonoDecimal d) MONO_INTERNAL;
54 int32_t mono_decimal_to_int32 (MonoDecimal d) MONO_INTERNAL;
55 float mono_decimal_to_float (MonoDecimal d) MONO_INTERNAL;
56 void mono_decimal_truncate (MonoDecimal *d) MONO_INTERNAL;
57 void mono_decimal_addsub (MonoDecimal *left, MonoDecimal *right, uint8_t sign);
58 void mono_decimal_divide (MonoDecimal *left, MonoDecimal *right);
59 int mono_decimal_from_number (void *from, MonoDecimal *target);