blob: 83b3b595049e80f403108a632bd69f6e8c452104 [file] [log] [blame]
/* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset: 8-*- */
/* libcroco - Library for parsing and applying CSS
* Copyright (C) 2006-2019 Free Software Foundation, Inc.
*
* This file is not part of the GNU gettext program, but is used with
* GNU gettext.
*
* The original copyright notice is as follows:
*/
/*
* This file is part of The Croco Library
*
* Copyright (C) 2003-2004 Dodji Seketeli. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2.1 of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* Author: Dodji Seketeli
*/
#ifndef __CR_TOKEN_H__
#define __CR_TOKEN_H__
#include "cr-utils.h"
#include "cr-input.h"
#include "cr-num.h"
#include "cr-rgb.h"
#include "cr-string.h"
#include "cr-parsing-location.h"
G_BEGIN_DECLS
enum CRTokenType
{
NO_TK,
S_TK,
CDO_TK,
CDC_TK,
INCLUDES_TK,
DASHMATCH_TK,
COMMENT_TK,
STRING_TK,
IDENT_TK,
HASH_TK,
IMPORT_SYM_TK,
PAGE_SYM_TK,
MEDIA_SYM_TK,
FONT_FACE_SYM_TK,
CHARSET_SYM_TK,
ATKEYWORD_TK,
IMPORTANT_SYM_TK,
EMS_TK,
EXS_TK,
LENGTH_TK,
ANGLE_TK,
TIME_TK,
FREQ_TK,
DIMEN_TK,
PERCENTAGE_TK,
NUMBER_TK,
RGB_TK,
URI_TK,
FUNCTION_TK,
UNICODERANGE_TK,
SEMICOLON_TK,
CBO_TK, /*opening curly bracket*/
CBC_TK, /*closing curly bracket*/
PO_TK, /*opening parenthesis*/
PC_TK, /*closing parenthesis*/
BO_TK, /*opening bracket*/
BC_TK, /*closing bracket*/
DELIM_TK
} ;
enum CRTokenExtraType
{
NO_ET = 0,
LENGTH_PX_ET,
LENGTH_CM_ET,
LENGTH_MM_ET,
LENGTH_IN_ET,
LENGTH_PT_ET,
LENGTH_PC_ET,
ANGLE_DEG_ET,
ANGLE_RAD_ET,
ANGLE_GRAD_ET,
TIME_MS_ET,
TIME_S_ET,
FREQ_HZ_ET,
FREQ_KHZ_ET
} ;
typedef struct _CRToken CRToken ;
/**
*This class abstracts a css2 token.
*/
struct _CRToken
{
enum CRTokenType type ;
enum CRTokenExtraType extra_type ;
CRInputPos pos ;
union
{
CRString *str ;
CRRgb *rgb ;
CRNum *num ;
guint32 unichar ;
} u ;
CRString * dimen ;
CRParsingLocation location ;
} ;
CRToken* cr_token_new (void) ;
enum CRStatus cr_token_set_s (CRToken *a_this) ;
enum CRStatus cr_token_set_cdo (CRToken *a_this) ;
enum CRStatus cr_token_set_cdc (CRToken *a_this) ;
enum CRStatus cr_token_set_includes (CRToken *a_this) ;
enum CRStatus cr_token_set_dashmatch (CRToken *a_this) ;
enum CRStatus cr_token_set_comment (CRToken *a_this, CRString *a_str) ;
enum CRStatus cr_token_set_string (CRToken *a_this, CRString *a_str) ;
enum CRStatus cr_token_set_ident (CRToken *a_this, CRString * a_ident) ;
enum CRStatus cr_token_set_hash (CRToken *a_this, CRString *a_hash) ;
enum CRStatus cr_token_set_rgb (CRToken *a_this, CRRgb *a_rgb) ;
enum CRStatus cr_token_set_import_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_page_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_media_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_font_face_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_charset_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_atkeyword (CRToken *a_this, CRString *a_atname) ;
enum CRStatus cr_token_set_important_sym (CRToken *a_this) ;
enum CRStatus cr_token_set_ems (CRToken *a_this, CRNum *a_num) ;
enum CRStatus cr_token_set_exs (CRToken *a_this, CRNum *a_num) ;
enum CRStatus cr_token_set_length (CRToken *a_this, CRNum *a_num,
enum CRTokenExtraType a_et) ;
enum CRStatus cr_token_set_angle (CRToken *a_this, CRNum *a_num,
enum CRTokenExtraType a_et) ;
enum CRStatus cr_token_set_time (CRToken *a_this, CRNum *a_num,
enum CRTokenExtraType a_et) ;
enum CRStatus cr_token_set_freq (CRToken *a_this, CRNum *a_num,
enum CRTokenExtraType a_et) ;
enum CRStatus cr_token_set_dimen (CRToken *a_this, CRNum *a_num,
CRString *a_dim) ;
enum CRStatus cr_token_set_percentage (CRToken *a_this, CRNum *a_num) ;
enum CRStatus cr_token_set_number (CRToken *a_this, CRNum *a_num) ;
enum CRStatus cr_token_set_uri (CRToken *a_this, CRString *a_uri) ;
enum CRStatus cr_token_set_function (CRToken *a_this,
CRString *a_fun_name) ;
enum CRStatus cr_token_set_bc (CRToken *a_this) ;
enum CRStatus cr_token_set_bo (CRToken *a_this) ;
enum CRStatus cr_token_set_po (CRToken *a_this) ;
enum CRStatus cr_token_set_pc (CRToken *a_this) ;
enum CRStatus cr_token_set_cbc (CRToken *a_this) ;
enum CRStatus cr_token_set_cbo (CRToken *a_this) ;
enum CRStatus cr_token_set_semicolon (CRToken *a_this) ;
enum CRStatus cr_token_set_delim (CRToken *a_this, guint32 a_char) ;
/*
enum CRStatus
cr_token_set_unicoderange (CRToken *a_this,
CRUnicodeRange *a_range) ;
*/
void
cr_token_destroy (CRToken *a_this) ;
G_END_DECLS
#endif /*__CR_TOKEN_H__*/