nokolexbor 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (486) hide show
  1. checksums.yaml +7 -0
  2. data/ext/nokolexbor/config.h +186 -0
  3. data/ext/nokolexbor/extconf.rb +131 -0
  4. data/ext/nokolexbor/libxml/HTMLparser.h +320 -0
  5. data/ext/nokolexbor/libxml/SAX2.h +173 -0
  6. data/ext/nokolexbor/libxml/chvalid.h +230 -0
  7. data/ext/nokolexbor/libxml/debugXML.h +217 -0
  8. data/ext/nokolexbor/libxml/dict.h +81 -0
  9. data/ext/nokolexbor/libxml/encoding.h +232 -0
  10. data/ext/nokolexbor/libxml/entities.h +153 -0
  11. data/ext/nokolexbor/libxml/globals.h +529 -0
  12. data/ext/nokolexbor/libxml/hash.h +236 -0
  13. data/ext/nokolexbor/libxml/list.h +137 -0
  14. data/ext/nokolexbor/libxml/parser.h +1264 -0
  15. data/ext/nokolexbor/libxml/parserInternals.h +641 -0
  16. data/ext/nokolexbor/libxml/pattern.h +100 -0
  17. data/ext/nokolexbor/libxml/threads.h +94 -0
  18. data/ext/nokolexbor/libxml/tree.h +1315 -0
  19. data/ext/nokolexbor/libxml/uri.h +94 -0
  20. data/ext/nokolexbor/libxml/valid.h +448 -0
  21. data/ext/nokolexbor/libxml/xmlIO.h +369 -0
  22. data/ext/nokolexbor/libxml/xmlautomata.h +146 -0
  23. data/ext/nokolexbor/libxml/xmlerror.h +919 -0
  24. data/ext/nokolexbor/libxml/xmlexports.h +79 -0
  25. data/ext/nokolexbor/libxml/xmlmemory.h +226 -0
  26. data/ext/nokolexbor/libxml/xmlregexp.h +222 -0
  27. data/ext/nokolexbor/libxml/xmlstring.h +140 -0
  28. data/ext/nokolexbor/libxml/xmlversion.h +526 -0
  29. data/ext/nokolexbor/libxml/xpath.h +575 -0
  30. data/ext/nokolexbor/libxml/xpathInternals.h +632 -0
  31. data/ext/nokolexbor/libxml/xpointer.h +137 -0
  32. data/ext/nokolexbor/libxml.h +76 -0
  33. data/ext/nokolexbor/memory.c +39 -0
  34. data/ext/nokolexbor/nl_document.c +51 -0
  35. data/ext/nokolexbor/nl_node.c +790 -0
  36. data/ext/nokolexbor/nl_node_set.c +368 -0
  37. data/ext/nokolexbor/nl_xpath_context.c +200 -0
  38. data/ext/nokolexbor/nokolexbor.c +63 -0
  39. data/ext/nokolexbor/nokolexbor.h +37 -0
  40. data/ext/nokolexbor/private/buf.h +70 -0
  41. data/ext/nokolexbor/private/dict.h +11 -0
  42. data/ext/nokolexbor/private/enc.h +17 -0
  43. data/ext/nokolexbor/private/error.h +21 -0
  44. data/ext/nokolexbor/private/globals.h +9 -0
  45. data/ext/nokolexbor/private/memory.h +9 -0
  46. data/ext/nokolexbor/private/parser.h +27 -0
  47. data/ext/nokolexbor/private/string.h +9 -0
  48. data/ext/nokolexbor/private/threads.h +50 -0
  49. data/ext/nokolexbor/private/tree.h +18 -0
  50. data/ext/nokolexbor/private/xpath.h +7 -0
  51. data/ext/nokolexbor/timsort.h +601 -0
  52. data/ext/nokolexbor/xml_SAX2.c +80 -0
  53. data/ext/nokolexbor/xml_buf.c +363 -0
  54. data/ext/nokolexbor/xml_chvalid.c +334 -0
  55. data/ext/nokolexbor/xml_dict.c +1264 -0
  56. data/ext/nokolexbor/xml_encoding.c +124 -0
  57. data/ext/nokolexbor/xml_error.c +134 -0
  58. data/ext/nokolexbor/xml_globals.c +1085 -0
  59. data/ext/nokolexbor/xml_hash.c +1141 -0
  60. data/ext/nokolexbor/xml_memory.c +203 -0
  61. data/ext/nokolexbor/xml_parser.c +127 -0
  62. data/ext/nokolexbor/xml_parserInternals.c +338 -0
  63. data/ext/nokolexbor/xml_pattern.c +2375 -0
  64. data/ext/nokolexbor/xml_string.c +1051 -0
  65. data/ext/nokolexbor/xml_threads.c +881 -0
  66. data/ext/nokolexbor/xml_tree.c +148 -0
  67. data/ext/nokolexbor/xml_xpath.c +14743 -0
  68. data/lib/nokolexbor/attribute.rb +18 -0
  69. data/lib/nokolexbor/document.rb +6 -0
  70. data/lib/nokolexbor/node.rb +264 -0
  71. data/lib/nokolexbor/node_set.rb +124 -0
  72. data/lib/nokolexbor/version.rb +5 -0
  73. data/lib/nokolexbor/xpath_context.rb +14 -0
  74. data/lib/nokolexbor.rb +17 -0
  75. data/patches/0001-lexbor-support-text-pseudo-element.patch +137 -0
  76. data/patches/0002-lexbor-match-id-class-case-sensitive.patch +22 -0
  77. data/patches/0003-lexbor-attach-template-content-to-self.patch +13 -0
  78. data/vendor/lexbor/CMakeLists.txt +331 -0
  79. data/vendor/lexbor/config.cmake +890 -0
  80. data/vendor/lexbor/feature.cmake +134 -0
  81. data/vendor/lexbor/source/lexbor/core/array.c +208 -0
  82. data/vendor/lexbor/source/lexbor/core/array.h +100 -0
  83. data/vendor/lexbor/source/lexbor/core/array_obj.c +216 -0
  84. data/vendor/lexbor/source/lexbor/core/array_obj.h +134 -0
  85. data/vendor/lexbor/source/lexbor/core/avl.c +442 -0
  86. data/vendor/lexbor/source/lexbor/core/avl.h +82 -0
  87. data/vendor/lexbor/source/lexbor/core/base.h +86 -0
  88. data/vendor/lexbor/source/lexbor/core/bst.c +468 -0
  89. data/vendor/lexbor/source/lexbor/core/bst.h +108 -0
  90. data/vendor/lexbor/source/lexbor/core/bst_map.c +238 -0
  91. data/vendor/lexbor/source/lexbor/core/bst_map.h +87 -0
  92. data/vendor/lexbor/source/lexbor/core/config.cmake +12 -0
  93. data/vendor/lexbor/source/lexbor/core/conv.c +203 -0
  94. data/vendor/lexbor/source/lexbor/core/conv.h +53 -0
  95. data/vendor/lexbor/source/lexbor/core/core.h +35 -0
  96. data/vendor/lexbor/source/lexbor/core/def.h +57 -0
  97. data/vendor/lexbor/source/lexbor/core/diyfp.c +153 -0
  98. data/vendor/lexbor/source/lexbor/core/diyfp.h +258 -0
  99. data/vendor/lexbor/source/lexbor/core/dobject.c +187 -0
  100. data/vendor/lexbor/source/lexbor/core/dobject.h +92 -0
  101. data/vendor/lexbor/source/lexbor/core/dtoa.c +404 -0
  102. data/vendor/lexbor/source/lexbor/core/dtoa.h +28 -0
  103. data/vendor/lexbor/source/lexbor/core/fs.h +60 -0
  104. data/vendor/lexbor/source/lexbor/core/hash.c +476 -0
  105. data/vendor/lexbor/source/lexbor/core/hash.h +218 -0
  106. data/vendor/lexbor/source/lexbor/core/in.c +267 -0
  107. data/vendor/lexbor/source/lexbor/core/in.h +172 -0
  108. data/vendor/lexbor/source/lexbor/core/lexbor.h +35 -0
  109. data/vendor/lexbor/source/lexbor/core/mem.c +228 -0
  110. data/vendor/lexbor/source/lexbor/core/mem.h +141 -0
  111. data/vendor/lexbor/source/lexbor/core/mraw.c +428 -0
  112. data/vendor/lexbor/source/lexbor/core/mraw.h +114 -0
  113. data/vendor/lexbor/source/lexbor/core/perf.h +45 -0
  114. data/vendor/lexbor/source/lexbor/core/plog.c +73 -0
  115. data/vendor/lexbor/source/lexbor/core/plog.h +102 -0
  116. data/vendor/lexbor/source/lexbor/core/print.c +168 -0
  117. data/vendor/lexbor/source/lexbor/core/print.h +39 -0
  118. data/vendor/lexbor/source/lexbor/core/sbst.h +59 -0
  119. data/vendor/lexbor/source/lexbor/core/serialize.c +27 -0
  120. data/vendor/lexbor/source/lexbor/core/serialize.h +32 -0
  121. data/vendor/lexbor/source/lexbor/core/shs.c +118 -0
  122. data/vendor/lexbor/source/lexbor/core/shs.h +82 -0
  123. data/vendor/lexbor/source/lexbor/core/str.c +617 -0
  124. data/vendor/lexbor/source/lexbor/core/str.h +247 -0
  125. data/vendor/lexbor/source/lexbor/core/str_res.h +369 -0
  126. data/vendor/lexbor/source/lexbor/core/strtod.c +326 -0
  127. data/vendor/lexbor/source/lexbor/core/strtod.h +28 -0
  128. data/vendor/lexbor/source/lexbor/core/types.h +39 -0
  129. data/vendor/lexbor/source/lexbor/core/utils.c +43 -0
  130. data/vendor/lexbor/source/lexbor/core/utils.h +36 -0
  131. data/vendor/lexbor/source/lexbor/css/base.h +44 -0
  132. data/vendor/lexbor/source/lexbor/css/config.cmake +2 -0
  133. data/vendor/lexbor/source/lexbor/css/css.h +25 -0
  134. data/vendor/lexbor/source/lexbor/css/log.c +336 -0
  135. data/vendor/lexbor/source/lexbor/css/log.h +103 -0
  136. data/vendor/lexbor/source/lexbor/css/node.h +29 -0
  137. data/vendor/lexbor/source/lexbor/css/parser.c +473 -0
  138. data/vendor/lexbor/source/lexbor/css/parser.h +368 -0
  139. data/vendor/lexbor/source/lexbor/css/selectors/base.h +48 -0
  140. data/vendor/lexbor/source/lexbor/css/selectors/pseudo.c +91 -0
  141. data/vendor/lexbor/source/lexbor/css/selectors/pseudo.h +66 -0
  142. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_const.h +109 -0
  143. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_res.h +302 -0
  144. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.c +279 -0
  145. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.h +85 -0
  146. data/vendor/lexbor/source/lexbor/css/selectors/selector.c +927 -0
  147. data/vendor/lexbor/source/lexbor/css/selectors/selector.h +200 -0
  148. data/vendor/lexbor/source/lexbor/css/selectors/selectors.c +340 -0
  149. data/vendor/lexbor/source/lexbor/css/selectors/selectors.h +137 -0
  150. data/vendor/lexbor/source/lexbor/css/selectors/state.c +1718 -0
  151. data/vendor/lexbor/source/lexbor/css/selectors/state.h +79 -0
  152. data/vendor/lexbor/source/lexbor/css/stylesheet.h +37 -0
  153. data/vendor/lexbor/source/lexbor/css/syntax/anb.c +443 -0
  154. data/vendor/lexbor/source/lexbor/css/syntax/anb.h +45 -0
  155. data/vendor/lexbor/source/lexbor/css/syntax/base.h +33 -0
  156. data/vendor/lexbor/source/lexbor/css/syntax/parser.c +9 -0
  157. data/vendor/lexbor/source/lexbor/css/syntax/parser.h +25 -0
  158. data/vendor/lexbor/source/lexbor/css/syntax/res.h +48 -0
  159. data/vendor/lexbor/source/lexbor/css/syntax/state.c +2603 -0
  160. data/vendor/lexbor/source/lexbor/css/syntax/state.h +140 -0
  161. data/vendor/lexbor/source/lexbor/css/syntax/state_res.h +273 -0
  162. data/vendor/lexbor/source/lexbor/css/syntax/syntax.c +67 -0
  163. data/vendor/lexbor/source/lexbor/css/syntax/token.c +618 -0
  164. data/vendor/lexbor/source/lexbor/css/syntax/token.h +298 -0
  165. data/vendor/lexbor/source/lexbor/css/syntax/token_res.h +68 -0
  166. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.c +30 -0
  167. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.h +58 -0
  168. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.c +278 -0
  169. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.h +121 -0
  170. data/vendor/lexbor/source/lexbor/dom/base.h +32 -0
  171. data/vendor/lexbor/source/lexbor/dom/collection.c +97 -0
  172. data/vendor/lexbor/source/lexbor/dom/collection.h +112 -0
  173. data/vendor/lexbor/source/lexbor/dom/config.cmake +3 -0
  174. data/vendor/lexbor/source/lexbor/dom/dom.h +29 -0
  175. data/vendor/lexbor/source/lexbor/dom/exception.c +18 -0
  176. data/vendor/lexbor/source/lexbor/dom/exception.h +73 -0
  177. data/vendor/lexbor/source/lexbor/dom/interface.c +110 -0
  178. data/vendor/lexbor/source/lexbor/dom/interface.h +88 -0
  179. data/vendor/lexbor/source/lexbor/dom/interfaces/attr.c +445 -0
  180. data/vendor/lexbor/source/lexbor/dom/interfaces/attr.h +152 -0
  181. data/vendor/lexbor/source/lexbor/dom/interfaces/attr_const.h +62 -0
  182. data/vendor/lexbor/source/lexbor/dom/interfaces/attr_res.h +143 -0
  183. data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.c +55 -0
  184. data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.h +38 -0
  185. data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.c +110 -0
  186. data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.h +51 -0
  187. data/vendor/lexbor/source/lexbor/dom/interfaces/comment.c +64 -0
  188. data/vendor/lexbor/source/lexbor/dom/interfaces/comment.h +42 -0
  189. data/vendor/lexbor/source/lexbor/dom/interfaces/document.c +536 -0
  190. data/vendor/lexbor/source/lexbor/dom/interfaces/document.h +243 -0
  191. data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.c +36 -0
  192. data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.h +36 -0
  193. data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.c +125 -0
  194. data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.h +108 -0
  195. data/vendor/lexbor/source/lexbor/dom/interfaces/element.c +1411 -0
  196. data/vendor/lexbor/source/lexbor/dom/interfaces/element.h +319 -0
  197. data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.c +32 -0
  198. data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.h +34 -0
  199. data/vendor/lexbor/source/lexbor/dom/interfaces/node.c +661 -0
  200. data/vendor/lexbor/source/lexbor/dom/interfaces/node.h +192 -0
  201. data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.c +87 -0
  202. data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.h +66 -0
  203. data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.c +36 -0
  204. data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.h +44 -0
  205. data/vendor/lexbor/source/lexbor/dom/interfaces/text.c +63 -0
  206. data/vendor/lexbor/source/lexbor/dom/interfaces/text.h +42 -0
  207. data/vendor/lexbor/source/lexbor/encoding/base.h +218 -0
  208. data/vendor/lexbor/source/lexbor/encoding/big5.c +42839 -0
  209. data/vendor/lexbor/source/lexbor/encoding/config.cmake +12 -0
  210. data/vendor/lexbor/source/lexbor/encoding/const.h +65 -0
  211. data/vendor/lexbor/source/lexbor/encoding/decode.c +3193 -0
  212. data/vendor/lexbor/source/lexbor/encoding/decode.h +370 -0
  213. data/vendor/lexbor/source/lexbor/encoding/encode.c +1931 -0
  214. data/vendor/lexbor/source/lexbor/encoding/encode.h +377 -0
  215. data/vendor/lexbor/source/lexbor/encoding/encoding.c +252 -0
  216. data/vendor/lexbor/source/lexbor/encoding/encoding.h +475 -0
  217. data/vendor/lexbor/source/lexbor/encoding/euc_kr.c +53883 -0
  218. data/vendor/lexbor/source/lexbor/encoding/gb18030.c +47905 -0
  219. data/vendor/lexbor/source/lexbor/encoding/iso_2022_jp_katakana.c +159 -0
  220. data/vendor/lexbor/source/lexbor/encoding/jis0208.c +22477 -0
  221. data/vendor/lexbor/source/lexbor/encoding/jis0212.c +15787 -0
  222. data/vendor/lexbor/source/lexbor/encoding/multi.h +53 -0
  223. data/vendor/lexbor/source/lexbor/encoding/range.c +71 -0
  224. data/vendor/lexbor/source/lexbor/encoding/range.h +34 -0
  225. data/vendor/lexbor/source/lexbor/encoding/res.c +222 -0
  226. data/vendor/lexbor/source/lexbor/encoding/res.h +34 -0
  227. data/vendor/lexbor/source/lexbor/encoding/single.c +13748 -0
  228. data/vendor/lexbor/source/lexbor/encoding/single.h +116 -0
  229. data/vendor/lexbor/source/lexbor/html/base.h +44 -0
  230. data/vendor/lexbor/source/lexbor/html/config.cmake +3 -0
  231. data/vendor/lexbor/source/lexbor/html/encoding.c +574 -0
  232. data/vendor/lexbor/source/lexbor/html/encoding.h +106 -0
  233. data/vendor/lexbor/source/lexbor/html/html.h +107 -0
  234. data/vendor/lexbor/source/lexbor/html/interface.c +165 -0
  235. data/vendor/lexbor/source/lexbor/html/interface.h +186 -0
  236. data/vendor/lexbor/source/lexbor/html/interface_res.h +4449 -0
  237. data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.c +36 -0
  238. data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.h +34 -0
  239. data/vendor/lexbor/source/lexbor/html/interfaces/area_element.c +36 -0
  240. data/vendor/lexbor/source/lexbor/html/interfaces/area_element.h +34 -0
  241. data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.c +36 -0
  242. data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.h +34 -0
  243. data/vendor/lexbor/source/lexbor/html/interfaces/base_element.c +36 -0
  244. data/vendor/lexbor/source/lexbor/html/interfaces/base_element.h +34 -0
  245. data/vendor/lexbor/source/lexbor/html/interfaces/body_element.c +36 -0
  246. data/vendor/lexbor/source/lexbor/html/interfaces/body_element.h +34 -0
  247. data/vendor/lexbor/source/lexbor/html/interfaces/br_element.c +36 -0
  248. data/vendor/lexbor/source/lexbor/html/interfaces/br_element.h +34 -0
  249. data/vendor/lexbor/source/lexbor/html/interfaces/button_element.c +36 -0
  250. data/vendor/lexbor/source/lexbor/html/interfaces/button_element.h +34 -0
  251. data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.c +36 -0
  252. data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.h +34 -0
  253. data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.c +36 -0
  254. data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.h +34 -0
  255. data/vendor/lexbor/source/lexbor/html/interfaces/data_element.c +36 -0
  256. data/vendor/lexbor/source/lexbor/html/interfaces/data_element.h +34 -0
  257. data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.c +36 -0
  258. data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.h +34 -0
  259. data/vendor/lexbor/source/lexbor/html/interfaces/details_element.c +36 -0
  260. data/vendor/lexbor/source/lexbor/html/interfaces/details_element.h +34 -0
  261. data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.c +36 -0
  262. data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.h +34 -0
  263. data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.c +36 -0
  264. data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.h +34 -0
  265. data/vendor/lexbor/source/lexbor/html/interfaces/div_element.c +36 -0
  266. data/vendor/lexbor/source/lexbor/html/interfaces/div_element.h +34 -0
  267. data/vendor/lexbor/source/lexbor/html/interfaces/document.c +444 -0
  268. data/vendor/lexbor/source/lexbor/html/interfaces/document.h +256 -0
  269. data/vendor/lexbor/source/lexbor/html/interfaces/element.c +64 -0
  270. data/vendor/lexbor/source/lexbor/html/interfaces/element.h +54 -0
  271. data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.c +36 -0
  272. data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.h +34 -0
  273. data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.c +36 -0
  274. data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.h +34 -0
  275. data/vendor/lexbor/source/lexbor/html/interfaces/font_element.c +36 -0
  276. data/vendor/lexbor/source/lexbor/html/interfaces/font_element.h +34 -0
  277. data/vendor/lexbor/source/lexbor/html/interfaces/form_element.c +36 -0
  278. data/vendor/lexbor/source/lexbor/html/interfaces/form_element.h +34 -0
  279. data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.c +36 -0
  280. data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.h +34 -0
  281. data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.c +36 -0
  282. data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.h +34 -0
  283. data/vendor/lexbor/source/lexbor/html/interfaces/head_element.c +36 -0
  284. data/vendor/lexbor/source/lexbor/html/interfaces/head_element.h +34 -0
  285. data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.c +36 -0
  286. data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.h +34 -0
  287. data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.c +36 -0
  288. data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.h +34 -0
  289. data/vendor/lexbor/source/lexbor/html/interfaces/html_element.c +36 -0
  290. data/vendor/lexbor/source/lexbor/html/interfaces/html_element.h +34 -0
  291. data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.c +36 -0
  292. data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.h +34 -0
  293. data/vendor/lexbor/source/lexbor/html/interfaces/image_element.c +36 -0
  294. data/vendor/lexbor/source/lexbor/html/interfaces/image_element.h +34 -0
  295. data/vendor/lexbor/source/lexbor/html/interfaces/input_element.c +36 -0
  296. data/vendor/lexbor/source/lexbor/html/interfaces/input_element.h +34 -0
  297. data/vendor/lexbor/source/lexbor/html/interfaces/label_element.c +36 -0
  298. data/vendor/lexbor/source/lexbor/html/interfaces/label_element.h +34 -0
  299. data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.c +36 -0
  300. data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.h +34 -0
  301. data/vendor/lexbor/source/lexbor/html/interfaces/li_element.c +36 -0
  302. data/vendor/lexbor/source/lexbor/html/interfaces/li_element.h +34 -0
  303. data/vendor/lexbor/source/lexbor/html/interfaces/link_element.c +36 -0
  304. data/vendor/lexbor/source/lexbor/html/interfaces/link_element.h +34 -0
  305. data/vendor/lexbor/source/lexbor/html/interfaces/map_element.c +36 -0
  306. data/vendor/lexbor/source/lexbor/html/interfaces/map_element.h +34 -0
  307. data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.c +36 -0
  308. data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.h +34 -0
  309. data/vendor/lexbor/source/lexbor/html/interfaces/media_element.c +36 -0
  310. data/vendor/lexbor/source/lexbor/html/interfaces/media_element.h +34 -0
  311. data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.c +36 -0
  312. data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.h +34 -0
  313. data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.c +36 -0
  314. data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.h +34 -0
  315. data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.c +36 -0
  316. data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.h +34 -0
  317. data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.c +36 -0
  318. data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.h +34 -0
  319. data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.c +36 -0
  320. data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.h +34 -0
  321. data/vendor/lexbor/source/lexbor/html/interfaces/object_element.c +36 -0
  322. data/vendor/lexbor/source/lexbor/html/interfaces/object_element.h +34 -0
  323. data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.c +36 -0
  324. data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.h +34 -0
  325. data/vendor/lexbor/source/lexbor/html/interfaces/option_element.c +36 -0
  326. data/vendor/lexbor/source/lexbor/html/interfaces/option_element.h +34 -0
  327. data/vendor/lexbor/source/lexbor/html/interfaces/output_element.c +36 -0
  328. data/vendor/lexbor/source/lexbor/html/interfaces/output_element.h +34 -0
  329. data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.c +36 -0
  330. data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.h +34 -0
  331. data/vendor/lexbor/source/lexbor/html/interfaces/param_element.c +36 -0
  332. data/vendor/lexbor/source/lexbor/html/interfaces/param_element.h +34 -0
  333. data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.c +36 -0
  334. data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.h +34 -0
  335. data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.c +36 -0
  336. data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.h +34 -0
  337. data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.c +36 -0
  338. data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.h +34 -0
  339. data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.c +36 -0
  340. data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.h +34 -0
  341. data/vendor/lexbor/source/lexbor/html/interfaces/script_element.c +36 -0
  342. data/vendor/lexbor/source/lexbor/html/interfaces/script_element.h +34 -0
  343. data/vendor/lexbor/source/lexbor/html/interfaces/select_element.c +36 -0
  344. data/vendor/lexbor/source/lexbor/html/interfaces/select_element.h +34 -0
  345. data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.c +36 -0
  346. data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.h +34 -0
  347. data/vendor/lexbor/source/lexbor/html/interfaces/source_element.c +36 -0
  348. data/vendor/lexbor/source/lexbor/html/interfaces/source_element.h +34 -0
  349. data/vendor/lexbor/source/lexbor/html/interfaces/span_element.c +36 -0
  350. data/vendor/lexbor/source/lexbor/html/interfaces/span_element.h +34 -0
  351. data/vendor/lexbor/source/lexbor/html/interfaces/style_element.c +36 -0
  352. data/vendor/lexbor/source/lexbor/html/interfaces/style_element.h +34 -0
  353. data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.c +36 -0
  354. data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.h +34 -0
  355. data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.c +36 -0
  356. data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.h +34 -0
  357. data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.c +36 -0
  358. data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.h +34 -0
  359. data/vendor/lexbor/source/lexbor/html/interfaces/table_element.c +36 -0
  360. data/vendor/lexbor/source/lexbor/html/interfaces/table_element.h +34 -0
  361. data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.c +36 -0
  362. data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.h +34 -0
  363. data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.c +36 -0
  364. data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.h +34 -0
  365. data/vendor/lexbor/source/lexbor/html/interfaces/template_element.c +46 -0
  366. data/vendor/lexbor/source/lexbor/html/interfaces/template_element.h +38 -0
  367. data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.c +36 -0
  368. data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.h +34 -0
  369. data/vendor/lexbor/source/lexbor/html/interfaces/time_element.c +36 -0
  370. data/vendor/lexbor/source/lexbor/html/interfaces/time_element.h +34 -0
  371. data/vendor/lexbor/source/lexbor/html/interfaces/title_element.c +133 -0
  372. data/vendor/lexbor/source/lexbor/html/interfaces/title_element.h +42 -0
  373. data/vendor/lexbor/source/lexbor/html/interfaces/track_element.c +36 -0
  374. data/vendor/lexbor/source/lexbor/html/interfaces/track_element.h +34 -0
  375. data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.c +36 -0
  376. data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.h +34 -0
  377. data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.c +36 -0
  378. data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.h +34 -0
  379. data/vendor/lexbor/source/lexbor/html/interfaces/video_element.c +36 -0
  380. data/vendor/lexbor/source/lexbor/html/interfaces/video_element.h +34 -0
  381. data/vendor/lexbor/source/lexbor/html/interfaces/window.c +36 -0
  382. data/vendor/lexbor/source/lexbor/html/interfaces/window.h +34 -0
  383. data/vendor/lexbor/source/lexbor/html/node.c +14 -0
  384. data/vendor/lexbor/source/lexbor/html/node.h +67 -0
  385. data/vendor/lexbor/source/lexbor/html/parser.c +469 -0
  386. data/vendor/lexbor/source/lexbor/html/parser.h +170 -0
  387. data/vendor/lexbor/source/lexbor/html/serialize.c +1510 -0
  388. data/vendor/lexbor/source/lexbor/html/serialize.h +93 -0
  389. data/vendor/lexbor/source/lexbor/html/tag.h +103 -0
  390. data/vendor/lexbor/source/lexbor/html/tag_res.h +2262 -0
  391. data/vendor/lexbor/source/lexbor/html/token.c +386 -0
  392. data/vendor/lexbor/source/lexbor/html/token.h +130 -0
  393. data/vendor/lexbor/source/lexbor/html/token_attr.c +44 -0
  394. data/vendor/lexbor/source/lexbor/html/token_attr.h +67 -0
  395. data/vendor/lexbor/source/lexbor/html/tokenizer/error.c +28 -0
  396. data/vendor/lexbor/source/lexbor/html/tokenizer/error.h +141 -0
  397. data/vendor/lexbor/source/lexbor/html/tokenizer/res.h +4956 -0
  398. data/vendor/lexbor/source/lexbor/html/tokenizer/state.c +2171 -0
  399. data/vendor/lexbor/source/lexbor/html/tokenizer/state.h +225 -0
  400. data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.c +489 -0
  401. data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.h +27 -0
  402. data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.c +1654 -0
  403. data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.h +27 -0
  404. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.c +303 -0
  405. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.h +32 -0
  406. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.c +311 -0
  407. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.h +32 -0
  408. data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.c +1209 -0
  409. data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.h +32 -0
  410. data/vendor/lexbor/source/lexbor/html/tokenizer.c +499 -0
  411. data/vendor/lexbor/source/lexbor/html/tokenizer.h +343 -0
  412. data/vendor/lexbor/source/lexbor/html/tree/active_formatting.c +241 -0
  413. data/vendor/lexbor/source/lexbor/html/tree/active_formatting.h +117 -0
  414. data/vendor/lexbor/source/lexbor/html/tree/error.c +26 -0
  415. data/vendor/lexbor/source/lexbor/html/tree/error.h +114 -0
  416. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_body.c +62 -0
  417. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_frameset.c +63 -0
  418. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_body.c +82 -0
  419. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_frameset.c +88 -0
  420. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_head.c +222 -0
  421. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_head.c +144 -0
  422. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_html.c +166 -0
  423. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/foreign_content.c +358 -0
  424. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_body.c +1974 -0
  425. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_caption.c +158 -0
  426. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_cell.c +187 -0
  427. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_column_group.c +194 -0
  428. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_frameset.c +149 -0
  429. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head.c +374 -0
  430. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head_noscript.c +121 -0
  431. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_row.c +211 -0
  432. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select.c +341 -0
  433. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select_in_table.c +115 -0
  434. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table.c +451 -0
  435. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_body.c +208 -0
  436. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_text.c +127 -0
  437. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_template.c +189 -0
  438. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/initial.c +411 -0
  439. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/text.c +61 -0
  440. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode.h +135 -0
  441. data/vendor/lexbor/source/lexbor/html/tree/open_elements.c +251 -0
  442. data/vendor/lexbor/source/lexbor/html/tree/open_elements.h +105 -0
  443. data/vendor/lexbor/source/lexbor/html/tree/template_insertion.c +10 -0
  444. data/vendor/lexbor/source/lexbor/html/tree/template_insertion.h +100 -0
  445. data/vendor/lexbor/source/lexbor/html/tree.c +1726 -0
  446. data/vendor/lexbor/source/lexbor/html/tree.h +431 -0
  447. data/vendor/lexbor/source/lexbor/html/tree_res.h +111 -0
  448. data/vendor/lexbor/source/lexbor/ns/base.h +32 -0
  449. data/vendor/lexbor/source/lexbor/ns/config.cmake +2 -0
  450. data/vendor/lexbor/source/lexbor/ns/const.h +37 -0
  451. data/vendor/lexbor/source/lexbor/ns/ns.c +154 -0
  452. data/vendor/lexbor/source/lexbor/ns/ns.h +66 -0
  453. data/vendor/lexbor/source/lexbor/ns/res.h +97 -0
  454. data/vendor/lexbor/source/lexbor/ports/posix/config.cmake +11 -0
  455. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/fs.c +236 -0
  456. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/memory.c +33 -0
  457. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/perf.c +158 -0
  458. data/vendor/lexbor/source/lexbor/ports/windows_nt/config.cmake +18 -0
  459. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/fs.c +239 -0
  460. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/memory.c +33 -0
  461. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/perf.c +81 -0
  462. data/vendor/lexbor/source/lexbor/selectors/base.h +30 -0
  463. data/vendor/lexbor/source/lexbor/selectors/config.cmake +2 -0
  464. data/vendor/lexbor/source/lexbor/selectors/selectors.c +1591 -0
  465. data/vendor/lexbor/source/lexbor/selectors/selectors.h +71 -0
  466. data/vendor/lexbor/source/lexbor/tag/base.h +32 -0
  467. data/vendor/lexbor/source/lexbor/tag/config.cmake +2 -0
  468. data/vendor/lexbor/source/lexbor/tag/const.h +225 -0
  469. data/vendor/lexbor/source/lexbor/tag/res.h +562 -0
  470. data/vendor/lexbor/source/lexbor/tag/tag.c +144 -0
  471. data/vendor/lexbor/source/lexbor/tag/tag.h +123 -0
  472. data/vendor/lexbor/source/lexbor/utils/base.h +32 -0
  473. data/vendor/lexbor/source/lexbor/utils/config.cmake +2 -0
  474. data/vendor/lexbor/source/lexbor/utils/http.c +534 -0
  475. data/vendor/lexbor/source/lexbor/utils/http.h +90 -0
  476. data/vendor/lexbor/source/lexbor/utils/utils.h +15 -0
  477. data/vendor/lexbor/source/lexbor/utils/warc.c +817 -0
  478. data/vendor/lexbor/source/lexbor/utils/warc.h +126 -0
  479. data/vendor/lexbor/utils/lexbor/css/selectors/pseudo.py +231 -0
  480. data/vendor/lexbor/utils/lexbor/css/selectors/tmp/const.h +21 -0
  481. data/vendor/lexbor/utils/lexbor/css/selectors/tmp/res.h +26 -0
  482. data/vendor/lexbor/utils/lexbor/css/syntax/definitions.py +49 -0
  483. data/vendor/lexbor/utils/lexbor/css/syntax/token_res.py +54 -0
  484. data/vendor/lexbor/utils/lexbor/css/syntax/tokenizer_code_map.py +36 -0
  485. data/vendor/lexbor/version +1 -0
  486. metadata +542 -0
