void arv_dom_character_data_set_data (ArvDomCharacterData* self, const char * value) { g_return_if_fail (ARV_IS_DOM_CHARACTER_DATA (self)); g_return_if_fail (value != NULL); g_free (self->data); self->data = g_strdup (value); arv_log_dom ("[ArvDomCharacterData::set_data] Value = '%s'", value); arv_dom_node_changed (ARV_DOM_NODE (self)); }
ArvDomNode * arv_dom_node_append_child (ArvDomNode* self, ArvDomNode* new_child) { ArvDomNodeClass *node_class; if (new_child == NULL) return NULL; g_return_val_if_fail (ARV_IS_DOM_NODE (new_child), NULL); if (!ARV_IS_DOM_NODE (self)) { g_critical ("%s: self is not a ArvDomNode", G_STRFUNC); g_object_unref (new_child); return NULL; } if (new_child->parent_node != NULL) arv_dom_node_remove_child (self, new_child); if (!ARV_DOM_NODE_GET_CLASS (self)->can_append_child (self, new_child)) { arv_log_dom ("[ArvDomNode::append_child] Can't append '%s' to '%s'", arv_dom_node_get_node_name (new_child), arv_dom_node_get_node_name (self)); g_object_unref (new_child); return NULL; } if (self->first_child == NULL) self->first_child = new_child; if (self->last_child != NULL) self->last_child->next_sibling = new_child; new_child->parent_node = self; new_child->next_sibling = NULL; new_child->previous_sibling = self->last_child; self->last_child = new_child; node_class = ARV_DOM_NODE_GET_CLASS (self); if (node_class->post_new_child) node_class->post_new_child (self, new_child); arv_dom_node_changed (self); return new_child; }
ArvDomNode* arv_dom_node_insert_before (ArvDomNode* self, ArvDomNode* new_child, ArvDomNode* ref_child) { ArvDomNodeClass *node_class; if (ref_child == NULL) arv_dom_node_append_child (self, new_child); g_return_val_if_fail (ARV_IS_DOM_NODE (new_child), NULL); if (new_child->parent_node != NULL) arv_dom_node_remove_child (self, new_child); if (!ARV_IS_DOM_NODE (self)) { g_critical ("%s: self is not a ArvDomNode", G_STRFUNC); g_object_unref (new_child); return NULL; } if (!ARV_IS_DOM_NODE (ref_child)) { g_critical ("%s: ref_child is not a ArvDomNode", G_STRFUNC); g_object_unref (new_child); return NULL; } if (ref_child->parent_node != self) { arv_debug_dom ("[ArvDomNode::insert_before] Ref child '%s' doesn't belong to '%s'", arv_dom_node_get_node_name (ref_child), arv_dom_node_get_node_name (self)); g_object_unref (new_child); return NULL; } if (!ARV_DOM_NODE_GET_CLASS (self)->can_append_child (self, new_child)) { arv_log_dom ("[ArvDomNode::insert_before] Can't append '%s' to '%s'", arv_dom_node_get_node_name (new_child), arv_dom_node_get_node_name (self)); g_object_unref (new_child); return NULL; } new_child->parent_node = self; new_child->next_sibling = ref_child; new_child->previous_sibling = ref_child->previous_sibling; if (ref_child->previous_sibling == NULL) self->first_child = new_child; else ref_child->previous_sibling->next_sibling = new_child; ref_child->previous_sibling = new_child; node_class = ARV_DOM_NODE_GET_CLASS (self); if (node_class->post_new_child) node_class->post_new_child (self, new_child); arv_dom_node_changed (self); return new_child; }