void myhtml_attribute_free(myhtml_tree_t *tree, myhtml_tree_attr_t *attr) { if(attr->key.data) mchar_async_free(attr->key.mchar, attr->key.node_idx, attr->key.data); if(attr->value.data) mchar_async_free(attr->value.mchar, attr->value.node_idx, attr->value.data); mcobject_async_free(tree->token->attr_obj, attr); }
myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj) { if(str == NULL) return NULL; if(str->data && str->mchar && str->node_idx) mchar_async_free(str->mchar, str->node_idx, str->data); if(destroy_obj && str) myhtml_free(str); return NULL; }
mycore_string_t * mycore_string_destroy(mycore_string_t* str, bool destroy_obj) { if(str == NULL) return NULL; if(str->data && str->mchar) mchar_async_free(str->mchar, str->node_idx, str->data); if(destroy_obj && str) { mycore_free(str); return NULL; } return str; }
myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_t* tree, myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding) { if(node == NULL) return NULL; if(encoding >= MyHTML_ENCODING_LAST_ENTRY) return NULL; if(node->token == NULL) { mcobject_async_status_t mcstatus; node->token = (myhtml_token_node_t*)mcobject_async_malloc(tree->token->nodes_obj, tree->mcasync_token_id, &mcstatus); if(mcstatus) return NULL; myhtml_token_node_clean(node->token); } if(node->token->str.data == NULL) { myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2)); } else { if(node->token->str.size < length) { mchar_async_free(tree->mchar, node->token->str.node_idx, node->token->str.data); myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length); } else node->token->str.length = 0; } myhtml_data_process_entry_t proc_entry; myhtml_data_process_entry_clean(&proc_entry); proc_entry.encoding = encoding; myhtml_encoding_result_clean(&proc_entry.res); myhtml_data_process(&proc_entry, &node->token->str, text, length); myhtml_data_process_end(&proc_entry, &node->token->str); node->token->raw_begin = 0; node->token->raw_length = 0; return &node->token->str; }
mycore_string_t * myhtml_node_text_set_with_charef(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding) { if(node == NULL) return NULL; if(encoding >= MyENCODING_LAST_ENTRY) return NULL; myhtml_tree_t* tree = node->tree; if(node->token == NULL) { node->token = myhtml_token_node_create(tree->token, tree->mcasync_rules_token_id); if(node->token == NULL) return NULL; } if(node->token->str.data == NULL) { mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2)); } else { if(node->token->str.size < length) { mchar_async_free(tree->mchar, node->token->str.node_idx, node->token->str.data); mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length); } else node->token->str.length = 0; } myhtml_data_process_entry_t proc_entry; myhtml_data_process_entry_clean(&proc_entry); proc_entry.encoding = encoding; myencoding_result_clean(&proc_entry.res); myhtml_data_process(&proc_entry, &node->token->str, text, length); myhtml_data_process_end(&proc_entry, &node->token->str); node->token->raw_begin = 0; node->token->raw_length = 0; return &node->token->str; }
myhtml_string_t * myhtml_node_text_set(myhtml_tree_t* tree, myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding) { if(node == NULL) return NULL; if(encoding >= MyHTML_ENCODING_LAST_ENTRY) return NULL; if(node->token == NULL) { mcobject_async_status_t mcstatus; node->token = (myhtml_token_node_t*)mcobject_async_malloc(tree->token->nodes_obj, tree->mcasync_token_id, &mcstatus); if(mcstatus) return NULL; myhtml_token_node_clean(node->token); } if(node->token->my_str_tm.data == NULL) { myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->my_str_tm, (length + 2)); } else { if(node->token->my_str_tm.size < length) { mchar_async_free(tree->mchar, node->token->my_str_tm.node_idx, node->token->my_str_tm.data); myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->my_str_tm, length); } else node->token->my_str_tm.length = 0; } if(encoding != MyHTML_ENCODING_UTF_8) { myhtml_string_append_with_convert_encoding(&node->token->my_str_tm, text, length, encoding); } else { myhtml_string_append(&node->token->my_str_tm, text, length); } node->token->begin = 0; node->token->length = node->token->my_str_tm.length; return &node->token->my_str_tm; }
mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding) { if(node == NULL) return NULL; if(encoding >= MyENCODING_LAST_ENTRY) return NULL; myhtml_tree_t* tree = node->tree; if(node->token == NULL) { node->token = myhtml_token_node_create(tree->token, tree->mcasync_rules_token_id); if(node->token == NULL) return NULL; } if(node->token->str.data == NULL) { mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, (length + 2)); } else { if(node->token->str.size < length) { mchar_async_free(tree->mchar, node->token->str.node_idx, node->token->str.data); mycore_string_init(tree->mchar, tree->mchar_node_id, &node->token->str, length); } else node->token->str.length = 0; } if(encoding != MyENCODING_UTF_8) { myencoding_string_append(&node->token->str, text, length, encoding); } else { mycore_string_append(&node->token->str, text, length); } node->token->raw_begin = 0; node->token->raw_length = 0; return &node->token->str; }
myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_t* tree, myhtml_tree_node_t *node, const char* text, size_t length, myhtml_encoding_t encoding) { if(node == NULL) return NULL; if(encoding >= MyHTML_ENCODING_LAST_ENTRY) return NULL; if(node->token == NULL) { mcobject_async_status_t mcstatus; node->token = (myhtml_token_node_t*)mcobject_async_malloc(tree->token->nodes_obj, tree->mcasync_token_id, &mcstatus); if(mcstatus) return NULL; myhtml_token_node_clean(node->token); } if(node->token->my_str_tm.data == NULL) { myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->my_str_tm, (length + 2)); } else { if(node->token->my_str_tm.size < length) { mchar_async_free(tree->mchar, node->token->my_str_tm.node_idx, node->token->my_str_tm.data); myhtml_string_init(tree->mchar, tree->mchar_node_id, &node->token->my_str_tm, length); } else node->token->my_str_tm.length = 0; } myhtml_string_char_ref_chunk_t str_chunk = {0, 0, 0, {0}, false, encoding}; myhtml_encoding_result_clean(&str_chunk.res); myhtml_string_append_charef(&str_chunk, &node->token->my_str_tm, text, length); myhtml_string_append_charef_end(&str_chunk, &node->token->my_str_tm); node->token->begin = 0; node->token->length = node->token->my_str_tm.length; return &node->token->my_str_tm; }
void mycore_string_data_free(mchar_async_t *mchar, size_t node_id, char *data) { mchar_async_free(mchar, node_id, data); }
void myhtml_attribute_free(myhtml_tree_t *tree, myhtml_tree_attr_t *attr) { mchar_async_free(attr->entry.mchar, attr->entry.node_idx, attr->entry.data); mcobject_async_free(tree->token->attr_obj, attr); }