oj 3.14.2 → 3.14.3

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -1
  3. data/README.md +0 -1
  4. data/ext/oj/buf.h +2 -2
  5. data/ext/oj/cache.c +16 -16
  6. data/ext/oj/cache8.c +7 -7
  7. data/ext/oj/circarray.c +2 -1
  8. data/ext/oj/circarray.h +2 -2
  9. data/ext/oj/code.c +2 -2
  10. data/ext/oj/code.h +2 -2
  11. data/ext/oj/compat.c +6 -14
  12. data/ext/oj/custom.c +1 -1
  13. data/ext/oj/debug.c +3 -9
  14. data/ext/oj/dump.c +16 -16
  15. data/ext/oj/dump_compat.c +551 -576
  16. data/ext/oj/dump_leaf.c +3 -5
  17. data/ext/oj/dump_object.c +35 -36
  18. data/ext/oj/dump_strict.c +2 -4
  19. data/ext/oj/encoder.c +1 -1
  20. data/ext/oj/err.c +2 -13
  21. data/ext/oj/err.h +9 -12
  22. data/ext/oj/extconf.rb +1 -1
  23. data/ext/oj/fast.c +24 -38
  24. data/ext/oj/intern.c +38 -42
  25. data/ext/oj/intern.h +3 -7
  26. data/ext/oj/mem.c +211 -217
  27. data/ext/oj/mem.h +10 -10
  28. data/ext/oj/mimic_json.c +18 -24
  29. data/ext/oj/object.c +5 -5
  30. data/ext/oj/odd.c +2 -1
  31. data/ext/oj/odd.h +4 -4
  32. data/ext/oj/oj.c +60 -81
  33. data/ext/oj/oj.h +53 -54
  34. data/ext/oj/parse.c +55 -118
  35. data/ext/oj/parse.h +5 -10
  36. data/ext/oj/parser.c +7 -8
  37. data/ext/oj/parser.h +7 -8
  38. data/ext/oj/rails.c +28 -59
  39. data/ext/oj/reader.c +5 -9
  40. data/ext/oj/reader.h +1 -1
  41. data/ext/oj/resolve.c +3 -4
  42. data/ext/oj/rxclass.c +1 -1
  43. data/ext/oj/rxclass.h +1 -1
  44. data/ext/oj/saj.c +4 -4
  45. data/ext/oj/saj2.c +32 -49
  46. data/ext/oj/saj2.h +1 -1
  47. data/ext/oj/scp.c +3 -14
  48. data/ext/oj/sparse.c +18 -67
  49. data/ext/oj/stream_writer.c +5 -18
  50. data/ext/oj/strict.c +7 -13
  51. data/ext/oj/string_writer.c +6 -14
  52. data/ext/oj/trace.h +27 -16
  53. data/ext/oj/usual.c +62 -61
  54. data/ext/oj/usual.h +6 -6
  55. data/ext/oj/util.h +1 -1
  56. data/ext/oj/val_stack.h +4 -4
  57. data/ext/oj/wab.c +7 -9
  58. data/lib/oj/active_support_helper.rb +0 -1
  59. data/lib/oj/bag.rb +7 -1
  60. data/lib/oj/easy_hash.rb +4 -5
  61. data/lib/oj/error.rb +0 -1
  62. data/lib/oj/json.rb +4 -2
  63. data/lib/oj/mimic.rb +4 -2
  64. data/lib/oj/state.rb +8 -5
  65. data/lib/oj/version.rb +1 -2
  66. data/lib/oj.rb +0 -1
  67. data/test/_test_active.rb +0 -1
  68. data/test/_test_active_mimic.rb +0 -1
  69. data/test/_test_mimic_rails.rb +0 -1
  70. data/test/activerecord/result_test.rb +5 -6
  71. data/test/bar.rb +3 -3
  72. data/test/files.rb +1 -1
  73. data/test/foo.rb +5 -48
  74. data/test/helper.rb +1 -4
  75. data/test/isolated/shared.rb +3 -2
  76. data/test/json_gem/json_addition_test.rb +2 -2
  77. data/test/json_gem/json_common_interface_test.rb +4 -4
  78. data/test/json_gem/json_encoding_test.rb +0 -0
  79. data/test/json_gem/json_ext_parser_test.rb +1 -0
  80. data/test/json_gem/json_fixtures_test.rb +3 -2
  81. data/test/json_gem/json_generator_test.rb +43 -32
  82. data/test/json_gem/json_generic_object_test.rb +11 -11
  83. data/test/json_gem/json_parser_test.rb +46 -46
  84. data/test/json_gem/json_string_matching_test.rb +9 -9
  85. data/test/mem.rb +7 -7
  86. data/test/perf.rb +2 -2
  87. data/test/perf_compat.rb +1 -1
  88. data/test/perf_fast.rb +1 -1
  89. data/test/perf_file.rb +2 -2
  90. data/test/perf_object.rb +1 -2
  91. data/test/perf_once.rb +4 -4
  92. data/test/perf_parser.rb +1 -2
  93. data/test/perf_saj.rb +1 -2
  94. data/test/perf_scp.rb +1 -1
  95. data/test/perf_simple.rb +3 -3
  96. data/test/perf_strict.rb +1 -1
  97. data/test/perf_wab.rb +1 -1
  98. data/test/sample/change.rb +0 -1
  99. data/test/sample/dir.rb +0 -1
  100. data/test/sample/doc.rb +0 -1
  101. data/test/sample/file.rb +0 -1
  102. data/test/sample/group.rb +0 -1
  103. data/test/sample/hasprops.rb +0 -1
  104. data/test/sample/layer.rb +0 -1
  105. data/test/sample/rect.rb +0 -1
  106. data/test/sample/shape.rb +0 -1
  107. data/test/sample/text.rb +0 -1
  108. data/test/sample.rb +2 -3
  109. data/test/sample_json.rb +0 -1
  110. data/test/test_compat.rb +11 -9
  111. data/test/test_custom.rb +5 -9
  112. data/test/test_debian.rb +1 -1
  113. data/test/test_fast.rb +10 -20
  114. data/test/test_file.rb +8 -8
  115. data/test/test_integer_range.rb +2 -2
  116. data/test/test_null.rb +5 -3
  117. data/test/test_object.rb +6 -5
  118. data/test/test_parser_saj.rb +23 -21
  119. data/test/test_parser_usual.rb +3 -3
  120. data/test/test_saj.rb +2 -0
  121. data/test/test_scp.rb +6 -6
  122. data/test/test_strict.rb +6 -4
  123. data/test/test_various.rb +21 -24
  124. data/test/test_wab.rb +6 -5
  125. data/test/test_writer.rb +1 -1
  126. metadata +17 -26
  127. data/test/activesupport4/decoding_test.rb +0 -108
  128. data/test/activesupport4/encoding_test.rb +0 -531
  129. data/test/activesupport4/test_helper.rb +0 -41
  130. data/test/activesupport5/abstract_unit.rb +0 -45
  131. data/test/activesupport5/decoding_test.rb +0 -133
  132. data/test/activesupport5/encoding_test.rb +0 -500
  133. data/test/activesupport5/encoding_test_cases.rb +0 -98
  134. data/test/activesupport5/test_helper.rb +0 -72
  135. data/test/activesupport5/time_zone_test_helpers.rb +0 -39
