Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

cr-input.c File Reference

The definition of the CRInput class. More...

#include "stdio.h"
#include <string.h>
#include "cr-input.h"
#include "cr-enc-handler.h"

Go to the source code of this file.

Data Structures

struct  _CRInputPriv
 The privated attributes of the CRInputPriv class. More...


Defines

#define PRIVATE(object)   (object)->priv
#define CR_INPUT_MEM_CHUNK_SIZE   1024 * 4

Functions

CRInputcr_input_new_from_buf (const guchar *a_buf, gulong a_len, enum CREncoding a_enc, gboolean a_free_buf)
 Creates a new input stream from a memory buffer.

CRInputcr_input_new_from_uri (const gchar *a_file_uri, enum CREncoding a_enc)
 Creates a new input stream from a file.

void cr_input_destroy (CRInput *a_this)
 The destructor of the CRInput class.

void cr_input_ref (CRInput *a_this)
 Increments the reference count of the current instance of CRInput.

gboolean cr_input_unref (CRInput *a_this)
 Decrements the reference count of this instance of CRInput.

enum CRStatus cr_input_end_of_input (CRInput *a_this, gboolean *a_end_of_input)
 Tests wether the current instance of CRInput has reached it's input buffer.

glong cr_input_get_nb_bytes_left (CRInput *a_this)
 Retunrs the number of bytes left in the input stream before the end.

enum CRStatus cr_input_read_byte (CRInput *a_this, guchar *a_byte)
 Returns the next byte of the input.

enum CRStatus cr_input_read_char (CRInput *a_this, guint32 *a_char)
 Reads an unicode character from the current instance of CRInput.

enum CRStatus cr_input_set_line_num (CRInput *a_this, glong a_line_num)
 Setter of the current line number.

enum CRStatus cr_input_get_line_num (CRInput *a_this, glong *a_line_num)
 Getter of the curren line number.

enum CRStatus cr_input_set_column_num (CRInput *a_this, glong a_col)
 Setter of the current column number.

enum CRStatus cr_input_get_column_num (CRInput *a_this, glong *a_col)
 Getter of the current column number.

enum CRStatus cr_input_increment_line_num (CRInput *a_this, glong a_increment)
 Increments the current line number.

enum CRStatus cr_input_increment_col_num (CRInput *a_this, glong a_increment)
 Increments the current column number.

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.

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.

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.

enum CRStatus cr_input_peek_char (CRInput *a_this, guint32 *a_char)
 Same as cr_input_read_char() but does not update the internal state of the input stream.

enum CRStatus cr_input_peek_byte (CRInput *a_this, enum CRSeekPos a_origin, gulong a_offset, guchar *a_byte)
 Gets a byte from the input stream.

guchar cr_input_peek_byte2 (CRInput *a_this, gulong a_offset, gboolean *a_eof)
 Same as cr_input_peek_byte() but with a simplified interface.

guchar * cr_input_get_byte_addr (CRInput *a_this, gulong a_offset)
 Returns the memory address of the byte located at a given offset in the input stream.

enum CRStatus cr_input_get_cur_byte_addr (CRInput *a_this, guchar **a_offset)
 Returns the address of the current character pointer.

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.

enum CRStatus cr_input_get_cur_pos (CRInput *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.

enum CRStatus cr_input_get_cur_index (CRInput *a_this, glong *a_index)
 Getter of the next byte index.

enum CRStatus cr_input_set_cur_index (CRInput *a_this, glong a_index)
 Setter of the next byte index.

enum CRStatus cr_input_set_end_of_file (CRInput *a_this, gboolean a_eof)
 Sets the end of file flag.

enum CRStatus cr_input_get_end_of_file (CRInput *a_this, gboolean *a_eof)
 Gets the end of file flag.

enum CRStatus cr_input_set_end_of_line (CRInput *a_this, gboolean a_eol)
 Sets the end of line flag.

enum CRStatus cr_input_get_end_of_line (CRInput *a_this, gboolean *a_eol)
 Gets the end of line flag of the current input.

enum CRStatus cr_input_set_cur_pos (CRInput *a_this, CRInputPos *a_pos)
 Sets the current position in the input stream.


Detailed Description

The definition of the CRInput class.

Definition in file cr-input.c.


Define Documentation

#define CR_INPUT_MEM_CHUNK_SIZE   1024 * 4
 

Definition at line 92 of file cr-input.c.

Referenced by cr_input_new_from_uri().

#define PRIVATE object   )     (object)->priv
 

Definition at line 86 of file cr-input.c.


Function Documentation

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.

Parameters:
a_this the this pointer.
a_char the character to consume. If set to zero, consumes any character.
Returns:
CR_OK upon successfull completion, CR_PARSING_ERROR if next char is different from a_char, an other error code otherwise

Definition at line 644 of file cr-input.c.

References CR_BAD_PARAM_ERROR, cr_input_peek_char(), cr_input_read_char(), CR_OK, CR_PARSING_ERROR, CRStatus, and PRIVATE.

Referenced by 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 consumed.

Parameters:
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.

Definition at line 689 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_END_OF_INPUT_ERROR, cr_input_consume_char(), CR_OK, CR_PARSING_ERROR, CRStatus, and PRIVATE.

Referenced by cr_tknzr_consume_chars().

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.

Parameters:
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 successfull completion, an error code otherwise.

Definition at line 730 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(), CRStatus, and PRIVATE.

void cr_input_destroy CRInput a_this  ) 
 

