diff options
author | lex <lexinhell@gmail.com> | 2016-02-28 20:06:04 +0300 |
---|---|---|
committer | lex <lexinhell@gmail.com> | 2016-02-28 20:06:04 +0300 |
commit | 62a42a38a6c3b8e6d58dfee4c602118ba64290e6 (patch) | |
tree | 2ece412d2f258ce188a4e3906fe7eaaac5374c4c /xs |
First commit
Diffstat (limited to 'xs')
-rwxr-xr-x | xs/tree.xs | 149 | ||||
-rwxr-xr-x | xs/tree_attr.xs | 108 | ||||
-rwxr-xr-x | xs/tree_node.xs | 323 |
3 files changed, 580 insertions, 0 deletions
diff --git a/xs/tree.xs b/xs/tree.xs new file mode 100755 index 0000000..e87d026 --- /dev/null +++ b/xs/tree.xs @@ -0,0 +1,149 @@ +#/* +# Copyright 2015-2016 Alexander Borisov +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: lex.borisov@gmail.com (Alexander Borisov) +#*/ + +MODULE = HTML::MyHTML::Tree PACKAGE = HTML::MyHTML::Tree +PROTOTYPES: DISABLE + +#=sort 1 + +myhtml_status_t +init(tree, myhtml) + HTML::MyHTML::Tree tree; + HTML::MyHTML myhtml; + + CODE: + RETVAL = myhtml_tree_init(tree, myhtml); + OUTPUT: + RETVAL + +#=sort 2 + +void +clean(tree) + HTML::MyHTML::Tree tree; + + CODE: + myhtml_tree_clean(tree); + +#=sort 3 + +HTML::MyHTML::Tree +destroy(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_destroy(tree); + OUTPUT: + RETVAL + +#=sort 4 + +HTML::MyHTML +get_myhtml(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_myhtml(tree); + OUTPUT: + RETVAL + +#=sort 5 + +HTML::MyHTML::Tag +get_tag(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_tag(tree); + OUTPUT: + RETVAL + +#=sort 6 + +HTML::MyHTML::Tag::Index +get_tag_index(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_tag_index(tree); + OUTPUT: + RETVAL + +#=sort 7 + +HTML::MyHTML::Tree::Node +document(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_document(tree); + OUTPUT: + RETVAL + +#=sort 8 + +mchar_async_t* +get_mchar(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_mchar(tree); + OUTPUT: + RETVAL + +#=sort 9 + +size_t +get_mchar_node_id(tree) + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = myhtml_tree_get_mchar_node_id(tree); + OUTPUT: + RETVAL + +#=sort 10 + +SV* +get_elements_by_tag_id(tree, tag_id) + HTML::MyHTML::Tree tree; + myhtml_tag_id_t tag_id; + + CODE: + RETVAL = newRV_noinc((SV *)sm_get_elements_by_tag_id(tree, tag_id)); + OUTPUT: + RETVAL + +#=sort 11 + +SV* +get_elements_by_tag_name(tree, tag_name) + HTML::MyHTML::Tree tree; + SV* tag_name; + + PREINIT: + STRLEN len; + CODE: + const char *char_tag_name = SvPV(tag_name, len); + + myhtml_tag_id_t tag_id = myhtml_tag_id_by_name(tree, char_tag_name, len); + RETVAL = newRV_noinc((SV *)sm_get_elements_by_tag_id(tree, tag_id)); + OUTPUT: + RETVAL + + diff --git a/xs/tree_attr.xs b/xs/tree_attr.xs new file mode 100755 index 0000000..f7c7a3e --- /dev/null +++ b/xs/tree_attr.xs @@ -0,0 +1,108 @@ +#/* +# Copyright 2015-2016 Alexander Borisov +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: lex.borisov@gmail.com (Alexander Borisov) +#*/ + +MODULE = HTML::MyHTML::Tree::Attr PACKAGE = HTML::MyHTML::Tree::Attr +PROTOTYPES: DISABLE + +SV* +info(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + RETVAL = newRV_noinc((SV *)sm_get_attr_info(attr)); + OUTPUT: + RETVAL + +HTML::MyHTML::Tree::Attr +next(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + RETVAL = myhtml_attribute_next(attr); + OUTPUT: + RETVAL + +HTML::MyHTML::Tree::Attr +prev(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + RETVAL = myhtml_attribute_prev(attr); + OUTPUT: + RETVAL + +enum myhtml_namespace +namespace(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + RETVAL = myhtml_attribute_namespace(attr); + OUTPUT: + RETVAL + +SV* +name(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + size_t length; + const char* name = myhtml_attribute_name(attr, &length); + RETVAL = newSVpv(name, length); + OUTPUT: + RETVAL + +SV* +value(attr) + HTML::MyHTML::Tree::Attr attr; + + CODE: + size_t length; + const char* value = myhtml_attribute_value(attr, &length); + RETVAL = newSVpv(value, length); + OUTPUT: + RETVAL + +HTML::MyHTML::Tree::Attr +remove(attr, node) + myhtml_tree_attr_t *attr; + myhtml_tree_node_t *node; + + CODE: + RETVAL = myhtml_attribute_remove(node, attr); + OUTPUT: + RETVAL + +void +delete(attr, tree, node) + myhtml_tree_attr_t *attr; + myhtml_tree_t *tree; + myhtml_tree_node_t *node; + + CODE: + myhtml_attribute_delete(tree, node, attr); + +void +free(attr, tree) + myhtml_tree_attr_t *attr; + myhtml_tree_t *tree; + + CODE: + myhtml_attribute_free(tree, attr); + + + diff --git a/xs/tree_node.xs b/xs/tree_node.xs new file mode 100755 index 0000000..24b02f8 --- /dev/null +++ b/xs/tree_node.xs @@ -0,0 +1,323 @@ +#/* +# Copyright 2015-2016 Alexander Borisov +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: lex.borisov@gmail.com (Alexander Borisov) +#*/ + +MODULE = HTML::MyHTML::Tree::Node PACKAGE = HTML::MyHTML::Tree::Node +PROTOTYPES: DISABLE + +#=sort 1 + +SV* +info(node, tree) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + + CODE: + RETVAL = newRV_noinc((SV *)sm_get_node_info(tree, node)); + OUTPUT: + RETVAL + +#=sort 2 + +HTML::MyHTML::Tree::Node +next(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_next(node); + OUTPUT: + RETVAL + POSTCALL: + if(RETVAL == NULL) + XSRETURN_UNDEF; + +#=sort 3 + +HTML::MyHTML::Tree::Node +prev(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_prev(node); + OUTPUT: + RETVAL + POSTCALL: + if(RETVAL == NULL) + XSRETURN_UNDEF; + +#=sort 4 + +HTML::MyHTML::Tree::Node +parent(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_parent(node); + OUTPUT: + RETVAL + POSTCALL: + if(RETVAL == NULL) + XSRETURN_UNDEF; + +#=sort 5 + +HTML::MyHTML::Tree::Node +child(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_child(node); + OUTPUT: + RETVAL + POSTCALL: + if(RETVAL == NULL) + XSRETURN_UNDEF; + +#=sort 6 + +HTML::MyHTML::Tree::Node +last_child(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_last_child(node); + OUTPUT: + RETVAL + POSTCALL: + if(RETVAL == NULL) + XSRETURN_UNDEF; + +#=sort 7 + +void +free(node, tree) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + + CODE: + myhtml_node_free(tree, node); + +#=sort 8 + +HTML::MyHTML::Tree::Node +remove(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_remove(node); + OUTPUT: + RETVAL + +#=sort 9 + +void +delete(node, tree) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + + CODE: + myhtml_node_delete(tree, node); + +#=sort 10 + +void +delete_recursive(node, tree) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + + CODE: + myhtml_node_delete_recursive(tree, node); + +#=sort 11 + +myhtml_tag_id_t +tag_id(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_tag_id(node); + OUTPUT: + RETVAL + +#=sort 12 + +enum myhtml_namespace +namespace(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_namespace(node); + OUTPUT: + RETVAL + +#=sort 13 + +SV* +tag_name(node, tree) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + + CODE: + size_t length; + const char* name = myhtml_tag_name_by_id(tree, myhtml_node_tag_id(node), &length); + RETVAL = newSVpv(name, length); + OUTPUT: + RETVAL + +#=sort 14 + +bool +is_close_self(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_is_close_self(node); + OUTPUT: + RETVAL + +#=sort 15 + +HTML::MyHTML::Tree::Attr +attr_first(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_attribute_first(node); + OUTPUT: + RETVAL + +#=sort 16 + +HTML::MyHTML::Tree::Attr +attr_last(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_attribute_last(node); + OUTPUT: + RETVAL + +#=sort 17 + +HTML::MyHTML::Tree::Attr +attr_add(node, tree, key, value, encoding) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + SV* key; + SV* value; + myhtml_encoding_t encoding; + + PREINIT: + STRLEN key_len; + STRLEN value_len; + CODE: + const char *char_key = SvPV(key, key_len); + const char *char_value = SvPV(key, value_len); + + RETVAL = myhtml_attribute_add(tree, node, char_key, key_len, char_value, value_len, encoding); + OUTPUT: + RETVAL + +#=sort 18 + +HTML::MyHTML::Tree::Attr +attr_remove_by_key(node, key) + myhtml_tree_node_t *node; + SV* key; + + PREINIT: + STRLEN len; + CODE: + const char *char_key = SvPV(key, len); + RETVAL = myhtml_attribute_remove_by_key(node, char_key, len); + OUTPUT: + RETVAL + +#=sort 19 + +HTML::MyHTML::Tree::Attr +attr_by_key(node, key) + myhtml_tree_node_t *node; + SV* key; + + PREINIT: + STRLEN len; + CODE: + const char *char_key = SvPV(key, len); + RETVAL = myhtml_attribute_by_key(node, char_key, len); + OUTPUT: + RETVAL + +#=sort 20 + +SV* +text(node) + HTML::MyHTML::Tree::Node node; + + CODE: + size_t length; + const char* text = myhtml_node_text(node, &length); + RETVAL = newSVpv(text, length); + OUTPUT: + RETVAL + +#=sort 21 + +HTML::MyHTML::String +string(node) + HTML::MyHTML::Tree::Node node; + + CODE: + RETVAL = myhtml_node_string(node); + OUTPUT: + RETVAL + +#=sort 22 + +void +print(node, tree, fh, inc) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + FILE* fh; + size_t inc; + + CODE: + myhtml_tree_print_by_node(tree, node, fh, inc); + +#=sort 23 + +void +print_childs(node, tree, fh, inc) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + FILE* fh; + size_t inc; + + CODE: + myhtml_tree_print_node_childs(tree, node, fh, inc); + +#=sort 24 + +void +print_all(node, tree, fh) + HTML::MyHTML::Tree::Node node; + HTML::MyHTML::Tree tree; + FILE* fh; + + CODE: + myhtml_tree_print_node(tree, node, fh); + |