Libcroco
|
00001 /* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset:8 -*- */ 00002 00003 /* 00004 * This file is part of The Croco Library 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of version 2.1 of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00018 * USA 00019 * 00020 * Author: Dodji Seketeli 00021 * See the COPYRIGHTS file for copyrights information. 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 *@file 00036 *The libcroco basic input stream class 00037 *declaration file. 00038 */ 00039 00040 typedef struct _CRInput CRInput ; 00041 typedef struct _CRInputPriv CRInputPriv ; 00042 00043 /** 00044 *The #CRInput class provides the abstraction of 00045 *an utf8-encoded character stream. 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 /*__CR_INPUT_SRC_H__*/ 00174