| 1037 | } |
| 1038 | |
| 1039 | static void emit_value(SB *out, const JsonNode *node) |
| 1040 | { |
| 1041 | ASSERT(tag_is_valid(node->tag)); |
| 1042 | switch (node->tag) |
| 1043 | { |
| 1044 | case JSON_NULL: |
| 1045 | sb_puts(out, "null"); |
| 1046 | break; |
| 1047 | case JSON_BOOL: |
| 1048 | sb_puts(out, node->bool_ ? "true" : "false"); |
| 1049 | break; |
| 1050 | case JSON_STRING: |
| 1051 | emit_string(out, node->string_); |
| 1052 | break; |
| 1053 | case JSON_NUMBER: |
| 1054 | emit_number(out, node->number_); |
| 1055 | break; |
| 1056 | case JSON_ARRAY: |
| 1057 | emit_array(out, node); |
| 1058 | break; |
| 1059 | case JSON_OBJECT: |
| 1060 | emit_object(out, node); |
| 1061 | break; |
| 1062 | default: |
| 1063 | die("invalid JSON tag type"); |
| 1064 | } |
| 1065 | } |
| 1066 | |
| 1067 | void emit_value_indented(SB *out, const JsonNode *node, const char *space, int indent_level) |
| 1068 | { |
no test coverage detected