Commit 28b4eac5 authored by mattn's avatar mattn

Merge branch 'master' of https://github.com/mruby/mruby

parents e35ce6c2 0ff25143
...@@ -29,6 +29,7 @@ mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_valu ...@@ -29,6 +29,7 @@ mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_valu
mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key); mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key);
mrb_value mrb_hash(mrb_state *mrb, mrb_value obj); mrb_value mrb_hash(mrb_state *mrb, mrb_value obj);
mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash); mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash);
mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash);
/* RHASH_TBL allocates st_table if not available. */ /* RHASH_TBL allocates st_table if not available. */
#define RHASH(obj) ((struct RHash*)((obj).value.p)) #define RHASH(obj) ((struct RHash*)((obj).value.p))
......
...@@ -187,6 +187,12 @@ mrb_hash_modify_check(mrb_state *mrb, mrb_value hash) ...@@ -187,6 +187,12 @@ mrb_hash_modify_check(mrb_state *mrb, mrb_value hash)
//if (OBJ_FROZEN(hash)) mrb_error_frozen("hash"); //if (OBJ_FROZEN(hash)) mrb_error_frozen("hash");
} }
mrb_value
mrb_check_hash_type(mrb_state *mrb, mrb_value hash)
{
return mrb_check_convert_type(mrb, hash, MRB_TT_HASH, "Hash", "to_hash");
}
khash_t(ht) * khash_t(ht) *
mrb_hash_tbl(mrb_state *mrb, mrb_value hash) mrb_hash_tbl(mrb_state *mrb, mrb_value hash)
{ {
......
...@@ -19,10 +19,10 @@ MRuby.each_target do ...@@ -19,10 +19,10 @@ MRuby.each_target do
end end
f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty? f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty?
f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb) {] f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb) {]
f.puts %Q[ mrb_state *mrb2;]
f.puts %Q[ mrb_value val1, val2, ary1, ary2;]
f.puts %Q[ int ai;]
unless g.test_rbfiles.empty? unless g.test_rbfiles.empty?
f.puts %Q[ mrb_state *mrb2;]
f.puts %Q[ mrb_value val1, val2, ary1, ary2;]
f.puts %Q[ int ai;]
g.test_rbfiles.count.times do |i| g.test_rbfiles.count.times do |i|
f.puts %Q[ ai = mrb_gc_arena_save(mrb);] f.puts %Q[ ai = mrb_gc_arena_save(mrb);]
f.puts %Q[ mrb2 = mrb_open();] f.puts %Q[ mrb2 = mrb_open();]
...@@ -43,9 +43,9 @@ MRuby.each_target do ...@@ -43,9 +43,9 @@ MRuby.each_target do
f.puts %Q[ ] f.puts %Q[ ]
%w(ok_test ko_test kill_test).each do |vname| %w(ok_test ko_test kill_test).each do |vname|
f.puts %Q[ val1 = mrb_gv_get(mrb2, mrb_intern(mrb, "$#{vname}"));] f.puts %Q[ val2 = mrb_gv_get(mrb2, mrb_intern(mrb2, "$#{vname}"));]
f.puts %Q[ if(mrb_fixnum_p(val1)) {] f.puts %Q[ if(mrb_fixnum_p(val2)) {]
f.puts %Q[ val2 = mrb_gv_get(mrb, mrb_intern(mrb, "$#{vname}"));] f.puts %Q[ val1 = mrb_gv_get(mrb, mrb_intern(mrb, "$#{vname}"));]
f.puts %Q[ mrb_gv_set(mrb, mrb_intern(mrb, "$#{vname}"), mrb_fixnum_value(mrb_fixnum(val1) + mrb_fixnum(val2)));] f.puts %Q[ mrb_gv_set(mrb, mrb_intern(mrb, "$#{vname}"), mrb_fixnum_value(mrb_fixnum(val1) + mrb_fixnum(val2)));]
f.puts %Q[ }\n] f.puts %Q[ }\n]
end end
......
...@@ -6,7 +6,7 @@ MRuby.each_target do ...@@ -6,7 +6,7 @@ MRuby.each_target do
objs = Dir.glob("#{dir}/*.{c}").map { |f| f.pathmap("#{build_dir}/%X.o") } objs = Dir.glob("#{dir}/*.{c}").map { |f| f.pathmap("#{build_dir}/%X.o") }
file exec => objs + ["#{build_dir}/lib/libmruby_core.a"] do |t| file exec => objs + ["#{build_dir}/lib/libmruby_core.a"] do |t|
link t.name, t.prerequisites, [], gems.map { |g| g.mruby_libs } link t.name, t.prerequisites
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment