C で呼び出された ruby インタープリター コードの一部を mruby 形式に変換しようとしています。私は立ち往生しており、ここで助けていただければ幸いです。
私のtestruby.rbファイルの内容:
#require 'MyMod'
def helloworld(var1)
puts "You said #{var1}"
return MyMod.Issue1(var1).to_s
end
以下は、私の C++ ファイルのスニペットです。
問題 1:
static mrb_value Issue1(mrb_state *mrb, mrb_value mrb_self)
{
mrb_??? val1; // What should be the type for string and where to find all the types?
mrb_get_args(mrb, "s", ?);
// How to manipulate val1? Say I want to concatenate few more data.
return mrb_????(val1); // How do I return this value?
}
上記の方法で、.rbファイルがこれを呼び出せるようにモジュールとしてmrubyインタープリターに送っています。
以下の形式が正しいかどうか教えてください。
struct RClass *mod = mrb_define_module(mrb, "MyMod");
mrb_define_module_function(mrb, mod, "SumI", Issue1, MRB_ARGS_REQ(1));
問題 2:
以下の ruby インタープリター コードを mruby に変換するにはどうすればよいですか?
rb_require("./testruby"); // testruby は私の testruby.rb ファイルです
次に、testruby.rb ファイルから helloworld メソッドを呼び出します。mruby の (rb_funcall の) 同等のメソッドを呼び出すにはどうすればよいですか?
C++ コードで helloworld メソッドからの戻り値を読み取るにはどうすればよいですか?
よろしく、