Main Page | Alphabetical List | Data Structures | 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  * Copyright (C) 2002-2003 Dodji Seketeli <dodji@seketeli.org>
00007  *
00008  * This program is free software; you can redistribute it and/or
00009  * modify it under the terms of version 2.1 of the GNU Lesser General Public
00010  * License as published by the Free Software Foundation.
00011  *
00012  * This program is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00020  * USA
00021  */
00022 
00023 /*
00024  *$Id: cr-token.h,v 1.1 2003/04/12 16:50:31 dodji Exp $
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, /*opening curly bracket*/
00071         CBC_TK, /*closing curly bracket*/
00072         PO_TK, /*opening parenthesis*/
00073         PC_TK, /*closing parenthesis*/
00074         BO_TK, /*opening bracket*/
00075         BC_TK, /*closing bracket*/
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  *This class abstracts a css2 token.
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   enum CRStatus
00237   cr_token_set_unicoderange (CRToken *a_this, 
00238   CRUnicodeRange *a_range) ;
00239 */
00240 
00241 void
00242 cr_token_destroy (CRToken *a_this) ;
00243         
00244         
00245 G_END_DECLS
00246 
00247 #endif /*__CR_TOKEN_H__*/

Generated on Wed Oct 1 01:36:49 2003 for Libcroco by doxygen 1.3.3