oj_windows 3.16.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +44 -0
  3. data/LICENSE +21 -0
  4. data/README.md +164 -0
  5. data/ext/oj_windows/buf.h +85 -0
  6. data/ext/oj_windows/cache.c +339 -0
  7. data/ext/oj_windows/cache.h +22 -0
  8. data/ext/oj_windows/cache8.c +105 -0
  9. data/ext/oj_windows/cache8.h +21 -0
  10. data/ext/oj_windows/circarray.c +64 -0
  11. data/ext/oj_windows/circarray.h +22 -0
  12. data/ext/oj_windows/code.c +214 -0
  13. data/ext/oj_windows/code.h +40 -0
  14. data/ext/oj_windows/compat.c +239 -0
  15. data/ext/oj_windows/custom.c +1074 -0
  16. data/ext/oj_windows/debug.c +126 -0
  17. data/ext/oj_windows/dump.c +1556 -0
  18. data/ext/oj_windows/dump.h +110 -0
  19. data/ext/oj_windows/dump_compat.c +901 -0
  20. data/ext/oj_windows/dump_leaf.c +162 -0
  21. data/ext/oj_windows/dump_object.c +710 -0
  22. data/ext/oj_windows/dump_strict.c +405 -0
  23. data/ext/oj_windows/encode.h +16 -0
  24. data/ext/oj_windows/err.c +57 -0
  25. data/ext/oj_windows/err.h +67 -0
  26. data/ext/oj_windows/extconf.rb +77 -0
  27. data/ext/oj_windows/fast.c +1710 -0
  28. data/ext/oj_windows/intern.c +325 -0
  29. data/ext/oj_windows/intern.h +22 -0
  30. data/ext/oj_windows/mem.c +320 -0
  31. data/ext/oj_windows/mem.h +53 -0
  32. data/ext/oj_windows/mimic_json.c +919 -0
  33. data/ext/oj_windows/object.c +726 -0
  34. data/ext/oj_windows/odd.c +245 -0
  35. data/ext/oj_windows/odd.h +43 -0
  36. data/ext/oj_windows/oj.c +2097 -0
  37. data/ext/oj_windows/oj.h +420 -0
  38. data/ext/oj_windows/parse.c +1317 -0
  39. data/ext/oj_windows/parse.h +113 -0
  40. data/ext/oj_windows/parser.c +1600 -0
  41. data/ext/oj_windows/parser.h +103 -0
  42. data/ext/oj_windows/rails.c +1484 -0
  43. data/ext/oj_windows/rails.h +18 -0
  44. data/ext/oj_windows/reader.c +222 -0
  45. data/ext/oj_windows/reader.h +137 -0
  46. data/ext/oj_windows/resolve.c +80 -0
  47. data/ext/oj_windows/resolve.h +12 -0
  48. data/ext/oj_windows/rxclass.c +144 -0
  49. data/ext/oj_windows/rxclass.h +26 -0
  50. data/ext/oj_windows/saj.c +675 -0
  51. data/ext/oj_windows/saj2.c +584 -0
  52. data/ext/oj_windows/saj2.h +23 -0
  53. data/ext/oj_windows/scp.c +187 -0
  54. data/ext/oj_windows/simd.h +47 -0
  55. data/ext/oj_windows/sparse.c +946 -0
  56. data/ext/oj_windows/stream_writer.c +329 -0
  57. data/ext/oj_windows/strict.c +189 -0
  58. data/ext/oj_windows/string_writer.c +517 -0
  59. data/ext/oj_windows/trace.c +72 -0
  60. data/ext/oj_windows/trace.h +55 -0
  61. data/ext/oj_windows/usual.c +1218 -0
  62. data/ext/oj_windows/usual.h +69 -0
  63. data/ext/oj_windows/util.c +136 -0
  64. data/ext/oj_windows/util.h +20 -0
  65. data/ext/oj_windows/val_stack.c +101 -0
  66. data/ext/oj_windows/val_stack.h +151 -0
  67. data/ext/oj_windows/validate.c +46 -0
  68. data/ext/oj_windows/wab.c +584 -0
  69. data/lib/oj/active_support_helper.rb +39 -0
  70. data/lib/oj/bag.rb +95 -0
  71. data/lib/oj/easy_hash.rb +52 -0
  72. data/lib/oj/error.rb +21 -0
  73. data/lib/oj/json.rb +188 -0
  74. data/lib/oj/mimic.rb +301 -0
  75. data/lib/oj/saj.rb +80 -0
  76. data/lib/oj/schandler.rb +143 -0
  77. data/lib/oj/state.rb +135 -0
  78. data/lib/oj/version.rb +4 -0
  79. data/lib/oj_windows/active_support_helper.rb +39 -0
  80. data/lib/oj_windows/bag.rb +95 -0
  81. data/lib/oj_windows/easy_hash.rb +52 -0
  82. data/lib/oj_windows/error.rb +21 -0
  83. data/lib/oj_windows/json.rb +188 -0
  84. data/lib/oj_windows/mimic.rb +301 -0
  85. data/lib/oj_windows/saj.rb +80 -0
  86. data/lib/oj_windows/schandler.rb +143 -0
  87. data/lib/oj_windows/state.rb +135 -0
  88. data/lib/oj_windows/version.rb +4 -0
  89. data/lib/oj_windows.rb +15 -0
  90. data/pages/Advanced.md +38 -0
  91. data/pages/Compatibility.md +49 -0
  92. data/pages/Custom.md +37 -0
  93. data/pages/Encoding.md +61 -0
  94. data/pages/InstallOptions.md +20 -0
  95. data/pages/JsonGem.md +60 -0
  96. data/pages/Modes.md +94 -0
  97. data/pages/Options.md +339 -0
  98. data/pages/Parser.md +134 -0
  99. data/pages/Rails.md +85 -0
  100. data/pages/Security.md +43 -0
  101. data/pages/WAB.md +12 -0
  102. metadata +242 -0
