-
Notifications
You must be signed in to change notification settings - Fork 0
/
parserX.h
55 lines (44 loc) · 1.6 KB
/
parserX.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// parserX.h
#pragma once
#define JSMN_HEADER
#include "jsmn.h"
#include "database.h"
#ifdef __cplusplus
extern "C" {
#endif
// ########################################## macros ###############################################
// ######################################## enumerations ###########################################
// ############################################ structures #########################################
typedef struct {
const char * pcBuf; // JSON source buffer
size_t szBuf; // source buffer size
jsmn_parser sParser; // control structure
jsmntok_t * psT0; // jsmntok_t array allocated memory
jsmntok_t * psTx; // Current token being processed
int NumTok; // number of tokens parsed
int CurTok; // index of current token being processed
void * pvArg;
} parse_hdlr_t;
typedef struct {
char * pToken;
int (* pHdlr)(parse_hdlr_t *);
} ph_list_t;
typedef struct ph_entry_t {
const char * pcKey;
px_t pxVar;
cvi_e cvI;
} ph_entry_t;
typedef struct ph_entries_t {
u8_t Count;
ph_entry_t Entry[];
} ph_entries_t;
// ####################################### global functions ########################################
int xJsonParse(parse_hdlr_t * psPH);
int xJsonFindToken(parse_hdlr_t * psPH, const char * pKey, int Key);
int xJsonFindKeyValue(parse_hdlr_t * psPH, const char * pK, const char * pV);
int xJsonFindKeyValue(parse_hdlr_t * psPH, const char * pK, const char * pV);
int xJsonParseEntry(parse_hdlr_t * psPH, ph_entry_t * psEntry);
void xJsonPrintCurTok(parse_hdlr_t * psPH, const char * pLabel);
#ifdef __cplusplus
}
#endif