/*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*
* 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.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see .
*
* Authors: Michael Zucchi
*/
/* WARNING
*
* DO NOT USE THIS CODE OUTSIDE OF CAMEL
*
* IT IS SUBJECT TO CHANGE OR MAY VANISH AT ANY TIME
*/
#if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
#error "Only can be included directly."
#endif
#ifndef CAMEL_HTML_PARSER_H
#define CAMEL_HTML_PARSER_H
#include
/* Standard GObject macros */
#define CAMEL_TYPE_HTML_PARSER \
(camel_html_parser_get_type ())
#define CAMEL_HTML_PARSER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), CAMEL_TYPE_HTML_PARSER, CamelHTMLParser))
#define CAMEL_HTML_PARSER_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
((cls), CAMEL_TYPE_HTML_PARSER, CamelHTMLParserClass))
#define CAMEL_IS_HTML_PARSER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), CAMEL_TYPE_HTML_PARSER))
#define CAMEL_IS_HTML_PARSER_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), CAMEL_TYPE_HTML_PARSER))
#define CAMEL_HTML_PARSER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS \
((obj), CAMEL_TYPE_HTML_PARSER, CamelHTMLParserClass))
G_BEGIN_DECLS
typedef struct _CamelHTMLParser CamelHTMLParser;
typedef struct _CamelHTMLParserClass CamelHTMLParserClass;
typedef struct _CamelHTMLParserPrivate CamelHTMLParserPrivate;
/* Parser/tokeniser states */
typedef enum _camel_html_parser_t {
CAMEL_HTML_PARSER_DATA, /* raw data */
CAMEL_HTML_PARSER_ENT, /* entity in data */
CAMEL_HTML_PARSER_ELEMENT, /* element (tag + attributes scanned) */
CAMEL_HTML_PARSER_TAG, /* tag */
CAMEL_HTML_PARSER_DTDENT, /* dtd entity? */
CAMEL_HTML_PARSER_COMMENT0, /* start of comment */
CAMEL_HTML_PARSER_COMMENT, /* body of comment */
CAMEL_HTML_PARSER_ATTR0, /* start of attribute */
CAMEL_HTML_PARSER_ATTR, /* attribute */
CAMEL_HTML_PARSER_VAL0, /* start of value */
CAMEL_HTML_PARSER_VAL, /* value */
CAMEL_HTML_PARSER_VAL_ENT, /* entity in value */
CAMEL_HTML_PARSER_EOD, /* end of current data */
CAMEL_HTML_PARSER_EOF /* end of file */
} camel_html_parser_t;
struct _CamelHTMLParser {
GObject parent;
CamelHTMLParserPrivate *priv;
};
struct _CamelHTMLParserClass {
GObjectClass parent_class;
};
GType camel_html_parser_get_type (void);
CamelHTMLParser *camel_html_parser_new (void);
void camel_html_parser_set_data (CamelHTMLParser *hp, const gchar *start, gint len, gint last);
camel_html_parser_t camel_html_parser_step (CamelHTMLParser *hp, const gchar **datap, gint *lenp);
const gchar *camel_html_parser_left (CamelHTMLParser *hp, gint *lenp);
const gchar *camel_html_parser_tag (CamelHTMLParser *hp);
const gchar *camel_html_parser_attr (CamelHTMLParser *hp, const gchar *name);
const GPtrArray *camel_html_parser_attr_list (CamelHTMLParser *hp, const GPtrArray **values);
G_END_DECLS
#endif /* CAMEL_HTML_PARSER_H */