0

私は Rubysource で時間を探していて、Ruby を C++ で拡張しようとしています。私の質問は、Rubycode で何かを見つけるのは非常に難しいため、ファイルではなくメモリから ruby​​-code を解釈するにはどうすればよいかということです。私の要点は、メモリから独自の暗号化された Ruby コードを解釈したいということです。Rubyファイルを解釈するための私の現在のコードは次のようになります:

bool Ruby::rb_load_file(char* szFilename)
{
    ::ruby_script(szFilename);
    int ret = 0;
    VALUE value;
    rb_protect((VALUE(*)(VALUE))rb_require, (VALUE)szFilename, &ret);
    value = ::rb_gv_get("$!");
    value = ::rb_funcall(value, rb_intern("to_s"), 0);
    if (rb_string_value_cstr(&value)[0] != '\0')
    {
        ::rb_eval_string_protect("puts $!, $@", &ret);
        return false;
    }
    return true;
}

しかし、ハードディスクからではなくメモリからRubyファイルをロードしたくありません(utf-8エンコーディングを遵守しているため、rb_eval_stringは機能しません)。より良い考え方のアプローチ: utf-8 エンコーディングの inclusive bom を遵守して、ルビー コードを c-string として解釈したいと考えています。

4

0 に答える 0