summaryrefslogtreecommitdiff
path: root/src/html/html_tablesection_element.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/html/html_tablesection_element.c')
-rw-r--r--src/html/html_tablesection_element.c77
1 files changed, 22 insertions, 55 deletions
diff --git a/src/html/html_tablesection_element.c b/src/html/html_tablesection_element.c
index 7468d01..b35cfb4 100644
--- a/src/html/html_tablesection_element.c
+++ b/src/html/html_tablesection_element.c
@@ -12,6 +12,7 @@
#include "html/html_document.h"
#include "html/html_tablesection_element.h"
+#include "html/html_tablerow_element.h"
#include "html/html_collection.h"
#include "html/html_element.h"
@@ -169,8 +170,7 @@ bool table_section_callback(struct dom_node_internal *node, void *ctx)
{
if(node->type == DOM_ELEMENT_NODE &&
dom_string_caseless_isequal(node->name,
- ((dom_html_document *)ctx)->memoised[hds_TR]))
- {
+ ((dom_html_document *)ctx)->memoised[hds_TR])) {
return true;
}
return false;
@@ -179,7 +179,7 @@ bool table_section_callback(struct dom_node_internal *node, void *ctx)
/**
* Get the rows collection
*
- * \param element The dom_html_section_element object
+ * \param element The dom_html_table_section_element object
* \param rows The Status
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
@@ -188,21 +188,20 @@ dom_exception dom_html_table_section_element_get_rows(
dom_html_collection **rows)
{
dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
- _dom_html_collection_create(doc, (dom_node_internal *)element,
+ return _dom_html_collection_create(doc, (dom_node_internal *)element,
table_section_callback, (void *)doc, rows);
- return DOM_NO_ERR;
}
/**
* Insert Row before the given Index
*
- * \param element The dom_html_section_element object
+ * \param element The dom_html_table_section_element object
* \param index The Index of the Row node to be inserted
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception dom_html_table_section_element_insert_row(
dom_html_table_section_element *element,
- int32_t index, dom_html_element **newRow) {
+ int32_t index, dom_html_element **new_row) {
dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
dom_node *node; /*< The node at the (index)th position*/
@@ -210,10 +209,10 @@ dom_exception dom_html_table_section_element_insert_row(
dom_html_collection *rows; /*< The collection of rows in input table_section_element*/
uint32_t len; /*< The size of the row collection */
dom_exception exp; /*< Variable for getting the exceptions*/
- exp = _dom_html_element_create(doc, doc->memoised[hds_TR],
+ exp = _dom_html_table_row_element_create(doc,
((dom_node_internal *)element)->namespace,
((dom_node_internal *)element)->prefix,
- newRow);
+ (dom_html_table_row_element **)new_row);
if(exp != DOM_NO_ERR)
return exp;
@@ -225,47 +224,26 @@ dom_exception dom_html_table_section_element_insert_row(
if(exp != DOM_NO_ERR)
return exp;
- if(index < -1 || (uint32_t)index > len) {
+ if(index < -1 || index > (int32_t)len) {
/* Check for index validity */
return DOM_INDEX_SIZE_ERR;
- } else if((index == -1 || (uint32_t)index == len)
- &&len != 0) {
- dom_html_collection_item(rows,
- len-1, &node);
-
- dom_node_internal *internal_node = (dom_node_internal *)node; /*< The dom_node_internal row object at the (len-1)th position*/
-
- ((dom_node_internal *) *newRow)->next = internal_node->next;
- ((dom_node_internal *) *newRow)->previous = internal_node;
- internal_node->next = (dom_node_internal *)*newRow;
- } else if(len != 0) {
+ } else if(index == -1 || index == (int32_t)len) {
+ return _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*new_row,
+ (dom_node_internal **)new_row);
+ } else {
dom_html_collection_item(rows,
index, &node);
-
- dom_node_internal *internal_node = (dom_node_internal *)node; /*< The dom_node_internal row object at the (index)th position*/
-
- ((dom_node_internal *) *newRow)->next = internal_node;
- ((dom_node_internal *) *newRow)->previous = internal_node->previous;
- if(internal_node->previous != NULL) {
- (internal_node->previous)->next = (dom_node_internal *)*newRow;
- internal_node->previous = (dom_node_internal *)*newRow;
- }
+ return _dom_node_insert_before((dom_node_internal *)element,
+ (dom_node_internal *)*new_row, (dom_node_internal *)node,
+ (dom_node_internal **)new_row);
}
-
- /*Adjust parent's pointers*/
- ((dom_node_internal *) *newRow)->parent = (dom_node_internal *)element;
- if(index == 0)
- ((dom_node_internal *)element)->first_child = (dom_node_internal *)*newRow;
- if((uint32_t)index == len)
- ((dom_node_internal *)element)->last_child = (dom_node_internal *)*newRow;
-
- return DOM_NO_ERR;
}
/**
* Delete Row at given Index
*
- * \param element The dom_html_section_element object
+ * \param element The dom_html_table_section_element object
* \param index The Index of the Row node to be deleted
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
@@ -289,7 +267,7 @@ dom_exception dom_html_table_section_element_delete_row(
return exp;
}
- if(index < -1 || (uint32_t)index >= len) {
+ if(index < -1 || index >= (int32_t)len) {
/* Check for index validity */
return DOM_INDEX_SIZE_ERR;
} else if(index == -1) {
@@ -299,20 +277,9 @@ dom_exception dom_html_table_section_element_delete_row(
exp = dom_html_collection_item(rows,
index, &node);
}
- if(exp != DOM_NO_ERR)
- return exp;
-
- dom_node_internal *internal_node = (dom_node_internal *)node;
-
- /*Fixing the sibling pointers*/
- if(internal_node->previous != NULL) {
- (internal_node->previous)->next = internal_node->next;
- }
- if(internal_node->next != NULL) {
- (internal_node->next)->previous = internal_node->previous;
- }
-
- _dom_html_element_destroy(internal_node);
+ exp = _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)node,
+ (dom_node_internal **)&node);
return DOM_NO_ERR;
}