summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-05-06 00:01:48 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-05-06 00:01:48 +0000
commit779e9820b1b8981f9965a4563fe6af641f7da3ea (patch)
treed5d63619f24dc9417785065cfb108283bdcfc9f2
parent6878046a42ead812418d5a73c5347bb5aeeb1795 (diff)
2 new constructors :
lasso_node_new_from_dump() lasso_node_new_from_xmlNode() lasso_node_parse_memory() renamed -> lasso_node_load_from_buffer()
-rw-r--r--lasso/xml/xml.c72
-rw-r--r--lasso/xml/xml.h10
2 files changed, 52 insertions, 30 deletions
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index d5b53fbb..7ce27eb2 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -143,13 +143,13 @@ lasso_node_get_name(LassoNode *node)
}
void
-lasso_node_parse_memory(LassoNode *node,
- const char *buffer)
+lasso_node_load_from_buffer(LassoNode *node,
+ const char *buffer)
{
g_return_if_fail(LASSO_IS_NODE(node));
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- class->parse_memory(node, buffer);
+ class->load_from_buffer(node, buffer);
}
void
@@ -373,7 +373,7 @@ lasso_node_impl_build_query(LassoNode *node)
static LassoNode *
lasso_node_impl_copy(LassoNode *node)
{
- return (lasso_node_new(xmlCopyNode(lasso_node_get_xmlNode(node), 1)));
+ return (lasso_node_new_from_xmlNode(xmlCopyNode(lasso_node_get_xmlNode(node), 1)));
}
static xmlChar *
@@ -477,7 +477,7 @@ lasso_node_impl_get_child(LassoNode *node,
/* while (cur != NULL) { */
/* if(cur->type == XML_ELEMENT_NODE) { */
/* if (xmlStrEqual(cur->name, name)) { */
- /* return (lasso_node_new(cur)); */
+ /* return (lasso_node_new_from_xmlNode(cur)); */
/* } */
/* } */
/* cur = cur->next; */
@@ -494,10 +494,11 @@ lasso_node_impl_get_child(LassoNode *node,
cur = node->private->node;
while (cur != NULL) {
if ((cur->type == XML_ELEMENT_NODE) && xmlStrEqual(cur->name, name)) {
- return (lasso_node_new(cur));
+ return (lasso_node_new_from_xmlNode(cur));
}
if (cur->children != NULL) {
- ret = lasso_node_get_child(lasso_node_new(cur->children), name);
+ ret = lasso_node_get_child(lasso_node_new_from_xmlNode(cur->children),
+ name);
if (ret != NULL) {
return (ret);
}
@@ -520,7 +521,7 @@ lasso_node_impl_get_children(LassoNode *node)
children = g_ptr_array_new();
while (cur != NULL) {
- g_ptr_array_add(children, lasso_node_new(cur));
+ g_ptr_array_add(children, lasso_node_new_from_xmlNode(cur));
cur = cur->next;
}
@@ -543,16 +544,9 @@ lasso_node_impl_get_name(LassoNode *node)
return (node->private->node->name);
}
-/**
- * lasso_node_impl_parse_memory:
- * @node: a LassoNode instance
- * @buffer: a string containing xml
- *
- *
- **/
static void
-lasso_node_impl_parse_memory(LassoNode *node,
- const char *buffer)
+lasso_node_impl_load_from_buffer(LassoNode *node,
+ const char *buffer)
{
xmlDocPtr doc;
xmlNodePtr root;
@@ -668,11 +662,11 @@ lasso_node_impl_soap_envelop(LassoNode *node)
g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- envelope = lasso_node_new(NULL);
+ envelope = lasso_node_new();
lasso_node_set_name(envelope, "Envelope");
lasso_node_set_ns(envelope, lassoSoapEnvHRef, lassoSoapEnvPrefix);
- body = lasso_node_new(NULL);
+ body = lasso_node_new();
lasso_node_set_name(body, "Body");
lasso_node_set_ns(body, lassoSoapEnvHRef, lassoSoapEnvPrefix);
@@ -993,7 +987,7 @@ lasso_node_class_init(LassoNodeClass *class)
class->get_children = lasso_node_impl_get_children;
class->get_content = lasso_node_impl_get_content;
class->get_name = lasso_node_impl_get_name;
- class->parse_memory = lasso_node_impl_parse_memory;
+ class->load_from_buffer = lasso_node_impl_load_from_buffer;
class->rename_prop = lasso_node_impl_rename_prop;
class->serialize = lasso_node_impl_serialize;
class->soap_envelop = lasso_node_impl_soap_envelop;
@@ -1035,15 +1029,41 @@ GType lasso_node_get_type() {
return this_type;
}
-LassoNode* lasso_node_new(xmlNodePtr node) {
+LassoNode*
+lasso_node_new()
+{
+ return (LASSO_NODE(g_object_new(LASSO_TYPE_NODE, NULL)));
+}
+
+LassoNode*
+lasso_node_new_from_dump(xmlChar *buffer)
+{
+ LassoNode *node;
+ xmlDocPtr doc;
+ xmlNodePtr root;
+
+ g_return_val_if_fail (buffer != NULL, NULL);
+
+ node = lasso_node_new();
+ doc = xmlParseMemory(buffer, strlen(buffer));
+ /* get root element of doc and duplicate it */
+ root = xmlCopyNode(xmlDocGetRootElement(doc), 1);
+ lasso_node_set_xmlNode(node, root);
+ /* free doc */
+ xmlFreeDoc(doc);
+
+ return (node);
+}
+
+LassoNode*
+lasso_node_new_from_xmlNode(xmlNodePtr node)
+{
LassoNode *lasso_node;
- lasso_node = LASSO_NODE(g_object_new(LASSO_TYPE_NODE, NULL));
+ g_return_val_if_fail (node != NULL, NULL);
- if (node != NULL) {
- xmlFreeNode(lasso_node->private->node);
- lasso_node->private->node = node;
- }
+ lasso_node = lasso_node_new();
+ lasso_node_set_xmlNode(lasso_node, node);
return (lasso_node);
}
diff --git a/lasso/xml/xml.h b/lasso/xml/xml.h
index 86df27c0..df26054c 100644
--- a/lasso/xml/xml.h
+++ b/lasso/xml/xml.h
@@ -74,9 +74,9 @@ struct _LassoNodeClass {
const xmlChar *);
GPtrArray* (* get_children) (LassoNode *);
xmlChar * (* get_content) (LassoNode *);
- void (* parse_memory) (LassoNode *node,
- const char *buffer);
const xmlChar* (* get_name) (LassoNode *);
+ void (* load_from_buffer) (LassoNode *node,
+ const char *buffer);
void (* rename_prop) (LassoNode *node,
const xmlChar *old_name,
const xmlChar *new_name);
@@ -119,7 +119,9 @@ typedef enum {
LASSO_EXPORT GType lasso_node_get_type (void);
-LASSO_EXPORT LassoNode* lasso_node_new (xmlNodePtr node);
+LASSO_EXPORT LassoNode* lasso_node_new (void);
+LASSO_EXPORT LassoNode* lasso_node_new_from_dump (xmlChar *buffer);
+LASSO_EXPORT LassoNode* lasso_node_new_from_xmlNode (xmlNodePtr node);
LASSO_EXPORT GString* lasso_node_build_query (LassoNode *node);
@@ -146,7 +148,7 @@ LASSO_EXPORT xmlChar* lasso_node_get_content (LassoNode *node);
LASSO_EXPORT const xmlChar* lasso_node_get_name (LassoNode *node);
-LASSO_EXPORT void lasso_node_parse_memory (LassoNode *node,
+LASSO_EXPORT void lasso_node_load_from_buffer (LassoNode *node,
const char *buffer);
LASSO_EXPORT void lasso_node_rename_prop (LassoNode *node,