msgpack 1.1.0-x64-mingw32 → 1.2.0-x64-mingw32

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f722e0fe7d02ec2e454031e7aa2dc06f3e5eeee
4
- data.tar.gz: 7bef2c2750435586e5b8cac216f074637961641a
3
+ metadata.gz: e2a428806959220962e2aa9eaf49690efd8d7840
4
+ data.tar.gz: fa4f22246fdee17bbf61f7de26558e8b51a8adf4
5
5
  SHA512:
6
- metadata.gz: fa0d2c135f58d2ab6374b4708d693fee835f19273676c9c988a97a10f3973d393cf2ec7a7382accd7d08075d1fb7a338b48bc3e256b153e718f76c56d9f85d0e
7
- data.tar.gz: ad5ef92718a2f2e84457686c6a08c7ed7f865a3ea776f31d12a671ef3712790cb3955764ece20e88ba0b877bb093c6fcc512dc92fe66ba31b1cd45ad57369a86
6
+ metadata.gz: 8f213af06850b4b8ee763651863ec19069d21b44e0d84b712f8efb380ec829706e9ac4ea6c975af0db5dc8bf012080e0cdba44324c316586e74d3993c0c15eb3
7
+ data.tar.gz: f14ce83ae916be26520adea5b3f5dc635be05d9128257de5f1bda134f81f36f03fbcdc68502fc55f6d702d12ffaaf08cefa6127c22bc0b887828a18995e79738
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ 2017-12-07 version 1.2.0:
2
+
3
+ * Add MessagePack::Factory#dump and MessagePack::Factory#load as convenient methods
4
+ like MessagePack.dump and MessagePack.load
5
+ * Fix bug to accept MessagePack::Factory#register_type after #freeze
6
+
1
7
  2017-02-28 version 1.1.0:
2
8
 
3
9
  * Fix the extention type handling to accept modules in addition to classes
@@ -19,6 +19,22 @@ module MessagePack
19
19
  def packer(*args)
20
20
  end
21
21
 
22
+ #
23
+ # Serialize the passed value
24
+ #
25
+ # If it could not serialize the object, it raises
26
+ # NoMethodError: undefined method `to_msgpack' for #<the_object>.
27
+ #
28
+ # @param obj [Object] object to serialize
29
+ # @param options [Hash]
30
+ # @return [String] serialized object
31
+ #
32
+ # See Packer#initialize for supported options.
33
+ #
34
+ def dump(obj, options={})
35
+ end
36
+ alias pack dump
37
+
22
38
  #
23
39
  # Creates a MessagePack::Unpacker instance, which has ext types already registered.
24
40
  # Options are passed to MessagePack::Unpacker#initialized.
@@ -28,6 +44,23 @@ module MessagePack
28
44
  def unpacker(*args)
29
45
  end
30
46
 
47
+ #
48
+ # Deserializes an object from the string or io and returns it.
49
+ #
50
+ # If there're not enough data to deserialize one object, this method raises EOFError.
51
+ # If data format is invalid, this method raises MessagePack::MalformedFormatError.
52
+ # If the object nests too deeply, this method raises MessagePack::StackError.
53
+ #
54
+ # @param data [String]
55
+ # @param options [Hash]
56
+ # @return [Object] deserialized object
57
+ #
58
+ # See Unpacker#initialize for supported options.
59
+ #
60
+ def load(data, options={})
61
+ end
62
+ alias unpack load
63
+
31
64
  #
32
65
  # Register a type and Class to be registered for packer and/or unpacker.
33
66
  # If options are not speicified, factory will use :to_msgpack_ext for packer, and
