Imported Upstream version 0.7.5
[platform/upstream/libsolv.git] / ext / solv_jsonparser.h
1 /*
2  * Copyright (c) 2018, SUSE LLC
3  *
4  * This program is licensed under the BSD license, read LICENSE.BSD
5  * for further information
6  */
7
8 #ifndef SOLV_JSONPARSER_H
9 #define SOLV_JSONPARSER_H
10
11 #include "queue.h"
12
13 struct solv_jsonparser {
14   FILE *fp;
15   int line;
16   int depth;
17
18   char *key;
19   size_t keylen;
20   char *value;
21   size_t valuelen;
22
23   int state;            /* START, END, OBJECT, ARRAY */
24   Queue stateq;
25   int nextc;
26   int nextline;
27   char *space;
28   size_t nspace;
29   size_t aspace;
30 };
31
32 #define JP_ERROR        -1
33 #define JP_END          0
34 #define JP_START        1
35 #define JP_STRING       2
36 #define JP_NUMBER       3
37 #define JP_BOOL         4
38 #define JP_NULL         5
39 #define JP_OBJECT       6
40 #define JP_OBJECT_END   7
41 #define JP_ARRAY        8
42 #define JP_ARRAY_END    9
43
44 void jsonparser_init(struct solv_jsonparser *jp, FILE *fp);
45 void jsonparser_free(struct solv_jsonparser *jp);
46 int jsonparser_parse(struct solv_jsonparser *jp);
47 int jsonparser_skip(struct solv_jsonparser *jp, int type);
48
49 #endif /* SOLV_JSONPARSER_H */