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_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,
00070 CBC_TK,
00071 PO_TK,
00072 PC_TK,
00073 BO_TK,
00074 BC_TK,
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
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
00202
00203
00204
00205
00206 void
00207 cr_token_destroy (CRToken *a_this) ;
00208
00209
00210 G_END_DECLS
00211
00212 #endif