The destructor of the CRInput class.

Parameters:
a_this the current instance of CRInput.

Definition at line 303 of file cr-input.c.

References PRIVATE.

Referenced by cr_input_new_from_buf(), cr_input_unref(), and cr_parser_new_from_buf().

enum CRStatus cr_input_end_of_input CRInput a_this,
gboolean *  a_end_of_input
 

Tests wether the current instance of CRInput has reached it's input buffer.

Parameters:
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.
CR_OK upon successfull 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 377 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
 

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

Parameters:
a_this the current instance of CRInput.
a_offset the offset of the byte in the input stream starting from the begining of the stream.
Returns:
the address, otherwise NULL if an error occured.

Definition at line 917 of file cr-input.c.

References PRIVATE.

Referenced by cr_input_get_cur_byte_addr().

enum CRStatus cr_input_get_column_num CRInput a_this,
glong *  a_col
 

Getter of the current column number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
a_col out parameter
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 585 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

enum CRStatus cr_input_get_cur_byte_addr CRInput a_this,
guchar **  a_offset
 

Returns the address of the current character pointer.

Parameters:
a_this the current input stream
a_offset out parameter. The returned address.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 937 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().

enum CRStatus cr_input_get_cur_index CRInput a_this,
glong *  a_index
 

Getter of the next byte index.

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

Parameters:
a_this the "this pointer" of the current instance of CRInput
a_index out parameter. The returned index.
Returns:
CR_OK upon sucessfull completion, an error code otherwise.

Definition at line 1060 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

enum CRStatus cr_input_get_cur_pos CRInput 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.

Parameters:
a_this the current instance of CRInput.
a_pos out parameter. The returned position.
Returns:
CR_OK upon sucessfull completion. Otherwise, Note that the out parameters of this function are valid if and only if this function returns CR_OK.

Definition at line 1034 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

Referenced by cr_tknzr_get_cur_pos().

enum CRStatus cr_input_get_end_of_file CRInput a_this,
gboolean *  a_eof
 

Gets the end of file flag.

Parameters:
a_this the current instance of CRInput.
a_eof out parameter the place where to put the end of file flag.
Returns:
CR_OK upon sucessfull completion, an error code otherwise.

Definition at line 1117 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

Referenced by cr_tknzr_get_next_token().

enum CRStatus cr_input_get_end_of_line CRInput a_this,
gboolean *  a_eol
 

Gets the end of line flag of the current input.

Parameters:
a_this the current instance of CRInput
a_eol out parameter. The place where to put the returned flag
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 1156 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

enum CRStatus cr_input_get_line_num CRInput a_this,
glong *  a_line_num
 

Getter of the curren line number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
a_line_num the returned line number.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 546 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

glong cr_input_get_nb_bytes_left CRInput a_this  ) 
 

Retunrs the number of bytes left in the input stream before the end.

Parameters:
a_this the current instance of CRInput.
Returns:
the number of characters left or -1 in case of error.

Definition at line 396 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_increment_col_num CRInput a_this,
glong  a_increment
 

Increments the current column number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 621 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

enum CRStatus cr_input_increment_line_num CRInput a_this,
glong  a_increment
 

Increments the current line number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 603 of file cr-input.c.

References CR_BAD_PARAM_ERROR, CR_OK, and PRIVATE.

CRInput* cr_input_new_from_buf const guchar *  a_buf,
gulong  a_len,
enum CREncoding  a_enc,
gboolean  a_free_buf
 

Creates a new input stream from a memory buffer.

Parameters:
a_buf the memory buffer to create the input stream from.
a_len the size of the input buffer.
a_enc the buffer's encoding.
a_free_buf is 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.