@@ -0,0 +1,1264 @@
1
+ /*
2
+ * Summary: the core parser module
3
+ * Description: Interfaces, constants and types related to the XML parser
4
+ *
5
+ * Copy: See Copyright for the status of this software.
6
+ *
7
+ * Author: Daniel Veillard
8
+ */
9
+
10
+ #ifndef __XML_PARSER_H__
11
+ #define __XML_PARSER_H__
12
+
13
+ #include "xmlversion.h"
14
+ #include "tree.h"
15
+ #include "dict.h"
16
+ #include "hash.h"
17
+ #include "valid.h"
18
+ #include "entities.h"
19
+ #include "xmlerror.h"
20
+ #include "xmlstring.h"
21
+
22
+ #ifdef __cplusplus
23
+ extern "C" {
24
+ #endif
25
+
26
+ /**
27
+ * XML_DEFAULT_VERSION:
28
+ *
29
+ * The default version of XML used: 1.0
30
+ */
31
+ #define XML_DEFAULT_VERSION "1.0"
32
+
33
+ /**
34
+ * xmlParserInput:
35
+ *
36
+ * An xmlParserInput is an input flow for the XML processor.
37
+ * Each entity parsed is associated an xmlParserInput (except the
38
+ * few predefined ones). This is the case both for internal entities
39
+ * - in which case the flow is already completely in memory - or
40
+ * external entities - in which case we use the buf structure for
41
+ * progressive reading and I18N conversions to the internal UTF-8 format.
42
+ */
43
+
44
+ /**
45
+ * xmlParserInputDeallocate:
46
+ * @str: the string to deallocate
47
+ *
48
+ * Callback for freeing some parser input allocations.
49
+ */
50
+ typedef void (* xmlParserInputDeallocate)(xmlChar *str);
51
+
52
+ struct _xmlParserInput {
53
+ /* Input buffer */
54
+ xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */
55
+
56
+ const char *filename; /* The file analyzed, if any */
57
+ const char *directory; /* the directory/base of the file */
58
+ const xmlChar *base; /* Base of the array to parse */
59
+ const xmlChar *cur; /* Current char being parsed */
60
+ const xmlChar *end; /* end of the array to parse */
61
+ int length; /* length if known */
62
+ int line; /* Current line */
63
+ int col; /* Current column */
64
+ /*
65
+ * NOTE: consumed is only tested for equality in the parser code,
66
+ * so even if there is an overflow this should not give troubles
67
+ * for parsing very large instances.
68
+ */
69
+ unsigned long consumed; /* How many xmlChars already consumed */
70
+ xmlParserInputDeallocate free; /* function to deallocate the base */
71
+ const xmlChar *encoding; /* the encoding string for entity */
72
+ const xmlChar *version; /* the version string for entity */
73
+ int standalone; /* Was that entity marked standalone */
74
+ int id; /* an unique identifier for the entity */
75
+ };
76
+
77
+ /**
78
+ * xmlParserNodeInfo:
79
+ *
80
+ * The parser can be asked to collect Node information, i.e. at what
81
+ * place in the file they were detected.
82
+ * NOTE: This is off by default and not very well tested.
83
+ */
84
+ typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
85
+ typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
86
+
87
+ struct _xmlParserNodeInfo {
88
+ const struct _xmlNode* node;
89
+ /* Position & line # that text that created the node begins & ends on */
90
+ unsigned long begin_pos;
91
+ unsigned long begin_line;
92
+ unsigned long end_pos;
93
+ unsigned long end_line;
94
+ };
95
+
96
+ typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
97
+ typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
98
+ struct _xmlParserNodeInfoSeq {
99
+ unsigned long maximum;
100
+ unsigned long length;
101
+ xmlParserNodeInfo* buffer;
102
+ };
103
+
104
+ /**
105
+ * xmlParserInputState:
106
+ *
107
+ * The parser is now working also as a state based parser.
108
+ * The recursive one use the state info for entities processing.
109
+ */
110
+ typedef enum {
111
+ XML_PARSER_EOF = -1, /* nothing is to be parsed */
112
+ XML_PARSER_START = 0, /* nothing has been parsed */
113
+ XML_PARSER_MISC, /* Misc* before int subset */
114
+ XML_PARSER_PI, /* Within a processing instruction */
115
+ XML_PARSER_DTD, /* within some DTD content */
116
+ XML_PARSER_PROLOG, /* Misc* after internal subset */
117
+ XML_PARSER_COMMENT, /* within a comment */
118
+ XML_PARSER_START_TAG, /* within a start tag */
119
+ XML_PARSER_CONTENT, /* within the content */
120
+ XML_PARSER_CDATA_SECTION, /* within a CDATA section */
121
+ XML_PARSER_END_TAG, /* within a closing tag */
122
+ XML_PARSER_ENTITY_DECL, /* within an entity declaration */
123
+ XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */
124
+ XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */
125
+ XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */
126
+ XML_PARSER_EPILOG, /* the Misc* after the last end tag */
127
+ XML_PARSER_IGNORE, /* within an IGNORED section */
128
+ XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */
129
+ } xmlParserInputState;
130
+
131
+ /**
132
+ * XML_DETECT_IDS:
133
+ *
134
+ * Bit in the loadsubset context field to tell to do ID/REFs lookups.
135
+ * Use it to initialize xmlLoadExtDtdDefaultValue.
136
+ */
137
+ #define XML_DETECT_IDS 2
138
+
139
+ /**
140
+ * XML_COMPLETE_ATTRS:
141
+ *
142
+ * Bit in the loadsubset context field to tell to do complete the
143
+ * elements attributes lists with the ones defaulted from the DTDs.
144
+ * Use it to initialize xmlLoadExtDtdDefaultValue.
145
+ */
146
+ #define XML_COMPLETE_ATTRS 4
147
+
148
+ /**
149
+ * XML_SKIP_IDS:
150
+ *
151
+ * Bit in the loadsubset context field to tell to not do ID/REFs registration.
152
+ * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
153
+ */
154
+ #define XML_SKIP_IDS 8
155
+
156
+ /**
157
+ * xmlParserMode:
158
+ *
159
+ * A parser can operate in various modes
160
+ */
161
+ typedef enum {
162
+ XML_PARSE_UNKNOWN = 0,
163
+ XML_PARSE_DOM = 1,
164
+ XML_PARSE_SAX = 2,
165
+ XML_PARSE_PUSH_DOM = 3,
166
+ XML_PARSE_PUSH_SAX = 4,
167
+ XML_PARSE_READER = 5
168
+ } xmlParserMode;
169
+
170
+ typedef struct _xmlStartTag xmlStartTag;
171
+
172
+ /**
173
+ * xmlParserCtxt:
174
+ *
175
+ * The parser context.
176
+ * NOTE This doesn't completely define the parser state, the (current ?)
177
+ * design of the parser uses recursive function calls since this allow
178
+ * and easy mapping from the production rules of the specification
179
+ * to the actual code. The drawback is that the actual function call
180
+ * also reflect the parser state. However most of the parsing routines
181
+ * takes as the only argument the parser context pointer, so migrating
182
+ * to a state based parser for progressive parsing shouldn't be too hard.
183
+ */
184
+ struct _xmlParserCtxt {
185
+ struct _xmlSAXHandler *sax; /* The SAX handler */
186
+ void *userData; /* For SAX interface only, used by DOM build */
187
+ lxb_dom_document_t_ptr myDoc; /* the document being built */
188
+ int wellFormed; /* is the document well formed */
189
+ int replaceEntities; /* shall we replace entities ? */
190
+ const xmlChar *version; /* the XML version string */
191
+ const xmlChar *encoding; /* the declared encoding, if any */
192
+ int standalone; /* standalone document */
193
+ int html; /* an HTML(1) document
194
+ * 3 is HTML after <head>
195
+ * 10 is HTML after <body>
196
+ */
197
+
198
+ /* Input stream stack */
199
+ xmlParserInputPtr input; /* Current input stream */
200
+ int inputNr; /* Number of current input streams */
201
+ int inputMax; /* Max number of input streams */
202
+ xmlParserInputPtr *inputTab; /* stack of inputs */
203
+
204
+ /* Node analysis stack only used for DOM building */
205
+ lxb_dom_node_t_ptr node; /* Current parsed Node */
206
+ int nodeNr; /* Depth of the parsing stack */
207
+ int nodeMax; /* Max depth of the parsing stack */
208
+ lxb_dom_node_t_ptr *nodeTab; /* array of nodes */
209
+
210
+ int record_info; /* Whether node info should be kept */
211
+ xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
212
+
213
+ int errNo; /* error code */
214
+
215
+ int hasExternalSubset; /* reference and external subset */
216
+ int hasPErefs; /* the internal subset has PE refs */
217
+ int external; /* are we parsing an external entity */
218
+
219
+ int valid; /* is the document valid */
220
+ int validate; /* shall we try to validate ? */
221
+ xmlValidCtxt vctxt; /* The validity context */
222
+
223
+ xmlParserInputState instate; /* current type of input */
224
+ int token; /* next char look-ahead */
225
+
226
+ char *directory; /* the data directory */
227
+
228
+ /* Node name stack */
229
+ const xmlChar *name; /* Current parsed Node */
230
+ int nameNr; /* Depth of the parsing stack */
231
+ int nameMax; /* Max depth of the parsing stack */
232
+ const xmlChar * *nameTab; /* array of nodes */
233
+
234
+ long nbChars; /* unused */
235
+ long checkIndex; /* used by progressive parsing lookup */
236
+ int keepBlanks; /* ugly but ... */
237
+ int disableSAX; /* SAX callbacks are disabled */
238
+ int inSubset; /* Parsing is in int 1/ext 2 subset */
239
+ const xmlChar * intSubName; /* name of subset */
240
+ xmlChar * extSubURI; /* URI of external subset */
241
+ xmlChar * extSubSystem; /* SYSTEM ID of external subset */
242
+
243
+ /* xml:space values */
244
+ int * space; /* Should the parser preserve spaces */
245
+ int spaceNr; /* Depth of the parsing stack */
246
+ int spaceMax; /* Max depth of the parsing stack */
247
+ int * spaceTab; /* array of space infos */
248
+
249
+ int depth; /* to prevent entity substitution loops */
250
+ xmlParserInputPtr entity; /* used to check entities boundaries */
251
+ int charset; /* encoding of the in-memory content
252
+ actually an xmlCharEncoding */
253
+ int nodelen; /* Those two fields are there to */
254
+ int nodemem; /* Speed up large node parsing */
255
+ int pedantic; /* signal pedantic warnings */
256
+ void *_private; /* For user data, libxml won't touch it */
257
+
258
+ int loadsubset; /* should the external subset be loaded */
259
+ int linenumbers; /* set line number in element content */
260
+ void *catalogs; /* document's own catalog */
261
+ int recovery; /* run in recovery mode */
262
+ int progressive; /* is this a progressive parsing */
263
+ xmlDictPtr dict; /* dictionary for the parser */
264
+ const xmlChar * *atts; /* array for the attributes callbacks */
265
+ int maxatts; /* the size of the array */
266
+ int docdict; /* use strings from dict to build tree */
267
+
268
+ /*
269
+ * pre-interned strings
270
+ */
271
+ const xmlChar *str_xml;
272
+ const xmlChar *str_xmlns;
273
+ const xmlChar *str_xml_ns;
274
+
275
+ /*
276
+ * Everything below is used only by the new SAX mode
277
+ */
278
+ int sax2; /* operating in the new SAX mode */
279
+ int nsNr; /* the number of inherited namespaces */
280
+ int nsMax; /* the size of the arrays */
281
+ const xmlChar * *nsTab; /* the array of prefix/namespace name */
282
+ int *attallocs; /* which attribute were allocated */
283
+ xmlStartTag *pushTab; /* array of data for push */
284
+ xmlHashTablePtr attsDefault; /* defaulted attributes if any */
285
+ xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */
286
+ int nsWellFormed; /* is the document XML Namespace okay */
287
+ int options; /* Extra options */
288
+
289
+ /*
290
+ * Those fields are needed only for streaming parsing so far
291
+ */
292
+ int dictNames; /* Use dictionary names for the tree */
293
+ int freeElemsNr; /* number of freed element nodes */
294
+ lxb_dom_node_t_ptr freeElems; /* List of freed element nodes */
295
+ int freeAttrsNr; /* number of freed attributes nodes */
296
+ lxb_dom_attr_t_ptr freeAttrs; /* List of freed attributes nodes */
297
+
298
+ /*
299
+ * the complete error information for the last error.
300
+ */
301
+ xmlError lastError;
302
+ xmlParserMode parseMode; /* the parser mode */
303
+ unsigned long nbentities; /* number of entities references */
304
+ unsigned long sizeentities; /* size of parsed entities */
305
+
306
+ /* for use by HTML non-recursive parser */
307
+ xmlParserNodeInfo *nodeInfo; /* Current NodeInfo */
308
+ int nodeInfoNr; /* Depth of the parsing stack */
309
+ int nodeInfoMax; /* Max depth of the parsing stack */
310
+ xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */
311
+
312
+ int input_id; /* we need to label inputs */
313
+ unsigned long sizeentcopy; /* volume of entity copy */
314
+
315
+ int endCheckState; /* quote state for push parser */
316
+ };
317
+
318
+ /**
319
+ * xmlSAXLocator:
320
+ *
321
+ * A SAX Locator.
322
+ */
323
+ struct _xmlSAXLocator {
324
+ const xmlChar *(*getPublicId)(void *ctx);
325
+ const xmlChar *(*getSystemId)(void *ctx);
326
+ int (*getLineNumber)(void *ctx);
327
+ int (*getColumnNumber)(void *ctx);
328
+ };
329
+
330
+ /**
331
+ * xmlSAXHandler:
332
+ *
333
+ * A SAX handler is bunch of callbacks called by the parser when processing
334
+ * of the input generate data or structure information.
335
+ */
336
+
337
+ /**
338
+ * resolveEntitySAXFunc:
339
+ * @ctx: the user data (XML parser context)
340
+ * @publicId: The public ID of the entity
341
+ * @systemId: The system ID of the entity
342
+ *
343
+ * Callback:
344
+ * The entity loader, to control the loading of external entities,
345
+ * the application can either:
346
+ * - override this resolveEntity() callback in the SAX block
347
+ * - or better use the xmlSetExternalEntityLoader() function to
348
+ * set up it's own entity resolution routine
349
+ *
350
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
351
+ */
352
+ typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
353
+ const xmlChar *publicId,
354
+ const xmlChar *systemId);
355
+ /**
356
+ * internalSubsetSAXFunc:
357
+ * @ctx: the user data (XML parser context)
358
+ * @name: the root element name
359
+ * @ExternalID: the external ID
360
+ * @SystemID: the SYSTEM ID (e.g. filename or URL)
361
+ *
362
+ * Callback on internal subset declaration.
363
+ */
364
+ typedef void (*internalSubsetSAXFunc) (void *ctx,
365
+ const xmlChar *name,
366
+ const xmlChar *ExternalID,
367
+ const xmlChar *SystemID);
368
+ /**
369
+ * externalSubsetSAXFunc:
370
+ * @ctx: the user data (XML parser context)
371
+ * @name: the root element name
372
+ * @ExternalID: the external ID
373
+ * @SystemID: the SYSTEM ID (e.g. filename or URL)
374
+ *
375
+ * Callback on external subset declaration.
376
+ */
377
+ typedef void (*externalSubsetSAXFunc) (void *ctx,
378
+ const xmlChar *name,
379
+ const xmlChar *ExternalID,
380
+ const xmlChar *SystemID);
381
+ /**
382
+ * getEntitySAXFunc:
383
+ * @ctx: the user data (XML parser context)
384
+ * @name: The entity name
385
+ *
386
+ * Get an entity by name.
387
+ *
388
+ * Returns the xmlEntityPtr if found.
389
+ */
390
+ typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
391
+ const xmlChar *name);
392
+ /**
393
+ * getParameterEntitySAXFunc:
394
+ * @ctx: the user data (XML parser context)
395
+ * @name: The entity name
396
+ *
397
+ * Get a parameter entity by name.
398
+ *
399
+ * Returns the xmlEntityPtr if found.
400
+ */
401
+ typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
402
+ const xmlChar *name);
403
+ /**
404
+ * entityDeclSAXFunc:
405
+ * @ctx: the user data (XML parser context)
406
+ * @name: the entity name
407
+ * @type: the entity type
408
+ * @publicId: The public ID of the entity
409
+ * @systemId: The system ID of the entity
410
+ * @content: the entity value (without processing).
411
+ *
412
+ * An entity definition has been parsed.
413
+ */
414
+ typedef void (*entityDeclSAXFunc) (void *ctx,
415
+ const xmlChar *name,
416
+ int type,
417
+ const xmlChar *publicId,
418
+ const xmlChar *systemId,
419
+ xmlChar *content);
420
+ /**
421
+ * notationDeclSAXFunc:
422
+ * @ctx: the user data (XML parser context)
423
+ * @name: The name of the notation
424
+ * @publicId: The public ID of the entity
425
+ * @systemId: The system ID of the entity
426
+ *
427
+ * What to do when a notation declaration has been parsed.
428
+ */
429
+ typedef void (*notationDeclSAXFunc)(void *ctx,
430
+ const xmlChar *name,
431
+ const xmlChar *publicId,
432
+ const xmlChar *systemId);
433
+ /**
434
+ * attributeDeclSAXFunc:
435
+ * @ctx: the user data (XML parser context)
436
+ * @elem: the name of the element
437
+ * @fullname: the attribute name
438
+ * @type: the attribute type
439
+ * @def: the type of default value
440
+ * @defaultValue: the attribute default value
441
+ * @tree: the tree of enumerated value set
442
+ *
443
+ * An attribute definition has been parsed.
444
+ */
445
+ typedef void (*attributeDeclSAXFunc)(void *ctx,
446
+ const xmlChar *elem,
447
+ const xmlChar *fullname,
448
+ int type,
449
+ int def,
450
+ const xmlChar *defaultValue,
451
+ xmlEnumerationPtr tree);
452
+ /**
453
+ * elementDeclSAXFunc:
454
+ * @ctx: the user data (XML parser context)
455
+ * @name: the element name
456
+ * @type: the element type
457
+ * @content: the element value tree
458
+ *
459
+ * An element definition has been parsed.
460
+ */
461
+ typedef void (*elementDeclSAXFunc)(void *ctx,
462
+ const xmlChar *name,
463
+ int type,
464
+ xmlElementContentPtr content);
465
+ /**
466
+ * unparsedEntityDeclSAXFunc:
467
+ * @ctx: the user data (XML parser context)
468
+ * @name: The name of the entity
469
+ * @publicId: The public ID of the entity
470
+ * @systemId: The system ID of the entity
471
+ * @notationName: the name of the notation
472
+ *
473
+ * What to do when an unparsed entity declaration is parsed.
474
+ */
475
+ typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
476
+ const xmlChar *name,
477
+ const xmlChar *publicId,
478
+ const xmlChar *systemId,
479
+ const xmlChar *notationName);
480
+ /**
481
+ * setDocumentLocatorSAXFunc:
482
+ * @ctx: the user data (XML parser context)
483
+ * @loc: A SAX Locator
484
+ *
485
+ * Receive the document locator at startup, actually xmlDefaultSAXLocator.
486
+ * Everything is available on the context, so this is useless in our case.
487
+ */
488
+ typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
489
+ xmlSAXLocatorPtr loc);
490
+ /**
491
+ * startDocumentSAXFunc:
492
+ * @ctx: the user data (XML parser context)
493
+ *
494
+ * Called when the document start being processed.
495
+ */
496
+ typedef void (*startDocumentSAXFunc) (void *ctx);
497
+ /**
498
+ * endDocumentSAXFunc:
499
+ * @ctx: the user data (XML parser context)
500
+ *
501
+ * Called when the document end has been detected.
502
+ */
503
+ typedef void (*endDocumentSAXFunc) (void *ctx);
504
+ /**
505
+ * startElementSAXFunc:
506
+ * @ctx: the user data (XML parser context)
507
+ * @name: The element name, including namespace prefix
508
+ * @atts: An array of name/value attributes pairs, NULL terminated
509
+ *
510
+ * Called when an opening tag has been processed.
511
+ */
512
+ typedef void (*startElementSAXFunc) (void *ctx,
513
+ const xmlChar *name,
514
+ const xmlChar **atts);
515
+ /**
516
+ * endElementSAXFunc:
517
+ * @ctx: the user data (XML parser context)
518
+ * @name: The element name
519
+ *
520
+ * Called when the end of an element has been detected.
521
+ */
522
+ typedef void (*endElementSAXFunc) (void *ctx,
523
+ const xmlChar *name);
524
+ /**
525
+ * attributeSAXFunc:
526
+ * @ctx: the user data (XML parser context)
527
+ * @name: The attribute name, including namespace prefix
528
+ * @value: The attribute value
529
+ *
530
+ * Handle an attribute that has been read by the parser.
531
+ * The default handling is to convert the attribute into an
532
+ * DOM subtree and past it in a new xmlAttr element added to
533
+ * the element.
534
+ */
535
+ typedef void (*attributeSAXFunc) (void *ctx,
536
+ const xmlChar *name,
537
+ const xmlChar *value);
538
+ /**
539
+ * referenceSAXFunc:
540
+ * @ctx: the user data (XML parser context)
541
+ * @name: The entity name
542
+ *
543
+ * Called when an entity reference is detected.
544
+ */
545
+ typedef void (*referenceSAXFunc) (void *ctx,
546
+ const xmlChar *name);
547
+ /**
548
+ * charactersSAXFunc:
549
+ * @ctx: the user data (XML parser context)
550
+ * @ch: a xmlChar string
551
+ * @len: the number of xmlChar
552
+ *
553
+ * Receiving some chars from the parser.
554
+ */
555
+ typedef void (*charactersSAXFunc) (void *ctx,
556
+ const xmlChar *ch,
557
+ int len);
558
+ /**
559
+ * ignorableWhitespaceSAXFunc:
560
+ * @ctx: the user data (XML parser context)
561
+ * @ch: a xmlChar string
562
+ * @len: the number of xmlChar
563
+ *
564
+ * Receiving some ignorable whitespaces from the parser.
565
+ * UNUSED: by default the DOM building will use characters.
566
+ */
567
+ typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
568
+ const xmlChar *ch,
569
+ int len);
570
+ /**
571
+ * processingInstructionSAXFunc:
572
+ * @ctx: the user data (XML parser context)
573
+ * @target: the target name
574
+ * @data: the PI data's
575
+ *
576
+ * A processing instruction has been parsed.
577
+ */
578
+ typedef void (*processingInstructionSAXFunc) (void *ctx,
579
+ const xmlChar *target,
580
+ const xmlChar *data);
581
+ /**
582
+ * commentSAXFunc:
583
+ * @ctx: the user data (XML parser context)
584
+ * @value: the comment content
585
+ *
586
+ * A comment has been parsed.
587
+ */
588
+ typedef void (*commentSAXFunc) (void *ctx,
589
+ const xmlChar *value);
590
+ /**
591
+ * cdataBlockSAXFunc:
592
+ * @ctx: the user data (XML parser context)
593
+ * @value: The pcdata content
594
+ * @len: the block length
595
+ *
596
+ * Called when a pcdata block has been parsed.
597
+ */
598
+ typedef void (*cdataBlockSAXFunc) (
599
+ void *ctx,
600
+ const xmlChar *value,
601
+ int len);
602
+ /**
603
+ * warningSAXFunc:
604
+ * @ctx: an XML parser context
605
+ * @msg: the message to display/transmit
606
+ * @...: extra parameters for the message display
607
+ *
608
+ * Display and format a warning messages, callback.
609
+ */
610
+ typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
611
+ const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
612
+ /**
613
+ * errorSAXFunc:
614
+ * @ctx: an XML parser context
615
+ * @msg: the message to display/transmit
616
+ * @...: extra parameters for the message display
617
+ *
618
+ * Display and format an error messages, callback.
619
+ */
620
+ typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
621
+ const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
622
+ /**
623
+ * fatalErrorSAXFunc:
624
+ * @ctx: an XML parser context
625
+ * @msg: the message to display/transmit
626
+ * @...: extra parameters for the message display
627
+ *
628
+ * Display and format fatal error messages, callback.
629
+ * Note: so far fatalError() SAX callbacks are not used, error()
630
+ * get all the callbacks for errors.
631
+ */
632
+ typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
633
+ const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
634
+ /**
635
+ * isStandaloneSAXFunc:
636
+ * @ctx: the user data (XML parser context)
637
+ *
638
+ * Is this document tagged standalone?
639
+ *
640
+ * Returns 1 if true
641
+ */
642
+ typedef int (*isStandaloneSAXFunc) (void *ctx);
643
+ /**
644
+ * hasInternalSubsetSAXFunc:
645
+ * @ctx: the user data (XML parser context)
646
+ *
647
+ * Does this document has an internal subset.
648
+ *
649
+ * Returns 1 if true
650
+ */
651
+ typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
652
+
653
+ /**
654
+ * hasExternalSubsetSAXFunc:
655
+ * @ctx: the user data (XML parser context)
656
+ *
657
+ * Does this document has an external subset?
658
+ *
659
+ * Returns 1 if true
660
+ */
661
+ typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
662
+
663
+ /************************************************************************
664
+ * *
665
+ * The SAX version 2 API extensions *
666
+ * *
667
+ ************************************************************************/
668
+ /**
669
+ * XML_SAX2_MAGIC:
670
+ *
671
+ * Special constant found in SAX2 blocks initialized fields
672
+ */
673
+ #define XML_SAX2_MAGIC 0xDEEDBEAF
674
+
675
+ /**
676
+ * startElementNsSAX2Func:
677
+ * @ctx: the user data (XML parser context)
678
+ * @localname: the local name of the element
679
+ * @prefix: the element namespace prefix if available
680
+ * @URI: the element namespace name if available
681
+ * @nb_namespaces: number of namespace definitions on that node
682
+ * @namespaces: pointer to the array of prefix/URI pairs namespace definitions
683
+ * @nb_attributes: the number of attributes on that node
684
+ * @nb_defaulted: the number of defaulted attributes. The defaulted
685
+ * ones are at the end of the array
686
+ * @attributes: pointer to the array of (localname/prefix/URI/value/end)
687
+ * attribute values.
688
+ *
689
+ * SAX2 callback when an element start has been detected by the parser.
690
+ * It provides the namespace information for the element, as well as
691
+ * the new namespace declarations on the element.
692
+ */
693
+
694
+ typedef void (*startElementNsSAX2Func) (void *ctx,
695
+ const xmlChar *localname,
696
+ const xmlChar *prefix,
697
+ const xmlChar *URI,
698
+ int nb_namespaces,
699
+ const xmlChar **namespaces,
700
+ int nb_attributes,
701
+ int nb_defaulted,
702
+ const xmlChar **attributes);
703
+
704
+ /**
705
+ * endElementNsSAX2Func:
706
+ * @ctx: the user data (XML parser context)
707
+ * @localname: the local name of the element
708
+ * @prefix: the element namespace prefix if available
709
+ * @URI: the element namespace name if available
710
+ *
711
+ * SAX2 callback when an element end has been detected by the parser.
712
+ * It provides the namespace information for the element.
713
+ */
714
+
715
+ typedef void (*endElementNsSAX2Func) (void *ctx,
716
+ const xmlChar *localname,
717
+ const xmlChar *prefix,
718
+ const xmlChar *URI);
719
+
720
+
721
+ struct _xmlSAXHandler {
722
+ internalSubsetSAXFunc internalSubset;
723
+ isStandaloneSAXFunc isStandalone;
724
+ hasInternalSubsetSAXFunc hasInternalSubset;
725
+ hasExternalSubsetSAXFunc hasExternalSubset;
726
+ resolveEntitySAXFunc resolveEntity;
727
+ getEntitySAXFunc getEntity;
728
+ entityDeclSAXFunc entityDecl;
729
+ notationDeclSAXFunc notationDecl;
730
+ attributeDeclSAXFunc attributeDecl;
731
+ elementDeclSAXFunc elementDecl;
732
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
733
+ setDocumentLocatorSAXFunc setDocumentLocator;
734
+ startDocumentSAXFunc startDocument;
735
+ endDocumentSAXFunc endDocument;
736
+ startElementSAXFunc startElement;
737
+ endElementSAXFunc endElement;
738
+ referenceSAXFunc reference;
739
+ charactersSAXFunc characters;
740
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
741
+ processingInstructionSAXFunc processingInstruction;
742
+ commentSAXFunc comment;
743
+ warningSAXFunc warning;
744
+ errorSAXFunc error;
745
+ fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
746
+ getParameterEntitySAXFunc getParameterEntity;
747
+ cdataBlockSAXFunc cdataBlock;
748
+ externalSubsetSAXFunc externalSubset;
749
+ unsigned int initialized;
750
+ /* The following fields are extensions available only on version 2 */
751
+ void *_private;
752
+ startElementNsSAX2Func startElementNs;
753
+ endElementNsSAX2Func endElementNs;
754
+ xmlStructuredErrorFunc serror;
755
+ };
756
+
757
+ /*
758
+ * SAX Version 1
759
+ */
760
+ typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
761
+ typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
762
+ struct _xmlSAXHandlerV1 {
763
+ internalSubsetSAXFunc internalSubset;
764
+ isStandaloneSAXFunc isStandalone;
765
+ hasInternalSubsetSAXFunc hasInternalSubset;
766
+ hasExternalSubsetSAXFunc hasExternalSubset;
767
+ resolveEntitySAXFunc resolveEntity;
768
+ getEntitySAXFunc getEntity;
769
+ entityDeclSAXFunc entityDecl;
770
+ notationDeclSAXFunc notationDecl;
771
+ attributeDeclSAXFunc attributeDecl;
772
+ elementDeclSAXFunc elementDecl;
773
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
774
+ setDocumentLocatorSAXFunc setDocumentLocator;
775
+ startDocumentSAXFunc startDocument;
776
+ endDocumentSAXFunc endDocument;
777
+ startElementSAXFunc startElement;
778
+ endElementSAXFunc endElement;
779
+ referenceSAXFunc reference;
780
+ charactersSAXFunc characters;
781
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
782
+ processingInstructionSAXFunc processingInstruction;
783
+ commentSAXFunc comment;
784
+ warningSAXFunc warning;
785
+ errorSAXFunc error;
786
+ fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
787
+ getParameterEntitySAXFunc getParameterEntity;
788
+ cdataBlockSAXFunc cdataBlock;
789
+ externalSubsetSAXFunc externalSubset;
790
+ unsigned int initialized;
791
+ };
792
+
793
+
794
+ /**
795
+ * xmlExternalEntityLoader:
796
+ * @URL: The System ID of the resource requested
797
+ * @ID: The Public ID of the resource requested
798
+ * @context: the XML parser context
799
+ *
800
+ * External entity loaders types.
801
+ *
802
+ * Returns the entity input parser.
803
+ */
804
+ typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
805
+ const char *ID,
806
+ xmlParserCtxtPtr context);
807
+
808
+ #ifdef __cplusplus
809
+ }
810
+ #endif
811
+
812
+ #include "encoding.h"
813
+ #include "xmlIO.h"
814
+ #include "globals.h"
815
+
816
+ #ifdef __cplusplus
817
+ extern "C" {
818
+ #endif
819
+
820
+
821
+ /*
822
+ * Init/Cleanup
823
+ */
824
+ XMLPUBFUN void XMLCALL
825
+ xmlInitParser (void);
826
+ XMLPUBFUN void XMLCALL
827
+ xmlCleanupParser (void);
828
+
829
+ /*
830
+ * Input functions
831
+ */
832
+ XMLPUBFUN int XMLCALL
833
+ xmlParserInputRead (xmlParserInputPtr in,
834
+ int len);
835
+ XMLPUBFUN int XMLCALL
836
+ xmlParserInputGrow (xmlParserInputPtr in,
837
+ int len);
838
+
839
+ /*
840
+ * Basic parsing Interfaces
841
+ */
842
+ #ifdef LIBXML_SAX1_ENABLED
843
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
844
+ xmlParseDoc (const xmlChar *cur);
845
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
846
+ xmlParseFile (const char *filename);
847
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
848
+ xmlParseMemory (const char *buffer,
849
+ int size);
850
+ #endif /* LIBXML_SAX1_ENABLED */
851
+ XMLPUBFUN int XMLCALL
852
+ xmlSubstituteEntitiesDefault(int val);
853
+ XMLPUBFUN int XMLCALL
854
+ xmlKeepBlanksDefault (int val);
855
+ XMLPUBFUN void XMLCALL
856
+ xmlStopParser (xmlParserCtxtPtr ctxt);
857
+ XMLPUBFUN int XMLCALL
858
+ xmlPedanticParserDefault(int val);
859
+ XMLPUBFUN int XMLCALL
860
+ xmlLineNumbersDefault (int val);
861
+
862
+ #ifdef LIBXML_SAX1_ENABLED
863
+ /*
864
+ * Recovery mode
865
+ */
866
+ XML_DEPRECATED
867
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
868
+ xmlRecoverDoc (const xmlChar *cur);
869
+ XML_DEPRECATED
870
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
871
+ xmlRecoverMemory (const char *buffer,
872
+ int size);
873
+ XML_DEPRECATED
874
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
875
+ xmlRecoverFile (const char *filename);
876
+ #endif /* LIBXML_SAX1_ENABLED */
877
+
878
+ /*
879
+ * Less common routines and SAX interfaces
880
+ */
881
+ XMLPUBFUN int XMLCALL
882
+ xmlParseDocument (xmlParserCtxtPtr ctxt);
883
+ XMLPUBFUN int XMLCALL
884
+ xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
885
+ #ifdef LIBXML_SAX1_ENABLED
886
+ XML_DEPRECATED
887
+ XMLPUBFUN int XMLCALL
888
+ xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
889
+ void *user_data,
890
+ const char *filename);
891
+ XML_DEPRECATED
892
+ XMLPUBFUN int XMLCALL
893
+ xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
894
+ void *user_data,
895
+ const char *buffer,
896
+ int size);
897
+ XML_DEPRECATED
898
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
899
+ xmlSAXParseDoc (xmlSAXHandlerPtr sax,
900
+ const xmlChar *cur,
901
+ int recovery);
902
+ XML_DEPRECATED
903
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
904
+ xmlSAXParseMemory (xmlSAXHandlerPtr sax,
905
+ const char *buffer,
906
+ int size,
907
+ int recovery);
908
+ XML_DEPRECATED
909
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
910
+ xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
911
+ const char *buffer,
912
+ int size,
913
+ int recovery,
914
+ void *data);
915
+ XML_DEPRECATED
916
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
917
+ xmlSAXParseFile (xmlSAXHandlerPtr sax,
918
+ const char *filename,
919
+ int recovery);
920
+ XML_DEPRECATED
921
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
922
+ xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
923
+ const char *filename,
924
+ int recovery,
925
+ void *data);
926
+ XML_DEPRECATED
927
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
928
+ xmlSAXParseEntity (xmlSAXHandlerPtr sax,
929
+ const char *filename);
930
+ XML_DEPRECATED
931
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
932
+ xmlParseEntity (const char *filename);
933
+ #endif /* LIBXML_SAX1_ENABLED */
934
+
935
+ #ifdef LIBXML_VALID_ENABLED
936
+ XML_DEPRECATED
937
+ XMLPUBFUN xmlDtdPtr XMLCALL
938
+ xmlSAXParseDTD (xmlSAXHandlerPtr sax,
939
+ const xmlChar *ExternalID,
940
+ const xmlChar *SystemID);
941
+ XMLPUBFUN xmlDtdPtr XMLCALL
942
+ xmlParseDTD (const xmlChar *ExternalID,
943
+ const xmlChar *SystemID);
944
+ XMLPUBFUN xmlDtdPtr XMLCALL
945
+ xmlIOParseDTD (xmlSAXHandlerPtr sax,
946
+ xmlParserInputBufferPtr input,
947
+ xmlCharEncoding enc);
948
+ #endif /* LIBXML_VALID_ENABLE */
949
+ #ifdef LIBXML_SAX1_ENABLED
950
+ XMLPUBFUN int XMLCALL
951
+ xmlParseBalancedChunkMemory(lxb_dom_document_t_ptr doc,
952
+ xmlSAXHandlerPtr sax,
953
+ void *user_data,
954
+ int depth,
955
+ const xmlChar *string,
956
+ lxb_dom_node_t_ptr *lst);
957
+ #endif /* LIBXML_SAX1_ENABLED */
958
+ XMLPUBFUN xmlParserErrors XMLCALL
959
+ xmlParseInNodeContext (lxb_dom_node_t_ptr node,
960
+ const char *data,
961
+ int datalen,
962
+ int options,
963
+ lxb_dom_node_t_ptr *lst);
964
+ #ifdef LIBXML_SAX1_ENABLED
965
+ XMLPUBFUN int XMLCALL
966
+ xmlParseBalancedChunkMemoryRecover(lxb_dom_document_t_ptr doc,
967
+ xmlSAXHandlerPtr sax,
968
+ void *user_data,
969
+ int depth,
970
+ const xmlChar *string,
971
+ lxb_dom_node_t_ptr *lst,
972
+ int recover);
973
+ XML_DEPRECATED
974
+ XMLPUBFUN int XMLCALL
975
+ xmlParseExternalEntity (lxb_dom_document_t_ptr doc,
976
+ xmlSAXHandlerPtr sax,
977
+ void *user_data,
978
+ int depth,
979
+ const xmlChar *URL,
980
+ const xmlChar *ID,
981
+ lxb_dom_node_t_ptr *lst);
982
+ #endif /* LIBXML_SAX1_ENABLED */
983
+ XMLPUBFUN int XMLCALL
984
+ xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
985
+ const xmlChar *URL,
986
+ const xmlChar *ID,
987
+ lxb_dom_node_t_ptr *lst);
988
+
989
+ /*
990
+ * Parser contexts handling.
991
+ */
992
+ XMLPUBFUN xmlParserCtxtPtr XMLCALL
993
+ xmlNewParserCtxt (void);
994
+ XMLPUBFUN xmlParserCtxtPtr XMLCALL
995
+ xmlNewSAXParserCtxt (const xmlSAXHandler *sax,
996
+ void *userData);
997
+ XMLPUBFUN int XMLCALL
998
+ xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
999
+ XMLPUBFUN void XMLCALL
1000
+ xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
1001
+ XMLPUBFUN void XMLCALL
1002
+ xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
1003
+ #ifdef LIBXML_SAX1_ENABLED
1004
+ XML_DEPRECATED
1005
+ XMLPUBFUN void XMLCALL
1006
+ xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
1007
+ const xmlChar* buffer,
1008
+ const char *filename);
1009
+ #endif /* LIBXML_SAX1_ENABLED */
1010
+ XMLPUBFUN xmlParserCtxtPtr XMLCALL
1011
+ xmlCreateDocParserCtxt (const xmlChar *cur);
1012
+
1013
+ #ifdef LIBXML_LEGACY_ENABLED
1014
+ /*
1015
+ * Reading/setting optional parsing features.
1016
+ */
1017
+ XML_DEPRECATED
1018
+ XMLPUBFUN int XMLCALL
1019
+ xmlGetFeaturesList (int *len,
1020
+ const char **result);
1021
+ XML_DEPRECATED
1022
+ XMLPUBFUN int XMLCALL
1023
+ xmlGetFeature (xmlParserCtxtPtr ctxt,
1024
+ const char *name,
1025
+ void *result);
1026
+ XML_DEPRECATED
1027
+ XMLPUBFUN int XMLCALL
1028
+ xmlSetFeature (xmlParserCtxtPtr ctxt,
1029
+ const char *name,
1030
+ void *value);
1031
+ #endif /* LIBXML_LEGACY_ENABLED */
1032
+
1033
+ #ifdef LIBXML_PUSH_ENABLED
1034
+ /*
1035
+ * Interfaces for the Push mode.
1036
+ */
1037
+ XMLPUBFUN xmlParserCtxtPtr XMLCALL
1038
+ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
1039
+ void *user_data,
1040
+ const char *chunk,
1041
+ int size,
1042
+ const char *filename);
1043
+ XMLPUBFUN int XMLCALL
1044
+ xmlParseChunk (xmlParserCtxtPtr ctxt,
1045
+ const char *chunk,
1046
+ int size,
1047
+ int terminate);
1048
+ #endif /* LIBXML_PUSH_ENABLED */
1049
+
1050
+ /*
1051
+ * Special I/O mode.
1052
+ */
1053
+
1054
+ XMLPUBFUN xmlParserCtxtPtr XMLCALL
1055
+ xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
1056
+ void *user_data,
1057
+ xmlInputReadCallback ioread,
1058
+ xmlInputCloseCallback ioclose,
1059
+ void *ioctx,
1060
+ xmlCharEncoding enc);
1061
+
1062
+ XMLPUBFUN xmlParserInputPtr XMLCALL
1063
+ xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
1064
+ xmlParserInputBufferPtr input,
1065
+ xmlCharEncoding enc);
1066
+
1067
+ /*
1068
+ * Node infos.
1069
+ */
1070
+ XMLPUBFUN const xmlParserNodeInfo* XMLCALL
1071
+ xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
1072
+ const lxb_dom_node_t_ptr node);
1073
+ XMLPUBFUN void XMLCALL
1074
+ xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
1075
+ XMLPUBFUN void XMLCALL
1076
+ xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
1077
+ XMLPUBFUN unsigned long XMLCALL
1078
+ xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
1079
+ const lxb_dom_node_t_ptr node);
1080
+ XMLPUBFUN void XMLCALL
1081
+ xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
1082
+ const xmlParserNodeInfoPtr info);
1083
+
1084
+ /*
1085
+ * External entities handling actually implemented in xmlIO.
1086
+ */
1087
+
1088
+ XMLPUBFUN void XMLCALL
1089
+ xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
1090
+ XMLPUBFUN xmlExternalEntityLoader XMLCALL
1091
+ xmlGetExternalEntityLoader(void);
1092
+ XMLPUBFUN xmlParserInputPtr XMLCALL
1093
+ xmlLoadExternalEntity (const char *URL,
1094
+ const char *ID,
1095
+ xmlParserCtxtPtr ctxt);
1096
+
1097
+ /*
1098
+ * Index lookup, actually implemented in the encoding module
1099
+ */
1100
+ XMLPUBFUN long XMLCALL
1101
+ xmlByteConsumed (xmlParserCtxtPtr ctxt);
1102
+
1103
+ /*
1104
+ * New set of simpler/more flexible APIs
1105
+ */
1106
+ /**
1107
+ * xmlParserOption:
1108
+ *
1109
+ * This is the set of XML parser options that can be passed down
1110
+ * to the xmlReadDoc() and similar calls.
1111
+ */
1112
+ typedef enum {
1113
+ XML_PARSE_RECOVER = 1<<0, /* recover on errors */
1114
+ XML_PARSE_NOENT = 1<<1, /* substitute entities */
1115
+ XML_PARSE_DTDLOAD = 1<<2, /* load the external subset */
1116
+ XML_PARSE_DTDATTR = 1<<3, /* default DTD attributes */
1117
+ XML_PARSE_DTDVALID = 1<<4, /* validate with the DTD */
1118
+ XML_PARSE_NOERROR = 1<<5, /* suppress error reports */
1119
+ XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */
1120
+ XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */
1121
+ XML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */
1122
+ XML_PARSE_SAX1 = 1<<9, /* use the SAX1 interface internally */
1123
+ XML_PARSE_XINCLUDE = 1<<10,/* Implement XInclude substitution */
1124
+ XML_PARSE_NONET = 1<<11,/* Forbid network access */
1125
+ XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionary */
1126
+ XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */
1127
+ XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */
1128
+ XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
1129
+ XML_PARSE_COMPACT = 1<<16,/* compact small text nodes; no modification of
1130
+ the tree allowed afterwards (will possibly
1131
+ crash if you try to modify the tree) */
1132
+ XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */
1133
+ XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
1134
+ XML_PARSE_HUGE = 1<<19,/* relax any hardcoded limit from the parser */
1135
+ XML_PARSE_OLDSAX = 1<<20,/* parse using SAX2 interface before 2.7.0 */
1136
+ XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */
1137
+ XML_PARSE_BIG_LINES = 1<<22 /* Store big lines numbers in text PSVI field */
1138
+ } xmlParserOption;
1139
+
1140
+ XMLPUBFUN void XMLCALL
1141
+ xmlCtxtReset (xmlParserCtxtPtr ctxt);
1142
+ XMLPUBFUN int XMLCALL
1143
+ xmlCtxtResetPush (xmlParserCtxtPtr ctxt,
1144
+ const char *chunk,
1145
+ int size,
1146
+ const char *filename,
1147
+ const char *encoding);
1148
+ XMLPUBFUN int XMLCALL
1149
+ xmlCtxtUseOptions (xmlParserCtxtPtr ctxt,
1150
+ int options);
1151
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1152
+ xmlReadDoc (const xmlChar *cur,
1153
+ const char *URL,
1154
+ const char *encoding,
1155
+ int options);
1156
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1157
+ xmlReadFile (const char *URL,
1158
+ const char *encoding,
1159
+ int options);
1160
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1161
+ xmlReadMemory (const char *buffer,
1162
+ int size,
1163
+ const char *URL,
1164
+ const char *encoding,
1165
+ int options);
1166
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1167
+ xmlReadFd (int fd,
1168
+ const char *URL,
1169
+ const char *encoding,
1170
+ int options);
1171
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1172
+ xmlReadIO (xmlInputReadCallback ioread,
1173
+ xmlInputCloseCallback ioclose,
1174
+ void *ioctx,
1175
+ const char *URL,
1176
+ const char *encoding,
1177
+ int options);
1178
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1179
+ xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
1180
+ const xmlChar *cur,
1181
+ const char *URL,
1182
+ const char *encoding,
1183
+ int options);
1184
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1185
+ xmlCtxtReadFile (xmlParserCtxtPtr ctxt,
1186
+ const char *filename,
1187
+ const char *encoding,
1188
+ int options);
1189
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1190
+ xmlCtxtReadMemory (xmlParserCtxtPtr ctxt,
1191
+ const char *buffer,
1192
+ int size,
1193
+ const char *URL,
1194
+ const char *encoding,
1195
+ int options);
1196
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1197
+ xmlCtxtReadFd (xmlParserCtxtPtr ctxt,
1198
+ int fd,
1199
+ const char *URL,
1200
+ const char *encoding,
1201
+ int options);
1202
+ XMLPUBFUN lxb_dom_document_t_ptr XMLCALL
1203
+ xmlCtxtReadIO (xmlParserCtxtPtr ctxt,
1204
+ xmlInputReadCallback ioread,
1205
+ xmlInputCloseCallback ioclose,
1206
+ void *ioctx,
1207
+ const char *URL,
1208
+ const char *encoding,
1209
+ int options);
1210
+
1211
+ /*
1212
+ * Library wide options
1213
+ */
1214
+ /**
1215
+ * xmlFeature:
1216
+ *
1217
+ * Used to examine the existence of features that can be enabled
1218
+ * or disabled at compile-time.
1219
+ * They used to be called XML_FEATURE_xxx but this clashed with Expat
1220
+ */
1221
+ typedef enum {
1222
+ XML_WITH_THREAD = 1,
1223
+ XML_WITH_TREE = 2,
1224
+ XML_WITH_OUTPUT = 3,
1225
+ XML_WITH_PUSH = 4,
1226
+ XML_WITH_READER = 5,
1227
+ XML_WITH_PATTERN = 6,
1228
+ XML_WITH_WRITER = 7,
1229
+ XML_WITH_SAX1 = 8,
1230
+ XML_WITH_FTP = 9,
1231
+ XML_WITH_HTTP = 10,
1232
+ XML_WITH_VALID = 11,
1233
+ XML_WITH_HTML = 12,
1234
+ XML_WITH_LEGACY = 13,
1235
+ XML_WITH_C14N = 14,
1236
+ XML_WITH_CATALOG = 15,
1237
+ XML_WITH_XPATH = 16,
1238
+ XML_WITH_XPTR = 17,
1239
+ XML_WITH_XINCLUDE = 18,
1240
+ XML_WITH_ICONV = 19,
1241
+ XML_WITH_ISO8859X = 20,
1242
+ XML_WITH_UNICODE = 21,
1243
+ XML_WITH_REGEXP = 22,
1244
+ XML_WITH_AUTOMATA = 23,
1245
+ XML_WITH_EXPR = 24,
1246
+ XML_WITH_SCHEMAS = 25,
1247
+ XML_WITH_SCHEMATRON = 26,
1248
+ XML_WITH_MODULES = 27,
1249
+ XML_WITH_DEBUG = 28,
1250
+ XML_WITH_DEBUG_MEM = 29,
1251
+ XML_WITH_DEBUG_RUN = 30,
1252
+ XML_WITH_ZLIB = 31,
1253
+ XML_WITH_ICU = 32,
1254
+ XML_WITH_LZMA = 33,
1255
+ XML_WITH_NONE = 99999 /* just to be sure of allocation size */
1256
+ } xmlFeature;
1257
+
1258
+ XMLPUBFUN int XMLCALL
1259
+ xmlHasFeature (xmlFeature feature);
1260
+
1261
+ #ifdef __cplusplus
1262
+ }
1263
+ #endif
1264
+ #endif /* __XML_PARSER_H__ */