Skip to content

Commit 851d8e5

Browse files
committed
updates for latest mruby, and msgpack-c
1 parent e56b791 commit 851d8e5

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ build/
3737

3838
/mruby/
3939
/build_config.rb.lock
40+
compile_commands.json

mrbgem.rake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ MRuby::Gem::Specification.new('mruby-simplemsgpack') do |spec|
1212
spec.add_conflict 'mruby-msgpack'
1313

1414
if build.is_a?(MRuby::CrossBuild)
15-
unless File.exist?("#{spec.build_dir}/lib/libmsgpackc.a")
15+
unless File.exist?("#{spec.build_dir}/lib/libmsgpack-c.a")
1616
cmake_opts = "-DCMAKE_SYSTEM_NAME=\"#{build.build_target}\" -DCMAKE_HOST_SYSTEM_NAME=\"#{build.host_target}\" -DCMAKE_INSTALL_PREFIX=\"#{spec.build_dir}\" -DCMAKE_CXX_COMPILER=\"#{spec.cxx.command}\" -DCMAKE_CXX_COMPILER_AR=\"#{spec.archiver.command}\" -DCMAKE_CXX_FLAGS=\"#{spec.cxx.flags.join(' ')}\" -DCMAKE_C_COMPILER=\"#{spec.cc.command}\" -DCMAKE_C_COMPILER_AR=\"#{spec.archiver.command}\" -DCMAKE_C_FLAGS=\"#{spec.cc.flags.join(' ')}\" -DCMAKE_LINKER=\"#{spec.linker.command}\" -DCMAKE_MODULE_LINKER_FLAGS=\"#{spec.linker.flags.join(' ')}\""
1717
sh "mkdir -p #{spec.build_dir}/build && cd #{spec.build_dir}/build && cmake #{cmake_opts} #{spec.dir}/deps/msgpack-c/ && cmake --build . && cmake --build . --target install"
1818
end
19-
spec.linker.flags_before_libraries << "\"#{spec.build_dir}/lib/libmsgpackc.a\""
19+
spec.linker.flags_before_libraries << "\"#{spec.build_dir}/lib/libmsgpack-c.a\""
2020
spec.cc.include_paths << "#{spec.build_dir}/include"
2121
spec.cxx.include_paths << "#{spec.build_dir}/include"
2222
build.cc.include_paths << "#{spec.build_dir}/include"
@@ -38,12 +38,12 @@ MRuby::Gem::Specification.new('mruby-simplemsgpack') do |spec|
3838
end
3939
exitstatus += $?.exitstatus
4040
unless exitstatus == 0
41-
unless File.exists?("#{spec.build_dir}/lib/libmsgpackc.a")
41+
unless File.exist?("#{spec.build_dir}/lib/libmsgpack-c.a")
4242
warn "mruby-simplemsgpack: cannot find libmsgpackc, building it"
4343
cmake_opts = "-DCMAKE_INSTALL_PREFIX=\"#{spec.build_dir}\" -DCMAKE_CXX_COMPILER=\"#{spec.cxx.command}\" -DCMAKE_CXX_COMPILER_AR=\"#{spec.archiver.command}\" -DCMAKE_CXX_FLAGS=\"#{spec.cxx.flags.join(' ')}\" -DCMAKE_C_COMPILER=\"#{spec.cc.command}\" -DCMAKE_C_COMPILER_AR=\"#{spec.archiver.command}\" -DCMAKE_C_FLAGS=\"#{spec.cc.flags.join(' ')}\" -DCMAKE_LINKER=\"#{spec.linker.command}\" -DCMAKE_MODULE_LINKER_FLAGS=\"#{spec.linker.flags.join(' ')}\""
4444
sh "mkdir -p #{spec.build_dir}/build && cd #{spec.build_dir}/build && cmake #{cmake_opts} #{spec.dir}/deps/msgpack-c/ && cmake --build . && cmake --build . --target install"
4545
end
46-
spec.linker.flags_before_libraries << "\"#{spec.build_dir}/lib/libmsgpackc.a\""
46+
spec.linker.flags_before_libraries << "\"#{spec.build_dir}/lib/libmsgpack-c.a\""
4747
spec.cc.include_paths << "#{spec.build_dir}/include"
4848
spec.cxx.include_paths << "#{spec.build_dir}/include"
4949
build.cc.include_paths << "#{spec.build_dir}/include"
Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
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

1922
typedef 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

686689
static 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
718722
void
719723
mrb_mruby_simplemsgpack_gem_init(mrb_state* mrb)
720724
{
@@ -748,3 +752,4 @@ mrb_mruby_simplemsgpack_gem_init(mrb_state* mrb)
748752
}
749753

750754
void mrb_mruby_simplemsgpack_gem_final(mrb_state* mrb) {}
755+
MRB_END_DECL

0 commit comments

Comments
 (0)