/* Copyright (C) 2009 Dale Whittaker This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. See the file COPYING for the full license text. */ #ifndef __FEED_PARSE_H__ #define __FEED_PARSE_H__ #include #if HAVE_CONFIG_H #include #endif #include #include #include G_BEGIN_DECLS #define FEED_PARSE_ERROR g_quark_from_string("FEED_PARSE_ERROR") typedef enum { FEED_PARSE_ERROR_PARSE, FEED_PARSE_ERROR_INVALID_FORMAT, FEED_PARSE_ERROR_INVALID_VERSION, FEED_PARSE_ERROR_MISSING_ELEMENT } FeedBarError; typedef struct _FeedParser { xmlDocPtr doc; /* The XML document */ xmlNodePtr node; /* The XML node at a specific point */ KatzeItem* item; GError** error; gboolean (*isvalid) (struct _FeedParser* fparser); gboolean (*update) (struct _FeedParser* fparser); void (*preparse) (struct _FeedParser* fparser); void (*parse) (struct _FeedParser* fparser); void (*postparse) (struct _FeedParser* fparser); } FeedParser; #define feed_parser_set_error(fparser, err, msg) \ *(fparser)->error = g_error_new ( \ FEED_PARSE_ERROR, (err), (msg)) gchar* feed_get_element_string (FeedParser* fparser); gchar* feed_remove_markup (gchar* markup); gchar* feed_get_element_markup (FeedParser* fparser); gint64 feed_get_element_date (FeedParser* fparser); KatzeItem* feed_item_exists (KatzeArray* array, KatzeItem* item); void feed_parse_node (FeedParser* fparser); gboolean parse_feed (gchar* data, gint64 length, GSList* parsers, KatzeArray* array, GError** error); G_END_DECLS #endif /* __FEED_PARSE_H__ */