## cr-num

cr-num

## Synopsis

                        CRNum;
    CRNum *             cr_num_new                          (void);
    CRNum *             cr_num_new_with_val                 (gdouble a_val,
                                                             enum CRNumType a_type);
    CRNum *             cr_num_dup                          (CRNum const *a_this);
    guchar *            cr_num_to_string                    (CRNum const *a_this);
    enum CRStatus       cr_num_copy                         (CRNum *a_dest,
                                                             CRNum const *a_src);
    enum CRStatus       cr_num_set                          (CRNum *a_this,
                                                             gdouble a_val,
                                                             enum CRNumType a_type);
    gboolean            cr_num_is_fixed_length              (CRNum const *a_this);
    void                cr_num_destroy                      (CRNum *a_this);

## Description

## Details

### CRNum

    typedef struct {
            enum CRNumType type ;
            gdouble val ;
            CRParsingLocation location ;
    } CRNum;

### cr_num_new ()

    CRNum *             cr_num_new                          (void);

CRNum.

Returns : | the newly built instance of CRNum.

### cr_num_new_with_val ()

    CRNum *             cr_num_new_with_val                 (gdouble a_val,
                                                             enum CRNumType a_type);

A constructor of CRNum.

`a_val` : | the numerical value of the number.
`a_type` : | the type of number.
Returns : | the newly built instance of CRNum or NULL if an error arises.

### cr_num_dup ()

    CRNum *             cr_num_dup                          (CRNum const *a_this);

Duplicates an instance of CRNum

`a_this` : | the instance of CRNum to duplicate.
Returns : | the newly created (duplicated) instance of CRNum. Must be freed by `cr_num_destroy()`.

### cr_num_to_string ()

    guchar *            cr_num_to_string                    (CRNum const *a_this);

`a_this` : | the current instance of CRNum.
Returns : | the newly built string representation of the current instance of CRNum. The returned string is NULL terminated. The caller *must* free the returned string.

### cr_num_copy ()

    enum CRStatus       cr_num_copy                         (CRNum *a_dest,
                                                             CRNum const *a_src);

Copies an instance of CRNum.

`a_dest` : | the destination of the copy. Must be non NULL
`a_src` : | the instance of CRNum to copy. Must be non NULL.
Returns : | CR_OK upon successful completion, an error code otherwise.

### cr_num_set ()

    enum CRStatus       cr_num_set                          (CRNum *a_this,
                                                             gdouble a_val,
                                                             enum CRNumType a_type);

`a_this` : | the current instance of CRNum to be set.
`a_val` : | the new numerical value to be hold by the current instance of CRNum
`a_type` : | the new type of CRNum.
Returns : | CR_OK upon succesful completion, an error code otherwise.

### cr_num_is_fixed_length ()

    gboolean            cr_num_is_fixed_length              (CRNum const *a_this);

Tests if the current instance of CRNum is a fixed length value or not. Typically a fixed length value is anything from NUM_LENGTH_EM to NUM_LENGTH_PC. See the definition of CRNumType to see what we mean.

`a_this` : | the current instance of CRNum .
Returns : | TRUE if the instance of CRNum is a fixed length number, FALSE otherwise.

### cr_num_destroy ()

    void                cr_num_destroy                      (CRNum *a_this);

The destructor of CRNum.

`a_this` : | the this pointer of the current instance of CRNum.