|
| 1 | +#ifndefPGTYPES_NUMERIC |
| 2 | +#definePGTYPES_NUMERIC |
| 3 | + |
| 4 | +typedefunsignedcharNumericDigit; |
| 5 | +typedefstructNumericVar |
| 6 | +{ |
| 7 | +intndigits;/* number of digits in digits[] - can be 0! */ |
| 8 | +intweight;/* weight of first digit */ |
| 9 | +intrscale;/* result scale */ |
| 10 | +intdscale;/* display scale */ |
| 11 | +intsign;/* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */ |
| 12 | +NumericDigit*buf;/* start of alloc'd space for digits[] */ |
| 13 | +NumericDigit*digits;/* decimal digits */ |
| 14 | +}NumericVar; |
| 15 | + |
| 16 | +NumericVar*PGTYPESnew(void); |
| 17 | +voidPGTYPESnumeric_free(NumericVar*); |
| 18 | +NumericVar*PGTYPESnumeric_aton(char*,char**); |
| 19 | +char*PGTYPESnumeric_ntoa(NumericVar*); |
| 20 | +intPGTYPESnumeric_add(NumericVar*,NumericVar*,NumericVar*); |
| 21 | +intPGTYPESnumeric_sub(NumericVar*,NumericVar*,NumericVar*); |
| 22 | +intPGTYPESnumeric_mul(NumericVar*,NumericVar*,NumericVar*); |
| 23 | +intPGTYPESnumeric_div(NumericVar*,NumericVar*,NumericVar*); |
| 24 | +intPGTYPESnumeric_cmp(NumericVar*,NumericVar*); |
| 25 | +intPGTYPESnumeric_iton(signedint,NumericVar*); |
| 26 | +intPGTYPESnumeric_lton(signed longint,NumericVar*); |
| 27 | +intPGTYPESnumeric_copy(NumericVar*,NumericVar*); |
| 28 | +intPGTYPESnumeric_dton(double,NumericVar*); |
| 29 | +intPGTYPESnumeric_ntod(NumericVar*,double*); |
| 30 | +intPGTYPESnumeric_ntoi(NumericVar*,int*); |
| 31 | +intPGTYPESnumeric_ntol(NumericVar*,long*); |
| 32 | + |
| 33 | +intdecadd(NumericVar*,NumericVar*,NumericVar*); |
| 34 | +intdeccmp(NumericVar*,NumericVar*); |
| 35 | +voiddeccopy(NumericVar*,NumericVar*); |
| 36 | +intdeccvasc(char*,int,NumericVar*); |
| 37 | +intdeccvdbl(double,NumericVar*); |
| 38 | +intdeccvint(int,NumericVar*); |
| 39 | +intdeccvlong(long,NumericVar*); |
| 40 | +intdecdiv(NumericVar*,NumericVar*,NumericVar*); |
| 41 | +intdecmul(NumericVar*,NumericVar*,NumericVar*); |
| 42 | +intdecsub(NumericVar*,NumericVar*,NumericVar*); |
| 43 | +intdectoasc(NumericVar*,char*,int,int); |
| 44 | +intdectodbl(NumericVar*,double*); |
| 45 | +intdectoint(NumericVar*,int*); |
| 46 | +intdectolong(NumericVar*,long*); |
| 47 | + |
| 48 | +#endif/* PGTYPES_NUMERIC */ |