Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
duktape-1.5.2/src-separate/duk_json.h
Go to the documentation of this file.
1/*
2 * Defines for JSON, especially duk_bi_json.c.
3 */
4
5#ifndef DUK_JSON_H_INCLUDED
6#define DUK_JSON_H_INCLUDED
7
8/* Encoding/decoding flags */
9#define DUK_JSON_FLAG_ASCII_ONLY (1 << 0) /* escape any non-ASCII characters */
10#define DUK_JSON_FLAG_AVOID_KEY_QUOTES (1 << 1) /* avoid key quotes when key is an ASCII Identifier */
11#define DUK_JSON_FLAG_EXT_CUSTOM (1 << 2) /* extended types: custom encoding */
12#define DUK_JSON_FLAG_EXT_COMPATIBLE (1 << 3) /* extended types: compatible encoding */
13
14/* How much stack to require on entry to object/array encode */
15#define DUK_JSON_ENC_REQSTACK 32
16
17/* How much stack to require on entry to object/array decode */
18#define DUK_JSON_DEC_REQSTACK 32
19
20/* How large a loop detection stack to use */
21#define DUK_JSON_ENC_LOOPARRAY 64
22
23/* Encoding state. Heap object references are all borrowed. */
24typedef struct {
25 duk_hthread *thr;
26 duk_bufwriter_ctx bw; /* output bufwriter */
27 duk_hobject *h_replacer; /* replacer function */
28 duk_hstring *h_gap; /* gap (if empty string, NULL) */
29 duk_idx_t idx_proplist; /* explicit PropertyList */
30 duk_idx_t idx_loop; /* valstack index of loop detection object */
31 duk_small_uint_t flags;
32 duk_small_uint_t flag_ascii_only;
33 duk_small_uint_t flag_avoid_key_quotes;
34#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
35 duk_small_uint_t flag_ext_custom;
36 duk_small_uint_t flag_ext_compatible;
37 duk_small_uint_t flag_ext_custom_or_compatible;
38#endif
39 duk_int_t recursion_depth;
40 duk_int_t recursion_limit;
41 duk_uint_t mask_for_undefined; /* type bit mask: types which certainly produce 'undefined' */
42#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
43 duk_small_uint_t stridx_custom_undefined;
44 duk_small_uint_t stridx_custom_nan;
45 duk_small_uint_t stridx_custom_neginf;
46 duk_small_uint_t stridx_custom_posinf;
47 duk_small_uint_t stridx_custom_function;
48#endif
49 duk_hobject *visiting[DUK_JSON_ENC_LOOPARRAY]; /* indexed by recursion_depth */
51
52typedef struct {
53 duk_hthread *thr;
54 const duk_uint8_t *p;
55 const duk_uint8_t *p_start;
56 const duk_uint8_t *p_end;
57 duk_idx_t idx_reviver;
58 duk_small_uint_t flags;
59#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
60 duk_small_uint_t flag_ext_custom;
61 duk_small_uint_t flag_ext_compatible;
62 duk_small_uint_t flag_ext_custom_or_compatible;
63#endif
64 duk_int_t recursion_depth;
65 duk_int_t recursion_limit;
67
68#endif /* DUK_JSON_H_INCLUDED */
unsigned int duk_small_uint_t
duk_int_fast32_t duk_int_t
duk_uint_fast32_t duk_uint_t