summaryrefslogtreecommitdiffstats
path: root/src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h')
-rw-r--r--src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h b/src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h
new file mode 100644
index 000000000..aff264747
--- /dev/null
+++ b/src/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_json.h
@@ -0,0 +1,68 @@
+/*
+ * Defines for JSON, especially duk_bi_json.c.
+ */
+
+#ifndef DUK_JSON_H_INCLUDED
+#define DUK_JSON_H_INCLUDED
+
+/* Encoding/decoding flags */
+#define DUK_JSON_FLAG_ASCII_ONLY (1 << 0) /* escape any non-ASCII characters */
+#define DUK_JSON_FLAG_AVOID_KEY_QUOTES (1 << 1) /* avoid key quotes when key is an ASCII Identifier */
+#define DUK_JSON_FLAG_EXT_CUSTOM (1 << 2) /* extended types: custom encoding */
+#define DUK_JSON_FLAG_EXT_COMPATIBLE (1 << 3) /* extended types: compatible encoding */
+
+/* How much stack to require on entry to object/array encode */
+#define DUK_JSON_ENC_REQSTACK 32
+
+/* How much stack to require on entry to object/array decode */
+#define DUK_JSON_DEC_REQSTACK 32
+
+/* How large a loop detection stack to use */
+#define DUK_JSON_ENC_LOOPARRAY 64
+
+/* Encoding state. Heap object references are all borrowed. */
+typedef struct {
+ duk_hthread *thr;
+ duk_bufwriter_ctx bw; /* output bufwriter */
+ duk_hobject *h_replacer; /* replacer function */
+ duk_hstring *h_gap; /* gap (if empty string, NULL) */
+ duk_idx_t idx_proplist; /* explicit PropertyList */
+ duk_idx_t idx_loop; /* valstack index of loop detection object */
+ duk_small_uint_t flags;
+ duk_small_uint_t flag_ascii_only;
+ duk_small_uint_t flag_avoid_key_quotes;
+#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
+ duk_small_uint_t flag_ext_custom;
+ duk_small_uint_t flag_ext_compatible;
+ duk_small_uint_t flag_ext_custom_or_compatible;
+#endif
+ duk_int_t recursion_depth;
+ duk_int_t recursion_limit;
+ duk_uint_t mask_for_undefined; /* type bit mask: types which certainly produce 'undefined' */
+#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
+ duk_small_uint_t stridx_custom_undefined;
+ duk_small_uint_t stridx_custom_nan;
+ duk_small_uint_t stridx_custom_neginf;
+ duk_small_uint_t stridx_custom_posinf;
+ duk_small_uint_t stridx_custom_function;
+#endif
+ duk_hobject *visiting[DUK_JSON_ENC_LOOPARRAY]; /* indexed by recursion_depth */
+} duk_json_enc_ctx;
+
+typedef struct {
+ duk_hthread *thr;
+ const duk_uint8_t *p;
+ const duk_uint8_t *p_start;
+ const duk_uint8_t *p_end;
+ duk_idx_t idx_reviver;
+ duk_small_uint_t flags;
+#if defined(DUK_USE_JX) || defined(DUK_USE_JC)
+ duk_small_uint_t flag_ext_custom;
+ duk_small_uint_t flag_ext_compatible;
+ duk_small_uint_t flag_ext_custom_or_compatible;
+#endif
+ duk_int_t recursion_depth;
+ duk_int_t recursion_limit;
+} duk_json_dec_ctx;
+
+#endif /* DUK_JSON_H_INCLUDED */