cr-input

cr-input

Synopsis

struct              CRInput;
struct              CRInputPos;
                    CRInputPriv;
enum CRStatus       cr_input_consume_char               (CRInput *a_this,
                                                         guint32 a_char);
enum CRStatus       cr_input_consume_chars              (CRInput *a_this,
                                                         guint32 a_char,
                                                         gulong *a_nb_char);
enum CRStatus       cr_input_consume_white_spaces       (CRInput *a_this,
                                                         gulong *a_nb_chars);
void                cr_input_destroy                    (CRInput *a_this);
enum CRStatus       cr_input_end_of_input               (CRInput const *a_this,
                                                         gboolean *a_end_of_input);
guchar *            cr_input_get_byte_addr              (CRInput *a_this,
                                                         gulong a_offset);
enum CRStatus       cr_input_get_column_num             (CRInput const *a_this,
                                                         glong *a_col);
enum CRStatus       cr_input_get_cur_byte_addr          (CRInput *a_this,
                                                         guchar **a_offset);
enum CRStatus       cr_input_get_cur_index              (CRInput const *a_this,
                                                         glong *a_index);
enum CRStatus       cr_input_get_cur_pos                (CRInput const *a_this,
                                                         CRInputPos *a_pos);
enum CRStatus       cr_input_get_end_of_file            (CRInput const *a_this,
                                                         gboolean *a_eof);
enum CRStatus       cr_input_get_end_of_line            (CRInput const *a_this,
                                                         gboolean *a_eol);
enum CRStatus       cr_input_get_line_num               (CRInput const *a_this,
                                                         glong *a_line_num);
glong               cr_input_get_nb_bytes_left          (CRInput const *a_this);
enum CRStatus       cr_input_get_parsing_location       (CRInput const *a_this,
                                                         CRParsingLocation *a_loc);
enum CRStatus       cr_input_increment_col_num          (CRInput *a_this,
                                                         glong a_increment);
enum CRStatus       cr_input_increment_line_num         (CRInput *a_this,
                                                         glong a_increment);
CRInput *           cr_input_new_from_buf               (guchar *a_buf,
                                                         gulong a_len,
                                                         enum CREncoding a_enc,
                                                         gboolean a_free_buf);
CRInput *           cr_input_new_from_uri               (const gchar *a_file_uri,
                                                         enum CREncoding a_enc);
enum CRStatus       cr_input_peek_byte                  (CRInput const *a_this,
                                                         enum CRSeekPos a_origin,
                                                         gulong a_offset,
                                                         guchar *a_byte);
guchar              cr_input_peek_byte2                 (CRInput const *a_this,
                                                         gulong a_offset,
                                                         gboolean *a_eof);
enum CRStatus       cr_input_peek_char                  (CRInput const *a_this,
                                                         guint32 *a_char);
enum CRStatus       cr_input_read_byte                  (CRInput *a_this,
                                                         guchar *a_byte);
enum CRStatus       cr_input_read_char                  (CRInput *a_this,
                                                         guint32 *a_char);
void                cr_input_ref                        (CRInput *a_this);
enum CRStatus       cr_input_seek_index                 (CRInput *a_this,
                                                         enum CRSeekPos a_origin,
                                                         gint a_pos);
enum CRStatus       cr_input_set_column_num             (CRInput *a_this,
                                                         glong a_col);
enum CRStatus       cr_input_set_cur_index              (CRInput *a_this,
                                                         glong a_index);
enum CRStatus       cr_input_set_cur_pos                (CRInput *a_this,
                                                         CRInputPos const *a_pos);
enum CRStatus       cr_input_set_end_of_file            (CRInput *a_this,
                                                         gboolean a_eof);
enum CRStatus       cr_input_set_end_of_line            (CRInput *a_this,
                                                         gboolean a_eol);
enum CRStatus       cr_input_set_line_num               (CRInput *a_this,
                                                         glong a_line_num);
gboolean            cr_input_unref                      (CRInput *a_this);

Description

Details

struct CRInput

struct CRInput {
        CRInputPriv *priv ;
};


struct CRInputPos

struct CRInputPos {
        glong line ;
        glong col ;
        gboolean end_of_file ;
        gboolean end_of_line ;
        glong next_byte_index ;
};


