1212#include < mruby/throw.h>
1313#include < mruby/variable.h>
1414#include < mruby/numeric.h>
15+ MRB_BEGIN_DECL
1516#include < mruby/internal.h>
16- #include "mruby/msgpack.h"
17+ MRB_END_DECL
18+ #include < mruby/msgpack.h>
1719#include < mruby/string_is_utf8.h>
20+ #include < mruby/presym.h>
1821
1922typedef struct {
2023 mrb_state* mrb;
@@ -98,8 +101,8 @@ mrb_msgpack_get_ext_config(mrb_state* mrb, mrb_value obj)
98101 mrb_int classes_count;
99102
100103 mrb_value ext_packers = mrb_const_get (mrb,
101- mrb_obj_value (mrb_module_get (mrb , " MessagePack" )),
102- mrb_intern_lit ( mrb , " _ExtPackers" ));
104+ mrb_obj_value (mrb_module_get_id (mrb, MRB_SYM ( MessagePack) )),
105+ MRB_SYM ( _ExtPackers));
103106 mrb_value obj_class = mrb_obj_value (mrb_obj_class (mrb, obj));
104107 mrb_value ext_config = mrb_hash_get (mrb, ext_packers, obj_class);
105108
@@ -140,7 +143,7 @@ mrb_msgpack_pack_ext_value(mrb_state* mrb, mrb_value self, msgpack_packer* pk)
140143 return FALSE ;
141144 }
142145
143- packer = mrb_hash_get (mrb , ext_config , mrb_symbol_value (mrb_intern_lit ( mrb , " packer" )));
146+ packer = mrb_hash_get (mrb, ext_config, mrb_symbol_value (MRB_SYM ( packer)));
144147 if (unlikely (mrb_type (packer) != MRB_TT_PROC)) {
145148 mrb_gc_arena_restore (mrb, arena_index);
146149 mrb_raise (mrb, E_TYPE_ERROR, " malformed packer" );
@@ -152,7 +155,7 @@ mrb_msgpack_pack_ext_value(mrb_state* mrb, mrb_value self, msgpack_packer* pk)
152155 mrb_raise (mrb, E_TYPE_ERROR, " no string returned by ext type packer" );
153156 }
154157
155- type = mrb_hash_get (mrb , ext_config , mrb_symbol_value (mrb_intern_lit ( mrb , " type" )));
158+ type = mrb_hash_get (mrb, ext_config, mrb_symbol_value (MRB_SYM ( type)));
156159 if (unlikely (!mrb_integer_p (type))) {
157160 mrb_gc_arena_restore (mrb, arena_index);
158161 mrb_raise (mrb, E_TYPE_ERROR, " malformed type" );
@@ -460,16 +463,16 @@ mrb_unpack_msgpack_obj(mrb_state* mrb, msgpack_object obj)
460463 return mrb_str_new (mrb, obj.via .bin .ptr , obj.via .bin .size );
461464 case MSGPACK_OBJECT_EXT: {
462465 mrb_value unpacker = mrb_hash_get (mrb,
463- mrb_const_get (mrb , mrb_obj_value (mrb_module_get (mrb , "MessagePack" )), mrb_intern_lit ( mrb , " _ExtUnpackers" )),
466+ mrb_const_get (mrb, mrb_obj_value (mrb_module_get (mrb, " MessagePack" )), MRB_SYM ( _ExtUnpackers)),
464467 mrb_int_value (mrb, obj.via .ext .type ));
465468 if (mrb_type (unpacker) == MRB_TT_PROC) {
466469 return mrb_yield (mrb, unpacker, mrb_str_new (mrb, obj.via .ext .ptr , obj.via .ext .size ));
467470 } else {
468471 mrb_raisef (mrb, E_MSGPACK_ERROR, " Cannot unpack ext type %S" , mrb_int_value (mrb, obj.via .ext .type ));
469472 }
473+ }
470474 default : // should not happen
471475 mrb_raise (mrb, E_MSGPACK_ERROR, " Cannot unpack unknown msgpack type" );
472- }
473476 }
474477}
475478
@@ -665,10 +668,10 @@ mrb_msgpack_register_pack_type(mrb_state* mrb, mrb_value self)
665668 mrb_raise (mrb, E_TYPE_ERROR, " not a block" );
666669 }
667670
668- ext_packers = mrb_const_get (mrb , self , mrb_intern_lit ( mrb , " _ExtPackers" ));
671+ ext_packers = mrb_const_get (mrb, self, MRB_SYM ( _ExtPackers));
669672 ext_config = mrb_hash_new_capa (mrb, 2 );
670- mrb_hash_set (mrb , ext_config , mrb_symbol_value (mrb_intern_lit ( mrb , " type" )), mrb_int_value (mrb , type ));
671- mrb_hash_set (mrb , ext_config , mrb_symbol_value (mrb_intern_lit ( mrb , " packer" )), block );
673+ mrb_hash_set (mrb, ext_config, mrb_symbol_value (MRB_SYM ( type)), mrb_int_value (mrb, type));
674+ mrb_hash_set (mrb, ext_config, mrb_symbol_value (MRB_SYM ( packer)), block);
672675 mrb_hash_set (mrb, ext_packers, mrb_class, ext_config);
673676
674677 return mrb_nil_value ();
@@ -680,7 +683,7 @@ mrb_msgpack_ext_packer_registered(mrb_state *mrb, mrb_value self)
680683 mrb_value mrb_class;
681684 mrb_get_args (mrb, " C" , &mrb_class);
682685
683- return mrb_bool_value (mrb_test (mrb_hash_get (mrb , mrb_const_get (mrb , self , mrb_intern_lit ( mrb , " _ExtPackers" )), mrb_class )));
686+ return mrb_bool_value (mrb_test (mrb_hash_get (mrb, mrb_const_get (mrb, self, MRB_SYM ( _ExtPackers)), mrb_class)));
684687}
685688
686689static mrb_value
@@ -701,7 +704,7 @@ mrb_msgpack_register_unpack_type(mrb_state* mrb, mrb_value self)
701704 mrb_raise (mrb, E_TYPE_ERROR, " not a block" );
702705 }
703706
704- mrb_hash_set (mrb , mrb_const_get (mrb , self , mrb_intern_lit ( mrb , " _ExtUnpackers" )), mrb_int_value (mrb , type ), block );
707+ mrb_hash_set (mrb, mrb_const_get (mrb, self, MRB_SYM ( _ExtUnpackers)), mrb_int_value (mrb, type), block);
705708
706709 return mrb_nil_value ();
707710}
@@ -712,9 +715,10 @@ mrb_msgpack_ext_unpacker_registered(mrb_state *mrb, mrb_value self)
712715 mrb_int type;
713716 mrb_get_args (mrb, " i" , &type);
714717
715- return mrb_bool_value (!mrb_nil_p (mrb_hash_get (mrb , mrb_const_get (mrb , self , mrb_intern_lit ( mrb , " _ExtUnpackers" )), mrb_int_value (mrb , type ))));
718+ return mrb_bool_value (!mrb_nil_p (mrb_hash_get (mrb, mrb_const_get (mrb, self, MRB_SYM ( _ExtUnpackers)), mrb_int_value (mrb, type))));
716719}
717720
721+ MRB_BEGIN_DECL
718722void
719723mrb_mruby_simplemsgpack_gem_init (mrb_state* mrb)
720724{
@@ -748,3 +752,4 @@ mrb_mruby_simplemsgpack_gem_init(mrb_state* mrb)
748752}
749753
750754void mrb_mruby_simplemsgpack_gem_final (mrb_state* mrb) {}
755+ MRB_END_DECL
0 commit comments