Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lexborisov/perl-html-myhtml.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/xs
diff options
context:
space:
mode:
authorlex <lexinhell@gmail.com>2016-02-28 20:06:04 +0300
committerlex <lexinhell@gmail.com>2016-02-28 20:06:04 +0300
commit62a42a38a6c3b8e6d58dfee4c602118ba64290e6 (patch)
tree2ece412d2f258ce188a4e3906fe7eaaac5374c4c /xs
First commit
Diffstat (limited to 'xs')
-rwxr-xr-xxs/tree.xs149
-rwxr-xr-xxs/tree_attr.xs108
-rwxr-xr-xxs/tree_node.xs323
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);
+