public static object[] RubyFunctionParamsToObjects(IntPtr mrb, IntPtr data_type_ptr) { R_VAL[] value = RubyDLL.GetFunctionArgs(mrb); object[] ret = new object[value.Length]; for (int i = 0; i < ret.Length; i++) { ref R_VAL val = ref value[i]; if (!R_VAL.IsData(val)) { ret[i] = ValueToObject(mrb, val); } else { IntPtr ptr = RubyDLL.mrb_data_get_ptr(mrb, val, data_type_ptr); ret[i] = (( GCHandle )ptr).Target; } }