12#define META_FILE_NAME "MkCall_rb.c"
15#include "misc_check_rb.h"
22 VALUE(*proc)(ANYARGS),
26 VALUE ret = rb_protect(proc, data, &state);
36static VALUE
NS(sCallMethod) (VALUE array) {
37 const VALUE *valP = rb_array_const_ptr(array);
38 return rb_method_call((
int)RARRAY_LEN(array)-1, &valP[1], valP[0]);
42static VALUE
NS(sCallProc) (VALUE array) {
43 const VALUE *valP = rb_array_const_ptr(array);
44 return rb_proc_call_with_block(valP[0], (
int)RARRAY_LEN(array)-1, &valP[1], Qnil);
51 if ((*skipP) >= objc) {
56 VALUE val = objv[(*skipP)++];
69 if (rb_obj_is_kind_of(val, rb_cMethod) == Qtrue) {
74 }
else if (rb_obj_is_kind_of(val, rb_cProc) == Qtrue) {
79 }
else if (NIL_P(val)) {
81 }
else if (rb_obj_is_kind_of(val, rb_cUnboundMethod) == Qtrue) {
86 }
else if (rb_obj_is_kind_of(val, rb_cString) == Qtrue) {
119 if (callP == NULL || *callP == NULL )
return;
136 MK(CallFree) (callP);
161 struct MkCallS *call = __data__;
164 rb_set_errinfo(Qnil);
174 if (argNum != call->
procArity)
goto methode_arg_error;
179 if (argNum != call->
procArity)
goto methode_arg_error;
189 VALUE ary = rb_ary_resize(call->
procArgs,4);
191 rb_ary_store(ary,1,
STRN2VAL(typeName));
192 rb_ary_store(ary,2,
HDL2VAL(typeHdl));
193 rb_ary_store(ary,3,
HDL2VAL(objHdl));
201 "for callback '%s' exactly '%d' argument is required, but '%d' was received",
#define MkErrorCheck_0E()
check return-code and goto error on error …
#define OT_LNG_NULL_IS(obj)
#define VAL2MkStringR(_obj)
#define OT_ERROR_LNG_2_META_2(m, s)
#define MkErrorGetCode_0E()
#define MkErrorStack_0E()
#define MkErrorSetV_3M(err, callfunc, printfmt,...)
MkErrorE
collection for the different error-codes …
@ MK_OK
(persistent) everything is OK.
static bool MkStringIsNULL(MkStringR const strR)
check if strR is MK_NULL_STR return true or false …
MK_PTRB * MK_PTR
generic pointer data-type
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
MK_PTRB * MK_CBP
generic pointer to call-back data
#define MkDbgDeepX_3(m, ident, fmt,...)
static bool MkSelfExists(MK_OBJN obj)
Check if the MkObjectS::self exists …
MK_PTR MkSysCalloc(MK_OBJN fmtobj, size_t const nmemb, size_t const size)
calloc syscall with rbmkkernel error plugin
#define MkSysFree(pointer)
#define MkObjectDeleteCallF_CHECK
validate call to MkObjectDeleteCallF
#define MkObjectDeleteCallF_ARGS
the MkObjectDeleteCallF arguments with default names
#define MkObjectDeleteFreeF_ARGS
the MkObjectDeleteFreeF arguments with default names
#define WrongNumArgs(...)
#define WrongCallableError(got)
MK_EXTERN enum MkErrorE MK_DECL MK CheckCallable(OT_Check_ARGS, MK_CBP *)
enum MkCallS::@0 procType
rbmkkernel_procCallF procCall
string data default format …
MK_STRN ptr
pointer to the string data