cr-token.h 5.6 KB

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