nokolexbor 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/nokolexbor/config.h +186 -0
- data/ext/nokolexbor/extconf.rb +131 -0
- data/ext/nokolexbor/libxml/HTMLparser.h +320 -0
- data/ext/nokolexbor/libxml/SAX2.h +173 -0
- data/ext/nokolexbor/libxml/chvalid.h +230 -0
- data/ext/nokolexbor/libxml/debugXML.h +217 -0
- data/ext/nokolexbor/libxml/dict.h +81 -0
- data/ext/nokolexbor/libxml/encoding.h +232 -0
- data/ext/nokolexbor/libxml/entities.h +153 -0
- data/ext/nokolexbor/libxml/globals.h +529 -0
- data/ext/nokolexbor/libxml/hash.h +236 -0
- data/ext/nokolexbor/libxml/list.h +137 -0
- data/ext/nokolexbor/libxml/parser.h +1264 -0
- data/ext/nokolexbor/libxml/parserInternals.h +641 -0
- data/ext/nokolexbor/libxml/pattern.h +100 -0
- data/ext/nokolexbor/libxml/threads.h +94 -0
- data/ext/nokolexbor/libxml/tree.h +1315 -0
- data/ext/nokolexbor/libxml/uri.h +94 -0
- data/ext/nokolexbor/libxml/valid.h +448 -0
- data/ext/nokolexbor/libxml/xmlIO.h +369 -0
- data/ext/nokolexbor/libxml/xmlautomata.h +146 -0
- data/ext/nokolexbor/libxml/xmlerror.h +919 -0
- data/ext/nokolexbor/libxml/xmlexports.h +79 -0
- data/ext/nokolexbor/libxml/xmlmemory.h +226 -0
- data/ext/nokolexbor/libxml/xmlregexp.h +222 -0
- data/ext/nokolexbor/libxml/xmlstring.h +140 -0
- data/ext/nokolexbor/libxml/xmlversion.h +526 -0
- data/ext/nokolexbor/libxml/xpath.h +575 -0
- data/ext/nokolexbor/libxml/xpathInternals.h +632 -0
- data/ext/nokolexbor/libxml/xpointer.h +137 -0
- data/ext/nokolexbor/libxml.h +76 -0
- data/ext/nokolexbor/memory.c +39 -0
- data/ext/nokolexbor/nl_document.c +51 -0
- data/ext/nokolexbor/nl_node.c +790 -0
- data/ext/nokolexbor/nl_node_set.c +368 -0
- data/ext/nokolexbor/nl_xpath_context.c +200 -0
- data/ext/nokolexbor/nokolexbor.c +63 -0
- data/ext/nokolexbor/nokolexbor.h +37 -0
- data/ext/nokolexbor/private/buf.h +70 -0
- data/ext/nokolexbor/private/dict.h +11 -0
- data/ext/nokolexbor/private/enc.h +17 -0
- data/ext/nokolexbor/private/error.h +21 -0
- data/ext/nokolexbor/private/globals.h +9 -0
- data/ext/nokolexbor/private/memory.h +9 -0
- data/ext/nokolexbor/private/parser.h +27 -0
- data/ext/nokolexbor/private/string.h +9 -0
- data/ext/nokolexbor/private/threads.h +50 -0
- data/ext/nokolexbor/private/tree.h +18 -0
- data/ext/nokolexbor/private/xpath.h +7 -0
- data/ext/nokolexbor/timsort.h +601 -0
- data/ext/nokolexbor/xml_SAX2.c +80 -0
- data/ext/nokolexbor/xml_buf.c +363 -0
- data/ext/nokolexbor/xml_chvalid.c +334 -0
- data/ext/nokolexbor/xml_dict.c +1264 -0
- data/ext/nokolexbor/xml_encoding.c +124 -0
- data/ext/nokolexbor/xml_error.c +134 -0
- data/ext/nokolexbor/xml_globals.c +1085 -0
- data/ext/nokolexbor/xml_hash.c +1141 -0
- data/ext/nokolexbor/xml_memory.c +203 -0
- data/ext/nokolexbor/xml_parser.c +127 -0
- data/ext/nokolexbor/xml_parserInternals.c +338 -0
- data/ext/nokolexbor/xml_pattern.c +2375 -0
- data/ext/nokolexbor/xml_string.c +1051 -0
- data/ext/nokolexbor/xml_threads.c +881 -0
- data/ext/nokolexbor/xml_tree.c +148 -0
- data/ext/nokolexbor/xml_xpath.c +14743 -0
- data/lib/nokolexbor/attribute.rb +18 -0
- data/lib/nokolexbor/document.rb +6 -0
- data/lib/nokolexbor/node.rb +264 -0
- data/lib/nokolexbor/node_set.rb +124 -0
- data/lib/nokolexbor/version.rb +5 -0
- data/lib/nokolexbor/xpath_context.rb +14 -0
- data/lib/nokolexbor.rb +17 -0
- data/patches/0001-lexbor-support-text-pseudo-element.patch +137 -0
- data/patches/0002-lexbor-match-id-class-case-sensitive.patch +22 -0
- data/patches/0003-lexbor-attach-template-content-to-self.patch +13 -0
- data/vendor/lexbor/CMakeLists.txt +331 -0
- data/vendor/lexbor/config.cmake +890 -0
- data/vendor/lexbor/feature.cmake +134 -0
- data/vendor/lexbor/source/lexbor/core/array.c +208 -0
- data/vendor/lexbor/source/lexbor/core/array.h +100 -0
- data/vendor/lexbor/source/lexbor/core/array_obj.c +216 -0
- data/vendor/lexbor/source/lexbor/core/array_obj.h +134 -0
- data/vendor/lexbor/source/lexbor/core/avl.c +442 -0
- data/vendor/lexbor/source/lexbor/core/avl.h +82 -0
- data/vendor/lexbor/source/lexbor/core/base.h +86 -0
- data/vendor/lexbor/source/lexbor/core/bst.c +468 -0
- data/vendor/lexbor/source/lexbor/core/bst.h +108 -0
- data/vendor/lexbor/source/lexbor/core/bst_map.c +238 -0
- data/vendor/lexbor/source/lexbor/core/bst_map.h +87 -0
- data/vendor/lexbor/source/lexbor/core/config.cmake +12 -0
- data/vendor/lexbor/source/lexbor/core/conv.c +203 -0
- data/vendor/lexbor/source/lexbor/core/conv.h +53 -0
- data/vendor/lexbor/source/lexbor/core/core.h +35 -0
- data/vendor/lexbor/source/lexbor/core/def.h +57 -0
- data/vendor/lexbor/source/lexbor/core/diyfp.c +153 -0
- data/vendor/lexbor/source/lexbor/core/diyfp.h +258 -0
- data/vendor/lexbor/source/lexbor/core/dobject.c +187 -0
- data/vendor/lexbor/source/lexbor/core/dobject.h +92 -0
- data/vendor/lexbor/source/lexbor/core/dtoa.c +404 -0
- data/vendor/lexbor/source/lexbor/core/dtoa.h +28 -0
- data/vendor/lexbor/source/lexbor/core/fs.h +60 -0
- data/vendor/lexbor/source/lexbor/core/hash.c +476 -0
- data/vendor/lexbor/source/lexbor/core/hash.h +218 -0
- data/vendor/lexbor/source/lexbor/core/in.c +267 -0
- data/vendor/lexbor/source/lexbor/core/in.h +172 -0
- data/vendor/lexbor/source/lexbor/core/lexbor.h +35 -0
- data/vendor/lexbor/source/lexbor/core/mem.c +228 -0
- data/vendor/lexbor/source/lexbor/core/mem.h +141 -0
- data/vendor/lexbor/source/lexbor/core/mraw.c +428 -0
- data/vendor/lexbor/source/lexbor/core/mraw.h +114 -0
- data/vendor/lexbor/source/lexbor/core/perf.h +45 -0
- data/vendor/lexbor/source/lexbor/core/plog.c +73 -0
- data/vendor/lexbor/source/lexbor/core/plog.h +102 -0
- data/vendor/lexbor/source/lexbor/core/print.c +168 -0
- data/vendor/lexbor/source/lexbor/core/print.h +39 -0
- data/vendor/lexbor/source/lexbor/core/sbst.h +59 -0
- data/vendor/lexbor/source/lexbor/core/serialize.c +27 -0
- data/vendor/lexbor/source/lexbor/core/serialize.h +32 -0
- data/vendor/lexbor/source/lexbor/core/shs.c +118 -0
- data/vendor/lexbor/source/lexbor/core/shs.h +82 -0
- data/vendor/lexbor/source/lexbor/core/str.c +617 -0
- data/vendor/lexbor/source/lexbor/core/str.h +247 -0
- data/vendor/lexbor/source/lexbor/core/str_res.h +369 -0
- data/vendor/lexbor/source/lexbor/core/strtod.c +326 -0
- data/vendor/lexbor/source/lexbor/core/strtod.h +28 -0
- data/vendor/lexbor/source/lexbor/core/types.h +39 -0
- data/vendor/lexbor/source/lexbor/core/utils.c +43 -0
- data/vendor/lexbor/source/lexbor/core/utils.h +36 -0
- data/vendor/lexbor/source/lexbor/css/base.h +44 -0
- data/vendor/lexbor/source/lexbor/css/config.cmake +2 -0
- data/vendor/lexbor/source/lexbor/css/css.h +25 -0
- data/vendor/lexbor/source/lexbor/css/log.c +336 -0
- data/vendor/lexbor/source/lexbor/css/log.h +103 -0
- data/vendor/lexbor/source/lexbor/css/node.h +29 -0
- data/vendor/lexbor/source/lexbor/css/parser.c +473 -0
- data/vendor/lexbor/source/lexbor/css/parser.h +368 -0
- data/vendor/lexbor/source/lexbor/css/selectors/base.h +48 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo.c +91 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo.h +66 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo_const.h +109 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo_res.h +302 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.c +279 -0
- data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.h +85 -0
- data/vendor/lexbor/source/lexbor/css/selectors/selector.c +927 -0
- data/vendor/lexbor/source/lexbor/css/selectors/selector.h +200 -0
- data/vendor/lexbor/source/lexbor/css/selectors/selectors.c +340 -0
- data/vendor/lexbor/source/lexbor/css/selectors/selectors.h +137 -0
- data/vendor/lexbor/source/lexbor/css/selectors/state.c +1718 -0
- data/vendor/lexbor/source/lexbor/css/selectors/state.h +79 -0
- data/vendor/lexbor/source/lexbor/css/stylesheet.h +37 -0
- data/vendor/lexbor/source/lexbor/css/syntax/anb.c +443 -0
- data/vendor/lexbor/source/lexbor/css/syntax/anb.h +45 -0
- data/vendor/lexbor/source/lexbor/css/syntax/base.h +33 -0
- data/vendor/lexbor/source/lexbor/css/syntax/parser.c +9 -0
- data/vendor/lexbor/source/lexbor/css/syntax/parser.h +25 -0
- data/vendor/lexbor/source/lexbor/css/syntax/res.h +48 -0
- data/vendor/lexbor/source/lexbor/css/syntax/state.c +2603 -0
- data/vendor/lexbor/source/lexbor/css/syntax/state.h +140 -0
- data/vendor/lexbor/source/lexbor/css/syntax/state_res.h +273 -0
- data/vendor/lexbor/source/lexbor/css/syntax/syntax.c +67 -0
- data/vendor/lexbor/source/lexbor/css/syntax/token.c +618 -0
- data/vendor/lexbor/source/lexbor/css/syntax/token.h +298 -0
- data/vendor/lexbor/source/lexbor/css/syntax/token_res.h +68 -0
- data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.c +30 -0
- data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.h +58 -0
- data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.c +278 -0
- data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.h +121 -0
- data/vendor/lexbor/source/lexbor/dom/base.h +32 -0
- data/vendor/lexbor/source/lexbor/dom/collection.c +97 -0
- data/vendor/lexbor/source/lexbor/dom/collection.h +112 -0
- data/vendor/lexbor/source/lexbor/dom/config.cmake +3 -0
- data/vendor/lexbor/source/lexbor/dom/dom.h +29 -0
- data/vendor/lexbor/source/lexbor/dom/exception.c +18 -0
- data/vendor/lexbor/source/lexbor/dom/exception.h +73 -0
- data/vendor/lexbor/source/lexbor/dom/interface.c +110 -0
- data/vendor/lexbor/source/lexbor/dom/interface.h +88 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/attr.c +445 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/attr.h +152 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/attr_const.h +62 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/attr_res.h +143 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.c +55 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.h +38 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.c +110 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.h +51 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/comment.c +64 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/comment.h +42 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document.c +536 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document.h +243 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.c +36 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.h +36 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.c +125 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.h +108 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/element.c +1411 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/element.h +319 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.c +32 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.h +34 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/node.c +661 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/node.h +192 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.c +87 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.h +66 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.c +36 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.h +44 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/text.c +63 -0
- data/vendor/lexbor/source/lexbor/dom/interfaces/text.h +42 -0
- data/vendor/lexbor/source/lexbor/encoding/base.h +218 -0
- data/vendor/lexbor/source/lexbor/encoding/big5.c +42839 -0
- data/vendor/lexbor/source/lexbor/encoding/config.cmake +12 -0
- data/vendor/lexbor/source/lexbor/encoding/const.h +65 -0
- data/vendor/lexbor/source/lexbor/encoding/decode.c +3193 -0
- data/vendor/lexbor/source/lexbor/encoding/decode.h +370 -0
- data/vendor/lexbor/source/lexbor/encoding/encode.c +1931 -0
- data/vendor/lexbor/source/lexbor/encoding/encode.h +377 -0
- data/vendor/lexbor/source/lexbor/encoding/encoding.c +252 -0
- data/vendor/lexbor/source/lexbor/encoding/encoding.h +475 -0
- data/vendor/lexbor/source/lexbor/encoding/euc_kr.c +53883 -0
- data/vendor/lexbor/source/lexbor/encoding/gb18030.c +47905 -0
- data/vendor/lexbor/source/lexbor/encoding/iso_2022_jp_katakana.c +159 -0
- data/vendor/lexbor/source/lexbor/encoding/jis0208.c +22477 -0
- data/vendor/lexbor/source/lexbor/encoding/jis0212.c +15787 -0
- data/vendor/lexbor/source/lexbor/encoding/multi.h +53 -0
- data/vendor/lexbor/source/lexbor/encoding/range.c +71 -0
- data/vendor/lexbor/source/lexbor/encoding/range.h +34 -0
- data/vendor/lexbor/source/lexbor/encoding/res.c +222 -0
- data/vendor/lexbor/source/lexbor/encoding/res.h +34 -0
- data/vendor/lexbor/source/lexbor/encoding/single.c +13748 -0
- data/vendor/lexbor/source/lexbor/encoding/single.h +116 -0
- data/vendor/lexbor/source/lexbor/html/base.h +44 -0
- data/vendor/lexbor/source/lexbor/html/config.cmake +3 -0
- data/vendor/lexbor/source/lexbor/html/encoding.c +574 -0
- data/vendor/lexbor/source/lexbor/html/encoding.h +106 -0
- data/vendor/lexbor/source/lexbor/html/html.h +107 -0
- data/vendor/lexbor/source/lexbor/html/interface.c +165 -0
- data/vendor/lexbor/source/lexbor/html/interface.h +186 -0
- data/vendor/lexbor/source/lexbor/html/interface_res.h +4449 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/area_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/area_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/base_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/base_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/body_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/body_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/br_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/br_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/button_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/button_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/data_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/data_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/details_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/details_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/div_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/div_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/document.c +444 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/document.h +256 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/element.c +64 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/element.h +54 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/font_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/font_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/form_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/form_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/head_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/head_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/html_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/html_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/image_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/image_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/input_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/input_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/label_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/label_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/li_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/li_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/link_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/link_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/map_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/map_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/media_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/media_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/object_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/object_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/option_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/option_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/output_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/output_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/param_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/param_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/script_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/script_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/select_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/select_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/source_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/source_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/span_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/span_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/style_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/style_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/template_element.c +46 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/template_element.h +38 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/time_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/time_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/title_element.c +133 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/title_element.h +42 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/track_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/track_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/video_element.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/video_element.h +34 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/window.c +36 -0
- data/vendor/lexbor/source/lexbor/html/interfaces/window.h +34 -0
- data/vendor/lexbor/source/lexbor/html/node.c +14 -0
- data/vendor/lexbor/source/lexbor/html/node.h +67 -0
- data/vendor/lexbor/source/lexbor/html/parser.c +469 -0
- data/vendor/lexbor/source/lexbor/html/parser.h +170 -0
- data/vendor/lexbor/source/lexbor/html/serialize.c +1510 -0
- data/vendor/lexbor/source/lexbor/html/serialize.h +93 -0
- data/vendor/lexbor/source/lexbor/html/tag.h +103 -0
- data/vendor/lexbor/source/lexbor/html/tag_res.h +2262 -0
- data/vendor/lexbor/source/lexbor/html/token.c +386 -0
- data/vendor/lexbor/source/lexbor/html/token.h +130 -0
- data/vendor/lexbor/source/lexbor/html/token_attr.c +44 -0
- data/vendor/lexbor/source/lexbor/html/token_attr.h +67 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/error.c +28 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/error.h +141 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/res.h +4956 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state.c +2171 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state.h +225 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.c +489 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.h +27 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.c +1654 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.h +27 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.c +303 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.h +32 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.c +311 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.h +32 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.c +1209 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.h +32 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer.c +499 -0
- data/vendor/lexbor/source/lexbor/html/tokenizer.h +343 -0
- data/vendor/lexbor/source/lexbor/html/tree/active_formatting.c +241 -0
- data/vendor/lexbor/source/lexbor/html/tree/active_formatting.h +117 -0
- data/vendor/lexbor/source/lexbor/html/tree/error.c +26 -0
- data/vendor/lexbor/source/lexbor/html/tree/error.h +114 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_body.c +62 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_frameset.c +63 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_body.c +82 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_frameset.c +88 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_head.c +222 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_head.c +144 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_html.c +166 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/foreign_content.c +358 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_body.c +1974 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_caption.c +158 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_cell.c +187 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_column_group.c +194 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_frameset.c +149 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head.c +374 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head_noscript.c +121 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_row.c +211 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select.c +341 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select_in_table.c +115 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table.c +451 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_body.c +208 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_text.c +127 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_template.c +189 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/initial.c +411 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/text.c +61 -0
- data/vendor/lexbor/source/lexbor/html/tree/insertion_mode.h +135 -0
- data/vendor/lexbor/source/lexbor/html/tree/open_elements.c +251 -0
- data/vendor/lexbor/source/lexbor/html/tree/open_elements.h +105 -0
- data/vendor/lexbor/source/lexbor/html/tree/template_insertion.c +10 -0
- data/vendor/lexbor/source/lexbor/html/tree/template_insertion.h +100 -0
- data/vendor/lexbor/source/lexbor/html/tree.c +1726 -0
- data/vendor/lexbor/source/lexbor/html/tree.h +431 -0
- data/vendor/lexbor/source/lexbor/html/tree_res.h +111 -0
- data/vendor/lexbor/source/lexbor/ns/base.h +32 -0
- data/vendor/lexbor/source/lexbor/ns/config.cmake +2 -0
- data/vendor/lexbor/source/lexbor/ns/const.h +37 -0
- data/vendor/lexbor/source/lexbor/ns/ns.c +154 -0
- data/vendor/lexbor/source/lexbor/ns/ns.h +66 -0
- data/vendor/lexbor/source/lexbor/ns/res.h +97 -0
- data/vendor/lexbor/source/lexbor/ports/posix/config.cmake +11 -0
- data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/fs.c +236 -0
- data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/memory.c +33 -0
- data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/perf.c +158 -0
- data/vendor/lexbor/source/lexbor/ports/windows_nt/config.cmake +18 -0
- data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/fs.c +239 -0
- data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/memory.c +33 -0
- data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/perf.c +81 -0
- data/vendor/lexbor/source/lexbor/selectors/base.h +30 -0
- data/vendor/lexbor/source/lexbor/selectors/config.cmake +2 -0
- data/vendor/lexbor/source/lexbor/selectors/selectors.c +1591 -0
- data/vendor/lexbor/source/lexbor/selectors/selectors.h +71 -0
- data/vendor/lexbor/source/lexbor/tag/base.h +32 -0
- data/vendor/lexbor/source/lexbor/tag/config.cmake +2 -0
- data/vendor/lexbor/source/lexbor/tag/const.h +225 -0
- data/vendor/lexbor/source/lexbor/tag/res.h +562 -0
- data/vendor/lexbor/source/lexbor/tag/tag.c +144 -0
- data/vendor/lexbor/source/lexbor/tag/tag.h +123 -0
- data/vendor/lexbor/source/lexbor/utils/base.h +32 -0
- data/vendor/lexbor/source/lexbor/utils/config.cmake +2 -0
- data/vendor/lexbor/source/lexbor/utils/http.c +534 -0
- data/vendor/lexbor/source/lexbor/utils/http.h +90 -0
- data/vendor/lexbor/source/lexbor/utils/utils.h +15 -0
- data/vendor/lexbor/source/lexbor/utils/warc.c +817 -0
- data/vendor/lexbor/source/lexbor/utils/warc.h +126 -0
- data/vendor/lexbor/utils/lexbor/css/selectors/pseudo.py +231 -0
- data/vendor/lexbor/utils/lexbor/css/selectors/tmp/const.h +21 -0
- data/vendor/lexbor/utils/lexbor/css/selectors/tmp/res.h +26 -0
- data/vendor/lexbor/utils/lexbor/css/syntax/definitions.py +49 -0
- data/vendor/lexbor/utils/lexbor/css/syntax/token_res.py +54 -0
- data/vendor/lexbor/utils/lexbor/css/syntax/tokenizer_code_map.py +36 -0
- data/vendor/lexbor/version +1 -0
- metadata +542 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2018 Alexander Borisov
|
|
3
|
+
*
|
|
4
|
+
* Author: Alexander Borisov <borisov@lexbor.com>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef LEXBOR_DOM_EXCEPTION_H
|
|
8
|
+
#define LEXBOR_DOM_EXCEPTION_H
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#include "lexbor/core/base.h"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
typedef enum {
|
|
18
|
+
LXB_DOM_INDEX_SIZE_ERR = 0x00,
|
|
19
|
+
LXB_DOM_DOMSTRING_SIZE_ERR,
|
|
20
|
+
LXB_DOM_HIERARCHY_REQUEST_ERR,
|
|
21
|
+
LXB_DOM_WRONG_DOCUMENT_ERR,
|
|
22
|
+
LXB_DOM_INVALID_CHARACTER_ERR,
|
|
23
|
+
LXB_DOM_NO_DATA_ALLOWED_ERR,
|
|
24
|
+
LXB_DOM_NO_MODIFICATION_ALLOWED_ERR,
|
|
25
|
+
LXB_DOM_NOT_FOUND_ERR,
|
|
26
|
+
LXB_DOM_NOT_SUPPORTED_ERR,
|
|
27
|
+
LXB_DOM_INUSE_ATTRIBUTE_ERR,
|
|
28
|
+
LXB_DOM_INVALID_STATE_ERR,
|
|
29
|
+
LXB_DOM_SYNTAX_ERR,
|
|
30
|
+
LXB_DOM_INVALID_MODIFICATION_ERR,
|
|
31
|
+
LXB_DOM_NAMESPACE_ERR,
|
|
32
|
+
LXB_DOM_INVALID_ACCESS_ERR,
|
|
33
|
+
LXB_DOM_VALIDATION_ERR,
|
|
34
|
+
LXB_DOM_TYPE_MISMATCH_ERR,
|
|
35
|
+
LXB_DOM_SECURITY_ERR,
|
|
36
|
+
LXB_DOM_NETWORK_ERR,
|
|
37
|
+
LXB_DOM_ABORT_ERR,
|
|
38
|
+
LXB_DOM_URL_MISMATCH_ERR,
|
|
39
|
+
LXB_DOM_QUOTA_EXCEEDED_ERR,
|
|
40
|
+
LXB_DOM_TIMEOUT_ERR,
|
|
41
|
+
LXB_DOM_INVALID_NODE_TYPE_ERR,
|
|
42
|
+
LXB_DOM_DATA_CLONE_ERR
|
|
43
|
+
}
|
|
44
|
+
lxb_dom_exception_code_t;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Inline functions
|
|
49
|
+
*/
|
|
50
|
+
lxb_inline void *
|
|
51
|
+
lxb_dom_exception_code_ref_set(lxb_dom_exception_code_t *var,
|
|
52
|
+
lxb_dom_exception_code_t code)
|
|
53
|
+
{
|
|
54
|
+
if (var != NULL) {
|
|
55
|
+
*var = code;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return NULL;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* No inline functions for ABI.
|
|
63
|
+
*/
|
|
64
|
+
LXB_API void *
|
|
65
|
+
lxb_dom_exception_code_ref_set_noi(lxb_dom_exception_code_t *var,
|
|
66
|
+
lxb_dom_exception_code_t code);
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
#ifdef __cplusplus
|
|
70
|
+
} /* extern "C" */
|
|
71
|
+
#endif
|
|
72
|
+
|
|
73
|
+
#endif /* LEXBOR_DOM_EXCEPTION_H */
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2018-2021 Alexander Borisov
|
|
3
|
+
*
|
|
4
|
+
* Author: Alexander Borisov <borisov@lexbor.com>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include "lexbor/dom/interface.h"
|
|
8
|
+
#include "lexbor/dom/interfaces/cdata_section.h"
|
|
9
|
+
#include "lexbor/dom/interfaces/character_data.h"
|
|
10
|
+
#include "lexbor/dom/interfaces/comment.h"
|
|
11
|
+
#include "lexbor/dom/interfaces/document.h"
|
|
12
|
+
#include "lexbor/dom/interfaces/document_fragment.h"
|
|
13
|
+
#include "lexbor/dom/interfaces/document_type.h"
|
|
14
|
+
#include "lexbor/dom/interfaces/element.h"
|
|
15
|
+
#include "lexbor/dom/interfaces/event_target.h"
|
|
16
|
+
#include "lexbor/dom/interfaces/node.h"
|
|
17
|
+
#include "lexbor/dom/interfaces/processing_instruction.h"
|
|
18
|
+
#include "lexbor/dom/interfaces/shadow_root.h"
|
|
19
|
+
#include "lexbor/dom/interfaces/text.h"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
lxb_dom_interface_t *
|
|
23
|
+
lxb_dom_interface_create(lxb_dom_document_t *document, lxb_tag_id_t tag_id,
|
|
24
|
+
lxb_ns_id_t ns)
|
|
25
|
+
{
|
|
26
|
+
lxb_dom_element_t *domel;
|
|
27
|
+
|
|
28
|
+
domel = lxb_dom_element_interface_create(document);
|
|
29
|
+
if (domel == NULL) {
|
|
30
|
+
return NULL;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
domel->node.local_name = tag_id;
|
|
34
|
+
domel->node.ns = ns;
|
|
35
|
+
|
|
36
|
+
return domel;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
lxb_dom_interface_t *
|
|
40
|
+
lxb_dom_interface_clone(lxb_dom_document_t *document,
|
|
41
|
+
const lxb_dom_interface_t *intrfc)
|
|
42
|
+
{
|
|
43
|
+
const lxb_dom_node_t *node = intrfc;
|
|
44
|
+
|
|
45
|
+
if (document == NULL) {
|
|
46
|
+
document = node->owner_document;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
switch (node->type) {
|
|
50
|
+
case LXB_DOM_NODE_TYPE_ELEMENT:
|
|
51
|
+
return lxb_dom_element_interface_clone(document, intrfc);
|
|
52
|
+
|
|
53
|
+
case LXB_DOM_NODE_TYPE_TEXT:
|
|
54
|
+
return lxb_dom_text_interface_clone(document, intrfc);
|
|
55
|
+
|
|
56
|
+
case LXB_DOM_NODE_TYPE_PROCESSING_INSTRUCTION:
|
|
57
|
+
return lxb_dom_processing_instruction_interface_clone(document,
|
|
58
|
+
intrfc);
|
|
59
|
+
case LXB_DOM_NODE_TYPE_COMMENT:
|
|
60
|
+
return lxb_dom_comment_interface_clone(document, intrfc);
|
|
61
|
+
|
|
62
|
+
case LXB_DOM_NODE_TYPE_DOCUMENT:
|
|
63
|
+
return lxb_dom_document_interface_clone(document, intrfc);
|
|
64
|
+
|
|
65
|
+
case LXB_DOM_NODE_TYPE_DOCUMENT_TYPE:
|
|
66
|
+
return lxb_dom_document_type_interface_clone(document, intrfc);
|
|
67
|
+
|
|
68
|
+
default:
|
|
69
|
+
return lxb_dom_node_interface_clone(document, node, false);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
lxb_dom_interface_t *
|
|
74
|
+
lxb_dom_interface_destroy(lxb_dom_interface_t *intrfc)
|
|
75
|
+
{
|
|
76
|
+
if (intrfc == NULL) {
|
|
77
|
+
return NULL;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
lxb_dom_node_t *node = intrfc;
|
|
81
|
+
|
|
82
|
+
switch (node->type) {
|
|
83
|
+
case LXB_DOM_NODE_TYPE_ELEMENT:
|
|
84
|
+
return lxb_dom_element_interface_destroy(intrfc);
|
|
85
|
+
|
|
86
|
+
case LXB_DOM_NODE_TYPE_TEXT:
|
|
87
|
+
return lxb_dom_text_interface_destroy(intrfc);
|
|
88
|
+
|
|
89
|
+
case LXB_DOM_NODE_TYPE_CDATA_SECTION:
|
|
90
|
+
return lxb_dom_cdata_section_interface_destroy(intrfc);
|
|
91
|
+
|
|
92
|
+
case LXB_DOM_NODE_TYPE_PROCESSING_INSTRUCTION:
|
|
93
|
+
return lxb_dom_processing_instruction_interface_destroy(intrfc);
|
|
94
|
+
|
|
95
|
+
case LXB_DOM_NODE_TYPE_COMMENT:
|
|
96
|
+
return lxb_dom_comment_interface_destroy(intrfc);
|
|
97
|
+
|
|
98
|
+
case LXB_DOM_NODE_TYPE_DOCUMENT:
|
|
99
|
+
return lxb_dom_document_interface_destroy(intrfc);
|
|
100
|
+
|
|
101
|
+
case LXB_DOM_NODE_TYPE_DOCUMENT_TYPE:
|
|
102
|
+
return lxb_dom_document_type_interface_destroy(intrfc);
|
|
103
|
+
|
|
104
|
+
case LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT:
|
|
105
|
+
return lxb_dom_document_fragment_interface_destroy(intrfc);
|
|
106
|
+
|
|
107
|
+
default:
|
|
108
|
+
return lexbor_mraw_free(node->owner_document->mraw, intrfc);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2018-2021 Alexander Borisov
|
|
3
|
+
*
|
|
4
|
+
* Author: Alexander Borisov <borisov@lexbor.com>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef LEXBOR_DOM_INTERFACES_H
|
|
8
|
+
#define LEXBOR_DOM_INTERFACES_H
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#include "lexbor/core/base.h"
|
|
15
|
+
|
|
16
|
+
#include "lexbor/tag/const.h"
|
|
17
|
+
#include "lexbor/ns/const.h"
|
|
18
|
+
|
|
19
|
+
#include "lexbor/dom/exception.h"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#define lxb_dom_interface_cdata_section(obj) ((lxb_dom_cdata_section_t *) (obj))
|
|
23
|
+
#define lxb_dom_interface_character_data(obj) ((lxb_dom_character_data_t *) (obj))
|
|
24
|
+
#define lxb_dom_interface_comment(obj) ((lxb_dom_comment_t *) (obj))
|
|
25
|
+
#define lxb_dom_interface_document(obj) ((lxb_dom_document_t *) (obj))
|
|
26
|
+
#define lxb_dom_interface_document_fragment(obj) ((lxb_dom_document_fragment_t *) (obj))
|
|
27
|
+
#define lxb_dom_interface_document_type(obj) ((lxb_dom_document_type_t *) (obj))
|
|
28
|
+
#define lxb_dom_interface_element(obj) ((lxb_dom_element_t *) (obj))
|
|
29
|
+
#define lxb_dom_interface_attr(obj) ((lxb_dom_attr_t *) (obj))
|
|
30
|
+
#define lxb_dom_interface_event_target(obj) ((lxb_dom_event_target_t *) (obj))
|
|
31
|
+
#define lxb_dom_interface_node(obj) ((lxb_dom_node_t *) (obj))
|
|
32
|
+
#define lxb_dom_interface_processing_instruction(obj) ((lxb_dom_processing_instruction_t *) (obj))
|
|
33
|
+
#define lxb_dom_interface_shadow_root(obj) ((lxb_dom_shadow_root_t *) (obj))
|
|
34
|
+
#define lxb_dom_interface_text(obj) ((lxb_dom_text_t *) (obj))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
typedef struct lxb_dom_event_target lxb_dom_event_target_t;
|
|
38
|
+
typedef struct lxb_dom_node lxb_dom_node_t;
|
|
39
|
+
typedef struct lxb_dom_element lxb_dom_element_t;
|
|
40
|
+
typedef struct lxb_dom_attr lxb_dom_attr_t;
|
|
41
|
+
typedef struct lxb_dom_document lxb_dom_document_t;
|
|
42
|
+
typedef struct lxb_dom_document_type lxb_dom_document_type_t;
|
|
43
|
+
typedef struct lxb_dom_document_fragment lxb_dom_document_fragment_t;
|
|
44
|
+
typedef struct lxb_dom_shadow_root lxb_dom_shadow_root_t;
|
|
45
|
+
typedef struct lxb_dom_character_data lxb_dom_character_data_t;
|
|
46
|
+
typedef struct lxb_dom_text lxb_dom_text_t;
|
|
47
|
+
typedef struct lxb_dom_cdata_section lxb_dom_cdata_section_t;
|
|
48
|
+
typedef struct lxb_dom_processing_instruction lxb_dom_processing_instruction_t;
|
|
49
|
+
typedef struct lxb_dom_comment lxb_dom_comment_t;
|
|
50
|
+
|
|
51
|
+
typedef void lxb_dom_interface_t;
|
|
52
|
+
|
|
53
|
+
typedef void *
|
|
54
|
+
(*lxb_dom_interface_constructor_f)(void *document);
|
|
55
|
+
|
|
56
|
+
typedef void *
|
|
57
|
+
(*lxb_dom_interface_destructor_f)(void *intrfc);
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
typedef lxb_dom_interface_t *
|
|
61
|
+
(*lxb_dom_interface_create_f)(lxb_dom_document_t *document, lxb_tag_id_t tag_id,
|
|
62
|
+
lxb_ns_id_t ns);
|
|
63
|
+
|
|
64
|
+
typedef lxb_dom_interface_t *
|
|
65
|
+
(*lxb_dom_interface_clone_f)(lxb_dom_document_t *document,
|
|
66
|
+
const lxb_dom_interface_t *intrfc);
|
|
67
|
+
|
|
68
|
+
typedef lxb_dom_interface_t *
|
|
69
|
+
(*lxb_dom_interface_destroy_f)(lxb_dom_interface_t *intrfc);
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
LXB_API lxb_dom_interface_t *
|
|
73
|
+
lxb_dom_interface_create(lxb_dom_document_t *document, lxb_tag_id_t tag_id,
|
|
74
|
+
lxb_ns_id_t ns);
|
|
75
|
+
|
|
76
|
+
LXB_API lxb_dom_interface_t *
|
|
77
|
+
lxb_dom_interface_clone(lxb_dom_document_t *document,
|
|
78
|
+
const lxb_dom_interface_t *intrfc);
|
|
79
|
+
|
|
80
|
+
LXB_API lxb_dom_interface_t *
|
|
81
|
+
lxb_dom_interface_destroy(lxb_dom_interface_t *intrfc);
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
#ifdef __cplusplus
|
|
85
|
+
} /* extern "C" */
|
|
86
|
+
#endif
|
|
87
|
+
|
|
88
|
+
#endif /* LEXBOR_DOM_INTERFACES_H */
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2018-2021 Alexander Borisov
|
|
3
|
+
*
|
|
4
|
+
* Author: Alexander Borisov <borisov@lexbor.com>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include "lexbor/dom/interfaces/attr.h"
|
|
8
|
+
#include "lexbor/dom/interfaces/attr_res.h"
|
|
9
|
+
#include "lexbor/dom/interfaces/document.h"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
LXB_API lxb_dom_attr_data_t *
|
|
13
|
+
lxb_dom_attr_local_name_append(lexbor_hash_t *hash,
|
|
14
|
+
const lxb_char_t *name, size_t length);
|
|
15
|
+
|
|
16
|
+
LXB_API lxb_dom_attr_data_t *
|
|
17
|
+
lxb_dom_attr_qualified_name_append(lexbor_hash_t *hash, const lxb_char_t *name,
|
|
18
|
+
size_t length);
|
|
19
|
+
|
|
20
|
+
const lxb_ns_data_t *
|
|
21
|
+
lxb_ns_append(lexbor_hash_t *hash, const lxb_char_t *link, size_t length);
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
lxb_dom_attr_t *
|
|
25
|
+
lxb_dom_attr_interface_create(lxb_dom_document_t *document)
|
|
26
|
+
{
|
|
27
|
+
lxb_dom_attr_t *attr;
|
|
28
|
+
|
|
29
|
+
attr = lexbor_mraw_calloc(document->mraw, sizeof(lxb_dom_attr_t));
|
|
30
|
+
if (attr == NULL) {
|
|
31
|
+
return NULL;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
lxb_dom_node_t *node = lxb_dom_interface_node(attr);
|
|
35
|
+
|
|
36
|
+
node->owner_document = lxb_dom_document_owner(document);
|
|
37
|
+
node->type = LXB_DOM_NODE_TYPE_ATTRIBUTE;
|
|
38
|
+
|
|
39
|
+
return attr;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
lxb_dom_attr_t *
|
|
43
|
+
lxb_dom_attr_interface_clone(lxb_dom_document_t *document,
|
|
44
|
+
const lxb_dom_attr_t *attr)
|
|
45
|
+
{
|
|
46
|
+
lxb_dom_attr_t *new;
|
|
47
|
+
const lxb_dom_attr_data_t *data;
|
|
48
|
+
|
|
49
|
+
new = lxb_dom_attr_interface_create(document);
|
|
50
|
+
if (new == NULL) {
|
|
51
|
+
return NULL;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (document == attr->node.owner_document) {
|
|
55
|
+
new->qualified_name = attr->qualified_name;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
data = lxb_dom_attr_data_by_id(attr->node.owner_document->attrs,
|
|
59
|
+
attr->qualified_name);
|
|
60
|
+
if (data == NULL) {
|
|
61
|
+
goto failed;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (data->attr_id < LXB_DOM_ATTR__LAST_ENTRY) {
|
|
65
|
+
new->qualified_name = attr->qualified_name;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
data = lxb_dom_attr_qualified_name_append(document->attrs,
|
|
69
|
+
lexbor_hash_entry_str(&data->entry),
|
|
70
|
+
data->entry.length);
|
|
71
|
+
if (data == NULL) {
|
|
72
|
+
goto failed;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
new->qualified_name = (lxb_dom_attr_id_t) data;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (lxb_dom_node_interface_copy(&new->node, &attr->node, true)
|
|
80
|
+
!= LXB_STATUS_OK)
|
|
81
|
+
{
|
|
82
|
+
goto failed;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (attr->value == NULL) {
|
|
86
|
+
return new;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
new->value = lexbor_mraw_calloc(document->mraw, sizeof(lexbor_str_t));
|
|
90
|
+
if (new->value == NULL) {
|
|
91
|
+
goto failed;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (lexbor_str_copy(new->value, attr->value, document->text) == NULL) {
|
|
95
|
+
goto failed;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return new;
|
|
99
|
+
|
|
100
|
+
failed:
|
|
101
|
+
|
|
102
|
+
return lxb_dom_attr_interface_destroy(new);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
lxb_dom_attr_t *
|
|
106
|
+
lxb_dom_attr_interface_destroy(lxb_dom_attr_t *attr)
|
|
107
|
+
{
|
|
108
|
+
lxb_dom_document_t *doc = lxb_dom_interface_node(attr)->owner_document;
|
|
109
|
+
|
|
110
|
+
if (attr->value != NULL) {
|
|
111
|
+
if (attr->value->data != NULL) {
|
|
112
|
+
lexbor_mraw_free(doc->text, attr->value->data);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
lexbor_mraw_free(doc->mraw, attr->value);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
(void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(attr));
|
|
119
|
+
|
|
120
|
+
return NULL;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
lxb_status_t
|
|
124
|
+
lxb_dom_attr_set_name(lxb_dom_attr_t *attr, const lxb_char_t *name,
|
|
125
|
+
size_t length, bool to_lowercase)
|
|
126
|
+
{
|
|
127
|
+
lxb_dom_attr_data_t *data;
|
|
128
|
+
lxb_dom_document_t *doc = lxb_dom_interface_node(attr)->owner_document;
|
|
129
|
+
|
|
130
|
+
data = lxb_dom_attr_local_name_append(doc->attrs, name, length);
|
|
131
|
+
if (data == NULL) {
|
|
132
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
attr->node.local_name = data->attr_id;
|
|
136
|
+
|
|
137
|
+
if (to_lowercase == false) {
|
|
138
|
+
data = lxb_dom_attr_qualified_name_append(doc->attrs, name, length);
|
|
139
|
+
if (data == NULL) {
|
|
140
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
attr->qualified_name = (lxb_dom_attr_id_t) data;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return LXB_STATUS_OK;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
lxb_status_t
|
|
150
|
+
lxb_dom_attr_set_name_ns(lxb_dom_attr_t *attr, const lxb_char_t *link,
|
|
151
|
+
size_t link_length, const lxb_char_t *name,
|
|
152
|
+
size_t name_length, bool to_lowercase)
|
|
153
|
+
{
|
|
154
|
+
size_t length;
|
|
155
|
+
lxb_char_t *p;
|
|
156
|
+
const lxb_ns_data_t *ns_data;
|
|
157
|
+
lxb_dom_attr_data_t *data;
|
|
158
|
+
lxb_dom_document_t *doc = lxb_dom_interface_node(attr)->owner_document;
|
|
159
|
+
|
|
160
|
+
ns_data = lxb_ns_append(doc->ns, link, link_length);
|
|
161
|
+
if (ns_data == NULL || ns_data->ns_id == LXB_NS__UNDEF) {
|
|
162
|
+
return LXB_STATUS_ERROR;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
attr->node.ns = ns_data->ns_id;
|
|
166
|
+
|
|
167
|
+
/* TODO: append check https://www.w3.org/TR/xml/#NT-Name */
|
|
168
|
+
|
|
169
|
+
p = (lxb_char_t *) memchr(name, ':', name_length);
|
|
170
|
+
if (p == NULL) {
|
|
171
|
+
return lxb_dom_attr_set_name(attr, name, name_length, to_lowercase);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
length = p - name;
|
|
175
|
+
|
|
176
|
+
/* local name */
|
|
177
|
+
data = lxb_dom_attr_local_name_append(doc->attrs, &name[(length + 1)],
|
|
178
|
+
(name_length - (length + 1)));
|
|
179
|
+
if (data == NULL) {
|
|
180
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
attr->node.local_name = (lxb_dom_attr_id_t) data;
|
|
184
|
+
|
|
185
|
+
/* qualified name */
|
|
186
|
+
data = lxb_dom_attr_qualified_name_append(doc->attrs, name, name_length);
|
|
187
|
+
if (data == NULL) {
|
|
188
|
+
return LXB_STATUS_ERROR;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
attr->qualified_name = (lxb_dom_attr_id_t) data;
|
|
192
|
+
|
|
193
|
+
/* prefix */
|
|
194
|
+
attr->node.prefix = (lxb_ns_prefix_id_t) lxb_ns_prefix_append(doc->ns, name,
|
|
195
|
+
length);
|
|
196
|
+
if (attr->node.prefix == 0) {
|
|
197
|
+
return LXB_STATUS_ERROR;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return LXB_STATUS_OK;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
lxb_status_t
|
|
204
|
+
lxb_dom_attr_set_value(lxb_dom_attr_t *attr,
|
|
205
|
+
const lxb_char_t *value, size_t value_len)
|
|
206
|
+
{
|
|
207
|
+
lxb_dom_document_t *doc = lxb_dom_interface_node(attr)->owner_document;
|
|
208
|
+
|
|
209
|
+
if (attr->value == NULL) {
|
|
210
|
+
attr->value = lexbor_mraw_calloc(doc->mraw, sizeof(lexbor_str_t));
|
|
211
|
+
if (attr->value == NULL) {
|
|
212
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (attr->value->data == NULL) {
|
|
217
|
+
lexbor_str_init(attr->value, doc->text, value_len);
|
|
218
|
+
if (attr->value->data == NULL) {
|
|
219
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
attr->value->length = 0;
|
|
224
|
+
|
|
225
|
+
if (lexbor_str_size(attr->value) <= value_len) {
|
|
226
|
+
const lxb_char_t *tmp;
|
|
227
|
+
|
|
228
|
+
tmp = lexbor_str_realloc(attr->value, doc->text, (value_len + 1));
|
|
229
|
+
if (tmp == NULL) {
|
|
230
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
memcpy(attr->value->data, value, sizeof(lxb_char_t) * value_len);
|
|
236
|
+
|
|
237
|
+
attr->value->data[value_len] = 0x00;
|
|
238
|
+
attr->value->length = value_len;
|
|
239
|
+
|
|
240
|
+
return LXB_STATUS_OK;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
lxb_status_t
|
|
244
|
+
lxb_dom_attr_set_value_wo_copy(lxb_dom_attr_t *attr,
|
|
245
|
+
lxb_char_t *value, size_t value_len)
|
|
246
|
+
{
|
|
247
|
+
if (attr->value == NULL) {
|
|
248
|
+
lxb_dom_document_t *doc = lxb_dom_interface_node(attr)->owner_document;
|
|
249
|
+
|
|
250
|
+
attr->value = lexbor_mraw_alloc(doc->mraw, sizeof(lexbor_str_t));
|
|
251
|
+
if (attr->value == NULL) {
|
|
252
|
+
return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
attr->value->data = value;
|
|
257
|
+
attr->value->length = value_len;
|
|
258
|
+
|
|
259
|
+
return LXB_STATUS_OK;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
lxb_status_t
|
|
263
|
+
lxb_dom_attr_set_existing_value(lxb_dom_attr_t *attr,
|
|
264
|
+
const lxb_char_t *value, size_t value_len)
|
|
265
|
+
{
|
|
266
|
+
return lxb_dom_attr_set_value(attr, value, value_len);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
lxb_status_t
|
|
270
|
+
lxb_dom_attr_clone_name_value(lxb_dom_attr_t *attr_from,
|
|
271
|
+
lxb_dom_attr_t *attr_to)
|
|
272
|
+
{
|
|
273
|
+
attr_to->node.local_name = attr_from->node.local_name;
|
|
274
|
+
attr_to->qualified_name = attr_from->qualified_name;
|
|
275
|
+
|
|
276
|
+
return LXB_STATUS_OK;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
bool
|
|
280
|
+
lxb_dom_attr_compare(lxb_dom_attr_t *first, lxb_dom_attr_t *second)
|
|
281
|
+
{
|
|
282
|
+
if (first->node.local_name == second->node.local_name
|
|
283
|
+
&& first->node.ns == second->node.ns
|
|
284
|
+
&& first->qualified_name == second->qualified_name)
|
|
285
|
+
{
|
|
286
|
+
if (first->value == NULL) {
|
|
287
|
+
if (second->value == NULL) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (second->value != NULL
|
|
295
|
+
&& first->value->length == second->value->length
|
|
296
|
+
&& lexbor_str_data_ncmp(first->value->data, second->value->data,
|
|
297
|
+
first->value->length))
|
|
298
|
+
{
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
lxb_dom_attr_data_t *
|
|
307
|
+
lxb_dom_attr_local_name_append(lexbor_hash_t *hash,
|
|
308
|
+
const lxb_char_t *name, size_t length)
|
|
309
|
+
{
|
|
310
|
+
lxb_dom_attr_data_t *data;
|
|
311
|
+
const lexbor_shs_entry_t *entry;
|
|
312
|
+
|
|
313
|
+
if (name == NULL || length == 0) {
|
|
314
|
+
return NULL;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
entry = lexbor_shs_entry_get_lower_static(lxb_dom_attr_res_shs_data,
|
|
318
|
+
name, length);
|
|
319
|
+
if (entry != NULL) {
|
|
320
|
+
return entry->value;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
data = lexbor_hash_insert(hash, lexbor_hash_insert_lower, name, length);
|
|
324
|
+
if (data == NULL) {
|
|
325
|
+
return NULL;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
data->attr_id = (uintptr_t) data;
|
|
329
|
+
|
|
330
|
+
return data;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
lxb_dom_attr_data_t *
|
|
334
|
+
lxb_dom_attr_qualified_name_append(lexbor_hash_t *hash, const lxb_char_t *name,
|
|
335
|
+
size_t length)
|
|
336
|
+
{
|
|
337
|
+
lxb_dom_attr_data_t *data;
|
|
338
|
+
|
|
339
|
+
if (name == NULL || length == 0) {
|
|
340
|
+
return NULL;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
data = lexbor_hash_insert(hash, lexbor_hash_insert_raw, name, length);
|
|
344
|
+
if (data == NULL) {
|
|
345
|
+
return NULL;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
data->attr_id = (uintptr_t) data;
|
|
349
|
+
|
|
350
|
+
return data;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
const lxb_dom_attr_data_t *
|
|
354
|
+
lxb_dom_attr_data_undef(void)
|
|
355
|
+
{
|
|
356
|
+
return &lxb_dom_attr_res_data_default[LXB_DOM_ATTR__UNDEF];
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
const lxb_dom_attr_data_t *
|
|
360
|
+
lxb_dom_attr_data_by_id(lexbor_hash_t *hash, lxb_dom_attr_id_t attr_id)
|
|
361
|
+
{
|
|
362
|
+
if (attr_id >= LXB_DOM_ATTR__LAST_ENTRY) {
|
|
363
|
+
if (attr_id == LXB_DOM_ATTR__LAST_ENTRY) {
|
|
364
|
+
return NULL;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return (const lxb_dom_attr_data_t *) attr_id;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
return &lxb_dom_attr_res_data_default[attr_id];
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const lxb_dom_attr_data_t *
|
|
374
|
+
lxb_dom_attr_data_by_local_name(lexbor_hash_t *hash,
|
|
375
|
+
const lxb_char_t *name, size_t length)
|
|
376
|
+
{
|
|
377
|
+
const lexbor_shs_entry_t *entry;
|
|
378
|
+
|
|
379
|
+
if (name == NULL || length == 0) {
|
|
380
|
+
return NULL;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
entry = lexbor_shs_entry_get_lower_static(lxb_dom_attr_res_shs_data,
|
|
384
|
+
name, length);
|
|
385
|
+
if (entry != NULL) {
|
|
386
|
+
return entry->value;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
return lexbor_hash_search(hash, lexbor_hash_search_lower, name, length);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
const lxb_dom_attr_data_t *
|
|
393
|
+
lxb_dom_attr_data_by_qualified_name(lexbor_hash_t *hash,
|
|
394
|
+
const lxb_char_t *name, size_t length)
|
|
395
|
+
{
|
|
396
|
+
const lexbor_shs_entry_t *entry;
|
|
397
|
+
|
|
398
|
+
if (name == NULL || length == 0) {
|
|
399
|
+
return NULL;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
entry = lexbor_shs_entry_get_static(lxb_dom_attr_res_shs_data,
|
|
403
|
+
name, length);
|
|
404
|
+
if (entry != NULL) {
|
|
405
|
+
return entry->value;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
return lexbor_hash_search(hash, lexbor_hash_search_raw, name, length);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
const lxb_char_t *
|
|
412
|
+
lxb_dom_attr_qualified_name(lxb_dom_attr_t *attr, size_t *len)
|
|
413
|
+
{
|
|
414
|
+
const lxb_dom_attr_data_t *data;
|
|
415
|
+
|
|
416
|
+
if (attr->qualified_name != 0) {
|
|
417
|
+
data = lxb_dom_attr_data_by_id(attr->node.owner_document->attrs,
|
|
418
|
+
attr->qualified_name);
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
data = lxb_dom_attr_data_by_id(attr->node.owner_document->attrs,
|
|
422
|
+
attr->node.local_name);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (len != NULL) {
|
|
426
|
+
*len = data->entry.length;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
return lexbor_hash_entry_str(&data->entry);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/*
|
|
433
|
+
* No inline functions for ABI.
|
|
434
|
+
*/
|
|
435
|
+
const lxb_char_t *
|
|
436
|
+
lxb_dom_attr_local_name_noi(lxb_dom_attr_t *attr, size_t *len)
|
|
437
|
+
{
|
|
438
|
+
return lxb_dom_attr_local_name(attr, len);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
const lxb_char_t *
|
|
442
|
+
lxb_dom_attr_value_noi(lxb_dom_attr_t *attr, size_t *len)
|
|
443
|
+
{
|
|
444
|
+
return lxb_dom_attr_value(attr, len);
|
|
445
|
+
}
|