@@ -0,0 +1,113 @@
1
+ // Copyright (c) 2011 Peter Ohler. All rights reserved.
2
+ // Licensed under the MIT License. See LICENSE file in the project root for license details.
3
+
4
+ #ifndef OJ_PARSE_H
5
+ #define OJ_PARSE_H
6
+
7
+ #include <stdarg.h>
8
+ #include <stdio.h>
9
+ #include <string.h>
10
+
11
+ #include "circarray.h"
12
+ #include "oj.h"
13
+ #include "reader.h"
14
+ #include "ruby.h"
15
+ #include "rxclass.h"
16
+ #include "val_stack.h"
17
+
18
+ struct _rxClass;
19
+ struct _parseInfo;
20
+
21
+ typedef struct _numInfo {
22
+ int64_t i;
23
+ int64_t num;
24
+ int64_t div;
25
+ int64_t di;
26
+ const char *str;
27
+ size_t len;
28
+ long exp;
29
+ struct _parseInfo *pi;
30
+ int big;
31
+ int infinity;
32
+ int nan;
33
+ int neg;
34
+ int has_exp;
35
+ int no_big;
36
+ int bigdec_load;
37
+ } *NumInfo;
38
+
39
+ typedef struct _parseInfo {
40
+ // used for the string parser
41
+ const char *json;
42
+ const char *cur;
43
+ const char *end;
44
+ // used for the stream parser
45
+ struct _reader rd;
46
+
47
+ struct _err err;
48
+ struct _options options;
49
+ VALUE handler;
50
+ struct _valStack stack;
51
+ CircArray circ_array;
52
+ struct _rxClass str_rx;
53
+ int expect_value;
54
+ int max_depth; // just for the json gem
55
+ VALUE proc;
56
+ VALUE (*start_hash)(struct _parseInfo *pi);
57
+ void (*end_hash)(struct _parseInfo *pi);
58
+ VALUE (*hash_key)(struct _parseInfo *pi, const char *key, size_t klen);
59
+ void (*hash_set_cstr)(struct _parseInfo *pi, Val kval, const char *str, size_t len, const char *orig);
60
+ void (*hash_set_num)(struct _parseInfo *pi, Val kval, NumInfo ni);
61
+ void (*hash_set_value)(struct _parseInfo *pi, Val kval, VALUE value);
62
+
63
+ VALUE (*start_array)(struct _parseInfo *pi);
64
+ void (*end_array)(struct _parseInfo *pi);
65
+ void (*array_append_cstr)(struct _parseInfo *pi, const char *str, size_t len, const char *orig);
66
+ void (*array_append_num)(struct _parseInfo *pi, NumInfo ni);
67
+ void (*array_append_value)(struct _parseInfo *pi, VALUE value);
68
+
69
+ void (*add_cstr)(struct _parseInfo *pi, const char *str, size_t len, const char *orig);
70
+ void (*add_num)(struct _parseInfo *pi, NumInfo ni);
71
+ void (*add_value)(struct _parseInfo *pi, VALUE val);
72
+ VALUE err_class;
73
+ bool has_callbacks;
74
+ } *ParseInfo;
75
+
76
+ extern void oj_parse2(ParseInfo pi);
77
+ extern void oj_set_error_at(ParseInfo pi, VALUE err_clas, const char *file, int line, const char *format, ...);
78
+ extern VALUE oj_pi_parse(int argc, VALUE *argv, ParseInfo pi, char *json, size_t len, int yieldOk);
79
+ extern VALUE oj_num_as_value(NumInfo ni);
80
+
81
+ extern void oj_set_strict_callbacks(ParseInfo pi);
82
+ extern void oj_set_object_callbacks(ParseInfo pi);
83
+ extern void oj_set_compat_callbacks(ParseInfo pi);
84
+ extern void oj_set_custom_callbacks(ParseInfo pi);
85
+ extern void oj_set_wab_callbacks(ParseInfo pi);
86
+
87
+ extern void oj_sparse2(ParseInfo pi);
88
+ extern VALUE oj_pi_sparse(int argc, VALUE *argv, ParseInfo pi, int fd);
89
+
90
+ extern VALUE oj_cstr_to_value(const char *str, size_t len, size_t cache_str);
91
+ extern VALUE oj_calc_hash_key(ParseInfo pi, Val parent);
92
+
93
+ static inline void parse_info_init(ParseInfo pi) {
94
+ memset(pi, 0, sizeof(struct _parseInfo));
95
+ }
96
+
97
+ extern void oj_scanner_init(void);
98
+
99
+ static inline bool empty_ok(Options options) {
100
+ switch (options->mode) {
101
+ case ObjectMode:
102
+ case WabMode: return true;
103
+ case CompatMode:
104
+ case RailsMode: return false;
105
+ case StrictMode:
106
+ case NullMode:
107
+ case CustomMode:
108
+ default: break;
109
+ }
110
+ return Yes == options->empty_string;
111
+ }
112
+
113
+ #endif /* OJ_PARSE_H */