WBXML_DECLARE(void) wbxml_tree_node_destroy(WBXMLTreeNode *node) { if (node == NULL) return; wbxml_tag_destroy(node->name); wbxml_list_destroy(node->attrs, wbxml_attribute_destroy_item); wbxml_buffer_destroy(node->content); wbxml_tree_destroy(node->tree); wbxml_free(node); }
WBXML_DECLARE(WBXMLList *) wbxml_buffer_split_words_real(WBXMLBuffer *buff) { WB_UTINY *p = NULL; WBXMLList *list = NULL; WBXMLBuffer *word = NULL; WB_ULONG i = 0, start = 0, end = 0; if (buff == NULL) return NULL; if ((list = wbxml_list_create()) == NULL) return NULL; p = buff->data; i = 0; while (TRUE) { while (i < buff->len && isspace(*p)) { ++p; ++i; } start = i; while (i < buff->len && !isspace(*p)) { ++p; ++i; } end = i; if (start == end) break; if((word = wbxml_buffer_create(buff->data + start, end - start, WBXML_BUFFER_SPLIT_BLOCK)) == NULL) { wbxml_list_destroy(list, wbxml_buffer_destroy_item); return NULL; } wbxml_list_append(list, word); } return list; }