From: Thadeu Lima de Souza Cascardo Date: Sat, 9 Aug 2008 07:45:06 +0000 (-0300) Subject: AtomEntry is now an opaque structure and may be read from a file X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fatompub.git;a=commitdiff_plain;h=f161e8fb8b08c1b4e00ec9d52d952bb4caef2beb AtomEntry is now an opaque structure and may be read from a file --- diff --git a/src/atom.c b/src/atom.c index 0c98cee..e458ce9 100644 --- a/src/atom.c +++ b/src/atom.c @@ -17,15 +17,23 @@ */ +#include + +#include #include +#include #define ATOM_NAMESPACE "http://www.w3.org/2005/Atom" -typedef xmlDocPtr AtomEntry; +struct _atom_entry +{ + xmlDocPtr doc; +}; -AtomEntry +AtomEntry * atom_entry_new_with_prefix (char *prefix) { + AtomEntry *entry; xmlDocPtr doc; xmlNsPtr ns; xmlNodePtr node; @@ -33,36 +41,49 @@ atom_entry_new_with_prefix (char *prefix) node = xmlNewNode (ns, "entry"); xmlNewNs (node, ATOM_NAMESPACE, prefix); xmlDocSetRootElement (doc, node); - return doc; + entry = g_slice_new (AtomEntry); + entry->doc = doc; + return entry; } -AtomEntry +AtomEntry * atom_entry_new (void) { return atom_entry_new_with_prefix (NULL); } +AtomEntry * +atom_entry_new_data_len (char *data, size_t len) +{ + AtomEntry *entry; + entry = g_slice_new (AtomEntry); + entry->doc = xmlParseMemory (data, len); + return entry; +} + void -atom_entry_delete (AtomEntry entry) +atom_entry_delete (AtomEntry *entry) { - xmlFreeDoc (entry); + if (entry->doc) + xmlFreeDoc (entry->doc); + g_slice_free (AtomEntry entry); } char * -atom_entry_string (AtomEntry entry) +atom_entry_string (AtomEntry *entry) { char *buffer; int size; - xmlDocDumpMemory (entry, &buffer, &size); + xmlDocDumpMemory (entry->doc, &buffer, &size); return buffer; } size_t -atom_entry_len (AtomEntry entry) +atom_entry_len (AtomEntry *entry) { char *buffer; int size; - xmlDocDumpMemory (entry, &buffer, &size); + xmlDocDumpMemory (entry->doc, &buffer, &size); xmlFree (buffer); return size; }