data/ext/oj/parser.h CHANGED
@@ -4,8 +4,8 @@
4
4
  #ifndef OJ_PARSER_H
5
5
  #define OJ_PARSER_H
6
6
 
7
- #include <stdbool.h>
8
7
  #include <ruby.h>
8
+ #include <stdbool.h>
9
9
 
10
10
  #include "buf.h"
11
11
 
@@ -38,7 +38,7 @@ typedef struct _num {
38
38
  bool neg;
39
39
  bool exp_neg;
40
40
  // for numbers as strings, reuse buf
41
- } * Num;
41
+ } *Num;
42
42
 
43
43
  struct _ojParser;
44
44
 
@@ -54,11 +54,11 @@ typedef struct _funcs {
54
54
  void (*close_array)(struct _ojParser *p);
55
55
  void (*open_object)(struct _ojParser *p);
56
56
  void (*close_object)(struct _ojParser *p);
57
- } * Funcs;
57
+ } *Funcs;
58
58
 
59
59
  typedef struct _ojParser {
60
- const char * map;
61
- const char * next_map;
60
+ const char *map;
61
+ const char *next_map;
62
62
  int depth;
63
63
  unsigned char stack[1024];
64
64
 
@@ -67,7 +67,7 @@ typedef struct _ojParser {
67
67
  struct _buf key;
68
68
  struct _buf buf;
69
69
 
70
- struct _funcs funcs[3]; // indexed by XXX_FUN defines
70
+ struct _funcs funcs[3]; // indexed by XXX_FUN defines
71
71
 
72
72
  void (*start)(struct _ojParser *p);
73
73
  VALUE (*option)(struct _ojParser *p, const char *key, VALUE value);
@@ -86,7 +86,7 @@ typedef struct _ojParser {
86
86
  uint32_t ucode;
87
87
  ojType type; // valType
88
88
  bool just_one;
89
- } * ojParser;
89
+ } *ojParser;
90
90
 
91
91
  // Create a new parser without setting the delegate. The parser is
92
92
  // wrapped. The parser is (ojParser)DATA_PTR(value) where value is the return
@@ -98,5 +98,4 @@ extern VALUE oj_parser_new();
98
98
  // Set set the options from a hash (ropts).
99
99
  extern void oj_parser_set_option(ojParser p, VALUE ropts);
100
100
 
101
-
102
101
  #endif /* OJ_PARSER_H */
data/ext/oj/rails.c CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  #include "rails.h"
5
5
 
6
- #include "mem.h"
7
6
  #include "code.h"
8
7
  #include "encode.h"
8
+ #include "mem.h"
9
9
  #include "trace.h"
10
10
  #include "util.h"
11
11
 
@@ -16,7 +16,7 @@ typedef struct _encoder {
16
16
  struct _rOptTable ropts;
17
17
  struct _options opts;
18
18
  VALUE arg;
19
- } * Encoder;
19
+ } *Encoder;
20
20
 
