qr_reader-native 0.0.1

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 (95) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-mruby.txt +22 -0
  3. data/LICENSE-spinel.txt +19 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +61 -0
  6. data/ext/qr_reader_native/SPINEL_VERSION +1 -0
  7. data/ext/qr_reader_native/extconf.rb +8 -0
  8. data/ext/qr_reader_native/mruby/error.h +13 -0
  9. data/ext/qr_reader_native/mruby/internal.h +145 -0
  10. data/ext/qr_reader_native/mruby/string.h +22 -0
  11. data/ext/qr_reader_native/mruby.h +93 -0
  12. data/ext/qr_reader_native/mruby_shim.h +118 -0
  13. data/ext/qr_reader_native/qr_reader_native.c +13513 -0
  14. data/ext/qr_reader_native/qr_reader_native.h +29 -0
  15. data/ext/qr_reader_native/qr_reader_native_ext.c +598 -0
  16. data/ext/qr_reader_native/re_cased.h +71 -0
  17. data/ext/qr_reader_native/re_compile.c +5784 -0
  18. data/ext/qr_reader_native/re_ctype.h +3540 -0
  19. data/ext/qr_reader_native/re_exec.c +2190 -0
  20. data/ext/qr_reader_native/re_internal.h +671 -0
  21. data/ext/qr_reader_native/re_prop.h +4629 -0
  22. data/ext/qr_reader_native/re_spinel.c +363 -0
  23. data/ext/qr_reader_native/re_spinel.h +22 -0
  24. data/ext/qr_reader_native/re_spinel_utf8.inc +97 -0
  25. data/ext/qr_reader_native/re_utf8.c +156 -0
  26. data/ext/qr_reader_native/sp_alloc.c +1447 -0
  27. data/ext/qr_reader_native/sp_alloc.h +1196 -0
  28. data/ext/qr_reader_native/sp_argf.h +33 -0
  29. data/ext/qr_reader_native/sp_array.c +1052 -0
  30. data/ext/qr_reader_native/sp_array.h +456 -0
  31. data/ext/qr_reader_native/sp_bigint.c +5826 -0
  32. data/ext/qr_reader_native/sp_bigint.h +117 -0
  33. data/ext/qr_reader_native/sp_cold.c +5259 -0
  34. data/ext/qr_reader_native/sp_compat.h +402 -0
  35. data/ext/qr_reader_native/sp_core.c +818 -0
  36. data/ext/qr_reader_native/sp_core.h +56 -0
  37. data/ext/qr_reader_native/sp_crypto.c +877 -0
  38. data/ext/qr_reader_native/sp_crypto.h +169 -0
  39. data/ext/qr_reader_native/sp_dtoa.c +1533 -0
  40. data/ext/qr_reader_native/sp_dtoa.h +29 -0
  41. data/ext/qr_reader_native/sp_encoding_names.h +172 -0
  42. data/ext/qr_reader_native/sp_enum.h +86 -0
  43. data/ext/qr_reader_native/sp_exc.c +1185 -0
  44. data/ext/qr_reader_native/sp_exc.h +186 -0
  45. data/ext/qr_reader_native/sp_exc_ctx.h +56 -0
  46. data/ext/qr_reader_native/sp_fiber.c +889 -0
  47. data/ext/qr_reader_native/sp_fiber.h +162 -0
  48. data/ext/qr_reader_native/sp_fiber_ctx.h +84 -0
  49. data/ext/qr_reader_native/sp_format.c +695 -0
  50. data/ext/qr_reader_native/sp_format.h +83 -0
  51. data/ext/qr_reader_native/sp_gc.c +1793 -0
  52. data/ext/qr_reader_native/sp_gc.h +762 -0
  53. data/ext/qr_reader_native/sp_hash.c +131 -0
  54. data/ext/qr_reader_native/sp_hash.h +131 -0
  55. data/ext/qr_reader_native/sp_inspect.c +215 -0
  56. data/ext/qr_reader_native/sp_inspect.h +128 -0
  57. data/ext/qr_reader_native/sp_io.c +1676 -0
  58. data/ext/qr_reader_native/sp_io.h +272 -0
  59. data/ext/qr_reader_native/sp_iobuffer.c +1014 -0
  60. data/ext/qr_reader_native/sp_iobuffer.h +167 -0
  61. data/ext/qr_reader_native/sp_marshal.c +487 -0
  62. data/ext/qr_reader_native/sp_marshal.h +60 -0
  63. data/ext/qr_reader_native/sp_net.c +1029 -0
  64. data/ext/qr_reader_native/sp_net.h +205 -0
  65. data/ext/qr_reader_native/sp_pack.c +1254 -0
  66. data/ext/qr_reader_native/sp_poly_cold.c +1220 -0
  67. data/ext/qr_reader_native/sp_proc.c +410 -0
  68. data/ext/qr_reader_native/sp_proc.h +327 -0
  69. data/ext/qr_reader_native/sp_process.c +547 -0
  70. data/ext/qr_reader_native/sp_process_status.c +211 -0
  71. data/ext/qr_reader_native/sp_process_status.h +66 -0
  72. data/ext/qr_reader_native/sp_random.c +287 -0
  73. data/ext/qr_reader_native/sp_random.h +52 -0
  74. data/ext/qr_reader_native/sp_range.h +144 -0
  75. data/ext/qr_reader_native/sp_re.c +1379 -0
  76. data/ext/qr_reader_native/sp_re.h +186 -0
  77. data/ext/qr_reader_native/sp_re_names.h +59 -0
  78. data/ext/qr_reader_native/sp_sched.c +4044 -0
  79. data/ext/qr_reader_native/sp_sched.h +295 -0
  80. data/ext/qr_reader_native/sp_slab.c +1507 -0
  81. data/ext/qr_reader_native/sp_str.c +1462 -0
  82. data/ext/qr_reader_native/sp_str.h +306 -0
  83. data/ext/qr_reader_native/sp_str_crypt.c +23 -0
  84. data/ext/qr_reader_native/sp_string.c +92 -0
  85. data/ext/qr_reader_native/sp_string.h +253 -0
  86. data/ext/qr_reader_native/sp_system.c +78 -0
  87. data/ext/qr_reader_native/sp_system.h +18 -0
  88. data/ext/qr_reader_native/sp_time.c +860 -0
  89. data/ext/qr_reader_native/sp_time.h +100 -0
  90. data/ext/qr_reader_native/sp_types.h +292 -0
  91. data/ext/qr_reader_native/spinel_rt.h +19017 -0
  92. data/ext/qr_reader_native/unicase.c +399 -0
  93. data/ext/qr_reader_native/unicase.h +901 -0
  94. data/lib/qr_reader/native.rb +6 -0
  95. metadata +153 -0
