yarp 0.12.0 → 0.13.0

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -8
  3. data/CONTRIBUTING.md +2 -2
  4. data/Makefile +5 -5
  5. data/README.md +11 -12
  6. data/config.yml +6 -2
  7. data/docs/build_system.md +21 -21
  8. data/docs/building.md +4 -4
  9. data/docs/configuration.md +25 -21
  10. data/docs/design.md +2 -2
  11. data/docs/encoding.md +17 -17
  12. data/docs/fuzzing.md +4 -4
  13. data/docs/heredocs.md +3 -3
  14. data/docs/mapping.md +94 -94
  15. data/docs/ripper.md +4 -4
  16. data/docs/ruby_api.md +11 -11
  17. data/docs/serialization.md +17 -16
  18. data/docs/testing.md +6 -6
  19. data/ext/prism/api_node.c +4725 -0
  20. data/ext/{yarp → prism}/api_pack.c +82 -82
  21. data/ext/{yarp → prism}/extconf.rb +13 -13
  22. data/ext/{yarp → prism}/extension.c +175 -168
  23. data/ext/prism/extension.h +18 -0
  24. data/include/prism/ast.h +1932 -0
  25. data/include/prism/defines.h +45 -0
  26. data/include/prism/diagnostic.h +231 -0
  27. data/include/{yarp/enc/yp_encoding.h → prism/enc/pm_encoding.h} +40 -40
  28. data/include/prism/node.h +41 -0
  29. data/include/prism/pack.h +141 -0
  30. data/include/{yarp → prism}/parser.h +143 -142
  31. data/include/prism/regexp.h +19 -0
  32. data/include/prism/unescape.h +48 -0
  33. data/include/prism/util/pm_buffer.h +51 -0
  34. data/include/{yarp/util/yp_char.h → prism/util/pm_char.h} +20 -20
  35. data/include/{yarp/util/yp_constant_pool.h → prism/util/pm_constant_pool.h} +26 -22
  36. data/include/{yarp/util/yp_list.h → prism/util/pm_list.h} +21 -21
  37. data/include/prism/util/pm_memchr.h +14 -0
  38. data/include/{yarp/util/yp_newline_list.h → prism/util/pm_newline_list.h} +11 -11
  39. data/include/prism/util/pm_state_stack.h +24 -0
  40. data/include/{yarp/util/yp_string.h → prism/util/pm_string.h} +20 -20
  41. data/include/prism/util/pm_string_list.h +25 -0
  42. data/include/{yarp/util/yp_strpbrk.h → prism/util/pm_strpbrk.h} +7 -7
  43. data/include/prism/version.h +4 -0
  44. data/include/prism.h +82 -0
  45. data/lib/prism/compiler.rb +465 -0
  46. data/lib/prism/debug.rb +157 -0
  47. data/lib/{yarp/desugar_visitor.rb → prism/desugar_compiler.rb} +4 -2
  48. data/lib/prism/dispatcher.rb +2051 -0
  49. data/lib/prism/dsl.rb +750 -0
  50. data/lib/{yarp → prism}/ffi.rb +66 -67
  51. data/lib/{yarp → prism}/lex_compat.rb +40 -43
  52. data/lib/{yarp/mutation_visitor.rb → prism/mutation_compiler.rb} +3 -3
  53. data/lib/{yarp → prism}/node.rb +2012 -2593
  54. data/lib/prism/node_ext.rb +55 -0
  55. data/lib/prism/node_inspector.rb +68 -0
  56. data/lib/{yarp → prism}/pack.rb +1 -1
  57. data/lib/{yarp → prism}/parse_result/comments.rb +1 -1
  58. data/lib/{yarp → prism}/parse_result/newlines.rb +1 -1
  59. data/lib/prism/parse_result.rb +266 -0
  60. data/lib/{yarp → prism}/pattern.rb +14 -14
  61. data/lib/{yarp → prism}/ripper_compat.rb +5 -5
  62. data/lib/{yarp → prism}/serialize.rb +12 -7
  63. data/lib/prism/visitor.rb +470 -0
  64. data/lib/prism.rb +64 -0
  65. data/lib/yarp.rb +2 -614
  66. data/src/diagnostic.c +213 -208
  67. data/src/enc/pm_big5.c +52 -0
  68. data/src/enc/pm_euc_jp.c +58 -0
  69. data/src/enc/{yp_gbk.c → pm_gbk.c} +16 -16
  70. data/src/enc/pm_shift_jis.c +56 -0
  71. data/src/enc/{yp_tables.c → pm_tables.c} +69 -69
  72. data/src/enc/{yp_unicode.c → pm_unicode.c} +40 -40
  73. data/src/enc/pm_windows_31j.c +56 -0
  74. data/src/node.c +1293 -1233
  75. data/src/pack.c +247 -247
  76. data/src/prettyprint.c +1479 -1479
  77. data/src/{yarp.c → prism.c} +5205 -5083
  78. data/src/regexp.c +132 -132
  79. data/src/serialize.c +1121 -1121
  80. data/src/token_type.c +169 -167
  81. data/src/unescape.c +106 -87
  82. data/src/util/pm_buffer.c +103 -0
  83. data/src/util/{yp_char.c → pm_char.c} +72 -72
  84. data/src/util/{yp_constant_pool.c → pm_constant_pool.c} +85 -64
  85. data/src/util/{yp_list.c → pm_list.c} +10 -10
  86. data/src/util/{yp_memchr.c → pm_memchr.c} +6 -4
  87. data/src/util/{yp_newline_list.c → pm_newline_list.c} +21 -21
  88. data/src/util/{yp_state_stack.c → pm_state_stack.c} +4 -4
  89. data/src/util/{yp_string.c → pm_string.c} +38 -38
  90. data/src/util/pm_string_list.c +29 -0
  91. data/src/util/{yp_strncasecmp.c → pm_strncasecmp.c} +1 -1
  92. data/src/util/{yp_strpbrk.c → pm_strpbrk.c} +8 -8
  93. data/yarp.gemspec +68 -59
  94. metadata +70 -61
  95. data/ext/yarp/api_node.c +0 -4728
  96. data/ext/yarp/extension.h +0 -18
  97. data/include/yarp/ast.h +0 -1929
  98. data/include/yarp/defines.h +0 -45
  99. data/include/yarp/diagnostic.h +0 -226
  100. data/include/yarp/node.h +0 -42
  101. data/include/yarp/pack.h +0 -141
  102. data/include/yarp/regexp.h +0 -19
  103. data/include/yarp/unescape.h +0 -44
  104. data/include/yarp/util/yp_buffer.h +0 -51
  105. data/include/yarp/util/yp_memchr.h +0 -14
  106. data/include/yarp/util/yp_state_stack.h +0 -24
  107. data/include/yarp/util/yp_string_list.h +0 -25
  108. data/include/yarp/version.h +0 -4
  109. data/include/yarp.h +0 -82
  110. data/src/enc/yp_big5.c +0 -52
  111. data/src/enc/yp_euc_jp.c +0 -58
  112. data/src/enc/yp_shift_jis.c +0 -56
  113. data/src/enc/yp_windows_31j.c +0 -56
  114. data/src/util/yp_buffer.c +0 -101
  115. data/src/util/yp_string_list.c +0 -29
