From 12fbcd3d88177c35c5435ae400c17025c1ca9181 Mon Sep 17 00:00:00 2001 From: Rupinder Singh Khokhar Date: Thu, 31 Jul 2014 23:27:11 +0530 Subject: remove precaching cell index --- src/html/html_tablecell_element.c | 71 ++++++++++++++++++--------------------- src/html/html_tablecell_element.h | 2 -- 2 files changed, 33 insertions(+), 40 deletions(-) (limited to 'src/html') diff --git a/src/html/html_tablecell_element.c b/src/html/html_tablecell_element.c index cc596c1..83ebb0c 100644 --- a/src/html/html_tablecell_element.c +++ b/src/html/html_tablecell_element.c @@ -61,7 +61,6 @@ dom_exception _dom_html_table_cell_element_initialise(struct dom_html_document * dom_string *tag_name, dom_string *namespace, dom_string *prefix, struct dom_html_table_cell_element *ele) { - ele->id = -1; return _dom_html_element_initialise(doc, &ele->base, tag_name, namespace, prefix); @@ -181,49 +180,45 @@ SIMPLE_GET_SET(width); dom_exception dom_html_table_cell_element_get_cell_index( dom_html_table_cell_element *table_cell, int32_t *cell_index) { - if(table_cell->id == -1) { - dom_node_internal *n = ((dom_node_internal *)table_cell)->parent; - dom_html_document *doc = (dom_html_document *)(n->owner); - int32_t cnt = 0; - while(n != NULL) { - if(dom_string_caseless_isequal(doc->memoised[hds_TR],n->name)) { - break; - } - n = n->parent; + dom_node_internal *n = ((dom_node_internal *)table_cell)->parent; + dom_html_document *doc = (dom_html_document *)(n->owner); + int32_t cnt = 0; + while(n != NULL) { + if(dom_string_caseless_isequal(doc->memoised[hds_TR],n->name)) { + break; + } + n = n->parent; + } + dom_node_internal *root = n; + while(n != NULL) { + if(n == (dom_node_internal *)table_cell) { + break; + } else if((n->type == DOM_ELEMENT_NODE) && + (dom_string_caseless_isequal(doc->memoised[hds_TD],n->name) || + dom_string_caseless_isequal(doc->memoised[hds_TH],n->name))) { + cnt += 1; } - dom_node_internal *root = n; - while(n != NULL) { - if(n == (dom_node_internal *)table_cell) { - break; - } else if((n->type == DOM_ELEMENT_NODE) && - (dom_string_caseless_isequal(doc->memoised[hds_TD],n->name) || - dom_string_caseless_isequal(doc->memoised[hds_TH],n->name))) { - ((dom_html_table_cell_element *)n)->id = cnt; - cnt += 1; + if(n->first_child != NULL) { + n = n->first_child; + } else if(n->next != NULL) { + n = n->next; + } else { + /* No children and siblings */ + struct dom_node_internal *parent = n->parent; + while (n == parent->last_child && + n != root) { + n = parent; + parent = parent->parent; } - if(n->first_child != NULL) { - n = n->first_child; - } else if(n->next != NULL) { - n = n->next; - } else { - /* No children and siblings */ - struct dom_node_internal *parent = n->parent; - while (n == parent->last_child && - n != root) { - n = parent; - parent = parent->parent; - } - if(n == root) { - n = NULL; - } else { - n = n->next; - } + if(n == root) { + n = NULL; + } else { + n = n->next; } } - table_cell->id = cnt; } - *cell_index = table_cell->id; + *cell_index = cnt; return DOM_NO_ERR; } diff --git a/src/html/html_tablecell_element.h b/src/html/html_tablecell_element.h index 801c3c0..5a48439 100644 --- a/src/html/html_tablecell_element.h +++ b/src/html/html_tablecell_element.h @@ -16,8 +16,6 @@ struct dom_html_table_cell_element { struct dom_html_element base; /**< The base class */ - int32_t id; - /**< The Index Associated with the cell*/ }; /* Create a dom_html_table_cell_element object */ -- cgit v1.2.3 From 0411dc6ff54fc981387a946ef523466b179177f6 Mon Sep 17 00:00:00 2001 From: Rupinder Singh Khokhar Date: Thu, 31 Jul 2014 23:49:18 +0530 Subject: ref counting on insert_cell & get_row_index --- src/html/html_tablerow_element.c | 69 ++++++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 16 deletions(-) (limited to 'src/html') diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c index 174bce1..0e4c3a8 100644 --- a/src/html/html_tablerow_element.c +++ b/src/html/html_tablerow_element.c @@ -176,10 +176,15 @@ SIMPLE_GET_SET(v_align); dom_exception dom_html_table_row_element_get_row_index( dom_html_table_row_element *table_row, int32_t *row_index) { - dom_node_internal *n = ((dom_node_internal *)table_row)->parent; + dom_exception exp; + dom_node_internal *n = + ((dom_node_internal *)table_row)->parent; dom_node_internal *parent = n; - dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) table_row)->owner; + dom_html_document *doc = + (dom_html_document *) ((dom_node_internal *) table_row)->owner; + uint32_t count = 0; + for(n = n->first_child; n != (dom_node_internal *)table_row; n = n->next) { if(n->type == DOM_ELEMENT_NODE && @@ -199,21 +204,42 @@ dom_exception dom_html_table_row_element_get_row_index( n = parent->parent; dom_html_table_section_element *t_head; dom_html_collection *rows; - dom_html_table_element_get_t_head( + exp = dom_html_table_element_get_t_head( (dom_html_table_element *)(parent->parent), &t_head); - dom_html_table_section_element_get_rows(t_head, + if (exp != DOM_NO_ERR) { + return exp; + } + + exp = dom_html_table_section_element_get_rows(t_head, &rows); + if (exp != DOM_NO_ERR) { + dom_node_unref(t_head); + return exp; + } + dom_html_collection_get_length(rows, &len); + dom_html_collection_unref(rows); + count += len; - for(n = n->first_child;n != parent && n != NULL; + + for (n = n->first_child;n != parent && n != NULL; n = n->next) { - if(dom_string_caseless_isequal(n->name, doc->memoised[hds_TBODY])) { - dom_html_table_section_element_get_rows( + if (dom_string_caseless_isequal(n->name, doc->memoised[hds_TBODY])) { + exp = dom_html_table_section_element_get_rows( (dom_html_table_section_element *)n, &rows); - dom_html_collection_get_length(rows, &len); + if (exp != DOM_NO_ERR) { + return exp; + } + + exp = dom_html_collection_get_length(rows, &len); + dom_html_collection_unref(rows); + if (exp != DOM_NO_ERR) { + return exp; + } + count += len; } } @@ -307,26 +333,37 @@ dom_exception dom_html_table_row_element_insert_cell( return exp; exp = dom_html_table_row_element_get_cells(element, &cells); - if(exp != DOM_NO_ERR) + if(exp != DOM_NO_ERR) { + dom_node_unref(*cell); return exp; + } exp = dom_html_collection_get_length(cells, &len); - if(exp != DOM_NO_ERR) + if(exp != DOM_NO_ERR) { + dom_node_unref(*cell); return exp; + } if(index < -1 || index > (int32_t)len) { /* Check for index validity */ + dom_html_collection_unref (cells); return DOM_INDEX_SIZE_ERR; } else if(index == -1 || index == (int32_t)len) { - return _dom_node_append_child((dom_node_internal *)element, - (dom_node_internal *)*cell, - (dom_node_internal **)cell); + dom_node *new_cell; + dom_html_collection_unref(cells); + + return dom_node_append_child(element, + *cell, + &new_cell); } else { + dom_node *new_cell; dom_html_collection_item(cells, index, &node); - return _dom_node_insert_before((dom_node_internal *)element, - (dom_node_internal *)*cell, (dom_node_internal *)node, - (dom_node_internal **)cell); + dom_html_collection_unref(cells); + + return dom_node_insert_before(element, + *cell, node, + &new_cell); } } -- cgit v1.2.3 From 9710e41ebef7c587e91df17d555bb86c65810161 Mon Sep 17 00:00:00 2001 From: Rupinder Singh Khokhar Date: Thu, 7 Aug 2014 02:20:40 +0530 Subject: removed redundant variables & fixed leaks --- src/html/html_frame_element.c | 90 ++------------------------------------ src/html/html_frame_element.h | 2 - src/html/html_frameset_element.c | 80 ++-------------------------------- src/html/html_frameset_element.h | 1 - src/html/html_iframe_element.c | 93 +++------------------------------------- src/html/html_iframe_element.h | 2 - src/html/html_label_element.c | 2 - src/html/html_label_element.h | 2 - src/html/html_object_element.c | 1 - src/html/html_object_element.h | 2 - 10 files changed, 11 insertions(+), 264 deletions(-) (limited to 'src/html') diff --git a/src/html/html_frame_element.c b/src/html/html_frame_element.c index a03b32d..9e1ea1e 100644 --- a/src/html/html_frame_element.c +++ b/src/html/html_frame_element.c @@ -60,26 +60,9 @@ dom_exception _dom_html_frame_element_initialise(struct dom_html_document *doc, dom_string *namespace, dom_string *prefix, struct dom_html_frame_element *ele) { - dom_string *scrolling_default = NULL; - dom_exception err; - err = dom_string_create((const uint8_t *) "auto", SLEN("auto"), &scrolling_default); - if (err != DOM_NO_ERR) - return err; - - - dom_string *frame_border_default = NULL; - err = dom_string_create((const uint8_t *) "1", SLEN("1"), &frame_border_default); - if (err != DOM_NO_ERR) - return err; - - err = _dom_html_element_initialise(doc, &ele->base, + return _dom_html_element_initialise(doc, &ele->base, doc->memoised[hds_FRAME], namespace, prefix); - - ele->scrolling_default = scrolling_default; - ele->frame_border_default = frame_border_default; - - return err; } /** @@ -205,77 +188,10 @@ dom_exception dom_html_frame_element_set_##attr( \ SIMPLE_GET_SET(long_desc); SIMPLE_GET_SET(name); SIMPLE_GET_SET(src); -SIMPLE_SET(frame_border); +SIMPLE_GET_SET(frame_border); SIMPLE_GET_SET(margin_width); SIMPLE_GET_SET(margin_height); -SIMPLE_SET(scrolling); - - -/** - * Get the frame_border property - * - * \param ele The dom_html_frame_element object - * \param frame_border The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_frame_element_get_frame_border( - dom_html_frame_element *ele, - dom_string **frame_border) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_frame_border], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_frame_border], frame_border); - } - - *frame_border = ele->frame_border_default; - if (*frame_border != NULL) - dom_string_ref(*frame_border); - return DOM_NO_ERR; -} - -/** - * Get the frame_border property - * - * \param ele The dom_html_frame_element object - * \param scrolling The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_frame_element_get_scrolling( - dom_html_frame_element *ele, - dom_string **scrolling) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_scrolling], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_scrolling], scrolling); - } - - *scrolling = ele->scrolling_default; - if (*scrolling != NULL) - dom_string_ref(*scrolling); - return DOM_NO_ERR; -} +SIMPLE_GET_SET(scrolling); dom_exception dom_html_frame_element_get_content_document( dom_html_frame_element *ele, diff --git a/src/html/html_frame_element.h b/src/html/html_frame_element.h index c313cbc..d83c9fc 100644 --- a/src/html/html_frame_element.h +++ b/src/html/html_frame_element.h @@ -16,8 +16,6 @@ struct dom_html_frame_element { struct dom_html_element base; /**< The base class */ - dom_string *scrolling_default; - dom_string *frame_border_default; }; /* Create a dom_html_frame_element object */ diff --git a/src/html/html_frameset_element.c b/src/html/html_frameset_element.c index b096156..871906b 100644 --- a/src/html/html_frameset_element.c +++ b/src/html/html_frameset_element.c @@ -60,17 +60,9 @@ dom_exception _dom_html_frame_set_element_initialise(struct dom_html_document *d dom_string *namespace, dom_string *prefix, struct dom_html_frame_set_element *ele) { - dom_string *cols_rows_default = NULL; - dom_exception err; - err = dom_string_create((const uint8_t *) "100%", SLEN("100%"), &cols_rows_default); - if (err != DOM_NO_ERR) - return err; - - err = _dom_html_element_initialise(doc, &ele->base, + return _dom_html_element_initialise(doc, &ele->base, doc->memoised[hds_FRAMESET], namespace, prefix); - ele->cols_rows_default = cols_rows_default; - return err; } /** @@ -165,72 +157,6 @@ dom_exception dom_html_frame_set_element_set_##attr( \ #define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr) -SIMPLE_SET(rows); -SIMPLE_SET(cols); - -/** - * Get the rows property - * - * \param ele The dom_html_frame_set_element object - * \param rows The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_frame_set_element_get_rows( - dom_html_frame_set_element *ele, - dom_string **rows) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_rows], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_rows], rows); - } +SIMPLE_GET_SET (rows); +SIMPLE_GET_SET (cols); - *rows = ele->cols_rows_default; - if (*rows != NULL) - dom_string_ref(*rows); - - return DOM_NO_ERR; -} - -/** - * Get the cols property - * - * \param ele The dom_html_frame_set_element object - * \param cols The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_frame_set_element_get_cols( - dom_html_frame_set_element *ele, - dom_string **cols) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_cols], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_cols], cols); - } - - *cols = ele->cols_rows_default; - if (*cols != NULL) - dom_string_ref(*cols); - return DOM_NO_ERR; -} diff --git a/src/html/html_frameset_element.h b/src/html/html_frameset_element.h index fd1c255..dd4037a 100644 --- a/src/html/html_frameset_element.h +++ b/src/html/html_frameset_element.h @@ -16,7 +16,6 @@ struct dom_html_frame_set_element { struct dom_html_element base; /**< The base class */ - dom_string *cols_rows_default; }; /* Create a dom_html_frame_set_element object */ diff --git a/src/html/html_iframe_element.c b/src/html/html_iframe_element.c index 0972d56..41a30d9 100644 --- a/src/html/html_iframe_element.c +++ b/src/html/html_iframe_element.c @@ -60,26 +60,9 @@ dom_exception _dom_html_iframe_element_initialise(struct dom_html_document *doc, dom_string *namespace, dom_string *prefix, struct dom_html_iframe_element *ele) { - dom_string *scrolling_default = NULL; - dom_exception err; - err = dom_string_create((const uint8_t *) "auto", SLEN("auto"), &scrolling_default); - if (err != DOM_NO_ERR) - return err; - - - dom_string *frame_border_default = NULL; - err = dom_string_create((const uint8_t *) "1", SLEN("1"), &frame_border_default); - if (err != DOM_NO_ERR) - return err; - - err = _dom_html_element_initialise(doc, &ele->base, + return _dom_html_element_initialise(doc, &ele->base, doc->memoised[hds_IFRAME], namespace, prefix); - - ele->scrolling_default = scrolling_default; - ele->frame_border_default = frame_border_default; - - return err; } /** @@ -180,82 +163,16 @@ SIMPLE_GET_SET(name); SIMPLE_GET_SET(src); SIMPLE_GET_SET(margin_width); SIMPLE_GET_SET(margin_height); -SIMPLE_SET(scrolling); -SIMPLE_SET(frame_border); +SIMPLE_GET_SET(scrolling); +SIMPLE_GET_SET(frame_border); SIMPLE_GET_SET(width); SIMPLE_GET_SET(height); /** - * Get the frame_border property - * - * \param ele The dom_html_iframe_element object - * \param iframe_border The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_iframe_element_get_frame_border( - dom_html_iframe_element *ele, - dom_string **frame_border) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_frame_border], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_frame_border], frame_border); - } - - *frame_border = ele->frame_border_default; - if (*frame_border != NULL) - dom_string_ref(*frame_border); - return DOM_NO_ERR; -} - -/** - * Get the frame_border property - * - * \param ele The dom_html_iframe_element object - * \param scrolling The returned status - * \return DOM_NO_ERR on success, appropriate dom_exception on failure. - */ -dom_exception dom_html_iframe_element_get_scrolling( - dom_html_iframe_element *ele, - dom_string **scrolling) -{ - dom_html_document *doc; - bool has_value = false; - dom_exception err; - - doc = (dom_html_document *) ((dom_node_internal *) ele)->owner; - - err = dom_element_has_attribute(ele, - doc->memoised[hds_scrolling], &has_value); - if(err !=DOM_NO_ERR) - return err; - - if(has_value) { - return dom_element_get_attribute(ele, - doc->memoised[hds_scrolling], scrolling); - } - - *scrolling = ele->scrolling_default; - if (*scrolling != NULL) - dom_string_ref(*scrolling); - return DOM_NO_ERR; -} - -/** - * Get the frame_border property + * Get the content_document property * - * \param ele The dom_html_iframe_element object + * \param ele The dom_html_iframe_element object * \param content_document The returned status * \return DOM_NO_ERR on success, appropriate dom_exception on failure. */ diff --git a/src/html/html_iframe_element.h b/src/html/html_iframe_element.h index dafc9e1..2375adf 100644 --- a/src/html/html_iframe_element.h +++ b/src/html/html_iframe_element.h @@ -16,8 +16,6 @@ struct dom_html_iframe_element { struct dom_html_element base; /**< The base class */ - dom_string *scrolling_default; - dom_string *frame_border_default; }; /* Create a dom_html_iframe_element object */ diff --git a/src/html/html_label_element.c b/src/html/html_label_element.c index 1ffbf71..c3a522f 100644 --- a/src/html/html_label_element.c +++ b/src/html/html_label_element.c @@ -58,8 +58,6 @@ dom_exception _dom_html_label_element_initialise(struct dom_html_document *doc, dom_string *namespace, dom_string *prefix, struct dom_html_label_element *ele) { - ele->form = NULL; - return _dom_html_element_initialise(doc, &ele->base, doc->memoised[hds_LABEL], namespace, prefix); diff --git a/src/html/html_label_element.h b/src/html/html_label_element.h index e28b453..36c817e 100644 --- a/src/html/html_label_element.h +++ b/src/html/html_label_element.h @@ -16,8 +16,6 @@ struct dom_html_label_element { struct dom_html_element base; /**< The base class */ - dom_html_form_element *form; - /**< The form associated with label */ }; /* Create a dom_html_label_element object */ diff --git a/src/html/html_object_element.c b/src/html/html_object_element.c index 7da4567..1568630 100644 --- a/src/html/html_object_element.c +++ b/src/html/html_object_element.c @@ -63,7 +63,6 @@ dom_exception _dom_html_object_element_initialise(struct dom_html_document *doc, dom_string *namespace, dom_string *prefix, struct dom_html_object_element *ele) { - ele->form = NULL; return _dom_html_element_initialise(doc, &ele->base, doc->memoised[hds_OBJECT], namespace, prefix); diff --git a/src/html/html_object_element.h b/src/html/html_object_element.h index 83512d6..5170f2c 100644 --- a/src/html/html_object_element.h +++ b/src/html/html_object_element.h @@ -16,8 +16,6 @@ struct dom_html_object_element { struct dom_html_element base; /**< The base class */ - dom_html_form_element *form; - /**< The form associated with object */ }; /* Create a dom_html_object_element object */ -- cgit v1.2.3