| 2014 | |
| 2015 | |
| 2016 | static enum json_types smart_read_value(json_engine_t *je, |
| 2017 | const char **value, int *value_len) |
| 2018 | { |
| 2019 | if (json_read_value(je)) |
| 2020 | goto err_return; |
| 2021 | |
| 2022 | *value= (char *) je->value; |
| 2023 | |
| 2024 | if (json_value_scalar(je)) |
| 2025 | *value_len= je->value_len; |
| 2026 | else |
| 2027 | { |
| 2028 | if (json_skip_level(je)) |
| 2029 | goto err_return; |
| 2030 | |
| 2031 | *value_len= (int) ((char *) je->s.c_str - *value); |
| 2032 | } |
| 2033 | |
| 2034 | compile_time_assert((enum json_types)JSON_VALUE_OBJECT == JSV_OBJECT); |
| 2035 | compile_time_assert((enum json_types)JSON_VALUE_ARRAY == JSV_ARRAY); |
| 2036 | compile_time_assert((enum json_types)JSON_VALUE_STRING == JSV_STRING); |
| 2037 | compile_time_assert((enum json_types)JSON_VALUE_NUMBER == JSV_NUMBER); |
| 2038 | compile_time_assert((enum json_types)JSON_VALUE_TRUE == JSV_TRUE); |
| 2039 | compile_time_assert((enum json_types)JSON_VALUE_FALSE == JSV_FALSE); |
| 2040 | compile_time_assert((enum json_types)JSON_VALUE_NULL == JSV_NULL); |
| 2041 | |
| 2042 | return (enum json_types) je->value_type; |
| 2043 | |
| 2044 | err_return: |
| 2045 | return JSV_BAD_JSON; |
| 2046 | } |
| 2047 | |
| 2048 | |
| 2049 | enum json_types json_type_int(json_engine_t *tmp, |
no test coverage detected