1 #include "mono/metadata/object.h"
2 #include "mono/utils/mono-compiler.h"
4 /* representation for C# type decimal */
5 /* This is the layout of MSC */
10 #if G_BYTE_ORDER != G_LITTLE_ENDIAN
12 unsigned int sign
: 1;
13 unsigned int reserved2
: 7;
14 unsigned int scale
: 8;
15 unsigned int reserved1
: 16;
19 unsigned int reserved1
: 16;
20 unsigned int scale
: 8;
21 unsigned int reserved2
: 7;
22 unsigned int sign
: 1;
32 /* function prototypes */
33 gint32
mono_decimalIncr(/*[In, Out]*/decimal_repr
* pA
, /*[In]*/decimal_repr
* pB
) MONO_INTERNAL
;
34 gint32
mono_double2decimal(/*[Out]*/decimal_repr
* pA
, double val
, gint32 digits
) MONO_INTERNAL
;
35 gint32
mono_decimal2UInt64(/*[In]*/decimal_repr
* pD
, guint64
* pResult
) MONO_INTERNAL
;
36 gint32
mono_decimal2Int64(/*[In]*/decimal_repr
* pD
, gint64
* pResult
) MONO_INTERNAL
;
37 void mono_decimalFloorAndTrunc(/*[In, Out]*/decimal_repr
* pD
, gint32 floorFlag
) MONO_INTERNAL
;
38 void mono_decimalRound(/*[In, Out]*/decimal_repr
* pD
, gint32 decimals
) MONO_INTERNAL
;
39 gint32
mono_decimalMult(/*[In, Out]*/decimal_repr
* pA
, /*[In]*/decimal_repr
* pB
) MONO_INTERNAL
;
40 gint32
mono_decimalDiv(/*[Out]*/decimal_repr
* pC
, /*[In]*/decimal_repr
* pA
, /*[In]*/decimal_repr
* pB
) MONO_INTERNAL
;
41 gint32
mono_decimalIntDiv(/*[Out]*/decimal_repr
* pC
, /*[In]*/decimal_repr
* pA
, /*[In]*/decimal_repr
* pB
) MONO_INTERNAL
;
42 gint32
mono_decimalCompare(/*[In]*/decimal_repr
* pA
, /*[In]*/decimal_repr
* pB
) MONO_INTERNAL
;
43 double mono_decimal2double(/*[In]*/decimal_repr
* pA
) MONO_INTERNAL
;
44 gint32
mono_decimalSetExponent(/*[In, Out]*/decimal_repr
* pA
, gint32 texp
) MONO_INTERNAL
;
46 gint32
mono_string2decimal(/*[Out]*/decimal_repr
* pA
, /*[In]*/MonoString
* s
, gint32 decrDecimal
, gint32 sign
) MONO_INTERNAL
;
47 gint32
mono_decimal2string(/*[In]*/decimal_repr
* pA
, int digits
, int decimals
,
48 /*[Out]*/MonoArray
* pArray
, gint32 bufSize
, gint32
* pDecPos
, gint32
* pSign
) MONO_INTERNAL
;