| 46 | } |
| 47 | |
| 48 | static const char *skip_value(const char *json) |
| 49 | { |
| 50 | CE_ENSURE(NULL != json); |
| 51 | |
| 52 | switch (*json) { |
| 53 | case '"': |
| 54 | json = skip_string(json); |
| 55 | break; |
| 56 | |
| 57 | case '[': |
| 58 | case '{': { |
| 59 | u32 num = 0; |
| 60 | char aa = *json; |
| 61 | char bb = aa + 2; // Matching brace/bracket. |
| 62 | |
| 63 | while (*json != '\0') { |
| 64 | if (*json == aa) { |
| 65 | ++json; |
| 66 | ++num; |
| 67 | } else if (*json == bb) { |
| 68 | ++json; |
| 69 | if (--num == 0) |
| 70 | break; |
| 71 | } else if (*json == '"') { |
| 72 | json = skip_string(json); |
| 73 | } else { |
| 74 | ++json; |
| 75 | } |
| 76 | } |
| 77 | break; |
| 78 | } |
| 79 | default: for (; *json != ',' && *json != '}' && *json != ']'; ++json); break; |
| 80 | } |
| 81 | |
| 82 | return json; |
| 83 | } |
| 84 | |
| 85 | JsonValueType::Enum type(const char *json) |
| 86 | { |
no test coverage detected