CRInputPriv

typedef struct _CRInputPriv CRInputPriv;


cr_input_consume_char ()

enum CRStatus       cr_input_consume_char               (CRInput *a_this,
                                                         guint32 a_char);

Consumes the next character of the input stream if and only if that character equals a_char.

a_this :

the this pointer.

a_char :

the character to consume. If set to zero, consumes any character.

Returns :

CR_OK upon successful completion, CR_PARSING_ERROR if next char is different from a_char, an other error code otherwise

cr_input_consume_chars ()

enum CRStatus       cr_input_consume_chars              (CRInput *a_this,
                                                         guint32 a_char,
                                                         gulong *a_nb_char);

Consumes up to a_nb_char occurences of the next contiguous characters which equal a_char. Note that the next character of the input stream *MUST* equal a_char to trigger the consumption, or else, the error code CR_PARSING_ERROR is returned. If the number of contiguous characters that equals a_char is less than a_nb_char, then this function consumes all the characters it can consume.

a_this :

the this pointer of the current instance of CRInput.

a_char :

the character to consume.

a_nb_char :

in/out parameter. The number of characters to consume. If set to a negative value, the function will consume all the occurences of a_char found. After return, if the return value equals CR_OK, this variable contains the number of characters actually consumed.

Returns :

CR_OK if at least one character has been consumed, an error code otherwise.

cr_input_consume_white_spaces ()

enum CRStatus       cr_input_consume_white_spaces       (CRInput *a_this,
                                                         gulong *a_nb_chars);

Same as cr_input_consume_chars() but this one consumes white spaces.

a_this :

the "this pointer" of the current instance of CRInput.

a_nb_chars :

in/out parameter. The number of white spaces to consume. After return, holds the number of white spaces actually consumed.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_destroy ()

void                cr_input_destroy                    (CRInput *a_this);

The destructor of the CRInput class.

a_this :

the current instance of CRInput.

cr_input_end_of_input ()

enum CRStatus       cr_input_end_of_input               (CRInput const *a_this,
                                                         gboolean *a_end_of_input);

Tests wether the current instance of CRInput has reached its input buffer.

a_this :

the current instance of CRInput.

a_end_of_input :

out parameter. Is set to TRUE if the current instance has reached the end of its input buffer, FALSE otherwise.

Returns :

CR_OK upon successful completion, an error code otherwise. Note that all the out parameters of this method are valid if and only if this method returns CR_OK.

cr_input_get_byte_addr ()

guchar *            cr_input_get_byte_addr              (CRInput *a_this,
                                                         gulong a_offset);

Gets the memory address of the byte located at a given offset in the input stream.

a_this :

the current instance of CRInput.

a_offset :

the offset of the byte in the input stream starting from the beginning of the stream.

Returns :

the address, otherwise NULL if an error occured.

cr_input_get_column_num ()

enum CRStatus       cr_input_get_column_num             (CRInput const *a_this,
                                                         glong *a_col);

Getter of the current column number.

a_this :

the "this pointer" of the current instance of CRInput.

a_col :

out parameter

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_cur_byte_addr ()

enum CRStatus       cr_input_get_cur_byte_addr          (CRInput *a_this,
                                                         guchar **a_offset);

Gets the address of the current character pointer.

a_this :

the current input stream

a_offset :

out parameter. The returned address.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_cur_index ()

enum CRStatus       cr_input_get_cur_index              (CRInput const *a_this,
                                                         glong *a_index);

Getter of the next byte index. It actually returns the index of the next byte to be read.

a_this :

the "this pointer" of the current instance of CRInput

a_index :

out parameter. The returned index.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_cur_pos ()

enum CRStatus       cr_input_get_cur_pos                (CRInput const *a_this,
                                                         CRInputPos *a_pos);

Gets the position of the "current byte index" which is basically the position of the last returned byte in the input stream.

a_this :

the current instance of CRInput.

a_pos :

out parameter. The returned position.

Returns :

CR_OK upon successful completion. Otherwise, CR_BAD_PARAMETER_ERROR if at least one of the arguments is invalid. CR_START_OF_INPUT if no call to either cr_input_read_byte() or cr_input_seek_index() have been issued before calling cr_input_get_cur_pos() Note that the out parameters of this function are valid if and only if this function returns CR_OK.