@@ -75,6 +75,11 @@ public class Factory extends RubyObject {
75
75
 
76
76
  IRubyObject packerArg;
77
77
  IRubyObject unpackerArg;
78
+
79
+ if (isFrozen()) {
80
+ throw runtime.newRuntimeError("can't modify frozen Factory");
81
+ }
82
+
78
83
  if (args.length == 2) {
79
84
  packerArg = runtime.newSymbol("to_msgpack_ext");
80
85
  unpackerArg = runtime.newSymbol("from_msgpack_ext");
@@ -20,11 +20,8 @@ import org.jruby.internal.runtime.methods.DynamicMethod;
20
20
 
21
21
 
22
22
  public class MessagePackLibrary implements Library {
23
- public static Factory defaultFactory;
24
-
25
23
  public void load(Ruby runtime, boolean wrap) {
26
24
  RubyModule msgpackModule = runtime.defineModule("MessagePack");
27
- msgpackModule.defineAnnotatedMethods(MessagePackModule.class);
28
25
  RubyClass standardErrorClass = runtime.getStandardError();
29
26
  RubyClass unpackErrorClass = msgpackModule.defineClassUnder("UnpackError", standardErrorClass, standardErrorClass.getAllocator());
30
27
  RubyClass underflowErrorClass = msgpackModule.defineClassUnder("UnderflowError", unpackErrorClass, unpackErrorClass.getAllocator());
@@ -44,94 +41,5 @@ public class MessagePackLibrary implements Library {
44
41
  bufferClass.defineAnnotatedMethods(Buffer.class);
45
42
  RubyClass factoryClass = msgpackModule.defineClassUnder("Factory", runtime.getObject(), new Factory.FactoryAllocator());
46
43
  factoryClass.defineAnnotatedMethods(Factory.class);
47
- defaultFactory = new Factory(runtime, factoryClass);
48
- defaultFactory.initialize(runtime.getCurrentContext());
49
- msgpackModule.defineConstant("DefaultFactory", defaultFactory);
50
- installCoreExtensions(runtime);
51
- }
52
-
53
- private void installCoreExtensions(Ruby runtime) {
54
- RubyClass extensionValueClass = runtime.getModule("MessagePack").getClass("ExtensionValue");
55
- installCoreExtensions(
56
- runtime,
57
- runtime.getNilClass(),
58
- runtime.getTrueClass(),
59
- runtime.getFalseClass(),
60
- runtime.getFixnum(),
61
- runtime.getBignum(),
62
- runtime.getFloat(),
63
- runtime.getString(),
64
- runtime.getArray(),
65
- runtime.getHash(),
66
- runtime.getSymbol(),
67
- extensionValueClass
68
- );
69
- }
70
-
71
- private void installCoreExtensions(Ruby runtime, RubyClass... classes) {
72
- for (RubyClass cls : classes) {
73
- cls.addMethod("to_msgpack", createToMsgpackMethod(runtime, cls));
74
- }
75
- }
76
-
77
- private DynamicMethod createToMsgpackMethod(final Ruby runtime, RubyClass cls) {
78
- return new DynamicMethod(cls, Visibility.PUBLIC, CallConfiguration.FrameNoneScopeNone) {
79
- @Override
80
- public IRubyObject call(ThreadContext context, IRubyObject recv, RubyModule clazz, String name, IRubyObject[] args, Block block) {
81
- if (args.length == 0) {
82
- IRubyObject[] allArgs = { recv };
83
- return MessagePackModule.pack(runtime.getCurrentContext(), null, allArgs);
84
- } else if (args.length == 1 && args[0] instanceof Packer) {
85
- Packer packer = (Packer)args[0];
86
- return packer.write(runtime.getCurrentContext(), recv);
87
- } else if (args.length == 1) {
88
- IRubyObject[] allArgs = { recv, args[0] };
89
- return MessagePackModule.pack(runtime.getCurrentContext(), null, allArgs);
90
- } else {
91
- throw runtime.newArgumentError(String.format("wrong number of arguments (%d for 0..1)", args.length));
92
- }
93
- }
94
-
95
- @Override
96
- public DynamicMethod dup() {
97
- return this;
98
- }
99
- };
100
- }
101
-
102
- @JRubyModule(name = "MessagePack")
103
- public static class MessagePackModule {
104
- @JRubyMethod(module = true, required = 1, optional = 1, alias = {"dump"})
105
- public static IRubyObject pack(ThreadContext ctx, IRubyObject recv, IRubyObject[] args) {
106
- IRubyObject[] extraArgs = null;
107
- if (args.length == 0) {
108
- extraArgs = new IRubyObject[] {};
109
- } else {
110
- extraArgs = new IRubyObject[args.length - 1];
111
- System.arraycopy(args, 1, extraArgs, 0, args.length - 1);
112
- }
113
- Packer packer = MessagePackLibrary.defaultFactory.packer(ctx, extraArgs);
114
- packer.write(ctx, args[0]);
115
- return packer.toS(ctx);
116
- }
117
-
118
- @JRubyMethod(module = true, required = 1, optional = 1, alias = {"load"})
119
- public static IRubyObject unpack(ThreadContext ctx, IRubyObject recv, IRubyObject[] args) {
120
- ExtensionRegistry registry = MessagePackLibrary.defaultFactory.extensionRegistry();
121
-
122
- boolean symbolizeKeys = false;
123
- boolean allowUnknownExt = false;
124
- if (args.length > 1 && !args[args.length - 1].isNil()) {
125
- RubyHash hash = args[args.length - 1].convertToHash();
126
- IRubyObject symbolizeKeysVal = hash.fastARef(ctx.getRuntime().newSymbol("symbolize_keys"));
127
- symbolizeKeys = symbolizeKeysVal != null && symbolizeKeysVal.isTrue();
128
- IRubyObject allowUnknownExtVal = hash.fastARef(ctx.getRuntime().newSymbol("allow_unknown_ext"));
129
- allowUnknownExt = (allowUnknownExtVal != null && allowUnknownExtVal.isTrue());
130
- }
131
- byte[] bytes = args[0].asString().getBytes();
132
- Decoder decoder = new Decoder(ctx.getRuntime(), registry, bytes, 0, bytes.length, symbolizeKeys, allowUnknownExt);
133
-
134
- return decoder.next();
135
- }
136
44
  }
137
45
  }
@@ -18,6 +18,8 @@ import org.jruby.anno.JRubyMethod;
18
18
  import org.jruby.runtime.ThreadContext;
19
19
  import org.jruby.runtime.ObjectAllocator;
20
20
  import org.jruby.util.ByteList;
21
+ import org.jruby.util.TypeConverter;
22
+ import org.msgpack.jruby.ExtensionValue;
21
23
 
22
24
  import static org.jruby.runtime.Visibility.PRIVATE;
23
25
 
@@ -121,6 +123,62 @@ public class Packer extends RubyObject {
121
123
  return this;
122
124
  }
123
125
 
126
+ @JRubyMethod(name = "write_float")
127
+ public IRubyObject writeFloat(ThreadContext ctx, IRubyObject obj) {
128
+ checkType(ctx, obj, org.jruby.RubyFloat.class);
129
+ return write(ctx, obj);
130
+ }
131
+
132
+ @JRubyMethod(name = "write_array")
133
+ public IRubyObject writeArray(ThreadContext ctx, IRubyObject obj) {
134
+ checkType(ctx, obj, org.jruby.RubyArray.class);
135
+ return write(ctx, obj);
136
+ }
137
+
138
+ @JRubyMethod(name = "write_string")
139
+ public IRubyObject writeString(ThreadContext ctx, IRubyObject obj) {
140
+ checkType(ctx, obj, org.jruby.RubyString.class);
141
+ return write(ctx, obj);
142
+ }
143
+
144
+ @JRubyMethod(name = "write_hash")
145
+ public IRubyObject writeHash(ThreadContext ctx, IRubyObject obj) {
146
+ checkType(ctx, obj, org.jruby.RubyHash.class);
147
+ return write(ctx, obj);
148
+ }
149
+
150
+ @JRubyMethod(name = "write_symbol")
151
+ public IRubyObject writeSymbol(ThreadContext ctx, IRubyObject obj) {
152
+ checkType(ctx, obj, org.jruby.RubySymbol.class);
153
+ return write(ctx, obj);
154
+ }
155
+
156
+ @JRubyMethod(name = "write_int")
157
+ public IRubyObject writeInt(ThreadContext ctx, IRubyObject obj) {
158
+ if (!(obj instanceof RubyFixnum)) {
159
+ checkType(ctx, obj, org.jruby.RubyBignum.class);
160
+ }
161
+ return write(ctx, obj);
162
+ }
163
+
164
+ @JRubyMethod(name = "write_extension")
165
+ public IRubyObject writeExtension(ThreadContext ctx, IRubyObject obj) {
166
+ if (!(obj instanceof ExtensionValue)) {
167
+ throw ctx.runtime.newTypeError("Expected extension");
168
+ }
169
+ return write(ctx, obj);
170
+ }
171
+
172
+ @JRubyMethod(name = "write_true")
173
+ public IRubyObject writeTrue(ThreadContext ctx) {
174
+ return write(ctx, ctx.getRuntime().getTrue());
175
+ }
176
+
177
+ @JRubyMethod(name = "write_false")
178
+ public IRubyObject writeFalse(ThreadContext ctx) {
179
+ return write(ctx, ctx.getRuntime().getFalse());
180
+ }
181
+
124
182
  @JRubyMethod(name = "write_nil")
125
183
  public IRubyObject writeNil(ThreadContext ctx) {
126
184
  write(ctx, null);
@@ -151,6 +209,11 @@ public class Packer extends RubyObject {
151
209
  return this;
152
210
  }
153
211
 
212
+ @JRubyMethod(name = "full_pack")
213
+ public IRubyObject fullPack(ThreadContext ctx) {
214
+ return toS(ctx);
215
+ }
216
+
154
217
  @JRubyMethod(name = "to_s", alias = { "to_str" })
155
218
  public IRubyObject toS(ThreadContext ctx) {
156
219
  return buffer.toS(ctx);
@@ -175,4 +238,11 @@ public class Packer extends RubyObject {
175
238
  public IRubyObject clear(ThreadContext ctx) {
176
239
  return buffer.clear(ctx);
177
240
  }
241
+
242
+ private void checkType(ThreadContext ctx, IRubyObject obj, Class<? extends IRubyObject> expectedType) {
243
+ if (!expectedType.isInstance(obj)) {
244
+ String expectedName = expectedType.getName().substring("org.jruby.Ruby".length());
245
+ throw ctx.runtime.newTypeError(String.format("wrong argument type %s (expected %s)", obj.getMetaClass().toString(), expectedName));
246
+ }
247
+ }
178
248
  }
@@ -68,7 +68,7 @@ public class Unpacker extends RubyObject {
68
68
  allowUnknownExt = au.isTrue();
69
69
  }
70
70
  }
71
- if (!(args[0] instanceof RubyHash)) {
71
+ if (args[0] != ctx.getRuntime().getNil() && !(args[0] instanceof RubyHash)) {
72
72
  setStream(ctx, args[0]);
73
73
  }
74
74
  }
@@ -181,6 +181,11 @@ public class Unpacker extends RubyObject {
181
181
  return this;
182
182
  }
183
183
 
184
+ @JRubyMethod(name = "full_unpack")
185
+ public IRubyObject fullUnpack(ThreadContext ctx) {
186
+ return decoder.next();
187
+ }
188
+
184
189
  @JRubyMethod(name = "feed_each", required = 1)
185
190
  public IRubyObject feedEach(ThreadContext ctx, IRubyObject data, Block block) {
186
191
  feed(ctx, data);
@@ -24,7 +24,6 @@
24
24
  #include "unpacker_class.h"
25
25
 
26
26
  VALUE cMessagePack_Factory;
27
- VALUE cMessagePack_DefaultFactory;
28
27
 
29
28
  struct msgpack_factory_t;
30
29
  typedef struct msgpack_factory_t msgpack_factory_t;
@@ -146,6 +145,10 @@ static VALUE Factory_register_type(int argc, VALUE* argv, VALUE self)
146
145
  VALUE packer_arg, unpacker_arg;
147
146
  VALUE packer_proc, unpacker_proc;
148
147
 
148
+ if (OBJ_FROZEN(self)) {
149
+ rb_raise(rb_eRuntimeError, "can't modify frozen Factory");
150
+ }
151
+
149
152
  switch (argc) {
150
153
  case 2:
151
154
  /* register_type(0x7f, Time) */
@@ -214,8 +217,4 @@ void MessagePack_Factory_module_init(VALUE mMessagePack)
214
217
 
215
218
  rb_define_private_method(cMessagePack_Factory, "registered_types_internal", Factory_registered_types_internal, 0);
216
219
  rb_define_method(cMessagePack_Factory, "register_type", Factory_register_type, -1);
217
-
218
- cMessagePack_DefaultFactory = Factory_alloc(cMessagePack_Factory);
219
- Factory_initialize(0, NULL, cMessagePack_DefaultFactory);
220
- rb_define_const(mMessagePack, "DefaultFactory", cMessagePack_DefaultFactory);
221
220
  }
@@ -23,8 +23,6 @@
23
23
 
24
24
  extern VALUE cMessagePack_Factory;
25
25
 
26
- extern VALUE cMessagePack_DefaultFactory;
27
-
28
26
  extern VALUE MessagePack_Factory_packer(int argc, VALUE* argv, VALUE self);
29
27
 
30
28
  extern VALUE MessagePack_Factory_unpacker(int argc, VALUE* argv, VALUE self);
@@ -135,6 +135,88 @@ static VALUE Packer_write_nil(VALUE self)
135
135
  return self;
136
136
  }
137
137
 
138
+ static VALUE Packer_write_true(VALUE self)
139
+ {
140
+ PACKER(self, pk);
141
+ msgpack_packer_write_true(pk);
142
+ return self;
143
+ }
144
+
145
+ static VALUE Packer_write_false(VALUE self)
146
+ {
147
+ PACKER(self, pk);
148
+ msgpack_packer_write_false(pk);
149
+ return self;
150
+ }
151
+
152
+ static VALUE Packer_write_float(VALUE self, VALUE obj)
153
+ {
154
+ PACKER(self, pk);
155
+ msgpack_packer_write_float_value(pk, obj);
156
+ return self;
157
+ }
158
+
159
+ static VALUE Packer_write_string(VALUE self, VALUE obj)
160
+ {
161
+ PACKER(self, pk);
162
+ Check_Type(obj, T_STRING);
163
+ msgpack_packer_write_string_value(pk, obj);
164
+ return self;
165
+ }
166
+
167
+ static VALUE Packer_write_array(VALUE self, VALUE obj)
168
+ {
169
+ PACKER(self, pk);
170
+ Check_Type(obj, T_ARRAY);
171
+ msgpack_packer_write_array_value(pk, obj);
172
+ return self;
173
+ }
174
+
175
+ static VALUE Packer_write_hash(VALUE self, VALUE obj)
176
+ {
177
+ PACKER(self, pk);
178
+ Check_Type(obj, T_HASH);
179
+ msgpack_packer_write_hash_value(pk, obj);
180
+ return self;
181
+ }
182
+
183
+ static VALUE Packer_write_symbol(VALUE self, VALUE obj)
184
+ {
185
+ PACKER(self, pk);
186
+ Check_Type(obj, T_SYMBOL);
187
+ msgpack_packer_write_symbol_value(pk, obj);
188
+ return self;
189
+ }
190
+
191
+ static VALUE Packer_write_int(VALUE self, VALUE obj)
192
+ {
193
+ PACKER(self, pk);
194
+
195
+ if (FIXNUM_P(obj)) {
196
+ msgpack_packer_write_fixnum_value(pk, obj);
197
+ } else {
198
+ Check_Type(obj, T_BIGNUM);
199
+ msgpack_packer_write_bignum_value(pk, obj);
200
+ }
201
+ return self;
202
+ }
203
+
204
+ static VALUE Packer_write_extension(VALUE self, VALUE obj)
205
+ {
206
+ PACKER(self, pk);
207
+ Check_Type(obj, T_STRUCT);
208
+
209
+ int ext_type = FIX2INT(RSTRUCT_GET(obj, 0));
210
+ if(ext_type < -128 || ext_type > 127) {
211
+ rb_raise(rb_eRangeError, "integer %d too big to convert to `signed char'", ext_type);
212
+ }
213
+ VALUE payload = RSTRUCT_GET(obj, 1);
214
+ StringValue(payload);
215
+ msgpack_packer_write_ext(pk, ext_type, payload);
216
+
217
+ return self;
218
+ }
219
+
138
220
  static VALUE Packer_write_array_header(VALUE self, VALUE n)
139
221
  {
140
222
  PACKER(self, pk);
@@ -293,21 +375,12 @@ static VALUE Packer_register_type(int argc, VALUE* argv, VALUE self)
293
375
  return Qnil;
294
376
  }
295
377
 
296
- VALUE MessagePack_pack(int argc, VALUE* argv)
378
+ VALUE Packer_full_pack(VALUE self)
297
379
  {
298
- VALUE v;
299
-
300
- if (argc < 0 || argc > 3) {
301
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1..3)", argc);
302
- }
303
- v = argv[0];
380
+ VALUE retval;
304
381
 
305
- VALUE self = MessagePack_Factory_packer(argc - 1, argv + 1, cMessagePack_DefaultFactory);
306
382
  PACKER(self, pk);
307
383
 
308
- msgpack_packer_write_value(pk, v);
309
-
310
- VALUE retval;
311
384
  if(msgpack_buffer_has_io(PACKER_BUFFER_(pk))) {
312
385
  msgpack_buffer_flush(PACKER_BUFFER_(pk));
313
386
  retval = Qnil;
@@ -317,27 +390,9 @@ VALUE MessagePack_pack(int argc, VALUE* argv)
317
390
 
318
391
  msgpack_buffer_clear(PACKER_BUFFER_(pk)); /* to free rmem before GC */
319
392
 
320
- #ifdef RB_GC_GUARD
321
- /* This prevents compilers from optimizing out the `self` variable
322
- * from stack. Otherwise GC free()s it. */
323
- RB_GC_GUARD(self);
324
- #endif
325
-
326
393
  return retval;
327
394
  }
328
395
 
329
- static VALUE MessagePack_dump_module_method(int argc, VALUE* argv, VALUE mod)
330
- {
331
- UNUSED(mod);
332
- return MessagePack_pack(argc, argv);
333
- }
334
-
335
- static VALUE MessagePack_pack_module_method(int argc, VALUE* argv, VALUE mod)
336
- {
337
- UNUSED(mod);
338
- return MessagePack_pack(argc, argv);
339
- }
340
-
341
396
  void MessagePack_Packer_module_init(VALUE mMessagePack)
342
397
  {
343
398
  s_to_msgpack = rb_intern("to_msgpack");
@@ -356,6 +411,15 @@ void MessagePack_Packer_module_init(VALUE mMessagePack)
356
411
  rb_define_method(cMessagePack_Packer, "write", Packer_write, 1);
357
412
  rb_define_alias(cMessagePack_Packer, "pack", "write");
358
413
  rb_define_method(cMessagePack_Packer, "write_nil", Packer_write_nil, 0);
414
+ rb_define_method(cMessagePack_Packer, "write_true", Packer_write_true, 0);
415
+ rb_define_method(cMessagePack_Packer, "write_false", Packer_write_false, 0);
416
+ rb_define_method(cMessagePack_Packer, "write_float", Packer_write_float, 1);
417
+ rb_define_method(cMessagePack_Packer, "write_string", Packer_write_string, 1);
418
+ rb_define_method(cMessagePack_Packer, "write_array", Packer_write_array, 1);
419
+ rb_define_method(cMessagePack_Packer, "write_hash", Packer_write_hash, 1);
420
+ rb_define_method(cMessagePack_Packer, "write_symbol", Packer_write_symbol, 1);
421
+ rb_define_method(cMessagePack_Packer, "write_int", Packer_write_int, 1);
422
+ rb_define_method(cMessagePack_Packer, "write_extension", Packer_write_extension, 1);
359
423
  rb_define_method(cMessagePack_Packer, "write_array_header", Packer_write_array_header, 1);
360
424
  rb_define_method(cMessagePack_Packer, "write_map_header", Packer_write_map_header, 1);
361
425
  rb_define_method(cMessagePack_Packer, "write_ext", Packer_write_ext, 2);
@@ -380,8 +444,5 @@ void MessagePack_Packer_module_init(VALUE mMessagePack)
380
444
  //rb_gc_register_address(&s_packer_value);
381
445
  //Data_Get_Struct(s_packer_value, msgpack_packer_t, s_packer);
382
446
 
383
- /* MessagePack.pack(x) */
384
- rb_define_module_function(mMessagePack, "pack", MessagePack_pack_module_method, -1);
385
- rb_define_module_function(mMessagePack, "dump", MessagePack_dump_module_method, -1);
447
+ rb_define_method(cMessagePack_Packer, "full_pack", Packer_full_pack, 0);
386
448
  }
387
-
@@ -28,7 +28,5 @@ VALUE MessagePack_Packer_alloc(VALUE klass);
28
28
 
29
29
  VALUE MessagePack_Packer_initialize(int argc, VALUE* argv, VALUE self);
30
30
 
31
- VALUE MessagePack_pack(int argc, VALUE* argv);
32
-
33
31
  #endif
34
32
 
@@ -21,7 +21,6 @@
21
21
  #include "unpacker_class.h"
22
22
  #include "factory_class.h"
23
23
  #include "extension_value_class.h"
24
- #include "core_ext.h"
25
24
 
26
25
  void Init_msgpack(void)
27
26
  {
@@ -32,6 +31,5 @@ void Init_msgpack(void)
32
31
  MessagePack_Unpacker_module_init(mMessagePack);
33
32
  MessagePack_Factory_module_init(mMessagePack);
34
33
  MessagePack_ExtensionValue_module_init(mMessagePack);
35
- MessagePack_core_ext_module_init();
36
34
  }
37
35
 
@@ -383,23 +383,8 @@ static VALUE Unpacker_register_type(int argc, VALUE* argv, VALUE self)
383
383
  return Qnil;
384
384
  }
385
385
 
386
- VALUE MessagePack_unpack(int argc, VALUE* argv)
386
+ static VALUE Unpacker_full_unpack(VALUE self)
387
387
  {
388
- VALUE src;
389
- VALUE self;
390
-
391
- if (argc < 0 || argc > 2) {
392
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1..2)", argc);
393
- }
394
- src = argv[0];
395
-
396
- if(rb_type(src) == T_STRING) {
397
- self = MessagePack_Factory_unpacker(argc - 1, argv + 1, cMessagePack_DefaultFactory);
398
- UNPACKER(self, uk);
399
- msgpack_buffer_append_string(UNPACKER_BUFFER_(uk), src);
400
- } else {
401
- self = MessagePack_Factory_unpacker(argc, argv, cMessagePack_DefaultFactory);
402
- }
403
388
  UNPACKER(self, uk);
404
389
 
405
390
  /* prefer reference than copying; see MessagePack_Unpacker_module_init */
@@ -416,27 +401,9 @@ VALUE MessagePack_unpack(int argc, VALUE* argv)
416
401
  rb_raise(eMalformedFormatError, "%zd extra bytes after the deserialized object", extra);
417
402
  }
418
403
 
419
- #ifdef RB_GC_GUARD
420
- /* This prevents compilers from optimizing out the `self` variable
421
- * from stack. Otherwise GC free()s it. */
422
- RB_GC_GUARD(self);
423
- #endif
424
-
425
404
  return msgpack_unpacker_get_last_object(uk);
426
405
  }
427
406
 
428
- static VALUE MessagePack_load_module_method(int argc, VALUE* argv, VALUE mod)
429
- {
430
- UNUSED(mod);
431
- return MessagePack_unpack(argc, argv);
432
- }
433
-
434
- static VALUE MessagePack_unpack_module_method(int argc, VALUE* argv, VALUE mod)
435
- {
436
- UNUSED(mod);
437
- return MessagePack_unpack(argc, argv);
438
- }
439
-
440
407
  VALUE MessagePack_Unpacker_new(int argc, VALUE* argv)
441
408
  {
442
409
  VALUE self = MessagePack_Unpacker_alloc(cMessagePack_Unpacker);
@@ -491,8 +458,6 @@ void MessagePack_Unpacker_module_init(VALUE mMessagePack)
491
458
  /* prefer reference than copying */
492
459
  //msgpack_buffer_set_write_reference_threshold(UNPACKER_BUFFER_(s_unpacker), 0);
493
460
 
494
- /* MessagePack.unpack(x) */
495
- rb_define_module_function(mMessagePack, "load", MessagePack_load_module_method, -1);
496
- rb_define_module_function(mMessagePack, "unpack", MessagePack_unpack_module_method, -1);
461
+ rb_define_method(cMessagePack_Unpacker, "full_unpack", Unpacker_full_unpack, 0);
497
462
  }
498
463
 
@@ -28,7 +28,5 @@ VALUE MessagePack_Unpacker_alloc(VALUE klass);
28
28
 
29
29
  VALUE MessagePack_Unpacker_initialize(int argc, VALUE* argv, VALUE self);
30
30
 
31
- VALUE MessagePack_unpack(int argc, VALUE* argv);
32
-
33
31
  #endif
34
32
 
@@ -16,3 +16,35 @@ require "msgpack/packer"
16
16
  require "msgpack/unpacker"
17
17
  require "msgpack/factory"
18
18
  require "msgpack/symbol"
19
+ require "msgpack/core_ext"
20
+
21
+ module MessagePack
22
+ DefaultFactory = MessagePack::Factory.new
23
+
24
+ def load(src, param = nil)
25
+ unpacker = nil
26
+
27
+ if src.is_a? String
28
+ unpacker = DefaultFactory.unpacker param
29
+ unpacker.feed src
30
+ else
31
+ unpacker = DefaultFactory.unpacker src, param
32
+ end
33
+
34
+ unpacker.full_unpack
35
+ end
36
+ alias :unpack :load
37
+
38
+ module_function :load
39
+ module_function :unpack
40
+
41
+ def pack(v, *rest)
42
+ packer = DefaultFactory.packer(*rest)
43
+ packer.write v
44
+ packer.full_pack
45
+ end
46
+ alias :dump :pack
47
+
48
+ module_function :pack
49
+ module_function :dump
50
+ end
@@ -0,0 +1,139 @@
1
+ module MessagePack
2
+ module CoreExt
3
+ def to_msgpack(packer_or_io = nil)
4
+ if packer_or_io
5
+ if packer_or_io.is_a?(MessagePack::Packer)
6
+ to_msgpack_with_packer packer_or_io
7
+ else
8
+ MessagePack.pack(self, packer_or_io)
9
+ end
10
+ else
11
+ MessagePack.pack(self)
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ class NilClass
18
+ include MessagePack::CoreExt
19
+
20
+ private
21
+ def to_msgpack_with_packer(packer)
22
+ packer.write_nil
23
+ packer
24
+ end
25
+ end
26
+
27
+ class TrueClass
28
+ include MessagePack::CoreExt
29
+
30
+ private
31
+ def to_msgpack_with_packer(packer)
32
+ packer.write_true
33
+ packer
34
+ end
35
+ end
36
+
37
+ class FalseClass
38
+ include MessagePack::CoreExt
39
+
40
+ private
41
+ def to_msgpack_with_packer(packer)
42
+ packer.write_false
43
+ packer
44
+ end
45
+ end
46
+
47
+ class Float
48
+ include MessagePack::CoreExt
49
+
50
+ private
51
+ def to_msgpack_with_packer(packer)
52
+ packer.write_float self
53
+ packer
54
+ end
55
+ end
56
+
57
+ class String
58
+ include MessagePack::CoreExt
59
+
60
+ private
61
+ def to_msgpack_with_packer(packer)
62
+ packer.write_string self
63
+ packer
64
+ end
65
+ end
66
+
67
+ class Array
68
+ include MessagePack::CoreExt
69
+
70
+ private
71
+ def to_msgpack_with_packer(packer)
72
+ packer.write_array self
73
+ packer
74
+ end
75
+ end
76
+
77
+ class Hash
78
+ include MessagePack::CoreExt
79
+
80
+ private
81
+ def to_msgpack_with_packer(packer)
82
+ packer.write_hash self
83
+ packer
84
+ end
85
+ end
86
+
87
+ class Symbol
88
+ include MessagePack::CoreExt
89
+
90
+ private
91
+ def to_msgpack_with_packer(packer)
92
+ packer.write_symbol self
93
+ packer
94
+ end
95
+ end
96
+
97
+ if 1.class.name == "Integer"
98
+ class Integer
99
+ include MessagePack::CoreExt
100
+
101
+ private
102
+ def to_msgpack_with_packer(packer)
103
+ packer.write_int self
104
+ packer
105
+ end
106
+ end
107
+ else
108
+ class Fixnum
109
+ include MessagePack::CoreExt
110
+
111
+ private
112
+ def to_msgpack_with_packer(packer)
113
+ packer.write_int self
114
+ packer
115
+ end
116
+ end
117
+
118
+ class Bignum
119
+ include MessagePack::CoreExt
120
+
121
+ private
122
+ def to_msgpack_with_packer(packer)
123
+ packer.write_int self
124
+ packer
125
+ end
126
+ end
127
+ end
128
+
129
+ module MessagePack
130
+ class ExtensionValue
131
+ include CoreExt
132
+
133
+ private
134
+ def to_msgpack_with_packer(packer)
135
+ packer.write_extension self
136
+ packer
137
+ end
138
+ end
139
+ end
@@ -56,5 +56,26 @@ module MessagePack
56
56
  raise ArgumentError, "class or type id"
57
57
  end
58
58
  end
59
+
60
+ def load(src, param = nil)
61
+ unpacker = nil
62
+
63
+ if src.is_a? String
64
+ unpacker = unpacker(param)
65
+ unpacker.feed(src)
66
+ else
67
+ unpacker = unpacker(src, param)
68
+ end
69
+
70
+ unpacker.full_unpack
71
+ end
72
+ alias :unpack :load
73
+
74
+ def dump(v, *rest)
75
+ packer = packer(*rest)
76
+ packer.write(v)
77
+ packer.full_pack
78
+ end
79
+ alias :pack :dump
59
80
  end
60
81
  end
@@ -1,3 +1,3 @@
1
1
  module MessagePack
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -23,12 +23,12 @@ Gem::Specification.new do |s|
23
23
  s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
24
24
 
25
25
  s.add_development_dependency 'bundler', ['~> 1.0']
26
- s.add_development_dependency 'rake', ['~> 0.9.2']
26
+ s.add_development_dependency 'rake'
27
27
  s.add_development_dependency 'rake-compiler', ['~> 1.0']
28
28
  if /java/ !~ RUBY_PLATFORM
29
29
  s.add_development_dependency 'rake-compiler-dock', ['~> 0.6.0']
30
30
  end
31
31
  s.add_development_dependency 'rspec', ['~> 3.3']
32
- s.add_development_dependency 'yard', ['~> 0.8.2']
32
+ s.add_development_dependency 'yard'
33
33
  s.add_development_dependency 'json'
34
34
  end
@@ -44,6 +44,32 @@ describe MessagePack::Factory do
44
44
  end
45
45
  end
46
46
 
47
+ describe '#dump and #load' do
48
+ it 'can be used like a standard coder' do
49
+ subject.register_type(0x00, Symbol)
50
+ expect(subject.load(subject.dump(:symbol))).to be == :symbol
51
+ end
52
+
53
+ it 'is alias as pack and unpack' do
54
+ subject.register_type(0x00, Symbol)
55
+ expect(subject.unpack(subject.pack(:symbol))).to be == :symbol
56
+ end
57
+
58
+ it 'accept options' do
59
+ hash = subject.unpack(MessagePack.pack('k' => 'v'), symbolize_keys: true)
60
+ expect(hash).to be == { k: 'v' }
61
+ end
62
+ end
63
+
64
+ describe '#freeze' do
65
+ it 'can freeze factory instance to deny new registrations anymore' do
66
+ subject.register_type(0x00, Symbol)
67
+ subject.freeze
68
+ expect(subject.frozen?).to be_truthy
69
+ expect{ subject.register_type(0x01, Array) }.to raise_error(RuntimeError, "can't modify frozen Factory")
70
+ end
71
+ end
72
+
47
73
  class MyType
48
74
  def initialize(a, b)
49
75
  @a = a
@@ -178,6 +178,28 @@ describe MessagePack::Packer do
178
178
  Array.new.to_msgpack.class.should == String
179
179
  end
180
180
 
181
+ it 'to_msgpack with packer equals to_msgpack' do
182
+ nil.to_msgpack(MessagePack::Packer.new).to_str.should == nil.to_msgpack
183
+ true.to_msgpack(MessagePack::Packer.new).to_str.should == true.to_msgpack
184
+ false.to_msgpack(MessagePack::Packer.new).to_str.should == false.to_msgpack
185
+ 1.to_msgpack(MessagePack::Packer.new).to_str.should == 1.to_msgpack
186
+ 1.0.to_msgpack(MessagePack::Packer.new).to_str.should == 1.0.to_msgpack
187
+ "".to_msgpack(MessagePack::Packer.new).to_str.should == "".to_msgpack
188
+ Hash.new.to_msgpack(MessagePack::Packer.new).to_str.should == Hash.new.to_msgpack
189
+ Array.new.to_msgpack(MessagePack::Packer.new).to_str.should == Array.new.to_msgpack
190
+ end
191
+
192
+ it 'raises type error on wrong type' do
193
+ packer = MessagePack::Packer.new
194
+ expect { packer.write_float "hello" }.to raise_error(TypeError)
195
+ expect { packer.write_string 1 }.to raise_error(TypeError)
196
+ expect { packer.write_array "hello" }.to raise_error(TypeError)
197
+ expect { packer.write_hash "hello" }.to raise_error(TypeError)
198
+ expect { packer.write_symbol "hello" }.to raise_error(TypeError)
199
+ expect { packer.write_int "hello" }.to raise_error(TypeError)
200
+ expect { packer.write_extension "hello" }.to raise_error(TypeError)
201
+ end
202
+
181
203
  class CustomPack01
182
204
  def to_msgpack(pk=nil)
183
205
  return MessagePack.pack(self, pk) unless pk.class == MessagePack::Packer
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msgpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Sadayuki Furuhashi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-28 00:00:00.000000000 Z
13
+ date: 2017-12-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -30,16 +30,16 @@ dependencies:
30
30
  name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: 0.9.2
35
+ version: '0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.9.2
42
+ version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rake-compiler
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -86,16 +86,16 @@ dependencies:
86
86
  name: yard
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 0.8.2
91
+ version: '0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - "~>"
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
- version: 0.8.2
98
+ version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: json
101
101
  requirement: !ruby/object:Gem::Requirement
@@ -163,8 +163,6 @@ files:
163
163
  - ext/msgpack/buffer_class.c
164
164
  - ext/msgpack/buffer_class.h
165
165
  - ext/msgpack/compat.h
166
- - ext/msgpack/core_ext.c
167
- - ext/msgpack/core_ext.h
168
166
  - ext/msgpack/extconf.rb
169
167
  - ext/msgpack/extension_value_class.c
170
168
  - ext/msgpack/extension_value_class.h
@@ -194,6 +192,7 @@ files:
194
192
  - lib/msgpack/2.2/msgpack.so
195
193
  - lib/msgpack/2.3/msgpack.so
196
194
  - lib/msgpack/2.4/msgpack.so
195
+ - lib/msgpack/core_ext.rb
197
196
  - lib/msgpack/factory.rb
198
197
  - lib/msgpack/packer.rb
199
198
  - lib/msgpack/symbol.rb
@@ -247,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
246
  version: '0'
248
247
  requirements: []
249
248
  rubyforge_project: msgpack
250
- rubygems_version: 2.6.8
249
+ rubygems_version: 2.6.12
251
250
  signing_key:
252
251
  specification_version: 4
253
252
  summary: MessagePack, a binary-based efficient data interchange format.
@@ -1,159 +0,0 @@
1
- /*
2
- * MessagePack for Ruby
3
- *
4
- * Copyright (C) 2008-2013 Sadayuki Furuhashi
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- #include "core_ext.h"
20
- #include "packer.h"
21
- #include "packer_class.h"
22
- #include "extension_value_class.h"
23
-
24
- static inline VALUE delegete_to_pack(int argc, VALUE* argv, VALUE self)
25
- {
26
- if(argc == 0) {
27
- return MessagePack_pack(1, &self);
28
- } else if(argc == 1) {
29
- /* write to io */
30
- VALUE argv2[2];
31
- argv2[0] = self;
32
- argv2[1] = argv[0];
33
- return MessagePack_pack(2, argv2);
34
- } else {
35
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..1)", argc);
36
- }
37
- }
38
-
39
- #define ENSURE_PACKER(argc, argv, packer, pk) \
40
- if(argc != 1 || rb_class_of(argv[0]) != cMessagePack_Packer) { \
41
- return delegete_to_pack(argc, argv, self); \
42
- } \
43
- VALUE packer = argv[0]; \
44
- msgpack_packer_t *pk; \
45
- Data_Get_Struct(packer, msgpack_packer_t, pk);
46
-
47
- static VALUE NilClass_to_msgpack(int argc, VALUE* argv, VALUE self)
48
- {
49
- ENSURE_PACKER(argc, argv, packer, pk);
50
- msgpack_packer_write_nil(pk);
51
- return packer;
52
- }
53
-
54
- static VALUE TrueClass_to_msgpack(int argc, VALUE* argv, VALUE self)
55
- {
56
- ENSURE_PACKER(argc, argv, packer, pk);
57
- msgpack_packer_write_true(pk);
58
- return packer;
59
- }
60
-
61
- static VALUE FalseClass_to_msgpack(int argc, VALUE* argv, VALUE self)
62
- {
63
- ENSURE_PACKER(argc, argv, packer, pk);
64
- msgpack_packer_write_false(pk);
65
- return packer;
66
- }
67
-
68
- static VALUE Integer_to_msgpack(int argc, VALUE* argv, VALUE self)
69
- {
70
- ENSURE_PACKER(argc, argv, packer, pk);
71
- if (FIXNUM_P(self)) {
72
- msgpack_packer_write_fixnum_value(pk, self);
73
- } else {
74
- msgpack_packer_write_bignum_value(pk, self);
75
- }
76
- return packer;
77
- }
78
-
79
- static VALUE Fixnum_to_msgpack(int argc, VALUE* argv, VALUE self)
80
- {
81
- ENSURE_PACKER(argc, argv, packer, pk);
82
- msgpack_packer_write_fixnum_value(pk, self);
83
- return packer;
84
- }
85
-
86
- static VALUE Bignum_to_msgpack(int argc, VALUE* argv, VALUE self)
87
- {
88
- ENSURE_PACKER(argc, argv, packer, pk);
89
- msgpack_packer_write_bignum_value(pk, self);
90
- return packer;
91
- }
92
-
93
- static VALUE Float_to_msgpack(int argc, VALUE* argv, VALUE self)
94
- {
95
- ENSURE_PACKER(argc, argv, packer, pk);
96
- msgpack_packer_write_float_value(pk, self);
97
- return packer;
98
- }
99
-
100
- static VALUE String_to_msgpack(int argc, VALUE* argv, VALUE self)
101
- {
102
- ENSURE_PACKER(argc, argv, packer, pk);
103
- msgpack_packer_write_string_value(pk, self);
104
- return packer;
105
- }
106
-
107
- static VALUE Array_to_msgpack(int argc, VALUE* argv, VALUE self)
108
- {
109
- ENSURE_PACKER(argc, argv, packer, pk);
110
- msgpack_packer_write_array_value(pk, self);
111
- return packer;
112
- }
113
-
114
- static VALUE Hash_to_msgpack(int argc, VALUE* argv, VALUE self)
115
- {
116
- ENSURE_PACKER(argc, argv, packer, pk);
117
- msgpack_packer_write_hash_value(pk, self);
118
- return packer;
119
- }
120
-
121
- static VALUE Symbol_to_msgpack(int argc, VALUE* argv, VALUE self)
122
- {
123
- ENSURE_PACKER(argc, argv, packer, pk);
124
- msgpack_packer_write_symbol_value(pk, self);
125
- return packer;
126
- }
127
-
128
- static VALUE ExtensionValue_to_msgpack(int argc, VALUE* argv, VALUE self)
129
- {
130
- ENSURE_PACKER(argc, argv, packer, pk);
131
- int ext_type = FIX2INT(RSTRUCT_GET(self, 0));
132
- if(ext_type < -128 || ext_type > 127) {
133
- rb_raise(rb_eRangeError, "integer %d too big to convert to `signed char'", ext_type);
134
- }
135
- VALUE payload = RSTRUCT_GET(self, 1);
136
- StringValue(payload);
137
- msgpack_packer_write_ext(pk, ext_type, payload);
138
- return packer;
139
- }
140
-
141
- void MessagePack_core_ext_module_init()
142
- {
143
- rb_define_method(rb_cNilClass, "to_msgpack", NilClass_to_msgpack, -1);
144
- rb_define_method(rb_cTrueClass, "to_msgpack", TrueClass_to_msgpack, -1);
145
- rb_define_method(rb_cFalseClass, "to_msgpack", FalseClass_to_msgpack, -1);
146
- #ifdef RUBY_INTEGER_UNIFICATION
147
- rb_define_method(rb_cInteger, "to_msgpack", Integer_to_msgpack, -1);
148
- #else
149
- rb_define_method(rb_cFixnum, "to_msgpack", Fixnum_to_msgpack, -1);
150
- rb_define_method(rb_cBignum, "to_msgpack", Bignum_to_msgpack, -1);
151
- #endif
152
- rb_define_method(rb_cFloat, "to_msgpack", Float_to_msgpack, -1);
153
- rb_define_method(rb_cString, "to_msgpack", String_to_msgpack, -1);
154
- rb_define_method(rb_cArray, "to_msgpack", Array_to_msgpack, -1);
155
- rb_define_method(rb_cHash, "to_msgpack", Hash_to_msgpack, -1);
156
- rb_define_method(rb_cSymbol, "to_msgpack", Symbol_to_msgpack, -1);
157
- rb_define_method(cMessagePack_ExtensionValue, "to_msgpack", ExtensionValue_to_msgpack, -1);
158
- }
159
-
@@ -1,26 +0,0 @@
1
- /*
2
- * MessagePack for Ruby
3
- *
4
- * Copyright (C) 2008-2013 Sadayuki Furuhashi
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- #ifndef MSGPACK_RUBY_CORE_EXT_H__
19
- #define MSGPACK_RUBY_CORE_EXT_H__
20
-
21
- #include "compat.h"
22
-
23
- void MessagePack_core_ext_module_init();
24
-
25
- #endif
26
-