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,56 @@
1
+ /* sp_core.h -- runtime helpers split out of spinel_rt.h into
2
+ * libspinel_rt.a so they are compiled once rather than re-parsed and
3
+ * re-codegen'd in every generated translation unit.
4
+ *
5
+ * Signatures use intptr_t / double directly (== sp_int / sp_float)
6
+ * to stay decoupled from the runtime's typedefs. These helpers call
7
+ * sp_raise_cls / sp_sprintf, which live in the generated TU
8
+ * (spinel_rt.h) and resolve at link time.
9
+ */
10
+ #ifndef SP_CORE_H
11
+ #define SP_CORE_H
12
+
13
+ #include <stdint.h>
14
+ #include <stddef.h> /* size_t (sp_snprintf_c_float) */
15
+
16
+ /* String -> number parsers (cold, I/O-boundary). */
17
+ intptr_t sp_str_to_i_cruby(const char *s);
18
+ double sp_str_to_f_cruby(const char *s);
19
+ intptr_t sp_str_to_i_base(const char *s, intptr_t base);
20
+ intptr_t sp_str_to_i_strict(const char *s);
21
+ intptr_t sp_str_to_i_strict_base(const char *s, intptr_t base);
22
+ intptr_t sp_str_to_i_lenient_base(const char *s, intptr_t base);
23
+ int sp_str_int_overflows(const char *s, intptr_t base);
24
+ char *sp_int_digits_dup(const char *s, intptr_t *base, const char **rest);
25
+ double sp_str_to_f_strict(const char *s);
26
+ double sp_str_to_f_lenient(const char *s);
27
+ int sp_snprintf_c_float(char *buf, size_t size, const char *fmt, double v);
28
+ int sp_snprintf_ruby_float(char *buf, size_t size, const char *fmt, double v);
29
+
30
+ /* Cold integer-math + String#oct helpers. */
31
+ intptr_t sp_gcd(intptr_t a, intptr_t b);
32
+ intptr_t sp_lcm(intptr_t a, intptr_t b);
33
+ intptr_t sp_powmod(intptr_t base, intptr_t exp, intptr_t mod);
34
+ intptr_t sp_ceildiv(intptr_t a, intptr_t b);
35
+ intptr_t sp_int_clamp(intptr_t v, intptr_t lo, intptr_t hi);
36
+ double sp_float_clamp(double v, double lo, double hi);
37
+ intptr_t sp_int_sqrt(intptr_t n);
38
+ intptr_t sp_ipow10(intptr_t p);
39
+ void sp_int_round_check_ndigits(intptr_t nd);
40
+ intptr_t sp_int_round(intptr_t v, intptr_t nd);
41
+ intptr_t sp_int_ceil(intptr_t v, intptr_t nd);
42
+ intptr_t sp_int_floor(intptr_t v, intptr_t nd);
43
+ intptr_t sp_int_truncate(intptr_t v, intptr_t nd);
44
+ intptr_t sp_str_oct(const char *s);
45
+
46
+ /* Float#round / #floor / #ceil / #truncate at a POSITIVE digit count, and the
47
+ `half:` variants of round. `op` selects which. */
48
+ #define SP_PREC_ROUND 0 /* round, default half-up tie-break */
49
+ #define SP_PREC_FLOOR 1
50
+ #define SP_PREC_CEIL 2
51
+ #define SP_PREC_TRUNC 3
52
+ #define SP_PREC_HALF_EVEN 4
53
+ #define SP_PREC_HALF_DOWN 5
54
+ double sp_float_prec_op(double x, intptr_t nd, int op);
55
+
56
+ #endif