Imported Upstream version 0.7.2
[platform/upstream/libsolv.git] / ext / solv_xmlparser.h
1
2 struct solv_xmlparser_element {
3   int fromstate;
4   char *element;
5   int tostate;
6   int docontent;
7 };
8
9 struct solv_xmlparser {
10   void *userdata;
11   char *errstr;
12   unsigned int line;
13   unsigned int column;
14
15   int state;
16   int docontent;
17
18   Queue elementq;
19   int unknowncnt;
20
21   char *content;
22   int lcontent;         /* current content length */
23   int acontent;         /* allocated content length */
24
25   struct solv_xmlparser_element *elements;
26   int nelements;
27
28   void (*startelement)(struct solv_xmlparser *xmlp, int state, const char *name, const char **atts);
29   void (*endelement)(struct solv_xmlparser *xmlp, int state, char *content);
30
31   Id *elementhelper;
32   void *parser;
33 };
34
35 #define SOLV_XMLPARSER_OK       0
36 #define SOLV_XMLPARSER_ERROR    -1
37
38 static inline const char *
39 solv_xmlparser_find_attr(const char *txt, const char **atts)
40 {
41   for (; *atts; atts += 2)
42     if (!strcmp(*atts, txt))
43       return atts[1];
44   return 0;
45 }
46
47 extern void solv_xmlparser_init(struct solv_xmlparser *xmlp, struct solv_xmlparser_element *elements, void *userdata,
48     void (*startelement)(struct solv_xmlparser *xmlp, int state, const char *name, const char **atts),
49     void (*endelement)(struct solv_xmlparser *xmlp, int state, char *content));
50
51 extern void solv_xmlparser_free(struct solv_xmlparser *xmlp);
52 extern int solv_xmlparser_parse(struct solv_xmlparser *xmlp, FILE *fp);
53 unsigned int solv_xmlparser_lineno(struct solv_xmlparser *xmlp);
54 char *solv_xmlparser_contentspace(struct solv_xmlparser *xmlp, int l);
55
56