21
21
  bool oj_rails_hash_opt = false;
22
22
  bool oj_rails_array_opt = false;
@@ -141,7 +141,7 @@ static void dump_struct(VALUE obj, int depth, Out out, bool as_ok) {
141
141
  int cnt;
142
142
  int i;
143
143
  int len;
144
- const char * name;
144
+ const char *name;
145
145
 
146
146
  #ifdef RSTRUCT_LEN
147
147
  #if RSTRUCT_LEN_RETURNS_INTEGER_OBJECT
@@ -200,7 +200,7 @@ static void dump_enumerable(VALUE obj, int depth, Out out, bool as_ok) {
200
200
 
201
201
  static void dump_bigdecimal(VALUE obj, int depth, Out out, bool as_ok) {
202
202
  volatile VALUE rstr = oj_safe_string_convert(obj);
203
- const char * str = RSTRING_PTR(rstr);
203
+ const char *str = RSTRING_PTR(rstr);
204
204
 
205
205
  if ('I' == *str || 'N' == *str || ('-' == *str && 'I' == str[1])) {
206
206
  oj_dump_nil(Qnil, depth, out, false);
@@ -263,14 +263,7 @@ static void dump_sec_nano(VALUE obj, int64_t sec, long nsec, Out out) {
263
263
  tzmin);
264
264
  } else if (0 == out->opts->sec_prec) {
265
265
  if (0 == tzsecs && rb_funcall2(obj, oj_utcq_id, 0, 0)) {
266
- len = sprintf(buf,
267
- "%04d-%02d-%02dT%02d:%02d:%02dZ",
268
- ti.year,
269
- ti.mon,
270
- ti.day,
271
- ti.hour,
272
- ti.min,
273
- ti.sec);
266
+ len = sprintf(buf, "%04d-%02d-%02dT%02d:%02d:%02dZ", ti.year, ti.mon, ti.day, ti.hour, ti.min, ti.sec);
274
267
  } else {
275
268
  len = sprintf(buf,
276
269
  "%04d-%02d-%02dT%02d:%02d:%02d%c%02d:%02d",
@@ -301,18 +294,7 @@ static void dump_sec_nano(VALUE obj, int64_t sec, long nsec, Out out) {
301
294
  format[32] = '0' + out->opts->sec_prec;
302
295
  len -= 9 - out->opts->sec_prec;
303
296
  }
304
- len = sprintf(buf,
305
- format,
306
- ti.year,
307
- ti.mon,
308
- ti.day,
309
- ti.hour,
310
- ti.min,
311
- ti.sec,
312
- nsec,
313
- tzsign,
314
- tzhour,
315
- tzmin);
297
+ len = sprintf(buf, format, ti.year, ti.mon, ti.day, ti.hour, ti.min, ti.sec, nsec, tzsign, tzhour, tzmin);
316
298
  }
317
299
  oj_dump_cstr(buf, len, 0, 0, out);
318
300
  }
@@ -356,7 +338,7 @@ static ID parameters_id = 0;
356
338
  typedef struct _strLen {
357
339
  const char *str;
358
340
  int len;
359
- } * StrLen;
341
+ } *StrLen;
360
342
 
361
343
  static void dump_actioncontroller_parameters(VALUE obj, int depth, Out out, bool as_ok) {
362
344
  if (0 == parameters_id) {
@@ -505,7 +487,7 @@ static void dump_activerecord_result(VALUE obj, int depth, Out out, bool as_ok)
505
487
  typedef struct _namedFunc {
506
488
  const char *name;
507
489
  DumpFunc func;
508
- } * NamedFunc;
490
+ } *NamedFunc;
509
491
 
510
492
  static void dump_as_string(VALUE obj, int depth, Out out, bool as_ok) {
511
493
  if (oj_code_dump(oj_compat_codes, obj, depth, out)) {
@@ -680,8 +662,8 @@ static VALUE encoder_new(int argc, VALUE *argv, VALUE self) {
680
662
  static VALUE resolve_classpath(const char *name) {
681
663
  char class_name[1024];
682
664
  VALUE clas;
683
- char * end = class_name + sizeof(class_name) - 1;
684
- char * s;
665
+ char *end = class_name + sizeof(class_name) - 1;
666
+ char *s;
685
667
  const char *n = name;
686
668
  ID cid;
687
669
 
@@ -747,8 +729,7 @@ static void optimize(int argc, VALUE *argv, ROptTable rot, bool on) {
747
729
  oj_rails_float_opt = on;
748
730
  } else if (oj_string_writer_class == *argv) {
749
731
  string_writer_optimized = on;
750
- } else if (NULL != (ro = oj_rails_get_opt(rot, *argv)) ||
751
- NULL != (ro = create_opt(rot, *argv))) {
732
+ } else if (NULL != (ro = oj_rails_get_opt(rot, *argv)) || NULL != (ro = create_opt(rot, *argv))) {
752
733
  ro->on = on;
753
734
  }
754
735
  }
@@ -810,7 +791,7 @@ rails_mimic_json(VALUE self) {
810
791
  }
811
792
  oj_mimic_json_methods(json);
812
793
  // Setting the default mode breaks the prmoise in the docs not to.
813
- //oj_default_options.mode = RailsMode;
794
+ // oj_default_options.mode = RailsMode;
814
795
 
815
796
  return Qnil;
816
797
  }
@@ -878,7 +859,7 @@ static VALUE rails_optimized(VALUE self, VALUE clas) {
878
859
  typedef struct _oo {
879
860
  Out out;
880
861
  VALUE obj;
881
- } * OO;
862
+ } *OO;
882
863
 
883
864
  static VALUE protect_dump(VALUE ov) {
884
865
  OO oo = (OO)ov;
@@ -908,16 +889,16 @@ static VALUE encode(VALUE obj, ROptTable ropts, Options opts, int argc, VALUE *a
908
889
 
909
890
  oj_out_init(&out);
910
891
 
911
- out.omit_nil = copts.dump_opts.omit_nil;
912
- out.caller = 0;
913
- out.cur = out.buf;
914
- out.circ_cnt = 0;
915
- out.opts = &copts;
916
- out.hash_cnt = 0;
917
- out.indent = copts.indent;
918
- out.argc = argc;
919
- out.argv = argv;
920
- out.ropts = ropts;
892
+ out.omit_nil = copts.dump_opts.omit_nil;
893
+ out.caller = 0;
894
+ out.cur = out.buf;
895
+ out.circ_cnt = 0;
896
+ out.opts = &copts;
897
+ out.hash_cnt = 0;
898
+ out.indent = copts.indent;
899
+ out.argc = argc;
900
+ out.argv = argv;
901
+ out.ropts = ropts;
921
902
  if (Yes == copts.circular) {
922
903
  oj_cache8_new(&out.circ_cache);
923
904
  }
@@ -1062,28 +1043,16 @@ static VALUE rails_set_encoder(VALUE self) {
1062
1043
  verbose = rb_gv_get("$VERBOSE");
1063
1044
  rb_gv_set("$VERBOSE", Qfalse);
1064
1045
  rb_undef_method(encoding, "use_standard_json_time_format=");
1065
- rb_define_module_function(encoding,
1066
- "use_standard_json_time_format=",
1067
- rails_use_standard_json_time_format,
1068
- 1);
1046
+ rb_define_module_function(encoding, "use_standard_json_time_format=", rails_use_standard_json_time_format, 1);
1069
1047
  rb_undef_method(encoding, "use_standard_json_time_format");
1070
- rb_define_module_function(encoding,
1071
- "use_standard_json_time_format",
1072
- rails_use_standard_json_time_format_get,
1073
- 0);
1048
+ rb_define_module_function(encoding, "use_standard_json_time_format", rails_use_standard_json_time_format_get, 0);
1074
1049
 
1075
1050
  pv = rb_iv_get(encoding, "@escape_html_entities_in_json");
1076
1051
  escape_html = Qtrue == pv;
1077
1052
  rb_undef_method(encoding, "escape_html_entities_in_json=");
1078
- rb_define_module_function(encoding,
1079
- "escape_html_entities_in_json=",
1080
- rails_escape_html_entities_in_json,
1081
- 1);
1053
+ rb_define_module_function(encoding, "escape_html_entities_in_json=", rails_escape_html_entities_in_json, 1);
1082
1054
  rb_undef_method(encoding, "escape_html_entities_in_json");
1083
- rb_define_module_function(encoding,
1084
- "escape_html_entities_in_json",
1085
- rails_escape_html_entities_in_json_get,
1086
- 0);
1055
+ rb_define_module_function(encoding, "escape_html_entities_in_json", rails_escape_html_entities_in_json_get, 0);
1087
1056
 
1088
1057
  pv = rb_iv_get(encoding, "@time_precision");
1089
1058
  oj_default_options.sec_prec = NUM2INT(pv);
@@ -1185,7 +1154,7 @@ static void dump_to_hash(VALUE obj, int depth, Out out) {
1185
1154
 
1186
1155
  static void dump_float(VALUE obj, int depth, Out out, bool as_ok) {
1187
1156
  char buf[64];
1188
- char * b;
1157
+ char *b;
1189
1158
  double d = rb_num2dbl(obj);
1190
1159
  int cnt = 0;
1191
1160
 
data/ext/oj/reader.c CHANGED
@@ -64,8 +64,7 @@ void oj_reader_init(Reader reader, VALUE io, int fd, bool to_s) {
64
64
  reader->tail = reader->head;
65
65
  reader->read_end = reader->head + RSTRING_LEN(s);
66
66
  } else if (rb_cFile == io_class && Qnil != (stat = rb_funcall(io, oj_stat_id, 0)) &&
67
- Qnil != (ftype = rb_funcall(stat, oj_ftype_id, 0)) &&
68
- 0 == strcmp("file", StringValuePtr(ftype)) &&
67
+ Qnil != (ftype = rb_funcall(stat, oj_ftype_id, 0)) && 0 == strcmp("file", StringValuePtr(ftype)) &&
69
68
  0 == FIX2INT(rb_funcall(io, oj_pos_id, 0))) {
70
69
  reader->read_func = read_from_fd;
71
70
  reader->fd = FIX2INT(rb_funcall(io, oj_fileno_id, 0));
@@ -84,8 +83,7 @@ void oj_reader_init(Reader reader, VALUE io, int fd, bool to_s) {
84
83
  reader->tail = reader->head;
85
84
  reader->read_end = reader->head + RSTRING_LEN(rstr);
86
85
  } else {
87
- rb_raise(rb_eArgError,
88
- "parser io argument must be a String or respond to readpartial() or read().\n");
86
+ rb_raise(rb_eArgError, "parser io argument must be a String or respond to readpartial() or read().\n");
89
87
  }
90
88
  }
91
89
 
@@ -124,9 +122,7 @@ int oj_reader_read(Reader reader) {
124
122
  reader->str = reader->head + (reader->str - old);
125
123
  }
126
124
  } else {
127
- memmove((char *)reader->head,
128
- reader->head + shift,
129
- reader->read_end - (reader->head + shift));
125
+ memmove((char *)reader->head, reader->head + shift, reader->read_end - (reader->head + shift));
130
126
  reader->tail -= shift;
131
127
  reader->read_end -= shift;
132
128
  if (0 != reader->pro) {
@@ -158,7 +154,7 @@ static VALUE partial_io_cb(VALUE rbuf) {
158
154
  Reader reader = (Reader)rbuf;
159
155
  VALUE args[1];
160
156
  VALUE rstr;
161
- char * str;
157
+ char *str;
162
158
  size_t cnt;
163
159
 
164
160
  args[0] = ULONG2NUM(reader->end - reader->tail);
@@ -179,7 +175,7 @@ static VALUE io_cb(VALUE rbuf) {
179
175
  Reader reader = (Reader)rbuf;
180
176
  VALUE args[1];
181
177
  VALUE rstr;
182
- char * str;
178
+ char *str;
183
179
  size_t cnt;
184
180
 
185
181
  args[0] = ULONG2NUM(reader->end - reader->tail);
data/ext/oj/reader.h CHANGED
@@ -24,7 +24,7 @@ typedef struct _reader {
24
24
  VALUE io;
25
25
  const char *in_str;
26
26
  };
27
- } * Reader;
27
+ } *Reader;
28
28
 
29
29
  extern void oj_reader_init(Reader reader, VALUE io, int fd, bool to_s);
30
30
  extern int oj_reader_read(Reader reader);
data/ext/oj/resolve.c CHANGED
@@ -27,12 +27,11 @@ inline static VALUE resolve_classname(VALUE mod, const char *classname, int auto
27
27
  return clas;
28
28
  }
29
29
 
30
- static VALUE
31
- resolve_classpath(ParseInfo pi, const char *name, size_t len, int auto_define, VALUE error_class) {
30
+ static VALUE resolve_classpath(ParseInfo pi, const char *name, size_t len, int auto_define, VALUE error_class) {
32
31
  char class_name[1024];
33
32
  VALUE clas;
34
- char * end = class_name + sizeof(class_name) - 1;
35
- char * s;
33
+ char *end = class_name + sizeof(class_name) - 1;
34
+ char *s;
36
35
  const char *n = name;
37
36
 
38
37
  clas = rb_cObject;
data/ext/oj/rxclass.c CHANGED
@@ -21,7 +21,7 @@ typedef struct _rxC {
21
21
  #endif
22
22
  VALUE clas;
23
23
  char src[256];
24
- } * RxC;
24
+ } *RxC;
25
25
 
26
26
  void oj_rxclass_init(RxClass rc) {
27
27
  *rc->err = '\0';
data/ext/oj/rxclass.h CHANGED
@@ -14,7 +14,7 @@ typedef struct _rxClass {
14
14
  struct _rxC *head;
15
15
  struct _rxC *tail;
16
16
  char err[128];
17
- } * RxClass;
17
+ } *RxClass;
18
18
 
19
19
  extern void oj_rxclass_init(RxClass rc);
20
20
  extern void oj_rxclass_cleanup(RxClass rc);
data/ext/oj/saj.c CHANGED
@@ -14,8 +14,8 @@
14
14
  // Workaround in case INFINITY is not defined in math.h or if the OS is CentOS
15
15
  #define OJ_INFINITY (1.0 / 0.0)
16
16
 
17
- #include "mem.h"
18
17
  #include "encode.h"
18
+ #include "mem.h"
19
19
  #include "oj.h"
20
20
 
21
21
  typedef struct _parseInfo {
@@ -29,7 +29,7 @@ typedef struct _parseInfo {
29
29
  int has_array_end;
30
30
  int has_add_value;
31
31
  int has_error;
32
- } * ParseInfo;
32
+ } *ParseInfo;
33
33
 
34
34
  static void read_next(ParseInfo pi, const char *key);
35
35
  static void read_hash(ParseInfo pi, const char *key);
@@ -642,7 +642,7 @@ oj_saj_parse(int argc, VALUE *argv, VALUE self) {
642
642
  s = rb_funcall2(input, oj_string_id, 0, 0);
643
643
  len = RSTRING_LEN(s) + 1;
644
644
  json = OJ_R_ALLOC_N(char, len);
645
- strcpy(json, rb_string_value_cstr((VALUE *)&s));
645
+ strcpy(json, StringValueCStr(s));
646
646
  #if !IS_WINDOWS
647
647
  } else if (rb_cFile == clas && 0 == FIX2INT(rb_funcall(input, oj_pos_id, 0))) {
648
648
  int fd = FIX2INT(rb_funcall(input, oj_fileno_id, 0));
@@ -660,7 +660,7 @@ oj_saj_parse(int argc, VALUE *argv, VALUE self) {
660
660
  s = rb_funcall2(input, oj_read_id, 0, 0);
661
661
  len = RSTRING_LEN(s) + 1;
662
662
  json = OJ_R_ALLOC_N(char, len);
663
- strcpy(json, rb_string_value_cstr((VALUE *)&s));
663
+ strcpy(json, StringValueCStr(s));
664
664
  } else {
665
665
  rb_raise(rb_eArgError, "saj_parse() expected a String or IO Object.");
666
666
  }
data/ext/oj/saj2.c CHANGED
@@ -1,13 +1,14 @@
1
1
  // Copyright (c) 2021, Peter Ohler, All rights reserved.
2
2
 
3
- #include "mem.h"
3
+ #include "saj2.h"
4
+
4
5
  #include "cache.h"
6
+ #include "mem.h"
5
7
  #include "oj.h"
6
8
  #include "parser.h"
7
- #include "saj2.h"
8
9
 
9
10
  static VALUE get_key(ojParser p) {
10
- Saj d = (Saj)p->ctx;
11
+ Saj d = (Saj)p->ctx;
11
12
  const char *key = buf_str(&p->key);
12
13
  size_t len = buf_len(&p->key);
13
14
  volatile VALUE rkey;
@@ -44,7 +45,7 @@ static void open_object_loc(ojParser p) {
44
45
  }
45
46
 
46
47
  static void open_object_key(ojParser p) {
47
- Saj d = (Saj)p->ctx;
48
+ Saj d = (Saj)p->ctx;
48
49
  volatile VALUE key = get_key(p);
49
50
 
50
51
  push_key(d, key);
@@ -52,7 +53,7 @@ static void open_object_key(ojParser p) {
52
53
  }
53
54
 
54
55
  static void open_object_loc_key(ojParser p) {
55
- Saj d = (Saj)p->ctx;
56
+ Saj d = (Saj)p->ctx;
56
57
  volatile VALUE key = get_key(p);
57
58
 
58
59
  push_key(d, key);
@@ -68,7 +69,7 @@ static void open_array_loc(ojParser p) {
68
69
  }
69
70
 
70
71
  static void open_array_key(ojParser p) {
71
- Saj d = (Saj)p->ctx;
72
+ Saj d = (Saj)p->ctx;
72
73
  volatile VALUE key = get_key(p);
73
74
 
74
75
  push_key(d, key);
@@ -76,7 +77,7 @@ static void open_array_key(ojParser p) {
76
77
  }
77
78
 
78
79
  static void open_array_loc_key(ojParser p) {
79
- Saj d = (Saj)p->ctx;
80
+ Saj d = (Saj)p->ctx;
80
81
  volatile VALUE key = get_key(p);
81
82
 
82
83
  push_key(d, key);
@@ -84,8 +85,8 @@ static void open_array_loc_key(ojParser p) {
84
85
  }
85
86
 
86
87
  static void close_object(ojParser p) {
87
- Saj d = (Saj)p->ctx;
88
- VALUE key = Qnil;
88
+ Saj d = (Saj)p->ctx;
89
+ VALUE key = Qnil;
89
90
 
90
91
  if (OBJECT_FUN == p->stack[p->depth]) {
91
92
  d->tail--;
@@ -98,8 +99,8 @@ static void close_object(ojParser p) {
98
99
  }
99
100
 
100
101
  static void close_object_loc(ojParser p) {
101
- Saj d = (Saj)p->ctx;
102
- VALUE key = Qnil;
102
+ Saj d = (Saj)p->ctx;
103
+ VALUE key = Qnil;
103
104
 
104
105
  if (OBJECT_FUN == p->stack[p->depth]) {
105
106
  d->tail--;
@@ -112,8 +113,8 @@ static void close_object_loc(ojParser p) {
112
113
  }
113
114
 
114
115
  static void close_array(ojParser p) {
115
- Saj d = (Saj)p->ctx;
116
- VALUE key = Qnil;
116
+ Saj d = (Saj)p->ctx;
117
+ VALUE key = Qnil;
117
118
 
118
119
  if (OBJECT_FUN == p->stack[p->depth]) {
119
120
  d->tail--;
@@ -126,8 +127,8 @@ static void close_array(ojParser p) {
126
127
  }
127
128
 
128
129
  static void close_array_loc(ojParser p) {
129
- Saj d = (Saj)p->ctx;
130
- VALUE key = Qnil;
130
+ Saj d = (Saj)p->ctx;
131
+ VALUE key = Qnil;
131
132
 
132
133
  if (OBJECT_FUN == p->stack[p->depth]) {
133
134
  d->tail--;
@@ -144,13 +145,7 @@ static void add_null(ojParser p) {
144
145
  }
145
146
 
146
147
  static void add_null_loc(ojParser p) {
147
- rb_funcall(((Saj)p->ctx)->handler,
148
- oj_add_value_id,
149
- 4,
150
- Qnil,
151
- Qnil,
152
- LONG2FIX(p->line),
153
- LONG2FIX(p->cur - p->col));
148
+ rb_funcall(((Saj)p->ctx)->handler, oj_add_value_id, 4, Qnil, Qnil, LONG2FIX(p->line), LONG2FIX(p->cur - p->col));
154
149
  }
155
150
 
156
151
  static void add_null_key(ojParser p) {
@@ -172,13 +167,7 @@ static void add_true(ojParser p) {
172
167
  }
173
168
 
174
169
  static void add_true_loc(ojParser p) {
175
- rb_funcall(((Saj)p->ctx)->handler,
176
- oj_add_value_id,
177
- 4,
178
- Qtrue,
179
- Qnil,
180
- LONG2FIX(p->line),
181
- LONG2FIX(p->cur - p->col));
170
+ rb_funcall(((Saj)p->ctx)->handler, oj_add_value_id, 4, Qtrue, Qnil, LONG2FIX(p->line), LONG2FIX(p->cur - p->col));
182
171
  }
183
172
 
184
173
  static void add_true_key(ojParser p) {
@@ -200,13 +189,7 @@ static void add_false(ojParser p) {
200
189
  }
201
190
 
202
191
  static void add_false_loc(ojParser p) {
203
- rb_funcall(((Saj)p->ctx)->handler,
204
- oj_add_value_id,
205
- 4,
206
- Qfalse,
207
- Qnil,
208
- LONG2FIX(p->line),
209
- LONG2FIX(p->cur - p->col));
192
+ rb_funcall(((Saj)p->ctx)->handler, oj_add_value_id, 4, Qfalse, Qnil, LONG2FIX(p->line), LONG2FIX(p->cur - p->col));
210
193
  }
211
194
 
212
195
  static void add_false_key(ojParser p) {
@@ -316,7 +299,7 @@ static void add_big_key_loc(ojParser p) {
316
299
  }
317
300
 
318
301
  static void add_str(ojParser p) {
319
- Saj d = (Saj)p->ctx;
302
+ Saj d = (Saj)p->ctx;
320
303
  volatile VALUE rstr;
321
304
  const char *str = buf_str(&p->buf);
322
305
  size_t len = buf_len(&p->buf);
@@ -330,7 +313,7 @@ static void add_str(ojParser p) {
330
313
  }
331
314
 
332
315
  static void add_str_loc(ojParser p) {
333
- Saj d = (Saj)p->ctx;
316
+ Saj d = (Saj)p->ctx;
334
317
  volatile VALUE rstr;
335
318
  const char *str = buf_str(&p->buf);
336
319
  size_t len = buf_len(&p->buf);
@@ -344,7 +327,7 @@ static void add_str_loc(ojParser p) {
344
327
  }
345
328
 
346
329
  static void add_str_key(ojParser p) {
347
- Saj d = (Saj)p->ctx;
330
+ Saj d = (Saj)p->ctx;
348
331
  volatile VALUE rstr;
349
332
  const char *str = buf_str(&p->buf);
350
333
  size_t len = buf_len(&p->buf);
@@ -358,7 +341,7 @@ static void add_str_key(ojParser p) {
358
341
  }
359
342
 
360
343
  static void add_str_key_loc(ojParser p) {
361
- Saj d = (Saj)p->ctx;
344
+ Saj d = (Saj)p->ctx;
362
345
  volatile VALUE rstr;
363
346
  const char *str = buf_str(&p->buf);
364
347
  size_t len = buf_len(&p->buf);
@@ -557,8 +540,8 @@ static void mark(ojParser p) {
557
540
  if (NULL == p || NULL == p->ctx) {
558
541
  return;
559
542
  }
560
- Saj d = (Saj)p->ctx;
561
- VALUE *kp;
543
+ Saj d = (Saj)p->ctx;
544
+ VALUE *kp;
562
545
 
563
546
  cache_mark(d->str_cache);
564
547
  if (Qnil != d->handler) {
@@ -576,13 +559,13 @@ static VALUE form_str(const char *str, size_t len) {
576
559
  }
577
560
 
578
561
  void oj_init_saj(ojParser p, Saj d) {
579
- d->klen = 256;
580
- d->keys = OJ_R_ALLOC_N(VALUE, d->klen);
581
- d->tail = d->keys;
582
- d->handler = Qnil;
583
- d->str_cache = cache_create(0, form_str, true, false);
584
- d->cache_str = 16;
585
- d->cache_keys = true;
562
+ d->klen = 256;
563
+ d->keys = OJ_R_ALLOC_N(VALUE, d->klen);
564
+ d->tail = d->keys;
565
+ d->handler = Qnil;
566
+ d->str_cache = cache_create(0, form_str, true, false);
567
+ d->cache_str = 16;
568
+ d->cache_keys = true;
586
569
  d->thread_safe = false;
587
570
 
588
571
  p->ctx = (void *)d;
data/ext/oj/saj2.h CHANGED
@@ -15,7 +15,7 @@ typedef struct _saj {
15
15
  uint8_t cache_str;
16
16
  bool cache_keys;
17
17
  bool thread_safe;
18
- } * Saj;
18
+ } *Saj;
19
19
 
20
20
  // Initialize the parser with the SAJ delegate. If the SAJ delegate is wrapped
21
21
  // then this function is called first and then the parser functions can be
data/ext/oj/scp.c CHANGED
@@ -33,8 +33,7 @@ static VALUE noop_hash_key(ParseInfo pi, const char *key, size_t klen) {
33
33
  return Qundef;
34
34
  }
35
35
 
36
- static void
37
- noop_hash_set_cstr(ParseInfo pi, Val kval, const char *str, size_t len, const char *orig) {
36
+ static void noop_hash_set_cstr(ParseInfo pi, Val kval, const char *str, size_t len, const char *orig) {
38
37
  }
39
38
 
40
39
  static void noop_hash_set_num(ParseInfo pi, Val kval, NumInfo ni) {
@@ -91,12 +90,7 @@ static void hash_set_cstr(ParseInfo pi, Val kval, const char *str, size_t len, c
91
90
  volatile VALUE rstr = rb_str_new(str, len);
92
91
 
93
92
  rstr = oj_encode(rstr);
94
- rb_funcall(pi->handler,
95
- oj_hash_set_id,
96
- 3,
97
- stack_peek(&pi->stack)->val,
98
- oj_calc_hash_key(pi, kval),
99
- rstr);
93
+ rb_funcall(pi->handler, oj_hash_set_id, 3, stack_peek(&pi->stack)->val, oj_calc_hash_key(pi, kval), rstr);
100
94
  }
101
95
 
102
96
  static void hash_set_num(ParseInfo pi, Val kval, NumInfo ni) {
@@ -109,12 +103,7 @@ static void hash_set_num(ParseInfo pi, Val kval, NumInfo ni) {
109
103
  }
110
104
 
111
105
  static void hash_set_value(ParseInfo pi, Val kval, VALUE value) {
112
- rb_funcall(pi->handler,
113
- oj_hash_set_id,
114
- 3,
115
- stack_peek(&pi->stack)->val,
116
- oj_calc_hash_key(pi, kval),
117
- value);
106
+ rb_funcall(pi->handler, oj_hash_set_id, 3, stack_peek(&pi->stack)->val, oj_calc_hash_key(pi, kval), value);
118
107
  }
119
108
 
120
109
  static void array_append_cstr(ParseInfo pi, const char *str, size_t len, const char *orig) {