1/* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset: 8-*- */ 2 3/* 4 * This file is part of The Croco Library 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of version 2.1 of the GNU General Public 8 * License as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 18 * USA 19 * 20 * Author: Dodji Seketeli 21 * See COPYRIGHTS file for copyright information. 22 */ 23 24#ifndef __CR_TOKEN_H__ 25#define __CR_TOKEN_H__ 26 27#include "cr-utils.h" 28#include "cr-input.h" 29#include "cr-num.h" 30#include "cr-rgb.h" 31#include "cr-string.h" 32#include "cr-parsing-location.h" 33 34G_BEGIN_DECLS 35 36enum CRTokenType 37{ 38 NO_TK, 39 S_TK, 40 CDO_TK, 41 CDC_TK, 42 INCLUDES_TK, 43 DASHMATCH_TK, 44 COMMENT_TK, 45 STRING_TK, 46 IDENT_TK, 47 HASH_TK, 48 IMPORT_SYM_TK, 49 PAGE_SYM_TK, 50 MEDIA_SYM_TK, 51 FONT_FACE_SYM_TK, 52 CHARSET_SYM_TK, 53 ATKEYWORD_TK, 54 IMPORTANT_SYM_TK, 55 EMS_TK, 56 EXS_TK, 57 LENGTH_TK, 58 ANGLE_TK, 59 TIME_TK, 60 FREQ_TK, 61 DIMEN_TK, 62 PERCENTAGE_TK, 63 NUMBER_TK, 64 RGB_TK, 65 URI_TK, 66 FUNCTION_TK, 67 UNICODERANGE_TK, 68 SEMICOLON_TK, 69 CBO_TK, /*opening curly bracket*/ 70 CBC_TK, /*closing curly bracket*/ 71 PO_TK, /*opening parenthesis*/ 72 PC_TK, /*closing parenthesis*/ 73 BO_TK, /*opening bracket*/ 74 BC_TK, /*closing bracket*/ 75 DELIM_TK 76} ; 77 78enum CRTokenExtraType 79{ 80 NO_ET = 0, 81 LENGTH_PX_ET, 82 LENGTH_CM_ET, 83 LENGTH_MM_ET, 84 LENGTH_IN_ET, 85 LENGTH_PT_ET, 86 LENGTH_PC_ET, 87 ANGLE_DEG_ET, 88 ANGLE_RAD_ET, 89 ANGLE_GRAD_ET, 90 TIME_MS_ET, 91 TIME_S_ET, 92 FREQ_HZ_ET, 93 FREQ_KHZ_ET 94} ; 95 96typedef struct _CRToken CRToken ; 97 98/** 99 *This class abstracts a css2 token. 100 */ 101struct _CRToken 102{ 103 enum CRTokenType type ; 104 enum CRTokenExtraType extra_type ; 105 CRInputPos pos ; 106 107 union 108 { 109 CRString *str ; 110 CRRgb *rgb ; 111 CRNum *num ; 112 guint32 unichar ; 113 } u ; 114 115 CRString * dimen ; 116 CRParsingLocation location ; 117} ; 118 119CRToken* cr_token_new (void) ; 120 121enum CRStatus cr_token_set_s (CRToken *a_this) ; 122 123enum CRStatus cr_token_set_cdo (CRToken *a_this) ; 124 125enum CRStatus cr_token_set_cdc (CRToken *a_this) ; 126 127enum CRStatus cr_token_set_includes (CRToken *a_this) ; 128 129enum CRStatus cr_token_set_dashmatch (CRToken *a_this) ; 130 131enum CRStatus cr_token_set_comment (CRToken *a_this, CRString *a_str) ; 132 133enum CRStatus cr_token_set_string (CRToken *a_this, CRString *a_str) ; 134 135enum CRStatus cr_token_set_ident (CRToken *a_this, CRString * a_ident) ; 136 137enum CRStatus cr_token_set_hash (CRToken *a_this, CRString *a_hash) ; 138 139enum CRStatus cr_token_set_rgb (CRToken *a_this, CRRgb *a_rgb) ; 140 141enum CRStatus cr_token_set_import_sym (CRToken *a_this) ; 142 143enum CRStatus cr_token_set_page_sym (CRToken *a_this) ; 144 145enum CRStatus cr_token_set_media_sym (CRToken *a_this) ; 146 147enum CRStatus cr_token_set_font_face_sym (CRToken *a_this) ; 148 149enum CRStatus cr_token_set_charset_sym (CRToken *a_this) ; 150 151enum CRStatus cr_token_set_atkeyword (CRToken *a_this, CRString *a_atname) ; 152 153enum CRStatus cr_token_set_important_sym (CRToken *a_this) ; 154 155enum CRStatus cr_token_set_ems (CRToken *a_this, CRNum *a_num) ; 156 157enum CRStatus cr_token_set_exs (CRToken *a_this, CRNum *a_num) ; 158 159enum CRStatus cr_token_set_length (CRToken *a_this, CRNum *a_num, 160 enum CRTokenExtraType a_et) ; 161 162enum CRStatus cr_token_set_angle (CRToken *a_this, CRNum *a_num, 163 enum CRTokenExtraType a_et) ; 164 165enum CRStatus cr_token_set_time (CRToken *a_this, CRNum *a_num, 166 enum CRTokenExtraType a_et) ; 167 168enum CRStatus cr_token_set_freq (CRToken *a_this, CRNum *a_num, 169 enum CRTokenExtraType a_et) ; 170 171enum CRStatus cr_token_set_dimen (CRToken *a_this, CRNum *a_num, 172 CRString *a_dim) ; 173 174enum CRStatus cr_token_set_percentage (CRToken *a_this, CRNum *a_num) ; 175 176enum CRStatus cr_token_set_number (CRToken *a_this, CRNum *a_num) ; 177 178enum CRStatus cr_token_set_uri (CRToken *a_this, CRString *a_uri) ; 179 180enum CRStatus cr_token_set_function (CRToken *a_this, 181 CRString *a_fun_name) ; 182 183enum CRStatus cr_token_set_bc (CRToken *a_this) ; 184 185enum CRStatus cr_token_set_bo (CRToken *a_this) ; 186 187enum CRStatus cr_token_set_po (CRToken *a_this) ; 188 189enum CRStatus cr_token_set_pc (CRToken *a_this) ; 190 191enum CRStatus cr_token_set_cbc (CRToken *a_this) ; 192 193enum CRStatus cr_token_set_cbo (CRToken *a_this) ; 194 195enum CRStatus cr_token_set_semicolon (CRToken *a_this) ; 196 197enum CRStatus cr_token_set_delim (CRToken *a_this, guint32 a_char) ; 198 199 200/* 201 enum CRStatus 202 cr_token_set_unicoderange (CRToken *a_this, 203 CRUnicodeRange *a_range) ; 204*/ 205 206void 207cr_token_destroy (CRToken *a_this) ; 208 209 210G_END_DECLS 211 212#endif /*__CR_TOKEN_H__*/ 213