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 COPYRIGHTS file for copyright information. 00022 */ 00023 00024 #ifndef __CR_TOKEN_H__ 00025 #define __CR_TOKEN_H__ 00026 00027 #include "cr-utils.h" 00028 #include "cr-input.h" 00029 #include "cr-num.h" 00030 #include "cr-rgb.h" 00031 #include "cr-string.h" 00032 #include "cr-parsing-location.h" 00033 00034 G_BEGIN_DECLS 00035 00036 enum CRTokenType 00037 { 00038 NO_TK, 00039 S_TK, 00040 CDO_TK, 00041 CDC_TK, 00042 INCLUDES_TK, 00043 DASHMATCH_TK, 00044 COMMENT_TK, 00045 STRING_TK, 00046 IDENT_TK, 00047 HASH_TK, 00048 IMPORT_SYM_TK, 00049 PAGE_SYM_TK, 00050 MEDIA_SYM_TK, 00051 FONT_FACE_SYM_TK, 00052 CHARSET_SYM_TK, 00053 ATKEYWORD_TK, 00054 IMPORTANT_SYM_TK, 00055 EMS_TK, 00056 EXS_TK, 00057 LENGTH_TK, 00058 ANGLE_TK, 00059 TIME_TK, 00060 FREQ_TK, 00061 DIMEN_TK, 00062 PERCENTAGE_TK, 00063 NUMBER_TK, 00064 RGB_TK, 00065 URI_TK, 00066 FUNCTION_TK, 00067 UNICODERANGE_TK, 00068 SEMICOLON_TK, 00069 CBO_TK, /*opening curly bracket*/ 00070 CBC_TK, /*closing curly bracket*/ 00071 PO_TK, /*opening parenthesis*/ 00072 PC_TK, /*closing parenthesis*/ 00073 BO_TK, /*opening bracket*/ 00074 BC_TK, /*closing bracket*/ 00075 DELIM_TK 00076 } ; 00077 00078 enum CRTokenExtraType 00079 { 00080 NO_ET = 0, 00081 LENGTH_PX_ET, 00082 LENGTH_CM_ET, 00083 LENGTH_MM_ET, 00084 LENGTH_IN_ET, 00085 LENGTH_PT_ET, 00086 LENGTH_PC_ET, 00087 ANGLE_DEG_ET, 00088 ANGLE_RAD_ET, 00089 ANGLE_GRAD_ET, 00090 TIME_MS_ET, 00091 TIME_S_ET, 00092 FREQ_HZ_ET, 00093 FREQ_KHZ_ET 00094 } ; 00095 00096 typedef struct _CRToken CRToken ; 00097 00098 /** 00099 *This class abstracts a css2 token. 00100 */ 00101 struct _CRToken 00102 { 00103 enum CRTokenType type ; 00104 enum CRTokenExtraType extra_type ; 00105 CRInputPos pos ; 00106 00107 union 00108 { 00109 CRString *str ; 00110 CRRgb *rgb ; 00111 CRNum *num ; 00112 guint32 unichar ; 00113 } u ; 00114 00115 CRString * dimen ; 00116 CRParsingLocation location ; 00117 } ; 00118 00119 CRToken* cr_token_new (void) ; 00120 00121 enum CRStatus cr_token_set_s (CRToken *a_this) ; 00122 00123 enum CRStatus cr_token_set_cdo (CRToken *a_this) ; 00124 00125 enum CRStatus cr_token_set_cdc (CRToken *a_this) ; 00126 00127 enum CRStatus cr_token_set_includes (CRToken *a_this) ; 00128 00129 enum CRStatus cr_token_set_dashmatch (CRToken *a_this) ; 00130 00131 enum CRStatus cr_token_set_comment (CRToken *a_this, CRString *a_str) ; 00132 00133 enum CRStatus cr_token_set_string (CRToken *a_this, CRString *a_str) ; 00134 00135 enum CRStatus cr_token_set_ident (CRToken *a_this, CRString * a_ident) ; 00136 00137 enum CRStatus cr_token_set_hash (CRToken *a_this, CRString *a_hash) ; 00138 00139 enum CRStatus cr_token_set_rgb (CRToken *a_this, CRRgb *a_rgb) ; 00140 00141 enum CRStatus cr_token_set_import_sym (CRToken *a_this) ; 00142 00143 enum CRStatus cr_token_set_page_sym (CRToken *a_this) ; 00144 00145 enum CRStatus cr_token_set_media_sym (CRToken *a_this) ; 00146 00147 enum CRStatus cr_token_set_font_face_sym (CRToken *a_this) ; 00148 00149 enum CRStatus cr_token_set_charset_sym (CRToken *a_this) ; 00150 00151 enum CRStatus cr_token_set_atkeyword (CRToken *a_this, CRString *a_atname) ; 00152 00153 enum CRStatus cr_token_set_important_sym (CRToken *a_this) ; 00154 00155 enum CRStatus cr_token_set_ems (CRToken *a_this, CRNum *a_num) ; 00156 00157 enum CRStatus cr_token_set_exs (CRToken *a_this, CRNum *a_num) ; 00158 00159 enum CRStatus cr_token_set_length (CRToken *a_this, CRNum *a_num, 00160 enum CRTokenExtraType a_et) ; 00161 00162 enum CRStatus cr_token_set_angle (CRToken *a_this, CRNum *a_num, 00163 enum CRTokenExtraType a_et) ; 00164 00165 enum CRStatus cr_token_set_time (CRToken *a_this, CRNum *a_num, 00166 enum CRTokenExtraType a_et) ; 00167 00168 enum CRStatus cr_token_set_freq (CRToken *a_this, CRNum *a_num, 00169 enum CRTokenExtraType a_et) ; 00170 00171 enum CRStatus cr_token_set_dimen (CRToken *a_this, CRNum *a_num, 00172 CRString *a_dim) ; 00173 00174 enum CRStatus cr_token_set_percentage (CRToken *a_this, CRNum *a_num) ; 00175 00176 enum CRStatus cr_token_set_number (CRToken *a_this, CRNum *a_num) ; 00177 00178 enum CRStatus cr_token_set_uri (CRToken *a_this, CRString *a_uri) ; 00179 00180 enum CRStatus cr_token_set_function (CRToken *a_this, 00181 CRString *a_fun_name) ; 00182 00183 enum CRStatus cr_token_set_bc (CRToken *a_this) ; 00184 00185 enum CRStatus cr_token_set_bo (CRToken *a_this) ; 00186 00187 enum CRStatus cr_token_set_po (CRToken *a_this) ; 00188 00189 enum CRStatus cr_token_set_pc (CRToken *a_this) ; 00190 00191 enum CRStatus cr_token_set_cbc (CRToken *a_this) ; 00192 00193 enum CRStatus cr_token_set_cbo (CRToken *a_this) ; 00194 00195 enum CRStatus cr_token_set_semicolon (CRToken *a_this) ; 00196 00197 enum CRStatus cr_token_set_delim (CRToken *a_this, guint32 a_char) ; 00198 00199 00200 /* 00201 enum CRStatus 00202 cr_token_set_unicoderange (CRToken *a_this, 00203 CRUnicodeRange *a_range) ; 00204 */ 00205 00206 void 00207 cr_token_destroy (CRToken *a_this) ; 00208 00209 00210 G_END_DECLS 00211 00212 #endif /*__CR_TOKEN_H__*/