MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / json_create_config

Function json_create_config

deps/lua/src/lua_cjson.c:373–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

371}
372
373static void json_create_config(lua_State *l)
374{
375 json_config_t *cfg;
376 int i;
377
378 cfg = lua_newuserdata(l, sizeof(*cfg));
379
380 /* Create GC method to clean up strbuf */
381 lua_newtable(l);
382 lua_pushcfunction(l, json_destroy_config);
383 lua_setfield(l, -2, "__gc");
384 lua_setmetatable(l, -2);
385
386 cfg->encode_sparse_convert = DEFAULT_SPARSE_CONVERT;
387 cfg->encode_sparse_ratio = DEFAULT_SPARSE_RATIO;
388 cfg->encode_sparse_safe = DEFAULT_SPARSE_SAFE;
389 cfg->encode_max_depth = DEFAULT_ENCODE_MAX_DEPTH;
390 cfg->decode_max_depth = DEFAULT_DECODE_MAX_DEPTH;
391 cfg->encode_invalid_numbers = DEFAULT_ENCODE_INVALID_NUMBERS;
392 cfg->decode_invalid_numbers = DEFAULT_DECODE_INVALID_NUMBERS;
393 cfg->encode_keep_buffer = DEFAULT_ENCODE_KEEP_BUFFER;
394 cfg->encode_number_precision = DEFAULT_ENCODE_NUMBER_PRECISION;
395
396#if DEFAULT_ENCODE_KEEP_BUFFER > 0
397 strbuf_init(&cfg->encode_buf, 0);
398#endif
399
400 /* Decoding init */
401
402 /* Tag all characters as an error */
403 for (i = 0; i < 256; i++)
404 cfg->ch2token[i] = T_ERROR;
405
406 /* Set tokens that require no further processing */
407 cfg->ch2token['{'] = T_OBJ_BEGIN;
408 cfg->ch2token['}'] = T_OBJ_END;
409 cfg->ch2token['['] = T_ARR_BEGIN;
410 cfg->ch2token[']'] = T_ARR_END;
411 cfg->ch2token[','] = T_COMMA;
412 cfg->ch2token[':'] = T_COLON;
413 cfg->ch2token['\0'] = T_END;
414 cfg->ch2token[' '] = T_WHITESPACE;
415 cfg->ch2token['\t'] = T_WHITESPACE;
416 cfg->ch2token['\n'] = T_WHITESPACE;
417 cfg->ch2token['\r'] = T_WHITESPACE;
418
419 /* Update characters that require further processing */
420 cfg->ch2token['f'] = T_UNKNOWN; /* false? */
421 cfg->ch2token['i'] = T_UNKNOWN; /* inf, ininity? */
422 cfg->ch2token['I'] = T_UNKNOWN;
423 cfg->ch2token['n'] = T_UNKNOWN; /* null, nan? */
424 cfg->ch2token['N'] = T_UNKNOWN;
425 cfg->ch2token['t'] = T_UNKNOWN; /* true? */
426 cfg->ch2token['"'] = T_UNKNOWN; /* string? */
427 cfg->ch2token['+'] = T_UNKNOWN; /* number? */
428 cfg->ch2token['-'] = T_UNKNOWN;
429 for (i = 0; i < 10; i++)
430 cfg->ch2token['0' + i] = T_UNKNOWN;

Callers 1

lua_cjson_newFunction · 0.85

Calls 4

lua_newuserdataFunction · 0.85
lua_setfieldFunction · 0.85
lua_setmetatableFunction · 0.85
strbuf_initFunction · 0.85

Tested by

no test coverage detected