00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __CR_TOKEN_H__
00028 #define __CR_TOKEN_H__
00029
00030 #include "cr-utils.h"
00031 #include "cr-input.h"
00032 #include "cr-num.h"
00033 #include "cr-rgb.h"
00034
00035 G_BEGIN_DECLS
00036
00037 enum CRTokenType
00038 {
00039 NO_TK,
00040 S_TK,
00041 CDO_TK,
00042 CDC_TK,
00043 INCLUDES_TK,
00044 DASHMATCH_TK,
00045 COMMENT_TK,
00046 STRING_TK,
00047 IDENT_TK,
00048 HASH_TK,
00049 IMPORT_SYM_TK,
00050 PAGE_SYM_TK,
00051 MEDIA_SYM_TK,
00052 FONT_FACE_SYM_TK,
00053 CHARSET_SYM_TK,
00054 ATKEYWORD_TK,
00055 IMPORTANT_SYM_TK,
00056 EMS_TK,
00057 EXS_TK,
00058 LENGTH_TK,
00059 ANGLE_TK,
00060 TIME_TK,
00061 FREQ_TK,
00062 DIMEN_TK,
00063 PERCENTAGE_TK,
00064 NUMBER_TK,
00065 RGB_TK,
00066 URI_TK,
00067 FUNCTION_TK,
00068 UNICODERANGE_TK,
00069 SEMICOLON_TK,
00070 CBO_TK,
00071 CBC_TK,
00072 PO_TK,
00073 PC_TK,
00074 BO_TK,
00075 BC_TK,
00076 DELIM_TK,
00077 } ;
00078
00079 enum CRTokenExtraType
00080 {
00081 NO_ET = 0,
00082 LENGTH_PX_ET,
00083 LENGTH_CM_ET,
00084 LENGTH_MM_ET,
00085 LENGTH_IN_ET,
00086 LENGTH_PT_ET,
00087 LENGTH_PC_ET,
00088 ANGLE_DEG_ET,
00089 ANGLE_RAD_ET,
00090 ANGLE_GRAD_ET,
00091 TIME_MS_ET,
00092 TIME_S_ET,
00093 FREQ_HZ_ET,
00094 FREQ_KHZ_ET,
00095 } ;
00096
00097 typedef struct _CRToken CRToken ;
00098
00099
00100
00101
00102 struct _CRToken
00103 {
00104 enum CRTokenType type ;
00105 enum CRTokenExtraType extra_type ;
00106 CRInputPos pos ;
00107
00108 union
00109 {
00110 GString *str ;
00111 CRRgb *rgb ;
00112 CRNum *num ;
00113 guint32 unichar ;
00114 } u ;
00115
00116 GString * dimen ;
00117 } ;
00118
00119 CRToken*
00120 cr_token_new (void) ;
00121
00122 enum CRStatus
00123 cr_token_set_s (CRToken *a_this) ;
00124
00125 enum CRStatus
00126 cr_token_set_cdo (CRToken *a_this) ;
00127
00128 enum CRStatus
00129 cr_token_set_cdc (CRToken *a_this) ;
00130
00131 enum CRStatus
00132 cr_token_set_includes (CRToken *a_this) ;
00133
00134 enum CRStatus
00135 cr_token_set_dashmatch (CRToken *a_this) ;
00136
00137 enum CRStatus
00138 cr_token_set_comment (CRToken *a_this, GString *a_str) ;
00139
00140 enum CRStatus
00141 cr_token_set_string (CRToken *a_this, GString *a_str) ;
00142
00143 enum CRStatus
00144 cr_token_set_ident (CRToken *a_this, GString * a_ident) ;
00145
00146 enum CRStatus
00147 cr_token_set_hash (CRToken *a_this, GString *a_hash) ;
00148
00149 enum CRStatus
00150 cr_token_set_rgb (CRToken *a_this, CRRgb *a_rgb) ;
00151
00152 enum CRStatus
00153 cr_token_set_import_sym (CRToken *a_this) ;
00154
00155 enum CRStatus
00156 cr_token_set_page_sym (CRToken *a_this) ;
00157
00158 enum CRStatus
00159 cr_token_set_media_sym (CRToken *a_this) ;
00160
00161 enum CRStatus
00162 cr_token_set_font_face_sym (CRToken *a_this) ;
00163
00164 enum CRStatus
00165 cr_token_set_charset_sym (CRToken *a_this) ;
00166
00167 enum CRStatus
00168 cr_token_set_atkeyword (CRToken *a_this, GString *a_atname) ;
00169
00170 enum CRStatus
00171 cr_token_set_important_sym (CRToken *a_this) ;
00172
00173 enum CRStatus
00174 cr_token_set_ems (CRToken *a_this, CRNum *a_num) ;
00175
00176 enum CRStatus
00177 cr_token_set_exs (CRToken *a_this, CRNum *a_num) ;
00178
00179 enum CRStatus
00180 cr_token_set_length (CRToken *a_this, CRNum *a_num,
00181 enum CRTokenExtraType a_et) ;
00182
00183 enum CRStatus
00184 cr_token_set_angle (CRToken *a_this, CRNum *a_num,
00185 enum CRTokenExtraType a_et) ;
00186
00187 enum CRStatus
00188 cr_token_set_time (CRToken *a_this, CRNum *a_num,
00189 enum CRTokenExtraType a_et) ;
00190
00191 enum CRStatus
00192 cr_token_set_freq (CRToken *a_this, CRNum *a_num,
00193 enum CRTokenExtraType a_et) ;
00194 enum CRStatus
00195 cr_token_set_dimen (CRToken *a_this, CRNum *a_num,
00196 GString *a_dim) ;
00197
00198 enum CRStatus
00199 cr_token_set_percentage (CRToken *a_this, CRNum *a_num) ;
00200
00201 enum CRStatus
00202 cr_token_set_number (CRToken *a_this, CRNum *a_num) ;
00203
00204 enum CRStatus
00205 cr_token_set_uri (CRToken *a_this, GString *a_uri) ;
00206
00207 enum CRStatus
00208 cr_token_set_function (CRToken *a_this, GString *a_fun_name) ;
00209
00210 enum CRStatus
00211 cr_token_set_bc (CRToken *a_this) ;
00212
00213 enum CRStatus
00214 cr_token_set_bo (CRToken *a_this) ;
00215
00216 enum CRStatus
00217 cr_token_set_po (CRToken *a_this) ;
00218
00219 enum CRStatus
00220 cr_token_set_pc (CRToken *a_this) ;
00221
00222 enum CRStatus
00223 cr_token_set_cbc (CRToken *a_this) ;
00224
00225 enum CRStatus
00226 cr_token_set_cbo (CRToken *a_this) ;
00227
00228 enum CRStatus
00229 cr_token_set_semicolon (CRToken *a_this) ;
00230
00231 enum CRStatus
00232 cr_token_set_delim (CRToken *a_this, guint32 a_char) ;
00233
00234
00235
00236
00237
00238
00239
00240
00241 void
00242 cr_token_destroy (CRToken *a_this) ;
00243
00244
00245 G_END_DECLS
00246
00247 #endif