Я хочу вызвать ruby-код из своего собственного кода C. В случае возникновения исключения я должен rb _защитить код ruby, который я вызываю. rb _Protect выглядит так:
VALUE rb_protect(VALUE (* proc) (VALUE), VALUE data, int * state)
Таким образом, proc
должна быть функцией, которая принимает VALUE
аргументов и возвращает VALUE
. Мне приходится вызывать множество функций, которые так не работают. Как я могу rb_protect
их исключить из исключений?
Я подумал об использовании Data_Make_Struct
, чтобы обернуть все в один рубиновый объект и вызвать для него методы. Data_Make_Struct
может сам вызвать исключение. Как мнеrb_protect
Data_Make_Struct
?