예제 #1
0
파일: ruby.cpp 프로젝트: bdheeman/mod_ruby
VALUE vm_method(VALUE recv, ID id, int n, va_list ar)
{
    VALUE *argv = 0;

    if (n > 0) 
    {
        argv = ALLOCA_N(VALUE, n);

        int i;
        for(i=0; i<n ;i++)
        {
            argv[i] = va_arg(ar, VALUE);
        }
    } 

    Arguments arg;
    arg.recv = recv;
    arg.id   = id;
    arg.n    = n;
    arg.argv = argv;

    int error = 0;
    VALUE result = rb_protect(method_wrap, reinterpret_cast<VALUE>(&arg), &error);

    if(error)
    {
        Exception e;
        e.backtrace();
        throw e;
    }

    return result;
}
예제 #2
0
파일: ruby.cpp 프로젝트: bdheeman/mod_ruby
void load(const char* filename, int anonymous)
{
    int error = 0;
    rb_load_protect(rb_str_new2(filename), anonymous, &error);

    if(error)
    {
        Exception e;
        e.backtrace();
        throw e;
    }
}