DEFOLD
| 472 | |
| 473 | // DEFOLD |
| 474 | static void json_initialize_config(lua_State *l, int options_index, json_config_t* cfg, |
| 475 | int encode_keep_buffer, int protected_mode, |
| 476 | char* errbuf, size_t errbuf_len) |
| 477 | { |
| 478 | int i; |
| 479 | |
| 480 | cfg->encode_sparse_convert = DEFAULT_SPARSE_CONVERT; |
| 481 | cfg->encode_sparse_ratio = DEFAULT_SPARSE_RATIO; |
| 482 | cfg->encode_sparse_safe = DEFAULT_SPARSE_SAFE; |
| 483 | cfg->encode_max_depth = DEFAULT_ENCODE_MAX_DEPTH; |
| 484 | cfg->decode_max_depth = DEFAULT_DECODE_MAX_DEPTH; |
| 485 | cfg->encode_invalid_numbers = DEFAULT_ENCODE_INVALID_NUMBERS; |
| 486 | cfg->decode_invalid_numbers = DEFAULT_DECODE_INVALID_NUMBERS; |
| 487 | cfg->encode_keep_buffer = encode_keep_buffer; |
| 488 | cfg->encode_number_precision = DEFAULT_ENCODE_NUMBER_PRECISION; |
| 489 | cfg->encode_empty_table_as_object = DEFAULT_ENCODE_EMPTY_TABLE_AS_OBJECT; |
| 490 | cfg->decode_array_with_array_mt = DEFAULT_DECODE_ARRAY_WITH_ARRAY_MT; |
| 491 | cfg->encode_escape_forward_slash = DEFAULT_ENCODE_ESCAPE_FORWARD_SLASH; |
| 492 | cfg->decode_null_as_userdata = DEFAULT_DECODE_NULL_AS_USERDATA; |
| 493 | |
| 494 | cfg->l = l; |
| 495 | cfg->protected_mode = protected_mode; |
| 496 | cfg->error_message = errbuf; |
| 497 | cfg->error_message_length = errbuf_len; |
| 498 | |
| 499 | if (encode_keep_buffer > 0) |
| 500 | { |
| 501 | strbuf_init(&cfg->encode_buf, 0); |
| 502 | } |
| 503 | |
| 504 | /* Decoding init */ |
| 505 | |
| 506 | /* Tag all characters as an error */ |
| 507 | for (i = 0; i < 256; i++) |
| 508 | cfg->ch2token[i] = T_ERROR; |
| 509 | |
| 510 | /* Set tokens that require no further processing */ |
| 511 | cfg->ch2token['{'] = T_OBJ_BEGIN; |
| 512 | cfg->ch2token['}'] = T_OBJ_END; |
| 513 | cfg->ch2token['['] = T_ARR_BEGIN; |
| 514 | cfg->ch2token[']'] = T_ARR_END; |
| 515 | cfg->ch2token[','] = T_COMMA; |
| 516 | cfg->ch2token[':'] = T_COLON; |
| 517 | cfg->ch2token['\0'] = T_END; |
| 518 | cfg->ch2token[' '] = T_WHITESPACE; |
| 519 | cfg->ch2token['\t'] = T_WHITESPACE; |
| 520 | cfg->ch2token['\n'] = T_WHITESPACE; |
| 521 | cfg->ch2token['\r'] = T_WHITESPACE; |
| 522 | |
| 523 | /* Update characters that require further processing */ |
| 524 | cfg->ch2token['f'] = T_UNKNOWN; /* false? */ |
| 525 | cfg->ch2token['i'] = T_UNKNOWN; /* inf, ininity? */ |
| 526 | cfg->ch2token['I'] = T_UNKNOWN; |
| 527 | cfg->ch2token['n'] = T_UNKNOWN; /* null, nan? */ |
| 528 | cfg->ch2token['N'] = T_UNKNOWN; |
| 529 | cfg->ch2token['t'] = T_UNKNOWN; /* true? */ |
| 530 | cfg->ch2token['"'] = T_UNKNOWN; /* string? */ |
| 531 | cfg->ch2token['+'] = T_UNKNOWN; /* number? */ |
no test coverage detected