diff options
Diffstat (limited to 'include/myhtml/myhtml.h')
-rw-r--r-- | include/myhtml/myhtml.h | 97 |
1 files changed, 42 insertions, 55 deletions
diff --git a/include/myhtml/myhtml.h b/include/myhtml/myhtml.h index d214e6a..d111add 100644 --- a/include/myhtml/myhtml.h +++ b/include/myhtml/myhtml.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2016 Alexander Borisov + Copyright (C) 2015-2017 Alexander Borisov This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -28,19 +28,19 @@ extern "C" { #include <myhtml/myosi.h> -#include <myhtml/utils/mctree.h> -#include <myhtml/utils/mcobject_async.h> +#include <mycore/utils/mctree.h> +#include <mycore/utils/mcobject_async.h> +#include <mycore/mythread.h> +#include <mycore/incoming.h> +#include <myencoding/encoding.h> #include <myhtml/tree.h> #include <myhtml/tag.h> #include <myhtml/def.h> #include <myhtml/parser.h> #include <myhtml/tokenizer.h> -#include <myhtml/thread.h> #include <myhtml/rules.h> #include <myhtml/token.h> #include <myhtml/charef.h> -#include <myhtml/encoding.h> -#include <myhtml/incoming.h> #include <myhtml/callback.h> #define mh_queue_current() tree->queue @@ -65,8 +65,10 @@ extern "C" { (onechar < 'A' || onechar > 'Z')) struct myhtml { - mythread_t *thread; - //mchar_async_t *mchar; // for all + mythread_t* thread_stream; + mythread_t* thread_batch; + mythread_t* thread_list[3]; + size_t thread_total; myhtml_tokenizer_state_f* parse_state_func; myhtml_insertion_f* insertion_func; @@ -83,68 +85,68 @@ struct myhtml_collection { myhtml_t * myhtml_create(void); -myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size); +mystatus_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t thread_count, size_t queue_size); void myhtml_clean(myhtml_t* myhtml); myhtml_t* myhtml_destroy(myhtml_t* myhtml); -myhtml_status_t myhtml_parse(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size); -myhtml_status_t myhtml_parse_fragment(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); +mystatus_t myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size); +mystatus_t myhtml_parse_fragment(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); -myhtml_status_t myhtml_parse_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size); -myhtml_status_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myhtml_encoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); +mystatus_t myhtml_parse_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size); +mystatus_t myhtml_parse_fragment_single(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); -myhtml_status_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size); -myhtml_status_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); -myhtml_status_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size); -myhtml_status_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); -myhtml_status_t myhtml_parse_chunk_end(myhtml_tree_t* tree); +mystatus_t myhtml_parse_chunk(myhtml_tree_t* tree, const char* html, size_t html_size); +mystatus_t myhtml_parse_chunk_fragment(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); +mystatus_t myhtml_parse_chunk_single(myhtml_tree_t* tree, const char* html, size_t html_size); +mystatus_t myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t html_size, myhtml_tag_id_t tag_id, enum myhtml_namespace ns); +mystatus_t myhtml_parse_chunk_end(myhtml_tree_t* tree); // encoding -void myhtml_encoding_set(myhtml_tree_t* tree, myhtml_encoding_t encoding); -myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree); +void myhtml_encoding_set(myhtml_tree_t* tree, myencoding_t encoding); +myencoding_t myhtml_encoding_get(myhtml_tree_t* tree); -myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, myhtml_status_t *status); -myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, myhtml_status_t *status); -myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, myhtml_status_t* status); +myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, mystatus_t *status); +myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, mystatus_t *status); +myhtml_collection_t * myhtml_get_nodes_by_attribute_key(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* scope_node, const char* key, size_t key_len, mystatus_t* status); /* like a [some=value] or #id */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); /* like a [some~=value] or .class */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_whitespace_separated(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); /* like a [some^=value] */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_begin(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); /* like a [some$=value] */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_end(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); /* like a [some*=value] */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_contain(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); /* like a [some|=value] */ myhtml_collection_t * myhtml_get_nodes_by_attribute_value_hyphen_separated(myhtml_tree_t *tree, myhtml_collection_t* collection, myhtml_tree_node_t* node, bool case_insensitive, const char* key, size_t key_len, const char* value, size_t value_len, - myhtml_status_t* status); + mystatus_t* status); -myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, myhtml_status_t *status); -myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, myhtml_status_t *status); +myhtml_collection_t * myhtml_get_nodes_by_tag_id_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, myhtml_tag_id_t tag_id, mystatus_t *status); +myhtml_collection_t * myhtml_get_nodes_by_name_in_scope(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tree_node_t *node, const char* html, size_t length, mystatus_t *status); myhtml_tree_node_t * myhtml_node_first(myhtml_tree_t* tree); myhtml_tree_node_t * myhtml_node_next(myhtml_tree_node_t *node); @@ -174,7 +176,7 @@ bool myhtml_node_is_close_self(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_last(myhtml_tree_node_t *node); const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length); -myhtml_string_t * myhtml_node_string(myhtml_tree_node_t *node); +mycore_string_t * myhtml_node_string(myhtml_tree_node_t *node); myhtml_position_t myhtml_node_raw_pasition(myhtml_tree_node_t *node); myhtml_position_t myhtml_node_element_pasition(myhtml_tree_node_t *node); void myhtml_node_set_data(myhtml_tree_node_t *node, void* data); @@ -188,10 +190,10 @@ void myhtml_attribute_namespace_set(myhtml_tree_attr_t *attr, myhtml_namespace_t const char * myhtml_attribute_key(myhtml_tree_attr_t *attr, size_t *length); const char * myhtml_attribute_value(myhtml_tree_attr_t *attr, size_t *length); -myhtml_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr); -myhtml_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr); +mycore_string_t * myhtml_attribute_key_string(myhtml_tree_attr_t* attr); +mycore_string_t * myhtml_attribute_value_string(myhtml_tree_attr_t* attr); myhtml_tree_attr_t * myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len); -myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myhtml_encoding_t encoding); +myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myencoding_t encoding); myhtml_tree_attr_t * myhtml_attribute_remove(myhtml_tree_node_t *node, myhtml_tree_attr_t *attr); myhtml_tree_attr_t * myhtml_attribute_remove_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len); void myhtml_attribute_delete(myhtml_tree_t *tree, myhtml_tree_node_t *node, myhtml_tree_attr_t *attr); @@ -200,35 +202,20 @@ myhtml_position_t myhtml_attribute_key_raw_position(myhtml_tree_attr_t *attr); myhtml_position_t myhtml_attribute_value_raw_position(myhtml_tree_attr_t *attr); /* collection */ -myhtml_collection_t * myhtml_collection_create(size_t size, myhtml_status_t *status); +myhtml_collection_t * myhtml_collection_create(size_t size, mystatus_t *status); void myhtml_collection_clean(myhtml_collection_t *collection); myhtml_collection_t * myhtml_collection_destroy(myhtml_collection_t *collection); -myhtml_status_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length); +mystatus_t myhtml_collection_check_size(myhtml_collection_t *collection, size_t need, size_t upto_length); // strings -myhtml_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding); -myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding); +mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding); +mycore_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding); bool myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size); bool myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id); // queue -myhtml_status_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token); - -/** - * Platform-specific hdef performance clock queries. - * Implemented in perf.c - */ - -/** Get clock resolution */ -uint64_t myhtml_hperf_res(myhtml_status_t *status); - -/** Get current value in clock ticks */ -uint64_t myhtml_hperf_clock(myhtml_status_t *status); - -/** Print an hperf measure */ -myhtml_status_t myhtml_hperf_print(const char *name, uint64_t x, uint64_t y, FILE *fh); -myhtml_status_t myhtml_hperf_print_by_val(const char *name, uint64_t x, FILE *fh); +mystatus_t myhtml_queue_add(myhtml_tree_t *tree, size_t begin, myhtml_token_node_t* token); /* version */ myhtml_version_t myhtml_version(void); |