*/
+#include <atompub/atom.h>
+
+#include <glib.h>
#include <libxml/tree.h>
+#include <libxml/parser.h>
#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;
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;
}