Skip to content

Commit f0c108b

Browse files
committed
Remove all switch
1 parent 6723e32 commit f0c108b

File tree

1 file changed

+27
-43
lines changed

1 file changed

+27
-43
lines changed

example/lookaheadparser/lookaheadparser.cpp

Lines changed: 27 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class LookaheadParserHandler {
5858

5959
protected:
6060
enum LookaheadParsingState {
61+
kInit,
6162
kError,
6263
kHasNull,
6364
kHasBool,
@@ -78,7 +79,7 @@ class LookaheadParserHandler {
7879
static const int parseFlags = kParseDefaultFlags | kParseInsituFlag;
7980
};
8081

81-
LookaheadParserHandler::LookaheadParserHandler(char* str) : v_(), ss_(str) {
82+
LookaheadParserHandler::LookaheadParserHandler(char* str) : v_(), st_(kInit), r_(), ss_(str) {
8283
r_.IterativeParseInit();
8384
ParseNext();
8485
}
@@ -145,12 +146,12 @@ const char* LookaheadParser::NextObjectKey() {
145146
return result;
146147
}
147148

148-
if (st_ == kExitingObject) {
149-
ParseNext();
149+
if (st_ != kExitingObject) {
150+
st_ = kError;
150151
return 0;
151152
}
152153

153-
st_ = kError;
154+
ParseNext();
154155
return 0;
155156
}
156157

@@ -180,7 +181,7 @@ int LookaheadParser::GetInt() {
180181
}
181182

182183
double LookaheadParser::GetDouble() {
183-
if (st_ != kHasNumber || !v_.IsNumber()) {
184+
if (st_ != kHasNumber) {
184185
st_ = kError;
185186
return 0.;
186187
}
@@ -223,27 +224,16 @@ const char* LookaheadParser::GetString() {
223224

224225
void LookaheadParser::SkipOut(int depth) {
225226
do {
226-
switch (st_) {
227-
case kEnteringArray:
228-
case kEnteringObject:
229-
++depth;
230-
break;
231-
232-
case kExitingArray:
233-
case kExitingObject:
234-
--depth;
235-
break;
236-
237-
case kError:
238-
return;
239-
240-
case kHasNull:
241-
case kHasBool:
242-
case kHasNumber:
243-
case kHasString:
244-
case kHasKey:
245-
break;
227+
if (st_ == kEnteringArray || st_ == kEnteringObject) {
228+
++depth;
246229
}
230+
else if (st_ == kExitingArray || st_ == kExitingObject) {
231+
--depth;
232+
}
233+
else if (st_ == kError) {
234+
return;
235+
}
236+
247237
ParseNext();
248238
}
249239
while (depth > 0);
@@ -270,25 +260,19 @@ Value* LookaheadParser::PeekValue() {
270260
}
271261

272262
int LookaheadParser::PeekType() {
273-
switch (st_) {
274-
case kHasNull:
275-
case kHasBool:
276-
case kHasNumber:
277-
case kHasString:
278-
case kHasKey:
279-
return v_.GetType();
280-
281-
case kEnteringArray:
282-
return kArrayType;
283-
284-
case kEnteringObject:
285-
return kObjectType;
286-
287-
case kExitingArray:
288-
case kExitingObject:
289-
case kError:
290-
return -1;
263+
if (st_ >= kHasNull && st_ <= kHasKey) {
264+
return v_.GetType();
265+
}
266+
267+
if (st_ == kEnteringArray) {
268+
return kArrayType;
291269
}
270+
271+
if (st_ == kEnteringObject) {
272+
return kObjectType;
273+
}
274+
275+
return -1;
292276
}
293277

294278
//-------------------------------------------------------------------------

0 commit comments

Comments
 (0)