summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/html/html_frame_element.c90
-rw-r--r--src/html/html_frame_element.h2
-rw-r--r--src/html/html_frameset_element.c80
-rw-r--r--src/html/html_frameset_element.h1
-rw-r--r--src/html/html_iframe_element.c93
-rw-r--r--src/html/html_iframe_element.h2
-rw-r--r--src/html/html_label_element.c2
-rw-r--r--src/html/html_label_element.h2
-rw-r--r--src/html/html_object_element.c1
-rw-r--r--src/html/html_object_element.h2
-rw-r--r--src/html/html_tablecell_element.c71
-rw-r--r--src/html/html_tablecell_element.h2
-rw-r--r--src/html/html_tablerow_element.c69
13 files changed, 97 insertions, 320 deletions
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 */
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 */
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);
}
}