Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / metadata / decimal-ms.h
index 99d9300889c3cbcae7c856545697e0b3f165fa62..38594e71957a3468f5656d6880f35ca8d3943f91 100644 (file)
@@ -1,6 +1,11 @@
+/**
+ * \file
+ */
+
 #ifndef __MONO_DECIMAL_MS_H__
 #define __MONO_DECIMAL_MS_H__
-typedef struct tagDEC {
+
+typedef struct {
     // Decimal.cs treats the first two shorts as one long
     // And they seriable the data so we need to little endian
     // seriliazation
@@ -8,18 +13,18 @@ typedef struct tagDEC {
 #if G_BYTE_ORDER != G_LITTLE_ENDIAN
     union {
         struct {
-            int8_t sign;
-            int8_t scale;
+            uint8_t sign;
+            uint8_t scale;
         } u;
         uint16_t signscale;
     } u;
-    uint16_t wReserved;
+    uint16_t reserved;
 #else
-    uint16_t wReserved;
+    uint16_t reserved;
     union {
         struct {
-            int8_t scale;
-            int8_t sign;
+            uint8_t scale;
+            uint8_t sign;
         } u;
         uint16_t signscale;
     } u;
@@ -35,24 +40,27 @@ typedef struct tagDEC {
 } MonoDecimal;
 
 typedef enum {
+       MONO_DECIMAL_CMP_LT=-1,
        MONO_DECIMAL_CMP_EQ,
-       MONO_DECIMAL_CMP_LT,
        MONO_DECIMAL_CMP_GT
 } MonoDecimalCompareResult;
        
 MonoDecimalCompareResult
-        mono_decimal_compare (MonoDecimal *left, MonoDecimal *right) MONO_INTERNAL;
+        mono_decimal_compare (MonoDecimal *left, MonoDecimal *right);
 
-void    mono_decimal_init_single   (MonoDecimal *_this, float value) MONO_INTERNAL;
-void    mono_decimal_init_double   (MonoDecimal *_this, double value) MONO_INTERNAL;
-void    mono_decimal_floor         (MonoDecimal *d) MONO_INTERNAL;
-int32_t mono_decimal_get_hash_code (MonoDecimal *d) MONO_INTERNAL;
-void    mono_decimal_multiply      (MonoDecimal *d1, MonoDecimal *d2) MONO_INTERNAL;
-void    mono_decimal_round         (MonoDecimal *d, int32_t decimals) MONO_INTERNAL;
-void    mono_decimal_tocurrency    (MonoDecimal *decimal) MONO_INTERNAL;
-double  mono_decimal_to_double     (MonoDecimal d) MONO_INTERNAL;
-int32_t mono_decimal_to_int32      (MonoDecimal d) MONO_INTERNAL;
-float   mono_decimal_to_float      (MonoDecimal d) MONO_INTERNAL;
-void    mono_decimal_truncate      (MonoDecimal *d) MONO_INTERNAL;
+void    mono_decimal_init_single   (MonoDecimal *_this, float value);
+void    mono_decimal_init_double   (MonoDecimal *_this, double value);
+void    mono_decimal_floor         (MonoDecimal *d);
+int32_t mono_decimal_get_hash_code (MonoDecimal *d);
+void    mono_decimal_multiply      (MonoDecimal *d1, MonoDecimal *d2);
+void    mono_decimal_round         (MonoDecimal *d, int32_t decimals);
+void    mono_decimal_tocurrency    (MonoDecimal *decimal);
+double  mono_decimal_to_double     (MonoDecimal d);
+int32_t mono_decimal_to_int32      (MonoDecimal d);
+float   mono_decimal_to_float      (MonoDecimal d);
+void    mono_decimal_truncate      (MonoDecimal *d);
+void    mono_decimal_addsub        (MonoDecimal *left, MonoDecimal *right, uint8_t sign);
+void    mono_decimal_divide        (MonoDecimal *left, MonoDecimal *right);
+int     mono_decimal_from_number   (void *from, MonoDecimal *target);
 
 #endif