/src/php-src/ext/json/php_json.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | +----------------------------------------------------------------------+ |
3 | | | Copyright (c) The PHP Group | |
4 | | +----------------------------------------------------------------------+ |
5 | | | This source file is subject to version 3.01 of the PHP license, | |
6 | | | that is bundled with this package in the file LICENSE, and is | |
7 | | | available through the world-wide-web at the following url: | |
8 | | | https://www.php.net/license/3_01.txt | |
9 | | | If you did not receive a copy of the PHP license and are unable to | |
10 | | | obtain it through the world-wide-web, please send a note to | |
11 | | | license@php.net so we can mail you a copy immediately. | |
12 | | +----------------------------------------------------------------------+ |
13 | | | Author: Omar Kilani <omar@php.net> | |
14 | | | Jakub Zelenka <bukka@php.net> | |
15 | | +----------------------------------------------------------------------+ |
16 | | */ |
17 | | |
18 | | #ifndef PHP_JSON_H |
19 | | #define PHP_JSON_H |
20 | | |
21 | | #include "php_version.h" |
22 | | #include "zend_smart_str_public.h" |
23 | | |
24 | | #define PHP_JSON_VERSION PHP_VERSION |
25 | | |
26 | | extern zend_module_entry json_module_entry; |
27 | | #define phpext_json_ptr &json_module_entry |
28 | | |
29 | | #if defined(PHP_WIN32) && defined(JSON_EXPORTS) |
30 | | #define PHP_JSON_API __declspec(dllexport) |
31 | | #else |
32 | | #define PHP_JSON_API PHPAPI |
33 | | #endif |
34 | | |
35 | | #ifdef ZTS |
36 | | #include "TSRM.h" |
37 | | #endif |
38 | | |
39 | | extern PHP_JSON_API zend_class_entry *php_json_serializable_ce; |
40 | | |
41 | | /* error codes */ |
42 | | typedef enum { |
43 | | PHP_JSON_ERROR_NONE = 0, |
44 | | PHP_JSON_ERROR_DEPTH, |
45 | | PHP_JSON_ERROR_STATE_MISMATCH, |
46 | | PHP_JSON_ERROR_CTRL_CHAR, |
47 | | PHP_JSON_ERROR_SYNTAX, |
48 | | PHP_JSON_ERROR_UTF8, |
49 | | PHP_JSON_ERROR_RECURSION, |
50 | | PHP_JSON_ERROR_INF_OR_NAN, |
51 | | PHP_JSON_ERROR_UNSUPPORTED_TYPE, |
52 | | PHP_JSON_ERROR_INVALID_PROPERTY_NAME, |
53 | | PHP_JSON_ERROR_UTF16, |
54 | | PHP_JSON_ERROR_NON_BACKED_ENUM, |
55 | | } php_json_error_code; |
56 | | |
57 | | /* json_decode() options */ |
58 | 6.27M | #define PHP_JSON_OBJECT_AS_ARRAY (1<<0) |
59 | 2.61k | #define PHP_JSON_BIGINT_AS_STRING (1<<1) |
60 | | |
61 | | /* json_encode() options */ |
62 | 31.5k | #define PHP_JSON_HEX_TAG (1<<0) |
63 | 739 | #define PHP_JSON_HEX_AMP (1<<1) |
64 | 285 | #define PHP_JSON_HEX_APOS (1<<2) |
65 | 5.41k | #define PHP_JSON_HEX_QUOT (1<<3) |
66 | 78 | #define PHP_JSON_FORCE_OBJECT (1<<4) |
67 | 4.78k | #define PHP_JSON_NUMERIC_CHECK (1<<5) |
68 | 10.1k | #define PHP_JSON_UNESCAPED_SLASHES (1<<6) |
69 | 7.62k | #define PHP_JSON_PRETTY_PRINT (1<<7) |
70 | 190k | #define PHP_JSON_UNESCAPED_UNICODE (1<<8) |
71 | 1.25k | #define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR (1<<9) |
72 | 200 | #define PHP_JSON_PRESERVE_ZERO_FRACTION (1<<10) |
73 | 1.82k | #define PHP_JSON_UNESCAPED_LINE_TERMINATORS (1<<11) |
74 | | |
75 | | /* json_validate(), json_decode() and json_encode() common options */ |
76 | 225k | #define PHP_JSON_INVALID_UTF8_IGNORE (1<<20) |
77 | | |
78 | | /* json_decode() and json_encode() common options */ |
79 | 189k | #define PHP_JSON_INVALID_UTF8_SUBSTITUTE (1<<21) |
80 | 3.12k | #define PHP_JSON_THROW_ON_ERROR (1<<22) |
81 | | |
82 | | /* Internal flags */ |
83 | 8.84k | #define PHP_JSON_OUTPUT_ARRAY 0 |
84 | 7.25k | #define PHP_JSON_OUTPUT_OBJECT 1 |
85 | | |
86 | | /* default depth */ |
87 | 3.13k | #define PHP_JSON_PARSER_DEFAULT_DEPTH 512 |
88 | | |
89 | | ZEND_BEGIN_MODULE_GLOBALS(json) |
90 | | int encoder_depth; |
91 | | int encode_max_depth; |
92 | | php_json_error_code error_code; |
93 | | ZEND_END_MODULE_GLOBALS(json) |
94 | | |
95 | | PHP_JSON_API ZEND_EXTERN_MODULE_GLOBALS(json) |
96 | 303k | #define JSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(json, v) |
97 | | |
98 | | #if defined(ZTS) && defined(COMPILE_DL_JSON) |
99 | | ZEND_TSRMLS_CACHE_EXTERN() |
100 | | #endif |
101 | | |
102 | | PHP_JSON_API zend_string *php_json_encode_string(const char *s, size_t len, int options); |
103 | | |
104 | | PHP_JSON_API zend_result php_json_encode_ex(smart_str *buf, zval *val, int options, zend_long depth); |
105 | | PHP_JSON_API zend_result php_json_encode(smart_str *buf, zval *val, int options); |
106 | | PHP_JSON_API zend_result php_json_decode_ex(zval *return_value, const char *str, size_t str_len, zend_long options, zend_long depth); |
107 | | PHP_JSON_API bool php_json_validate_ex(const char *str, size_t str_len, zend_long options, zend_long depth); |
108 | | |
109 | | static inline zend_result php_json_decode(zval *return_value, const char *str, size_t str_len, bool assoc, zend_long depth) |
110 | 0 | { |
111 | 0 | return php_json_decode_ex(return_value, str, str_len, assoc ? PHP_JSON_OBJECT_AS_ARRAY : 0, depth); |
112 | 0 | } Unexecuted instantiation: json_encoder.c:php_json_decode Unexecuted instantiation: json_parser.tab.c:php_json_decode Unexecuted instantiation: json_scanner.c:php_json_decode Unexecuted instantiation: json.c:php_json_decode Unexecuted instantiation: spl_fixedarray.c:php_json_decode Unexecuted instantiation: internal_functions_cli.c:php_json_decode Unexecuted instantiation: fuzzer-json.c:php_json_decode |
113 | | |
114 | | #endif /* PHP_JSON_H */ |