data/src/pack.c CHANGED
@@ -1,4 +1,4 @@
1
- #include "yarp/pack.h"
1
+ #include "prism/pack.h"
2
2
 
3
3
  #include <stdbool.h>
4
4
  #include <errno.h>
@@ -6,25 +6,25 @@
6
6
  static uintmax_t
7
7
  strtoumaxc(const char **format);
8
8
 
9
- YP_EXPORTED_FUNCTION yp_pack_result
10
- yp_pack_parse(yp_pack_variant variant, const char **format, const char *format_end,
11
- yp_pack_type *type, yp_pack_signed *signed_type, yp_pack_endian *endian, yp_pack_size *size,
12
- yp_pack_length_type *length_type, uint64_t *length, yp_pack_encoding *encoding) {
9
+ PRISM_EXPORTED_FUNCTION pm_pack_result
10
+ pm_pack_parse(pm_pack_variant variant, const char **format, const char *format_end,
11
+ pm_pack_type *type, pm_pack_signed *signed_type, pm_pack_endian *endian, pm_pack_size *size,
12
+ pm_pack_length_type *length_type, uint64_t *length, pm_pack_encoding *encoding) {
13
13
 
14
- if (*encoding == YP_PACK_ENCODING_START) {
15
- *encoding = YP_PACK_ENCODING_US_ASCII;
14
+ if (*encoding == PM_PACK_ENCODING_START) {
15
+ *encoding = PM_PACK_ENCODING_US_ASCII;
16
16
  }
17
17
 
18
18
  if (*format == format_end) {
19
- *type = YP_PACK_END;
20
- *signed_type = YP_PACK_SIGNED_NA;
21
- *endian = YP_PACK_ENDIAN_NA;
22
- *size = YP_PACK_SIZE_NA;
23
- *length_type = YP_PACK_LENGTH_NA;
24
- return YP_PACK_OK;
19
+ *type = PM_PACK_END;
20
+ *signed_type = PM_PACK_SIGNED_NA;
21
+ *endian = PM_PACK_ENDIAN_NA;
22
+ *size = PM_PACK_SIZE_NA;
23
+ *length_type = PM_PACK_LENGTH_NA;
24
+ return PM_PACK_OK;
25
25
  }
26
26
 
27
- *length_type = YP_PACK_LENGTH_FIXED;
27
+ *length_type = PM_PACK_LENGTH_FIXED;
28
28
  *length = 1;
29
29
  bool length_changed_allowed = true;
30
30
 
@@ -37,268 +37,268 @@ yp_pack_parse(yp_pack_variant variant, const char **format, const char *format_e
37
37
  case '\v':
38
38
  case '\f':
39
39
  case '\r':
40
- *type = YP_PACK_SPACE;
41
- *signed_type = YP_PACK_SIGNED_NA;
42
- *endian = YP_PACK_ENDIAN_NA;
43
- *size = YP_PACK_SIZE_NA;
44
- *length_type = YP_PACK_LENGTH_NA;
40
+ *type = PM_PACK_SPACE;
41
+ *signed_type = PM_PACK_SIGNED_NA;
42
+ *endian = PM_PACK_ENDIAN_NA;
43
+ *size = PM_PACK_SIZE_NA;
44
+ *length_type = PM_PACK_LENGTH_NA;
45
45
  *length = 0;
46
- return YP_PACK_OK;
46
+ return PM_PACK_OK;
47
47
  case '#':
48
48
  while ((*format < format_end) && (**format != '\n')) {
49
49
  (*format)++;
50
50
  }
51
- *type = YP_PACK_COMMENT;
52
- *signed_type = YP_PACK_SIGNED_NA;
53
- *endian = YP_PACK_ENDIAN_NA;
54
- *size = YP_PACK_SIZE_NA;
55
- *length_type = YP_PACK_LENGTH_NA;
51
+ *type = PM_PACK_COMMENT;
52
+ *signed_type = PM_PACK_SIGNED_NA;
53
+ *endian = PM_PACK_ENDIAN_NA;
54
+ *size = PM_PACK_SIZE_NA;
55
+ *length_type = PM_PACK_LENGTH_NA;
56
56
  *length = 0;
57
- return YP_PACK_OK;
57
+ return PM_PACK_OK;
58
58
  case 'C':
59
- *type = YP_PACK_INTEGER;
60
- *signed_type = YP_PACK_UNSIGNED;
61
- *endian = YP_PACK_AGNOSTIC_ENDIAN;
62
- *size = YP_PACK_SIZE_8;
59
+ *type = PM_PACK_INTEGER;
60
+ *signed_type = PM_PACK_UNSIGNED;
61
+ *endian = PM_PACK_AGNOSTIC_ENDIAN;
62
+ *size = PM_PACK_SIZE_8;
63
63
  break;
64
64
  case 'S':
65
- *type = YP_PACK_INTEGER;
66
- *signed_type = YP_PACK_UNSIGNED;
67
- *endian = YP_PACK_NATIVE_ENDIAN;
68
- *size = YP_PACK_SIZE_16;
65
+ *type = PM_PACK_INTEGER;
66
+ *signed_type = PM_PACK_UNSIGNED;
67
+ *endian = PM_PACK_NATIVE_ENDIAN;
68
+ *size = PM_PACK_SIZE_16;
69
69
  break;
70
70
  case 'L':
71
- *type = YP_PACK_INTEGER;
72
- *signed_type = YP_PACK_UNSIGNED;
73
- *endian = YP_PACK_NATIVE_ENDIAN;
74
- *size = YP_PACK_SIZE_32;
71
+ *type = PM_PACK_INTEGER;
72
+ *signed_type = PM_PACK_UNSIGNED;
73
+ *endian = PM_PACK_NATIVE_ENDIAN;
74
+ *size = PM_PACK_SIZE_32;
75
75
  break;
76
76
  case 'Q':
77
- *type = YP_PACK_INTEGER;
78
- *signed_type = YP_PACK_UNSIGNED;
79
- *endian = YP_PACK_NATIVE_ENDIAN;
80
- *size = YP_PACK_SIZE_64;
77
+ *type = PM_PACK_INTEGER;
78
+ *signed_type = PM_PACK_UNSIGNED;
79
+ *endian = PM_PACK_NATIVE_ENDIAN;
80
+ *size = PM_PACK_SIZE_64;
81
81
  break;
82
82
  case 'J':
83
- *type = YP_PACK_INTEGER;
84
- *signed_type = YP_PACK_UNSIGNED;
85
- *endian = YP_PACK_NATIVE_ENDIAN;
86
- *size = YP_PACK_SIZE_P;
83
+ *type = PM_PACK_INTEGER;
84
+ *signed_type = PM_PACK_UNSIGNED;
85
+ *endian = PM_PACK_NATIVE_ENDIAN;
86
+ *size = PM_PACK_SIZE_P;
87
87
  break;
88
88
  case 'c':
89
- *type = YP_PACK_INTEGER;
90
- *signed_type = YP_PACK_SIGNED;
91
- *endian = YP_PACK_AGNOSTIC_ENDIAN;
92
- *size = YP_PACK_SIZE_8;
89
+ *type = PM_PACK_INTEGER;
90
+ *signed_type = PM_PACK_SIGNED;
91
+ *endian = PM_PACK_AGNOSTIC_ENDIAN;
92
+ *size = PM_PACK_SIZE_8;
93
93
  break;
94
94
  case 's':
95
- *type = YP_PACK_INTEGER;
96
- *signed_type = YP_PACK_SIGNED;
97
- *endian = YP_PACK_NATIVE_ENDIAN;
98
- *size = YP_PACK_SIZE_16;
95
+ *type = PM_PACK_INTEGER;
96
+ *signed_type = PM_PACK_SIGNED;
97
+ *endian = PM_PACK_NATIVE_ENDIAN;
98
+ *size = PM_PACK_SIZE_16;
99
99
  break;
100
100
  case 'l':
101
- *type = YP_PACK_INTEGER;
102
- *signed_type = YP_PACK_SIGNED;
103
- *endian = YP_PACK_NATIVE_ENDIAN;
104
- *size = YP_PACK_SIZE_32;
101
+ *type = PM_PACK_INTEGER;
102
+ *signed_type = PM_PACK_SIGNED;
103
+ *endian = PM_PACK_NATIVE_ENDIAN;
104
+ *size = PM_PACK_SIZE_32;
105
105
  break;
106
106
  case 'q':
107
- *type = YP_PACK_INTEGER;
108
- *signed_type = YP_PACK_SIGNED;
109
- *endian = YP_PACK_NATIVE_ENDIAN;
110
- *size = YP_PACK_SIZE_64;
107
+ *type = PM_PACK_INTEGER;
108
+ *signed_type = PM_PACK_SIGNED;
109
+ *endian = PM_PACK_NATIVE_ENDIAN;
110
+ *size = PM_PACK_SIZE_64;
111
111
  break;
112
112
  case 'j':
113
- *type = YP_PACK_INTEGER;
114
- *signed_type = YP_PACK_SIGNED;
115
- *endian = YP_PACK_NATIVE_ENDIAN;
116
- *size = YP_PACK_SIZE_P;
113
+ *type = PM_PACK_INTEGER;
114
+ *signed_type = PM_PACK_SIGNED;
115
+ *endian = PM_PACK_NATIVE_ENDIAN;
116
+ *size = PM_PACK_SIZE_P;
117
117
  break;
118
118
  case 'I':
119
- *type = YP_PACK_INTEGER;
120
- *signed_type = YP_PACK_UNSIGNED;
121
- *endian = YP_PACK_NATIVE_ENDIAN;
122
- *size = YP_PACK_SIZE_INT;
119
+ *type = PM_PACK_INTEGER;
120
+ *signed_type = PM_PACK_UNSIGNED;
121
+ *endian = PM_PACK_NATIVE_ENDIAN;
122
+ *size = PM_PACK_SIZE_INT;
123
123
  break;
124
124
  case 'i':
125
- *type = YP_PACK_INTEGER;
126
- *signed_type = YP_PACK_SIGNED;
127
- *endian = YP_PACK_NATIVE_ENDIAN;
128
- *size = YP_PACK_SIZE_INT;
125
+ *type = PM_PACK_INTEGER;
126
+ *signed_type = PM_PACK_SIGNED;
127
+ *endian = PM_PACK_NATIVE_ENDIAN;
128
+ *size = PM_PACK_SIZE_INT;
129
129
  break;
130
130
  case 'n':
131
- *type = YP_PACK_INTEGER;
132
- *signed_type = YP_PACK_UNSIGNED;
133
- *endian = YP_PACK_BIG_ENDIAN;
134
- *size = YP_PACK_SIZE_16;
131
+ *type = PM_PACK_INTEGER;
132
+ *signed_type = PM_PACK_UNSIGNED;
133
+ *endian = PM_PACK_BIG_ENDIAN;
134
+ *size = PM_PACK_SIZE_16;
135
135
  length_changed_allowed = false;
136
136
  break;
137
137
  case 'N':
138
- *type = YP_PACK_INTEGER;
139
- *signed_type = YP_PACK_UNSIGNED;
140
- *endian = YP_PACK_BIG_ENDIAN;
141
- *size = YP_PACK_SIZE_32;
138
+ *type = PM_PACK_INTEGER;
139
+ *signed_type = PM_PACK_UNSIGNED;
140
+ *endian = PM_PACK_BIG_ENDIAN;
141
+ *size = PM_PACK_SIZE_32;
142
142
  length_changed_allowed = false;
143
143
  break;
144
144
  case 'v':
145
- *type = YP_PACK_INTEGER;
146
- *signed_type = YP_PACK_UNSIGNED;
147
- *endian = YP_PACK_LITTLE_ENDIAN;
148
- *size = YP_PACK_SIZE_16;
145
+ *type = PM_PACK_INTEGER;
146
+ *signed_type = PM_PACK_UNSIGNED;
147
+ *endian = PM_PACK_LITTLE_ENDIAN;
148
+ *size = PM_PACK_SIZE_16;
149
149
  length_changed_allowed = false;
150
150
  break;
151
151
  case 'V':
152
- *type = YP_PACK_INTEGER;
153
- *signed_type = YP_PACK_UNSIGNED;
154
- *endian = YP_PACK_LITTLE_ENDIAN;
155
- *size = YP_PACK_SIZE_32;
152
+ *type = PM_PACK_INTEGER;
153
+ *signed_type = PM_PACK_UNSIGNED;
154
+ *endian = PM_PACK_LITTLE_ENDIAN;
155
+ *size = PM_PACK_SIZE_32;
156
156
  length_changed_allowed = false;
157
157
  break;
158
158
  case 'U':
159
- *type = YP_PACK_UTF8;
160
- *signed_type = YP_PACK_SIGNED_NA;
161
- *endian = YP_PACK_ENDIAN_NA;
162
- *size = YP_PACK_SIZE_NA;
159
+ *type = PM_PACK_UTF8;
160
+ *signed_type = PM_PACK_SIGNED_NA;
161
+ *endian = PM_PACK_ENDIAN_NA;
162
+ *size = PM_PACK_SIZE_NA;
163
163
  break;
164
164
  case 'w':
165
- *type = YP_PACK_BER;
166
- *signed_type = YP_PACK_SIGNED_NA;
167
- *endian = YP_PACK_ENDIAN_NA;
168
- *size = YP_PACK_SIZE_NA;
165
+ *type = PM_PACK_BER;
166
+ *signed_type = PM_PACK_SIGNED_NA;
167
+ *endian = PM_PACK_ENDIAN_NA;
168
+ *size = PM_PACK_SIZE_NA;
169
169
  break;
170
170
  case 'D':
171
171
  case 'd':
172
- *type = YP_PACK_FLOAT;
173
- *signed_type = YP_PACK_SIGNED_NA;
174
- *endian = YP_PACK_NATIVE_ENDIAN;
175
- *size = YP_PACK_SIZE_64;
172
+ *type = PM_PACK_FLOAT;
173
+ *signed_type = PM_PACK_SIGNED_NA;
174
+ *endian = PM_PACK_NATIVE_ENDIAN;
175
+ *size = PM_PACK_SIZE_64;
176
176
  break;
177
177
  case 'F':
178
178
  case 'f':
179
- *type = YP_PACK_FLOAT;
180
- *signed_type = YP_PACK_SIGNED_NA;
181
- *endian = YP_PACK_NATIVE_ENDIAN;
182
- *size = YP_PACK_SIZE_32;
179
+ *type = PM_PACK_FLOAT;
180
+ *signed_type = PM_PACK_SIGNED_NA;
181
+ *endian = PM_PACK_NATIVE_ENDIAN;
182
+ *size = PM_PACK_SIZE_32;
183
183
  break;
184
184
  case 'E':
185
- *type = YP_PACK_FLOAT;
186
- *signed_type = YP_PACK_SIGNED_NA;
187
- *endian = YP_PACK_LITTLE_ENDIAN;
188
- *size = YP_PACK_SIZE_64;
185
+ *type = PM_PACK_FLOAT;
186
+ *signed_type = PM_PACK_SIGNED_NA;
187
+ *endian = PM_PACK_LITTLE_ENDIAN;
188
+ *size = PM_PACK_SIZE_64;
189
189
  break;
190
190
  case 'e':
191
- *type = YP_PACK_FLOAT;
192
- *signed_type = YP_PACK_SIGNED_NA;
193
- *endian = YP_PACK_LITTLE_ENDIAN;
194
- *size = YP_PACK_SIZE_32;
191
+ *type = PM_PACK_FLOAT;
192
+ *signed_type = PM_PACK_SIGNED_NA;
193
+ *endian = PM_PACK_LITTLE_ENDIAN;
194
+ *size = PM_PACK_SIZE_32;
195
195
  break;
196
196
  case 'G':
197
- *type = YP_PACK_FLOAT;
198
- *signed_type = YP_PACK_SIGNED_NA;
199
- *endian = YP_PACK_BIG_ENDIAN;
200
- *size = YP_PACK_SIZE_64;
197
+ *type = PM_PACK_FLOAT;
198
+ *signed_type = PM_PACK_SIGNED_NA;
199
+ *endian = PM_PACK_BIG_ENDIAN;
200
+ *size = PM_PACK_SIZE_64;
201
201
  break;
202
202
  case 'g':
203
- *type = YP_PACK_FLOAT;
204
- *signed_type = YP_PACK_SIGNED_NA;
205
- *endian = YP_PACK_BIG_ENDIAN;
206
- *size = YP_PACK_SIZE_32;
203
+ *type = PM_PACK_FLOAT;
204
+ *signed_type = PM_PACK_SIGNED_NA;
205
+ *endian = PM_PACK_BIG_ENDIAN;
206
+ *size = PM_PACK_SIZE_32;
207
207
  break;
208
208
  case 'A':
209
- *type = YP_PACK_STRING_SPACE_PADDED;
210
- *signed_type = YP_PACK_SIGNED_NA;
211
- *endian = YP_PACK_ENDIAN_NA;
212
- *size = YP_PACK_SIZE_NA;
209
+ *type = PM_PACK_STRING_SPACE_PADDED;
210
+ *signed_type = PM_PACK_SIGNED_NA;
211
+ *endian = PM_PACK_ENDIAN_NA;
212
+ *size = PM_PACK_SIZE_NA;
213
213
  break;
214
214
  case 'a':
215
- *type = YP_PACK_STRING_NULL_PADDED;
216
- *signed_type = YP_PACK_SIGNED_NA;
217
- *endian = YP_PACK_ENDIAN_NA;
218
- *size = YP_PACK_SIZE_NA;
215
+ *type = PM_PACK_STRING_NULL_PADDED;
216
+ *signed_type = PM_PACK_SIGNED_NA;
217
+ *endian = PM_PACK_ENDIAN_NA;
218
+ *size = PM_PACK_SIZE_NA;
219
219
  break;
220
220
  case 'Z':
221
- *type = YP_PACK_STRING_NULL_TERMINATED;
222
- *signed_type = YP_PACK_SIGNED_NA;
223
- *endian = YP_PACK_ENDIAN_NA;
224
- *size = YP_PACK_SIZE_NA;
221
+ *type = PM_PACK_STRING_NULL_TERMINATED;
222
+ *signed_type = PM_PACK_SIGNED_NA;
223
+ *endian = PM_PACK_ENDIAN_NA;
224
+ *size = PM_PACK_SIZE_NA;
225
225
  break;
226
226
  case 'B':
227
- *type = YP_PACK_STRING_MSB;
228
- *signed_type = YP_PACK_SIGNED_NA;
229
- *endian = YP_PACK_ENDIAN_NA;
230
- *size = YP_PACK_SIZE_NA;
227
+ *type = PM_PACK_STRING_MSB;
228
+ *signed_type = PM_PACK_SIGNED_NA;
229
+ *endian = PM_PACK_ENDIAN_NA;
230
+ *size = PM_PACK_SIZE_NA;
231
231
  break;
232
232
  case 'b':
233
- *type = YP_PACK_STRING_LSB;
234
- *signed_type = YP_PACK_SIGNED_NA;
235
- *endian = YP_PACK_ENDIAN_NA;
236
- *size = YP_PACK_SIZE_NA;
233
+ *type = PM_PACK_STRING_LSB;
234
+ *signed_type = PM_PACK_SIGNED_NA;
235
+ *endian = PM_PACK_ENDIAN_NA;
236
+ *size = PM_PACK_SIZE_NA;
237
237
  break;
238
238
  case 'H':
239
- *type = YP_PACK_STRING_HEX_HIGH;
240
- *signed_type = YP_PACK_SIGNED_NA;
241
- *endian = YP_PACK_ENDIAN_NA;
242
- *size = YP_PACK_SIZE_NA;
239
+ *type = PM_PACK_STRING_HEX_HIGH;
240
+ *signed_type = PM_PACK_SIGNED_NA;
241
+ *endian = PM_PACK_ENDIAN_NA;
242
+ *size = PM_PACK_SIZE_NA;
243
243
  break;
244
244
  case 'h':
245
- *type = YP_PACK_STRING_HEX_LOW;
246
- *signed_type = YP_PACK_SIGNED_NA;
247
- *endian = YP_PACK_ENDIAN_NA;
248
- *size = YP_PACK_SIZE_NA;
245
+ *type = PM_PACK_STRING_HEX_LOW;
246
+ *signed_type = PM_PACK_SIGNED_NA;
247
+ *endian = PM_PACK_ENDIAN_NA;
248
+ *size = PM_PACK_SIZE_NA;
249
249
  break;
250
250
  case 'u':
251
- *type = YP_PACK_STRING_UU;
252
- *signed_type = YP_PACK_SIGNED_NA;
253
- *endian = YP_PACK_ENDIAN_NA;
254
- *size = YP_PACK_SIZE_NA;
251
+ *type = PM_PACK_STRING_UU;
252
+ *signed_type = PM_PACK_SIGNED_NA;
253
+ *endian = PM_PACK_ENDIAN_NA;
254
+ *size = PM_PACK_SIZE_NA;
255
255
  break;
256
256
  case 'M':
257
- *type = YP_PACK_STRING_MIME;
258
- *signed_type = YP_PACK_SIGNED_NA;
259
- *endian = YP_PACK_ENDIAN_NA;
260
- *size = YP_PACK_SIZE_NA;
257
+ *type = PM_PACK_STRING_MIME;
258
+ *signed_type = PM_PACK_SIGNED_NA;
259
+ *endian = PM_PACK_ENDIAN_NA;
260
+ *size = PM_PACK_SIZE_NA;
261
261
  break;
262
262
  case 'm':
263
- *type = YP_PACK_STRING_BASE64;
264
- *signed_type = YP_PACK_SIGNED_NA;
265
- *endian = YP_PACK_ENDIAN_NA;
266
- *size = YP_PACK_SIZE_NA;
263
+ *type = PM_PACK_STRING_BASE64;
264
+ *signed_type = PM_PACK_SIGNED_NA;
265
+ *endian = PM_PACK_ENDIAN_NA;
266
+ *size = PM_PACK_SIZE_NA;
267
267
  break;
268
268
  case 'P':
269
- *type = YP_PACK_STRING_FIXED;
270
- *signed_type = YP_PACK_SIGNED_NA;
271
- *endian = YP_PACK_ENDIAN_NA;
272
- *size = YP_PACK_SIZE_NA;
269
+ *type = PM_PACK_STRING_FIXED;
270
+ *signed_type = PM_PACK_SIGNED_NA;
271
+ *endian = PM_PACK_ENDIAN_NA;
272
+ *size = PM_PACK_SIZE_NA;
273
273
  break;
274
274
  case 'p':
275
- *type = YP_PACK_STRING_POINTER;
276
- *signed_type = YP_PACK_SIGNED_NA;
277
- *endian = YP_PACK_ENDIAN_NA;
278
- *size = YP_PACK_SIZE_NA;
275
+ *type = PM_PACK_STRING_POINTER;
276
+ *signed_type = PM_PACK_SIGNED_NA;
277
+ *endian = PM_PACK_ENDIAN_NA;
278
+ *size = PM_PACK_SIZE_NA;
279
279
  break;
280
280
  case '@':
281
- *type = YP_PACK_MOVE;
282
- *signed_type = YP_PACK_SIGNED_NA;
283
- *endian = YP_PACK_ENDIAN_NA;
284
- *size = YP_PACK_SIZE_NA;
281
+ *type = PM_PACK_MOVE;
282
+ *signed_type = PM_PACK_SIGNED_NA;
283
+ *endian = PM_PACK_ENDIAN_NA;
284
+ *size = PM_PACK_SIZE_NA;
285
285
  break;
286
286
  case 'X':
287
- *type = YP_PACK_BACK;
288
- *signed_type = YP_PACK_SIGNED_NA;
289
- *endian = YP_PACK_ENDIAN_NA;
290
- *size = YP_PACK_SIZE_NA;
287
+ *type = PM_PACK_BACK;
288
+ *signed_type = PM_PACK_SIGNED_NA;
289
+ *endian = PM_PACK_ENDIAN_NA;
290
+ *size = PM_PACK_SIZE_NA;
291
291
  break;
292
292
  case 'x':
293
- *type = YP_PACK_NULL;
294
- *signed_type = YP_PACK_SIGNED_NA;
295
- *endian = YP_PACK_ENDIAN_NA;
296
- *size = YP_PACK_SIZE_NA;
293
+ *type = PM_PACK_NULL;
294
+ *signed_type = PM_PACK_SIGNED_NA;
295
+ *endian = PM_PACK_ENDIAN_NA;
296
+ *size = PM_PACK_SIZE_NA;
297
297
  break;
298
298
  case '%':
299
- return YP_PACK_ERROR_UNSUPPORTED_DIRECTIVE;
299
+ return PM_PACK_ERROR_UNSUPPORTED_DIRECTIVE;
300
300
  default:
301
- return YP_PACK_ERROR_UNKNOWN_DIRECTIVE;
301
+ return PM_PACK_ERROR_UNKNOWN_DIRECTIVE;
302
302
  }
303
303
 
304
304
  bool explicit_endian = false;
@@ -308,44 +308,44 @@ yp_pack_parse(yp_pack_variant variant, const char **format, const char *format_e
308
308
  case '_':
309
309
  case '!':
310
310
  (*format)++;
311
- if (*type != YP_PACK_INTEGER || !length_changed_allowed) {
312
- return YP_PACK_ERROR_BANG_NOT_ALLOWED;
311
+ if (*type != PM_PACK_INTEGER || !length_changed_allowed) {
312
+ return PM_PACK_ERROR_BANG_NOT_ALLOWED;
313
313
  }
314
314
  switch (*size) {
315
- case YP_PACK_SIZE_SHORT:
316
- case YP_PACK_SIZE_INT:
317
- case YP_PACK_SIZE_LONG:
318
- case YP_PACK_SIZE_LONG_LONG:
315
+ case PM_PACK_SIZE_SHORT:
316
+ case PM_PACK_SIZE_INT:
317
+ case PM_PACK_SIZE_LONG:
318
+ case PM_PACK_SIZE_LONG_LONG:
319
319
  break;
320
- case YP_PACK_SIZE_16:
321
- *size = YP_PACK_SIZE_SHORT;
320
+ case PM_PACK_SIZE_16:
321
+ *size = PM_PACK_SIZE_SHORT;
322
322
  break;
323
- case YP_PACK_SIZE_32:
324
- *size = YP_PACK_SIZE_LONG;
323
+ case PM_PACK_SIZE_32:
324
+ *size = PM_PACK_SIZE_LONG;
325
325
  break;
326
- case YP_PACK_SIZE_64:
327
- *size = YP_PACK_SIZE_LONG_LONG;
326
+ case PM_PACK_SIZE_64:
327
+ *size = PM_PACK_SIZE_LONG_LONG;
328
328
  break;
329
- case YP_PACK_SIZE_P:
329
+ case PM_PACK_SIZE_P:
330
330
  break;
331
331
  default:
332
- return YP_PACK_ERROR_BANG_NOT_ALLOWED;
332
+ return PM_PACK_ERROR_BANG_NOT_ALLOWED;
333
333
  }
334
334
  break;
335
335
  case '<':
336
336
  (*format)++;
337
337
  if (explicit_endian) {
338
- return YP_PACK_ERROR_DOUBLE_ENDIAN;
338
+ return PM_PACK_ERROR_DOUBLE_ENDIAN;
339
339
  }
340
- *endian = YP_PACK_LITTLE_ENDIAN;
340
+ *endian = PM_PACK_LITTLE_ENDIAN;
341
341
  explicit_endian = true;
342
342
  break;
343
343
  case '>':
344
344
  (*format)++;
345
345
  if (explicit_endian) {
346
- return YP_PACK_ERROR_DOUBLE_ENDIAN;
346
+ return PM_PACK_ERROR_DOUBLE_ENDIAN;
347
347
  }
348
- *endian = YP_PACK_BIG_ENDIAN;
348
+ *endian = PM_PACK_BIG_ENDIAN;
349
349
  explicit_endian = true;
350
350
  break;
351
351
  default:
@@ -355,64 +355,64 @@ yp_pack_parse(yp_pack_variant variant, const char **format, const char *format_e
355
355
 
356
356
  exit_modifier_loop:
357
357
 
358
- if (variant == YP_PACK_VARIANT_UNPACK && *type == YP_PACK_MOVE) {
358
+ if (variant == PM_PACK_VARIANT_UNPACK && *type == PM_PACK_MOVE) {
359
359
  *length = 0;
360
360
  }
361
361
 
362
362
  if (*format < format_end) {
363
363
  if (**format == '*') {
364
364
  switch (*type) {
365
- case YP_PACK_NULL:
366
- case YP_PACK_BACK:
365
+ case PM_PACK_NULL:
366
+ case PM_PACK_BACK:
367
367
  switch (variant) {
368
- case YP_PACK_VARIANT_PACK:
369
- *length_type = YP_PACK_LENGTH_FIXED;
368
+ case PM_PACK_VARIANT_PACK:
369
+ *length_type = PM_PACK_LENGTH_FIXED;
370
370
  break;
371
- case YP_PACK_VARIANT_UNPACK:
372
- *length_type = YP_PACK_LENGTH_MAX;
371
+ case PM_PACK_VARIANT_UNPACK:
372
+ *length_type = PM_PACK_LENGTH_MAX;
373
373
  break;
374
374
  }
375
375
  *length = 0;
376
376
  break;
377
377
 
378
- case YP_PACK_MOVE:
378
+ case PM_PACK_MOVE:
379
379
  switch (variant) {
380
- case YP_PACK_VARIANT_PACK:
381
- *length_type = YP_PACK_LENGTH_FIXED;
380
+ case PM_PACK_VARIANT_PACK:
381
+ *length_type = PM_PACK_LENGTH_FIXED;
382
382
  break;
383
- case YP_PACK_VARIANT_UNPACK:
384
- *length_type = YP_PACK_LENGTH_RELATIVE;
383
+ case PM_PACK_VARIANT_UNPACK:
384
+ *length_type = PM_PACK_LENGTH_RELATIVE;
385
385
  break;
386
386
  }
387
387
  *length = 0;
388
388
  break;
389
389
 
390
- case YP_PACK_STRING_UU:
391
- *length_type = YP_PACK_LENGTH_FIXED;
390
+ case PM_PACK_STRING_UU:
391
+ *length_type = PM_PACK_LENGTH_FIXED;
392
392
  *length = 0;
393
393
  break;
394
394
 
395
- case YP_PACK_STRING_FIXED:
395
+ case PM_PACK_STRING_FIXED:
396
396
  switch (variant) {
397
- case YP_PACK_VARIANT_PACK:
398
- *length_type = YP_PACK_LENGTH_FIXED;
397
+ case PM_PACK_VARIANT_PACK:
398
+ *length_type = PM_PACK_LENGTH_FIXED;
399
399
  *length = 1;
400
400
  break;
401
- case YP_PACK_VARIANT_UNPACK:
402
- *length_type = YP_PACK_LENGTH_MAX;
401
+ case PM_PACK_VARIANT_UNPACK:
402
+ *length_type = PM_PACK_LENGTH_MAX;
403
403
  *length = 0;
404
404
  break;
405
405
  }
406
406
  break;
407
407
 
408
- case YP_PACK_STRING_MIME:
409
- case YP_PACK_STRING_BASE64:
410
- *length_type = YP_PACK_LENGTH_FIXED;
408
+ case PM_PACK_STRING_MIME:
409
+ case PM_PACK_STRING_BASE64:
410
+ *length_type = PM_PACK_LENGTH_FIXED;
411
411
  *length = 1;
412
412
  break;
413
413
 
414
414
  default:
415
- *length_type = YP_PACK_LENGTH_MAX;
415
+ *length_type = PM_PACK_LENGTH_MAX;
416
416
  *length = 0;
417
417
  break;
418
418
  }
@@ -420,59 +420,59 @@ exit_modifier_loop:
420
420
  (*format)++;
421
421
  } else if (**format >= '0' && **format <= '9') {
422
422
  errno = 0;
423
- *length_type = YP_PACK_LENGTH_FIXED;
423
+ *length_type = PM_PACK_LENGTH_FIXED;
424
424
  #if UINTMAX_MAX < UINT64_MAX
425
- #error "YARP's design assumes uintmax_t is at least as large as uint64_t"
425
+ #error "prism's design assumes uintmax_t is at least as large as uint64_t"
426
426
  #endif
427
427
  uintmax_t length_max = strtoumaxc(format);
428
428
  if (errno || length_max > UINT64_MAX) {
429
- return YP_PACK_ERROR_LENGTH_TOO_BIG;
429
+ return PM_PACK_ERROR_LENGTH_TOO_BIG;
430
430
  }
431
431
  *length = (uint64_t) length_max;
432
432
  }
433
433
  }
434
434
 
435
435
  switch (*type) {
436
- case YP_PACK_UTF8:
436
+ case PM_PACK_UTF8:
437
437
  /* if encoding is US-ASCII, upgrade to UTF-8 */
438
- if (*encoding == YP_PACK_ENCODING_US_ASCII) {
439
- *encoding = YP_PACK_ENCODING_UTF_8;
438
+ if (*encoding == PM_PACK_ENCODING_US_ASCII) {
439
+ *encoding = PM_PACK_ENCODING_UTF_8;
440
440
  }
441
441
  break;
442
- case YP_PACK_STRING_MIME:
443
- case YP_PACK_STRING_BASE64:
444
- case YP_PACK_STRING_UU:
442
+ case PM_PACK_STRING_MIME:
443
+ case PM_PACK_STRING_BASE64:
444
+ case PM_PACK_STRING_UU:
445
445
  /* keep US-ASCII (do nothing) */
446
446
  break;
447
447
  default:
448
448
  /* fall back to BINARY */
449
- *encoding = YP_PACK_ENCODING_ASCII_8BIT;
449
+ *encoding = PM_PACK_ENCODING_ASCII_8BIT;
450
450
  break;
451
451
  }
452
452
 
453
- return YP_PACK_OK;
453
+ return PM_PACK_OK;
454
454
  }
455
455
 
456
- YP_EXPORTED_FUNCTION size_t
457
- yp_size_to_native(yp_pack_size size) {
456
+ PRISM_EXPORTED_FUNCTION size_t
457
+ pm_size_to_native(pm_pack_size size) {
458
458
  switch (size) {
459
- case YP_PACK_SIZE_SHORT:
459
+ case PM_PACK_SIZE_SHORT:
460
460
  return sizeof(short);
461
- case YP_PACK_SIZE_INT:
461
+ case PM_PACK_SIZE_INT:
462
462
  return sizeof(int);
463
- case YP_PACK_SIZE_LONG:
463
+ case PM_PACK_SIZE_LONG:
464
464
  return sizeof(long);
465
- case YP_PACK_SIZE_LONG_LONG:
465
+ case PM_PACK_SIZE_LONG_LONG:
466
466
  return sizeof(long long);
467
- case YP_PACK_SIZE_8:
467
+ case PM_PACK_SIZE_8:
468
468
  return 1;
469
- case YP_PACK_SIZE_16:
469
+ case PM_PACK_SIZE_16:
470
470
  return 2;
471
- case YP_PACK_SIZE_32:
471
+ case PM_PACK_SIZE_32:
472
472
  return 4;
473
- case YP_PACK_SIZE_64:
473
+ case PM_PACK_SIZE_64:
474
474
  return 8;
475
- case YP_PACK_SIZE_P:
475
+ case PM_PACK_SIZE_P:
476
476
  return sizeof(void *);
477
477
  default:
478
478
  return 0;