XML Schema Decimals

XML Schema Decimals — XML Schema decimal number arithmetic.

Synopsis

void                rasqal_free_xsd_decimal             (rasqal_xsd_decimal *dec);
rasqal_xsd_decimal* rasqal_new_xsd_decimal              (void);
typedef             rasqal_xsd_decimal;
int                 rasqal_xsd_decimal_add              (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
char*               rasqal_xsd_decimal_as_counted_string
                                                        (rasqal_xsd_decimal *dec,
                                                         size_t *len_p);
char*               rasqal_xsd_decimal_as_string        (rasqal_xsd_decimal *dec);
int                 rasqal_xsd_decimal_compare          (rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
int                 rasqal_xsd_decimal_divide           (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
int                 rasqal_xsd_decimal_equals           (rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
double              rasqal_xsd_decimal_get_double       (rasqal_xsd_decimal *dec);
int                 rasqal_xsd_decimal_is_zero          (rasqal_xsd_decimal *d);
int                 rasqal_xsd_decimal_multiply         (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
int                 rasqal_xsd_decimal_print            (rasqal_xsd_decimal *dec,
                                                         FILE *stream);
int                 rasqal_xsd_decimal_set_double       (rasqal_xsd_decimal *dec,
                                                         double d);
int                 rasqal_xsd_decimal_set_long         (rasqal_xsd_decimal *dec,
                                                         long l );
int                 rasqal_xsd_decimal_set_string       (rasqal_xsd_decimal *dec,
                                                         const char *string);
int                 rasqal_xsd_decimal_subtract         (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);
int                 rasqal_xsd_decimal_negate           (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a);

Description

A class for providing XSD Decimals with arbitrary length floating point decimals.

Details

rasqal_free_xsd_decimal ()

void                rasqal_free_xsd_decimal             (rasqal_xsd_decimal *dec);

Destroy XSD Decimal object.

dec :

Decimal object

rasqal_new_xsd_decimal ()

rasqal_xsd_decimal* rasqal_new_xsd_decimal              (void);

Create a new XSD Decimal object.

Returns :

new xsd:decimal object or NULL on failure.

rasqal_xsd_decimal

typedef struct rasqal_xsd_decimal_s rasqal_xsd_decimal;

Rasqal XSD Decimal class.


rasqal_xsd_decimal_add ()

int                 rasqal_xsd_decimal_add              (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Add two XSD Decimals and store in result XSD Decimal

result :

result variable

a :

argment decimal 1

b :

argument decimal 2

Returns :

non-0 on failure

rasqal_xsd_decimal_as_counted_string ()

char*               rasqal_xsd_decimal_as_counted_string
                                                        (rasqal_xsd_decimal *dec,
                                                         size_t *len_p);

Get an XSD Decimal as a string lexical form with optional length.

The returned string is shared and owned by the dec object and must be copied. If len_p is not NULL, the length of the returned string is stored.

dec :

XSD Decimal

len_p :

pointer to length variable (or NULL)

Returns :

lexical form string or NULL on failure.

rasqal_xsd_decimal_as_string ()

char*               rasqal_xsd_decimal_as_string        (rasqal_xsd_decimal *dec);

Get an XSD Decimal as a string lexical form.

The returned string is shared and owned by the dec object and must be copied.

dec :

XSD Decimal

Returns :

lexical form string or NULL on failure.

rasqal_xsd_decimal_compare ()

int                 rasqal_xsd_decimal_compare          (rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Compare two XSD Decimals

a :

first XSD decimal

b :

second XSD decimal

Returns :

<0 if a is less than b, 0 if equal, >1 otherwise

rasqal_xsd_decimal_divide ()

int                 rasqal_xsd_decimal_divide           (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Divide two XSD Decimals and store in result XSD Decimal

If the divisor b is 0, failure is returned

result :

result variable

a :

argment decimal 1

b :

argument decimal 2

Returns :

non-0 on failure

rasqal_xsd_decimal_equals ()

int                 rasqal_xsd_decimal_equals           (rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Compare two XSD Decimals for equality.

a :

first XSD Decimal

b :

second XSD Decimal

Returns :

non-0 if equal.

rasqal_xsd_decimal_get_double ()

double              rasqal_xsd_decimal_get_double       (rasqal_xsd_decimal *dec);

Get an XSD Decimal as a double (may lose precision)

dec :

XSD Decimal

Returns :

double value.

rasqal_xsd_decimal_is_zero ()

int                 rasqal_xsd_decimal_is_zero          (rasqal_xsd_decimal *d);

Test if an XSD decimal is zero.

d :

decimal

Returns :

non-0 if decimal is zero

rasqal_xsd_decimal_multiply ()

int                 rasqal_xsd_decimal_multiply         (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Multiply two XSD Decimals and store in result XSD Decimal

result :

result variable

a :

argment decimal 1

b :

argument decimal 2

Returns :

non-0 on failure

rasqal_xsd_decimal_print ()

int                 rasqal_xsd_decimal_print            (rasqal_xsd_decimal *dec,
                                                         FILE *stream);

Write an XSD Decimal to a FILE* stream

dec :

XSD Decimal

stream :

FILE* stream

Returns :

non-0 on failure

rasqal_xsd_decimal_set_double ()

int                 rasqal_xsd_decimal_set_double       (rasqal_xsd_decimal *dec,
                                                         double d);

Set an XSD Decimal value from a double.

dec :

XSD Decimal

d :

double

Returns :

non-0 on failure

rasqal_xsd_decimal_set_long ()

int                 rasqal_xsd_decimal_set_long         (rasqal_xsd_decimal *dec,
                                                         long l );

Set an XSD Decimal value from a long.

dec :

XSD Decimal

Param2 :

Returns :

non-0 on failure

rasqal_xsd_decimal_set_string ()

int                 rasqal_xsd_decimal_set_string       (rasqal_xsd_decimal *dec,
                                                         const char *string);

Set an XSD Decimal value from a string lexical form

dec :

XSD Decimal

string :

lexical form

Returns :

non-0 on failure

rasqal_xsd_decimal_subtract ()

int                 rasqal_xsd_decimal_subtract         (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a,
                                                         rasqal_xsd_decimal *b);

Subtract two XSD Decimals and store in result XSD Decimal

result :

result variable

a :

argment decimal 1

b :

argument decimal 2

Returns :

non-0 on failure

rasqal_xsd_decimal_negate ()

int                 rasqal_xsd_decimal_negate           (rasqal_xsd_decimal *result,
                                                         rasqal_xsd_decimal *a);

Negate an XSD Decimal

result :

result variable

a :

argment decimal

Returns :

non-0 on failure