// Run executes the given value, which should be a proc type. // // If you're looking to execute code directly a string, look at LoadString. // // If self is nil, it is set to the top-level self. func (m *Mrb) Run(v Value, self Value) (*MrbValue, error) { if self == nil { self = m.TopSelf() } mrbV := v.MrbValue(m) mrbSelf := self.MrbValue(m) proc := C._go_mrb_proc_ptr(mrbV.value) value := C.mrb_run(m.state, proc, mrbSelf.value) if m.state.exc != nil { return nil, newExceptionValue(m.state) } return newValue(m.state, value), nil }
// SetProcTargetClass sets the target class where a proc will be executed // when this value is a proc. func (v *MrbValue) SetProcTargetClass(c *Class) { proc := C._go_mrb_proc_ptr(v.value) proc.target_class = c.class }