KPN Things Device SDK
senml_jsonstreamingparser.h
Go to the documentation of this file.
1
26#ifndef THINGSML_SENML_JSON_STREAMING_PARSER
27#define THINGSML_SENML_JSON_STREAMING_PARSER
28
29#include "defaults.h"
30#include "senml_jsonlistener.h"
31
32#define STATE_START_DOCUMENT 0
33#define STATE_DONE -1
34#define STATE_IN_ARRAY 1
35#define STATE_IN_OBJECT 2
36#define STATE_END_KEY 3
37#define STATE_AFTER_KEY 4
38#define STATE_IN_STRING 5
39#define STATE_START_ESCAPE 6
40#define STATE_UNICODE 7
41#define STATE_IN_NUMBER 8
42#define STATE_IN_TRUE 9
43#define STATE_IN_FALSE 10
44#define STATE_IN_NULL 11
45#define STATE_AFTER_VALUE 12
46#define STATE_UNICODE_SURROGATE 13
47
48#define STACK_OBJECT 0
49#define STACK_ARRAY 1
50#define STACK_KEY 2
51#define STACK_STRING 3
52
53#define BUFFER_MAX_LENGTH 512
54
59 public:
61 void parse(char c);
62 void setListener(JsonListener *listener);
63 void reset();
64
65 private:
66 int state;
67 int stack[20];
68 int stackPos;
69 JsonListener *myListener;
70
71 // bool doEmitWhitespace = false;
72 // fixed length buffer array to prepare for c code
73 char buffer[BUFFER_MAX_LENGTH];
74 int bufferPos;
75
76 char unicodeEscapeBuffer[10];
77 int unicodeEscapeBufferPos;
78
79 char unicodeBuffer[10];
80 int unicodeBufferPos;
81
82 int characterCounter;
83
84 int unicodeHighSurrogate;
85
86 void increaseBufferPointer();
87
88 void endString();
89
90 void endArray();
91
92 void startValue(char c);
93
94 void startKey();
95
96 void processEscapeCharacters(char c);
97
98 bool isDigit(char c);
99
100 bool isHexCharacter(char c);
101
102 char convertCodepointToCharacter(int num);
103
104 void endUnicodeCharacter(int codepoint);
105
106 void startNumber(char c);
107
108 void startString();
109
110 void startObject();
111
112 void startArray();
113
114 void endNull();
115
116 void endFalse();
117
118 void endTrue();
119
120 void endDocument();
121
122 int convertDecimalBufferToInt(char myArray[], int length);
123
124 void endNumber();
125
126 void endUnicodeSurrogateInterstitial();
127
128 bool doesCharArrayContain(char myArray[], int length, char c);
129
130 int getHexArrayAsDecimal(char hexArray[], int length);
131
132 void processUnicodeCharacter(char c);
133
134 void endObject();
135};
136
137#endif
Definition: senml_jsonlistener.h:34
Definition: senml_jsonstreamingparser.h:58
JsonStreamingParser()
Definition: senml_jsonstreamingparser.cpp:32
void parse(char c)
Definition: senml_jsonstreamingparser.cpp:50
void reset()
Definition: senml_jsonstreamingparser.cpp:38
void setListener(JsonListener *listener)
Definition: senml_jsonstreamingparser.cpp:46
#define BUFFER_MAX_LENGTH
Definition: senml_jsonstreamingparser.h:53