Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

cr-token.h

Go to the documentation of this file.
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__*/

Generated on Fri Oct 29 08:29:12 2004 for Libcroco by  doxygen 1.3.9.1