Added AtomResource as a generalization for entries and feeds
[cascardo/atompub.git] / atom / resource.c
1 /*
2  *  Copyright (C) 2008  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License along
15  *  with this program; if not, write to the Free Software Foundation, Inc.,
16  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18
19
20 #include <atompub/atom.h>
21
22 #include <glib.h>
23
24 struct _atom_resource
25 {
26   char *str;
27   size_t len;
28 };
29
30 AtomResource *
31 atom_resource_new_from_feed (AtomFeed *feed)
32 {
33   AtomResource *res;
34   res = g_slice_new (AtomResource);
35   atom_feed_string (feed, &(res->str), &(res->len));
36   return res;
37 }
38
39 AtomResource *
40 atom_resource_new_from_entry (AtomEntry *entry)
41 {
42   AtomResource *res;
43   res = g_slice_new (AtomResource);
44   atom_entry_string (entry, &(res->str), &(res->len));
45   return res;
46 }
47
48 void
49 atom_resource_delete (AtomResource *res)
50 {
51   if (res->str)
52     g_free (res->str);
53   g_slice_free (AtomResource, res);
54 }
55
56 void
57 atom_resource_string (AtomResource *res, char **buffer, size_t *len)
58 {
59   if (buffer)
60     *buffer = g_strdup (res->str);
61   if (len)
62     *len = res->len;
63 }