00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __CR_INPUT_SRC_H__
00025 #define __CR_INPUT_SRC_H__
00026
00027
00028 #include <glib.h>
00029 #include "cr-utils.h"
00030 #include "cr-parsing-location.h"
00031
00032 G_BEGIN_DECLS
00033
00034
00035
00036
00037
00038
00039
00040 typedef struct _CRInput CRInput ;
00041 typedef struct _CRInputPriv CRInputPriv ;
00042
00043
00044
00045
00046
00047 struct _CRInput
00048 {
00049 CRInputPriv *priv ;
00050 } ;
00051
00052 typedef struct _CRInputPos CRInputPos ;
00053
00054 struct _CRInputPos
00055 {
00056 glong line ;
00057 glong col ;
00058 gboolean end_of_file ;
00059 gboolean end_of_line ;
00060 glong next_byte_index ;
00061 } ;
00062
00063 CRInput *
00064 cr_input_new_from_buf (guchar *a_buf, gulong a_len,
00065 enum CREncoding a_enc, gboolean a_free_buf) ;
00066 CRInput *
00067 cr_input_new_from_uri (const gchar *a_file_uri,
00068 enum CREncoding a_enc) ;
00069
00070 void
00071 cr_input_destroy (CRInput *a_this) ;
00072
00073 void
00074 cr_input_ref (CRInput *a_this) ;
00075
00076 gboolean
00077 cr_input_unref (CRInput *a_this) ;
00078
00079 enum CRStatus
00080 cr_input_read_byte (CRInput *a_this, guchar *a_byte) ;
00081
00082 enum CRStatus
00083 cr_input_read_char (CRInput *a_this, guint32 *a_char) ;
00084
00085 enum CRStatus
00086 cr_input_consume_chars (CRInput *a_this, guint32 a_char,
00087 gulong *a_nb_char) ;
00088
00089 enum CRStatus
00090 cr_input_consume_char (CRInput *a_this, guint32 a_char) ;
00091
00092 enum CRStatus
00093 cr_input_consume_white_spaces (CRInput *a_this, gulong *a_nb_chars) ;
00094
00095 enum CRStatus
00096 cr_input_peek_byte (CRInput const *a_this, enum CRSeekPos a_origin,
00097 gulong a_offset, guchar *a_byte) ;
00098
00099 guchar
00100 cr_input_peek_byte2 (CRInput const *a_this, gulong a_offset,
00101 gboolean *a_eof) ;
00102
00103 enum CRStatus
00104 cr_input_peek_char (CRInput const *a_this, guint32 *a_char) ;
00105
00106 guchar *
00107 cr_input_get_byte_addr (CRInput *a_this,
00108 gulong a_offset) ;
00109
00110 enum CRStatus
00111 cr_input_get_cur_byte_addr (CRInput *a_this, guchar ** a_offset) ;
00112
00113 enum CRStatus
00114 cr_input_seek_index (CRInput *a_this,
00115 enum CRSeekPos a_origin, gint a_pos) ;
00116
00117 enum CRStatus
00118 cr_input_get_cur_index (CRInput const *a_this, glong *a_index) ;
00119
00120 enum CRStatus
00121 cr_input_set_cur_index (CRInput *a_this, glong a_index) ;
00122
00123 enum CRStatus
00124 cr_input_get_cur_pos (CRInput const *a_this, CRInputPos * a_pos) ;
00125
00126 enum CRStatus
00127 cr_input_set_cur_pos (CRInput *a_this, CRInputPos const *a_pos) ;
00128
00129 enum CRStatus
00130 cr_input_get_parsing_location (CRInput const *a_this,
00131 CRParsingLocation *a_loc) ;
00132
00133 enum CRStatus
00134 cr_input_get_end_of_line (CRInput const *a_this, gboolean *a_eol) ;
00135
00136 enum CRStatus
00137 cr_input_set_end_of_line (CRInput *a_this, gboolean a_eol) ;
00138
00139 enum CRStatus
00140 cr_input_get_end_of_file (CRInput const *a_this, gboolean *a_eof) ;
00141
00142 enum CRStatus
00143 cr_input_set_end_of_file (CRInput *a_this, gboolean a_eof) ;
00144
00145 enum CRStatus
00146 cr_input_set_line_num (CRInput *a_this, glong a_line_num) ;
00147
00148 enum CRStatus
00149 cr_input_get_line_num (CRInput const *a_this, glong *a_line_num) ;
00150
00151 enum CRStatus
00152 cr_input_set_column_num (CRInput *a_this, glong a_col) ;
00153
00154 enum CRStatus
00155 cr_input_get_column_num (CRInput const *a_this, glong *a_col) ;
00156
00157 enum CRStatus
00158 cr_input_increment_line_num (CRInput *a_this,
00159 glong a_increment) ;
00160
00161 enum CRStatus
00162 cr_input_increment_col_num (CRInput *a_this,
00163 glong a_increment) ;
00164
00165 glong
00166 cr_input_get_nb_bytes_left (CRInput const *a_this) ;
00167
00168 enum CRStatus
00169 cr_input_end_of_input (CRInput const *a_this, gboolean *a_end_of_input) ;
00170
00171 G_END_DECLS
00172
00173 #endif
00174