Definition at line 140 of file cr-input.c.

References cr_enc_handler_convert_input(), cr_enc_handler_get_instance(), cr_input_destroy(), CR_OK, CR_UTF_8, CREncHandler, CRStatus, 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
 

Creates a new input stream from a file.

Parameters:
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 couldn read the file and create it, NULL otherwise.

Definition at line 208 of file cr-input.c.

References CR_ERROR, CR_INPUT_MEM_CHUNK_SIZE, cr_input_new_from_buf(), CR_OK, cr_utils_trace_debug, and CRStatus.

Referenced by cr_tknzr_new_from_uri().

enum CRStatus cr_input_peek_byte CRInput 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.

Parameters:
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 successfull completion or,
  • CR_BAD_PARAM_ERROR if at least of of the parameters is invalid
  • CR_OUT_OF_BOUNDS_ERROR if the indexed byte is out of bounds

Definition at line 831 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 a_this,
gulong  a_offset,
gboolean *  a_eof
 

Same as cr_input_peek_byte() but with a simplified interface.

Parameters:
a_this the current byte input stream.
a_offset the offset of the byte to peek, starting from the current input postion 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 smthing bad happened.

Definition at line 885 of file cr-input.c.

References CR_END_OF_INPUT_ERROR, CR_ERROR, cr_input_peek_byte(), CR_SEEK_CUR, CRStatus, and PRIVATE.

Referenced by cr_tknzr_peek_byte2().

enum CRStatus cr_input_peek_char CRInput 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.

Parameters:
a_this the current instance of CRInput.
a_char out parameter. The returned character.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 777 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(), CRStatus, and PRIVATE.

Referenced by cr_input_consume_char(), cr_input_consume_white_spaces(), cr_tknzr_get_next_token(), and cr_tknzr_peek_char().

enum CRStatus cr_input_read_byte CRInput a_this,
guchar *  a_byte
 

Returns the next byte of the input.

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

Parameters:
a_this the current instance of CRInput.
a_byte out parameter the returned byte.
Returns:
CR_OK upon sucessfull completion, an error code otherwise. All the out param of this method are valid if and only if this method returns CR_OK.

Definition at line 425 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().

enum CRStatus cr_input_read_char CRInput a_this,
guint32 *  a_char
 

Reads an unicode character from the current instance of CRInput.

Parameters:
a_this the current instance of CRInput.
a_char out parameter. The read character.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 466 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(), CRStatus, 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  ) 
 

Increments the reference count of the current instance of CRInput.

Parameters:
a_this the current instance of CRInput.

Definition at line 331 of file cr-input.c.

References PRIVATE.

Referenced by cr_tknzr_set_input().

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".

Parameters:
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 successfull completion otherwise returns
  • CR_BAD_PARAM_ERROR if at least one of the parameters is not valid
  • CR_OUT_BOUNDS_ERROR

Definition at line 973 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().

enum CRStatus cr_input_set_column_num CRInput a_this,
glong  a_col
 

Setter of the current column number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
a_col the new column column number.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 566 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_index CRInput a_this,
glong  a_index
 

Setter of the next byte index.

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

Parameters:
a_this the "this pointer" of the current instance of CRInput .
a_index the new index to set.
Returns:
CR_OK upon sucessfull completion, an error code otherwise.

Definition at line 1081 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 a_pos
 

Sets the current position in the input stream.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
a_pos the new position.

Definition at line 1176 of file cr-input.c.

References 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, 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().

enum CRStatus cr_input_set_end_of_file CRInput a_this,
gboolean  a_eof
 

Sets the end of file flag.

Parameters:
a_this the current instance of CRInput.
a_eof the new end of file flag.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 1099 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_end_of_line CRInput a_this,
gboolean  a_eol
 

Sets the end of line flag.

Parameters:
a_this the current instance of CRInput.
a_eol the new end of line flag.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 1137 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_line_num CRInput a_this,
glong  a_line_num
 

Setter of the current line number.

Parameters:
a_this the "this pointer" of the current instance of CRInput.
a_line_num the new line number.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 527 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  ) 
 

Decrements the reference count of this instance of CRInput.

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

Parameters:
a_this the current instance of CRInput.

Definition at line 347 of file cr-input.c.

References cr_input_destroy(), and PRIVATE.

Referenced by cr_tknzr_destroy(), and cr_tknzr_set_input().


Generated on Wed Oct 1 01:36:50 2003 for Libcroco by doxygen 1.3.3