cr_input_get_end_of_file ()

enum CRStatus       cr_input_get_end_of_file            (CRInput const *a_this,
                                                         gboolean *a_eof);

Gets the end of file flag.

a_this :

the current instance of CRInput.

a_eof :

out parameter the place to put the end of file flag.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_end_of_line ()

enum CRStatus       cr_input_get_end_of_line            (CRInput const *a_this,
                                                         gboolean *a_eol);

Gets the end of line flag of the current input.

a_this :

the current instance of CRInput

a_eol :

out parameter. The place to put the returned flag

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_line_num ()

enum CRStatus       cr_input_get_line_num               (CRInput const *a_this,
                                                         glong *a_line_num);

Getter of the current line number.

a_this :

the "this pointer" of the current instance of CRInput.

a_line_num :

the returned line number.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_get_nb_bytes_left ()

glong               cr_input_get_nb_bytes_left          (CRInput const *a_this);

a_this :

the current instance of CRInput.

Returns :

the number of bytes left in the input stream before the end, -1 in case of error.

cr_input_get_parsing_location ()

enum CRStatus       cr_input_get_parsing_location       (CRInput const *a_this,
                                                         CRParsingLocation *a_loc);

Gets the current parsing location. The Parsing location is a public datastructure that represents the current line/column/byte offset/ in the input stream.

a_this :

the current instance of CRInput

a_loc :

the set parsing location.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_increment_col_num ()

enum CRStatus       cr_input_increment_col_num          (CRInput *a_this,
                                                         glong a_increment);

Increments the current column number.

a_this :

the "this pointer" of the current instance of CRInput.

a_increment :

the increment to add to the column number.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_increment_line_num ()

enum CRStatus       cr_input_increment_line_num         (CRInput *a_this,
                                                         glong a_increment);

Increments the current line number.

a_this :

the "this pointer" of the current instance of CRInput.

a_increment :

the increment to add to the line number.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_new_from_buf ()

CRInput *           cr_input_new_from_buf               (guchar *a_buf,
                                                         gulong a_len,
                                                         enum CREncoding a_enc,
                                                         gboolean a_free_buf);

Creates a new input stream from a memory buffer.

a_buf :

the memory buffer to create the input stream from. The CRInput keeps this pointer so user should not free it !.

a_len :

the size of the input buffer.

a_enc :

the buffer's encoding.

a_free_buf :

if set to TRUE, this a_buf will be freed at the destruction of this instance. If set to false, it is up to the caller to free it.

Returns :

the newly built instance of CRInput.

cr_input_new_from_uri ()

CRInput *           cr_input_new_from_uri               (const gchar *a_file_uri,
                                                         enum CREncoding a_enc);

Creates a new input stream from a file.

a_file_uri :

the file to create *the input stream from.

a_enc :

the encoding of the file *to create the input from.

Returns :

the newly created input stream if this method could read the file and create it, NULL otherwise.

cr_input_peek_byte ()

enum CRStatus       cr_input_peek_byte                  (CRInput const *a_this,
                                                         enum CRSeekPos a_origin,
                                                         gulong a_offset,
                                                         guchar *a_byte);

Gets a byte from the input stream, starting from the current position in the input stream. Unlike cr_input_peek_next_byte() this method does not update the state of the current input stream. Subsequent calls to cr_input_peek_byte with the same arguments will return the same byte.

a_this :

the current instance of CRInput.

a_origin :

the origin to consider in the calculation of the position of the byte to peek.

a_offset :

the offset of the byte to peek, starting from the origin specified by a_origin.

a_byte :

out parameter the peeked byte.

Returns :

CR_OK upon successful completion or, CR_BAD_PARAM_ERROR if at least one of the parameters is invalid; CR_OUT_OF_BOUNDS_ERROR if the indexed byte is out of bounds.

cr_input_peek_byte2 ()

guchar              cr_input_peek_byte2                 (CRInput const *a_this,
                                                         gulong a_offset,
                                                         gboolean *a_eof);

Same as cr_input_peek_byte() but with a simplified interface.

a_this :

the current byte input stream.

