#include <glib.h>
#include "cr-utils.h"
#include "cr-parsing-location.h"
Go to the source code of this file.
Data Structures | |
struct | _CRInput |
The CRInput class provides the abstraction of an utf8-encoded character stream. More... | |
struct | _CRInputPos |
Typedefs | |
typedef struct _CRInput | CRInput |
typedef struct _CRInputPriv | CRInputPriv |
typedef struct _CRInputPos | CRInputPos |
Functions | |
CRInput * | cr_input_new_from_buf (guchar *a_buf, gulong a_len, enum CREncoding a_enc, gboolean a_free_buf) |
cr_input_new_from_buf: : the memory buffer to create the input stream from. | |
CRInput * | cr_input_new_from_uri (const gchar *a_file_uri, enum CREncoding a_enc) |
cr_input_new_from_uri: : the file to create *the input stream from. | |
void | cr_input_destroy (CRInput *a_this) |
cr_input_destroy: : the current instance of CRInput. | |
void | cr_input_ref (CRInput *a_this) |
cr_input_ref: : the current instance of CRInput. | |
gboolean | cr_input_unref (CRInput *a_this) |
cr_input_unref: : the current instance of CRInput. | |
enum CRStatus | cr_input_read_byte (CRInput *a_this, guchar *a_byte) |
cr_input_read_byte: : the current instance of CRInput. | |
enum CRStatus | cr_input_read_char (CRInput *a_this, guint32 *a_char) |
cr_input_read_char: : the current instance of CRInput. | |
enum CRStatus | cr_input_consume_chars (CRInput *a_this, guint32 a_char, gulong *a_nb_char) |
cr_input_consume_chars: : the this pointer of the current instance of CRInput. | |
enum CRStatus | cr_input_consume_char (CRInput *a_this, guint32 a_char) |
cr_input_consume_char: : the this pointer. | |
enum CRStatus | cr_input_consume_white_spaces (CRInput *a_this, gulong *a_nb_chars) |
cr_input_consume_white_spaces: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_peek_byte (CRInput const *a_this, enum CRSeekPos a_origin, gulong a_offset, guchar *a_byte) |
cr_input_peek_byte: : the current instance of CRInput. | |
guchar | cr_input_peek_byte2 (CRInput const *a_this, gulong a_offset, gboolean *a_eof) |
cr_input_peek_byte2: : the current byte input stream. | |
enum CRStatus | cr_input_peek_char (CRInput const *a_this, guint32 *a_char) |
cr_input_peek_char: : the current instance of CRInput. | |
guchar * | cr_input_get_byte_addr (CRInput *a_this, gulong a_offset) |
cr_input_get_byte_addr: : the current instance of CRInput. | |
enum CRStatus | cr_input_get_cur_byte_addr (CRInput *a_this, guchar **a_offset) |
cr_input_get_cur_byte_addr: : the current input stream : out parameter. | |
enum CRStatus | cr_input_seek_index (CRInput *a_this, enum CRSeekPos a_origin, gint a_pos) |
cr_input_seek_index: : the current instance of CRInput. | |
enum CRStatus | cr_input_get_cur_index (CRInput const *a_this, glong *a_index) |
cr_input_get_cur_index: : the "this pointer" of the current instance of CRInput : out parameter. | |
enum CRStatus | cr_input_set_cur_index (CRInput *a_this, glong a_index) |
cr_input_set_cur_index: : the "this pointer" of the current instance of CRInput . | |
enum CRStatus | cr_input_get_cur_pos (CRInput const *a_this, CRInputPos *a_pos) |
cr_input_get_cur_pos: : the current instance of CRInput. | |
enum CRStatus | cr_input_set_cur_pos (CRInput *a_this, CRInputPos const *a_pos) |
cr_input_set_cur_pos: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_get_parsing_location (CRInput const *a_this, CRParsingLocation *a_loc) |
cr_input_get_parsing_location: : the current instance of CRInput : the set parsing location. | |
enum CRStatus | cr_input_get_end_of_line (CRInput const *a_this, gboolean *a_eol) |
cr_input_get_end_of_line: : the current instance of CRInput : out parameter. | |
enum CRStatus | cr_input_set_end_of_line (CRInput *a_this, gboolean a_eol) |
cr_input_set_end_of_line: : the current instance of CRInput. | |
enum CRStatus | cr_input_get_end_of_file (CRInput const *a_this, gboolean *a_eof) |
cr_input_get_end_of_file: : the current instance of CRInput. | |
enum CRStatus | cr_input_set_end_of_file (CRInput *a_this, gboolean a_eof) |
cr_input_set_end_of_file: : the current instance of CRInput. | |
enum CRStatus | cr_input_set_line_num (CRInput *a_this, glong a_line_num) |
cr_input_set_line_num: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_get_line_num (CRInput const *a_this, glong *a_line_num) |
cr_input_get_line_num: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_set_column_num (CRInput *a_this, glong a_col) |
cr_input_set_column_num: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_get_column_num (CRInput const *a_this, glong *a_col) |
cr_input_get_column_num: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_increment_line_num (CRInput *a_this, glong a_increment) |
cr_input_increment_line_num: : the "this pointer" of the current instance of CRInput. | |
enum CRStatus | cr_input_increment_col_num (CRInput *a_this, glong a_increment) |
cr_input_increment_col_num: : the "this pointer" of the current instance of CRInput. | |
glong | cr_input_get_nb_bytes_left (CRInput const *a_this) |
cr_input_get_nb_bytes_left: : the current instance of CRInput. | |
enum CRStatus | cr_input_end_of_input (CRInput const *a_this, gboolean *a_end_of_input) |
cr_input_end_of_input: : the current instance of CRInput. |
Definition in file cr-input.h.
Definition at line 40 of file cr-input.h.
typedef struct _CRInputPos CRInputPos |
Definition at line 52 of file cr-input.h.
typedef struct _CRInputPriv CRInputPriv |
Definition at line 41 of file cr-input.h.
cr_input_consume_char: : the this pointer.
: the character to consume. If set to zero, consumes any character.
Consumes the next character of the input stream if and only if that character equals a_char.
Returns CR_OK upon successful completion, CR_PARSING_ERROR if next char is different from a_char, an other error code otherwise
Definition at line 615 of file cr-input.c.
References CR_BAD_PARAM_ERROR, cr_input_peek_char(), cr_input_read_char(), CR_OK, CR_PARSING_ERROR, and PRIVATE.
Referenced by cr_input_consume_chars().
cr_input_consume_chars: : the this pointer of the current instance of CRInput.
: the character to consume. : 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.
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.
Returns CR_OK if at least one character has been consumed, an error code otherwise.
Definition at line 656 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, cr_input_consume_char(), CR_OK, CR_PARSING_ERROR, and PRIVATE.
Referenced by cr_tknzr_consume_chars().
cr_input_consume_white_spaces: : the "this pointer" of the current instance of CRInput.
: in/out parameter. The number of white spaces to consume. After return, holds the number of white spaces actually consumed.
Same as cr_input_consume_chars() but this one consumes white spaces.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 697 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, cr_input_peek_char(), cr_input_read_char(), CR_OK, cr_utils_is_white_space(), and PRIVATE.
void cr_input_destroy | ( | CRInput * | a_this | ) |
cr_input_destroy: : the current instance of CRInput.
The destructor of the CRInput class.
Definition at line 283 of file cr-input.c.
References PRIVATE.
Referenced by cr_input_new_from_buf(), cr_input_unref(), and cr_parser_new_from_buf().
cr_input_end_of_input: : the current instance of CRInput.
: out parameter. Is set to TRUE if the current instance has reached the end of its input buffer, FALSE otherwise.
Tests wether the current instance of CRInput has reached its input buffer.
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.
Definition at line 357 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
guchar* cr_input_get_byte_addr | ( | CRInput * | a_this, | |
gulong | a_offset | |||
) |
cr_input_get_byte_addr: : the current instance of CRInput.
: the offset of the byte in the input stream starting from the beginning of the stream.
Gets the memory address of the byte located at a given offset in the input stream.
Returns the address, otherwise NULL if an error occured.
Definition at line 878 of file cr-input.c.
References PRIVATE.
Referenced by cr_input_get_cur_byte_addr().
cr_input_get_column_num: : the "this pointer" of the current instance of CRInput.
: out parameter
Getter of the current column number.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 554 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
cr_input_get_cur_byte_addr: : the current input stream : out parameter.
The returned address.
Gets the address of the current character pointer.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 899 of file cr-input.c.
References CR_BAD_PARAM_ERROR, cr_input_get_byte_addr(), CR_OK, CR_START_OF_INPUT_ERROR, and PRIVATE.
Referenced by cr_tknzr_get_cur_byte_addr().
cr_input_get_cur_index: : the "this pointer" of the current instance of CRInput : out parameter.
The returned index.
Getter of the next byte index. It actually returns the index of the next byte to be read.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1046 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
enum CRStatus cr_input_get_cur_pos | ( | CRInput const * | a_this, | |
CRInputPos * | a_pos | |||
) |
cr_input_get_cur_pos: : the current instance of CRInput.
: out parameter. The returned position.
Gets the position of the "current byte index" which is basically the position of the last returned byte in the input stream.
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.
Definition at line 986 of file cr-input.c.
References _CRInputPos::col, CR_BAD_PARAM_ERROR, CR_OK, _CRInputPos::end_of_file, _CRInputPos::end_of_line, _CRInputPos::line, _CRInputPos::next_byte_index, and PRIVATE.
Referenced by cr_tknzr_get_cur_pos().
cr_input_get_end_of_file: : the current instance of CRInput.
: out parameter the place to put the end of file flag.
Gets the end of file flag.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1107 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_tknzr_get_next_token().
cr_input_get_end_of_line: : the current instance of CRInput : out parameter.
The place to put the returned flag
Gets the end of line flag of the current input.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1149 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
cr_input_get_line_num: : the "this pointer" of the current instance of CRInput.
: the returned line number.
Getter of the current line number.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 515 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
glong cr_input_get_nb_bytes_left | ( | CRInput const * | a_this | ) |
cr_input_get_nb_bytes_left: : the current instance of CRInput.
Returns the number of bytes left in the input stream before the end, -1 in case of error.
Definition at line 376 of file cr-input.c.
References PRIVATE.
Referenced by cr_input_peek_char(), cr_input_read_char(), and cr_tknzr_get_nb_bytes_left().
enum CRStatus cr_input_get_parsing_location | ( | CRInput const * | a_this, | |
CRParsingLocation * | a_loc | |||
) |
cr_input_get_parsing_location: : the current instance of CRInput : the set parsing location.
Gets the current parsing location. The Parsing location is a public datastructure that represents the current line/column/byte offset/ in the input stream.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1014 of file cr-input.c.
References _CRParsingLocation::byte_offset, _CRParsingLocation::column, CR_BAD_PARAM_ERROR, CR_OK, _CRParsingLocation::line, and PRIVATE.
Referenced by cr_tknzr_get_parsing_location().
cr_input_increment_col_num: : the "this pointer" of the current instance of CRInput.
: the increment to add to the column number.
Increments the current column number.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 593 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
cr_input_increment_line_num: : the "this pointer" of the current instance of CRInput.
: the increment to add to the line number.
Increments the current line number.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 574 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
CRInput* cr_input_new_from_buf | ( | guchar * | a_buf, | |
gulong | a_len, | |||
enum CREncoding | a_enc, | |||
gboolean | a_free_buf | |||
) |
cr_input_new_from_buf: : the memory buffer to create the input stream from.
The CRInput keeps this pointer so user should not free it !. : the size of the input buffer. : the buffer's encoding. : 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.
Creates a new input stream from a memory buffer. Returns the newly built instance of CRInput.
Definition at line 129 of file cr-input.c.
References cr_enc_handler_convert_input(), cr_enc_handler_get_instance(), cr_input_destroy(), CR_OK, CR_UTF_8, and PRIVATE.
Referenced by cr_input_new_from_uri(), cr_parser_new_from_buf(), and cr_tknzr_new_from_buf().
CRInput* cr_input_new_from_uri | ( | const gchar * | a_file_uri, | |
enum CREncoding | a_enc | |||
) |
cr_input_new_from_uri: : the file to create *the input stream from.
: the encoding of the file *to create the input from.
Creates a new input stream from a file.
Returns the newly created input stream if this method could read the file and create it, NULL otherwise.
Definition at line 196 of file cr-input.c.
References CR_ERROR, CR_INPUT_MEM_CHUNK_SIZE, cr_input_new_from_buf(), CR_OK, and cr_utils_trace_debug.
Referenced by cr_tknzr_new_from_uri().
enum CRStatus cr_input_peek_byte | ( | CRInput const * | a_this, | |
enum CRSeekPos | a_origin, | |||
gulong | a_offset, | |||
guchar * | a_byte | |||
) |
cr_input_peek_byte: : the current instance of CRInput.
: the origin to consider in the calculation of the position of the byte to peek. : the offset of the byte to peek, starting from the origin specified by a_origin. : out parameter the peeked 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.
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.
Definition at line 795 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, CR_OK, CR_SEEK_BEGIN, CR_SEEK_CUR, CR_SEEK_END, and PRIVATE.
Referenced by cr_input_peek_byte2(), and cr_tknzr_peek_byte().
guchar cr_input_peek_byte2 | ( | CRInput const * | a_this, | |
gulong | a_offset, | |||
gboolean * | a_eof | |||
) |
cr_input_peek_byte2: : the current byte input stream.
: the offset of the byte to peek, starting from the current input position pointer. : 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.
Same as cr_input_peek_byte() but with a simplified interface.
Returns the read byte or 0 if something bad happened.
Definition at line 847 of file cr-input.c.
References CR_END_OF_INPUT_ERROR, CR_ERROR, cr_input_peek_byte(), CR_SEEK_CUR, and PRIVATE.
Referenced by cr_tknzr_peek_byte2().
cr_input_peek_char: : the current instance of CRInput.
: out parameter. The returned character.
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.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 746 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, cr_input_get_nb_bytes_left(), CR_OK, cr_utils_read_char_from_utf8_buf(), and PRIVATE.
Referenced by cr_input_consume_char(), cr_input_consume_white_spaces(), cr_tknzr_get_next_token(), and cr_tknzr_peek_char().
cr_input_read_byte: : the current instance of CRInput.
: out parameter the returned 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.
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.
Definition at line 405 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, CR_OK, and PRIVATE.
Referenced by cr_tknzr_read_byte().
cr_input_read_char: : the current instance of CRInput.
: out parameter. The read character.
Reads an unicode character from the current instance of CRInput.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 440 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, cr_input_get_nb_bytes_left(), CR_OK, cr_utils_read_char_from_utf8_buf(), and PRIVATE.
Referenced by cr_input_consume_char(), cr_input_consume_white_spaces(), and cr_tknzr_read_char().
void cr_input_ref | ( | CRInput * | a_this | ) |
cr_input_ref: : the current instance of CRInput.
Increments the reference count of the current instance of CRInput.
Definition at line 309 of file cr-input.c.
References PRIVATE.
Referenced by cr_tknzr_set_input().
cr_input_seek_index: : the current instance of CRInput.
: the origin to consider during the calculation of the absolute position of the new "current byte index". : the relative offset of the new "current byte index." This offset is relative to the origin a_origin.
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".
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.
Definition at line 931 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, CR_OUT_OF_BOUNDS_ERROR, CR_SEEK_BEGIN, CR_SEEK_CUR, CR_SEEK_END, and PRIVATE.
Referenced by cr_tknzr_seek_index().
cr_input_set_column_num: : the "this pointer" of the current instance of CRInput.
: the new column number.
Setter of the current column number.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 535 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_input_set_cur_pos().
cr_input_set_cur_index: : the "this pointer" of the current instance of CRInput .
: the new index to set.
Setter of the next byte index. It sets the index of the next byte to be read.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1068 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_input_set_cur_pos().
enum CRStatus cr_input_set_cur_pos | ( | CRInput * | a_this, | |
CRInputPos const * | a_pos | |||
) |
cr_input_set_cur_pos: : the "this pointer" of the current instance of CRInput.
: the new position.
Sets the current position in the input stream.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1170 of file cr-input.c.
References _CRInputPos::col, CR_BAD_PARAM_ERROR, cr_input_set_column_num(), cr_input_set_cur_index(), cr_input_set_end_of_file(), cr_input_set_end_of_line(), cr_input_set_line_num(), CR_OK, _CRInputPos::end_of_file, _CRInputPos::end_of_line, _CRInputPos::line, _CRInputPos::next_byte_index, and PRIVATE.
Referenced by cr_tknzr_consume_chars(), cr_tknzr_get_cur_byte_addr(), cr_tknzr_get_cur_pos(), cr_tknzr_get_nb_bytes_left(), cr_tknzr_peek_byte(), cr_tknzr_peek_char(), cr_tknzr_read_char(), cr_tknzr_seek_index(), and cr_tknzr_set_cur_pos().
cr_input_set_end_of_file: : the current instance of CRInput.
: the new end of file flag.
Sets the end of file flag.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1087 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_input_set_cur_pos().
cr_input_set_end_of_line: : the current instance of CRInput.
: the new end of line flag.
Sets the end of line flag.
Returns CR_OK upon successful completion, an error code otherwise.
Definition at line 1128 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_input_set_cur_pos().
cr_input_set_line_num: : the "this pointer" of the current instance of CRInput.
: the new line number.
Setter of the current line number.
Return CR_OK upon successful completion, an error code otherwise.
Definition at line 496 of file cr-input.c.
References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.
Referenced by cr_input_set_cur_pos().
gboolean cr_input_unref | ( | CRInput * | a_this | ) |
cr_input_unref: : the current instance of CRInput.
Decrements the reference count of this instance of CRInput. If the reference count goes down to zero, this instance is destroyed.
Returns TRUE if the instance of CRInput got destroyed, false otherwise.
Definition at line 327 of file cr-input.c.
References cr_input_destroy(), and PRIVATE.
Referenced by cr_tknzr_destroy(), and cr_tknzr_set_input().