struct _atom_backend
{
- Atom * (*retrieve_resource) (AtomCtx *, IRI *);
+ AtomEntry * (*retrieve_entry) (AtomCtx *, IRI *);
+ void (*enumerate_entries) (AtomCtx *, AtomEntry ***, size_t *);
};
AtomBackend *
{
AtomBackend *backend;
backend = g_slice_new (AtomBackend);
- backend->retrieve_resource = NULL;
+ backend->retrieve_entry = NULL;
+ backend->enumerate_entries = NULL;
return backend;
}
}
void
-atom_backend_retrieve_resource_set (AtomBackend *backend,
- Atom *retrieve_resource (AtomCtx *,
- IRI *))
+atom_backend_retrieve_entry_set (AtomBackend *backend,
+ AtomEntry *retrieve_entry (AtomCtx *,
+ IRI *))
{
- backend->retrieve_resource = retrieve_resource;
+ backend->retrieve_entry = retrieve_entry;
}
-Atom *
-atom_retrieve_resource (AtomCtx *ctx, IRI *iri)
+void
+atom_backend_enumerate_entries_set (AtomBackend *backend,
+ void enumerate_entries (AtomCtx *,
+ AtomEntry ***, size_t*))
+{
+ backend->enumerate_entries = enumerate_entries;
+}
+
+AtomEntry *
+atom_retrieve_entry (AtomCtx *ctx, IRI *iri)
{
AtomBackend *backend;
backend = atom_backend (ctx);
- if (backend && backend->retrieve_resource)
- return backend->retrieve_resource (ctx, iri);
+ if (backend && backend->retrieve_entry)
+ return backend->retrieve_entry (ctx, iri);
return NULL;
}
+
+void
+atom_backend_enumerate_entries (AtomCtx *ctx, AtomEntry *** entries, size_t *len)
+{
+ AtomBackend *backend;
+ backend = atom_backend (ctx);
+ if (backend && backend->enumerate_entries)
+ {
+ backend->enumerate_entries (ctx, entries, len);
+ return;
+ }
+}
+
+AtomFeed *
+atom_retrieve_feed (AtomCtx *ctx)
+{
+ AtomFeed *feed;
+ AtomEntry **entries;
+ size_t len;
+ atom_backend_enumerate_entries (ctx, &entries, &len);
+ feed = atom_feed_new ();
+ atom_feed_entry_append_array (feed, entries, len);
+ return feed;
+}