@@ -0,0 +1,60 @@
1
+ #ifndef SP_MARSHAL_H
2
+ #define SP_MARSHAL_H
3
+ /* Marshal.dump / Marshal.load -- public interface to lib/sp_marshal.c.
4
+
5
+ The serializer is a standalone translation unit. The read side (length / array
6
+ element / hash pair / kind / symbol name) reuses the generic sp_json_* hooks
7
+ in sp_gc.h. The construction side (intern a symbol, build a result array/hash,
8
+ box Complex/Rational, dispatch a user object, raise) needs types and state
9
+ that live only in the generated TU, so the generated TU fills the sp_marshal_v
10
+ vtable below at startup (see sp_tu_init in codegen).
11
+
12
+ Covers nil/true/false/Integer/Float/String/Symbol + Array + Hash + Bignum +
13
+ Complex + Rational + plain user objects in the CRuby 4.8 wire format, with the
14
+ object-link table so cyclic / shared references round-trip. */
15
+ #include "sp_gc.h" /* sp_RbVal, sp_sym, sp_int, sp_float */
16
+
17
+ /* Dump buffer + wire-emit primitives. Public so the codegen-generated
18
+ per-class object dumper (registered as sp_marshal_v.obj_dump) can write the
19
+ `o` form through them. */
20
+ typedef struct sp_mar_buf_s {
21
+ char *p; size_t len, cap;
22
+ /* object-link table: pointer identity -> link id, plus the next id. */
23
+ void **lptr; int *lid; int nl, cl; int link_next;
24
+ /* symbol-link table: every symbol is written in full once; a repeat emits
25
+ `;<index>` (indices count symbols only, separate from object links). */
26
+ char **wsyms; int nws, cws;
27
+ } sp_mar_buf;
28
+ void sp_mar_b(sp_mar_buf *b, unsigned char c);
29
+ void sp_mar_sym(sp_mar_buf *b, const char *name);
30
+ void sp_mar_long(sp_mar_buf *b, long n);
31
+ void sp_mar_w(sp_mar_buf *b, sp_RbVal v);
32
+ /* An Array's or Hash's own record (`[` or `{`), its link already taken: the
33
+ body of a builtin subclass instance's `C` record (#7449). */
34
+ void sp_mar_w_body(sp_mar_buf *b, sp_RbVal v);
35
+
36
+ /* Runtime vtable filled by the generated TU (sp_tu_init). The read side uses
37
+ the sp_json_* hooks in sp_gc.h instead. */
38
+ typedef struct {
39
+ sp_sym (*sym_intern)(const char *);
40
+ sp_RbVal (*arr_new)(void);
41
+ void (*arr_push)(sp_RbVal arr, sp_RbVal v);
42
+ sp_RbVal (*hash_new)(void);
43
+ void (*hash_set)(sp_RbVal h, sp_RbVal k, sp_RbVal v);
44
+ sp_RbVal (*box_complex)(sp_float re, sp_float im);
45
+ sp_RbVal (*box_rational)(sp_int num, sp_int den);
46
+ int (*obj_dump)(sp_mar_buf *b, int cls_id, void *p); /* generated; writes `o` */
47
+ /* into nil: a new object of the class; into an object: its ivars set
48
+ from iv (a boxed PolyArray of name, value pairs) */
49
+ sp_RbVal (*obj_load)(const char *clsname, sp_RbVal into, sp_RbVal iv, int *ok);
50
+ void (*raise)(const char *cls, const char *msg);
51
+ sp_RbVal (*hash_default)(sp_RbVal h, int *has_proc); /* nil for none */
52
+ void (*hash_set_default)(sp_RbVal h, sp_RbVal d); /* on a hash_new one */
53
+ void (*any_push)(sp_RbVal arr, sp_RbVal v); /* push into a boxed Array of any kind */
54
+ } sp_marshal_vt;
55
+ extern sp_marshal_vt sp_marshal_v;
56
+
57
+ const char *sp_marshal_dump(sp_RbVal v);
58
+ sp_RbVal sp_marshal_load(const char *s, sp_int len);
59
+ void sp_marshal_mark_active(void); /* mark the in-flight load tables (lib/sp_marshal.c) */
60
+ #endif /* SP_MARSHAL_H */