a_offset :

the offset of the byte to peek, starting from the current input position pointer.

a_eof :

out parameter. Is set to true is we reach end of stream. If set to NULL by the caller, this parameter is not taken in account.

Returns :

the read byte or 0 if something bad happened.

cr_input_peek_char ()

enum CRStatus       cr_input_peek_char                  (CRInput const *a_this,
                                                         guint32 *a_char);

Same as cr_input_read_char() but does not update the internal state of the input stream. The next call to cr_input_peek_char() or cr_input_read_char() will thus return the same character as the current one.

a_this :

the current instance of CRInput.

a_char :

out parameter. The returned character.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_read_byte ()

enum CRStatus       cr_input_read_byte                  (CRInput *a_this,
                                                         guchar *a_byte);

Gets the next byte of the input. Updates the state of the input so that the next invocation of this method returns the next coming byte.

a_this :

the current instance of CRInput.

a_byte :

out parameter the returned byte.

Returns :

CR_OK upon successful completion, an error code otherwise. All the out parameters of this method are valid if and only if this method returns CR_OK.

cr_input_read_char ()

enum CRStatus       cr_input_read_char                  (CRInput *a_this,
                                                         guint32 *a_char);

Reads an unicode character from the current instance of CRInput.

a_this :

the current instance of CRInput.

a_char :

out parameter. The read character.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_ref ()

void                cr_input_ref                        (CRInput *a_this);

Increments the reference count of the current instance of CRInput.

a_this :

the current instance of CRInput.

cr_input_seek_index ()

enum CRStatus       cr_input_seek_index                 (CRInput *a_this,
                                                         enum CRSeekPos a_origin,
                                                         gint a_pos);

Sets the "current byte index" of the current instance of CRInput. Next call to cr_input_get_byte() will return the byte next after the new "current byte index".

a_this :

the current instance of CRInput.

a_origin :

the origin to consider during the calculation of the absolute position of the new "current byte index".

a_pos :

the relative offset of the new "current byte index." This offset is relative to the origin a_origin.

Returns :

CR_OK upon successful completion otherwise returns CR_BAD_PARAM_ERROR if at least one of the parameters is not valid or CR_OUT_BOUNDS_ERROR in case of error.

cr_input_set_column_num ()

enum CRStatus       cr_input_set_column_num             (CRInput *a_this,
                                                         glong a_col);

Setter of the current column number.

a_this :

the "this pointer" of the current instance of CRInput.

a_col :

the new column number.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_set_cur_index ()

enum CRStatus       cr_input_set_cur_index              (CRInput *a_this,
                                                         glong a_index);

Setter of the next byte index. It sets the index of the next byte to be read.

a_this :

the "this pointer" of the current instance of CRInput .

a_index :

the new index to set.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_set_cur_pos ()

enum CRStatus       cr_input_set_cur_pos                (CRInput *a_this,
                                                         CRInputPos const *a_pos);

Sets the current position in the input stream.

a_this :

the "this pointer" of the current instance of CRInput.

a_pos :

the new position.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_set_end_of_file ()

enum CRStatus       cr_input_set_end_of_file            (CRInput *a_this,
                                                         gboolean a_eof);

Sets the end of file flag.

a_this :

the current instance of CRInput.

a_eof :

the new end of file flag.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_set_end_of_line ()

enum CRStatus       cr_input_set_end_of_line            (CRInput *a_this,
                                                         gboolean a_eol);

Sets the end of line flag.

a_this :

the current instance of CRInput.

a_eol :

the new end of line flag.

Returns :

CR_OK upon successful completion, an error code otherwise.

cr_input_set_line_num ()

enum CRStatus       cr_input_set_line_num               (CRInput *a_this,
                                                         glong a_line_num);

Setter of the current line number.

Return CR_OK upon successful completion, an error code otherwise.

a_this :

the "this pointer" of the current instance of CRInput.

a_line_num :

the new line number.

cr_input_unref ()

gboolean            cr_input_unref                      (CRInput *a_this);

Decrements the reference count of this instance of CRInput. If the reference count goes down to zero, this instance is destroyed.

a_this :

the current instance of CRInput.

Returns :

TRUE if the instance of CRInput got destroyed, false otherwise.