13#include "nhi1_config.h"
16#include "LibMkKernel_mk.h"
36#if defined(META_IGNORE_EXTERN)
40# if defined(DLL_EXPORT)
42# if defined(MK_RB_BUILD_DLL)
43# define MK_RB_EXTERN __declspec(dllexport)
45# define MK_RB_EXTERN __declspec(dllimport)
49# define MK_RB_EXTERN __attribute__ ((visibility("default")))
57#undef MK_RB_EXTERN_DATA
58#if defined(META_PRIVATE)
59# define MK_RB_EXTERN_DATA extern
60#elif defined(META_IGNORE_EXTERN)
61# define MK_RB_EXTERN_DATA extern
64# if defined(DLL_EXPORT)
66# if defined(MK_RB_BUILD_DLL)
67# define MK_RB_EXTERN_DATA __declspec(dllexport)
69# define MK_RB_EXTERN_DATA __declspec(dllimport)
73# define MK_RB_EXTERN_DATA __attribute__ ((visibility("default"))) extern
76# define MK_RB_EXTERN_DATA extern
80#define MK(n) rbmkkernel_ ## n
82#define NS(n) rbmkkernel_ ## n
87#define OT_PKG MK(MkKernel)
92#define OT_ENUM_T VALUE
95#define OT_LNG_NULL Qnil
96#define OT_LNG_UNDEF Qundef
97#define OT_LNG_IS_NULL(val) RB_NIL_OR_UNDEF_P(val)
98#define OT_LNG_RETURN(ret,cmd) ret=cmd
100#define OT_LNG_NAME_FROM_OBJ(obj) VAL2STRN(obj)
101#define OT_LNG_NAME_FROM_CLASS(cls) rb_class2name(cls)
102#define OT_LNG_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
104#define OT_LNG_OBJV(idx) objv[idx]
106#define OT_LNG_OBJ_CLASS_IS(obj,cls) (rb_obj_is_kind_of(obj,cls) == Qtrue)
107#define OT_OBJ_TO_CLASS(str) str
108#define OT_OBJ_TO_ENUM(str) NS(str)
110#define OT_LNG_OBJECT_IS(obj) OT_LNG_OBJ_CLASS_IS(obj,MK(MkObjectC))
122#define OT_LNG_NULL_IS(obj) (!RB_TEST(obj))
124#define OT_LNG_OBJ_ENUM_IS(obj,enm) (rb_obj_is_kind_of(obj,enm) == Qtrue)
125#define OT_LNG_ENUM_NAME(enm) OT_LNG_NAME_FROM_CLASS(enm)
126#define OT_ENUM_TO_I32(o,e) o = rb_funcallv(o,MK(id_to_i),0,NULL)
127#define OT_ENUM_TO_I32_2(o,e) o = rb_funcallv(o,MK(id_to_i),0,NULL)
129#define OT_LNG_ARRAY_IS(o) (RB_TYPE_P(o,T_ARRAY))
132#define OT_LNG_STRN_PRE(cs,obj) MK_STRN cs = VAL2STRN(obj)
133#define OT_LNG_STRN_POST(cs,obj)
135#define OT_LNG_LONG_IS(obj) (CHECK_LONG(obj) || CHECK_STRING(obj))
136#define OT_LNG_I32_IS(obj) (CHECK_LONG(obj) || CHECK_STRING(obj))
138#define OT_LNG_SKIP_TYPE int
146#define LNG_ARGS int objc, VALUE *objv, VALUE self
147#define LNG_ARGS_CALL objc, objv, self
149#define CONSTR_ARGS LNG_ARGS
150#define CONSTR_ARGS_CALL LNG_ARGS_CALL
152#define OtClass_ARGS int objc, VALUE *objv, VALUE self
153#define OtClass_ARGS_CALL objc, objv, self
156#define OT_OBJECT_DELETE_SOFT(obj) MK(AtomDeleteSoft)(VAL2MNG(obj));
158#define OT_OBJECT_DELETE_HARD(obj) MK(AtomDeleteHard)(MK_RT_CALL obj);
159#define OT_OBJECT_DELETE(obj) MK(AtomDelete)(MK_RT_CALL hdl);
160#define OT_OBJECT_DISPOSE(obj) MK(AtomDispose)(MK_RT_CALL hdl);
162#if !defined(MK_BASE_CLASS)
163# define MK_BASE_CLASS MK(MkObjectC)
182 #define MkBufferListC_lngO MK(MkBufferListC)
183 #define MkBufferListC_base MK(MkObjectC)
187 #define MkBufferListC_MK_NULL MK(MkBufferListC_MK_NULL)
190 #define MkBufferListC_ARGS LNG_ARGS
191 #define MkBufferListC_ARGS_CALL LNG_ARGS_CALL
194 #define OT_retObj_SET_BFL(nat) retObj = MK(MkBufferListC_ObjNew) (MK_RT_CALL nat)
197 #define OT_TMP_BFL_OBJ(val) MK(MkBufferListC_ObjNew)(MK_RT_CALL val)
204 #define VAL2BFL(val) ((MK_BFL)DATA_PTR(val))
210 #define MkBufferC_lngO MK(MkBufferC)
211 #define MkBufferC_base MK(MkObjectC)
215 #define MkBufferC_MK_NULL MK(MkBufferC_MK_NULL)
218 #define MkBufferC_ARGS LNG_ARGS
219 #define MkBufferC_ARGS_CALL LNG_ARGS_CALL
222 #define OT_retObj_SET_BUF(nat) retObj = MK(MkBufferC_ObjNew) (MK_RT_CALL nat)
225 #define OT_TMP_BUF_OBJ(val) MK(MkBufferC_ObjNew)(MK_RT_CALL val)
232 #define VAL2BUF(val) ((MK_BUF)DATA_PTR(val))
238 #define MkBufferStreamC_lngO MK(MkBufferStreamC)
239 #define MkBufferStreamC_base MK(MkObjectC)
243 #define MkBufferStreamC_MK_NULL MK(MkBufferStreamC_MK_NULL)
246 #define MkBufferStreamC_ARGS LNG_ARGS
247 #define MkBufferStreamC_ARGS_CALL LNG_ARGS_CALL
250 #define OT_retObj_SET_BUS(nat) retObj = MK(MkBufferStreamC_ObjNew) (MK_RT_CALL nat)
253 #define OT_TMP_BUS_OBJ(val) MK(MkBufferStreamC_ObjNew)(MK_RT_CALL val)
260 #define VAL2BUS(val) ((MK_BUS)DATA_PTR(val))
266 #define MkErrorC_lngO MK(MkErrorC)
267 #define MkErrorC_base MK(MkObjectC)
271 #define MkErrorC_MK_NULL MK(MkErrorC_MK_NULL)
274 #define MkErrorC_ARGS LNG_ARGS
275 #define MkErrorC_ARGS_CALL LNG_ARGS_CALL
278 #define OT_retObj_SET_ERR(nat) retObj = MK(MkErrorC_ObjNew) (MK_RT_CALL nat)
281 #define OT_TMP_ERR_OBJ(val) MK(MkErrorC_ObjNew)(MK_RT_CALL val)
288 #define VAL2ERR(val) ((MK_ERR)DATA_PTR(val))
294 #define MkLogFileC_lngO MK(MkLogFileC)
295 #define MkLogFileC_base MK(MkObjectC)
299 #define MkLogFileC_MK_NULL MK(MkLogFileC_MK_NULL)
302 #define MkLogFileC_ARGS LNG_ARGS
303 #define MkLogFileC_ARGS_CALL LNG_ARGS_CALL
306 #define OT_retObj_SET_LFL(nat) retObj = MK(MkLogFileC_ObjNew) (MK_RT_CALL nat)
309 #define OT_TMP_LFL_OBJ(val) MK(MkLogFileC_ObjNew)(MK_RT_CALL val)
316 #define VAL2LFL(val) ((MK_LFL)DATA_PTR(val))
322 #define MkObjectC_lngO MK(MkObjectC)
323 #define MkObjectC_base NULL
327 #define MkObjectC_MK_NULL MK(MkObjectC_MK_NULL)
330 #define MkObjectC_ARGS LNG_ARGS
331 #define MkObjectC_ARGS_CALL LNG_ARGS_CALL
334 #define OT_retObj_SET_OBJ(nat) retObj = MK(MkObjectC_ObjNew) (MK_RT_CALL nat)
337 #define OT_TMP_OBJ_OBJ(val) MK(MkObjectC_ObjNew)(MK_RT_CALL val)
344 #define VAL2OBJ(val) ((MK_OBJ)DATA_PTR(val))
350 #define MkRuntimeC_lngO MK(MkRuntimeC)
351 #define MkRuntimeC_base MK(MkObjectC)
355 #define MkRuntimeC_MK_NULL MK(MkRuntimeC_MK_NULL)
358 #define MkRuntimeC_ARGS LNG_ARGS
359 #define MkRuntimeC_ARGS_CALL LNG_ARGS_CALL
362 #define OT_retObj_SET_RT(nat) retObj = MK(MkRuntimeC_ObjNew) (MK_RT_CALL nat)
365 #define OT_TMP_RT_OBJ(val) MK(MkRuntimeC_ObjNew)(MK_RT_CALL val)
372 #define VAL2RT(val) ((MK_RT)DATA_PTR(val))
382#define OT_ProcRet VALUE
383#define MK_CONTEXT_S hdl
385#define OT_METH_P(c,s,f) rb_define_private_method (NS(c),#s,NS(f),-1);
386#define OT_METH_C(c,s,f) rb_define_singleton_method (NS(c),#s,NS(f),-1);
387#define OT_METH_S(c,s,f) rb_define_singleton_method (NS(c),#s,NS(f),-1);
388#define OT_METH_O(c,s,f) rb_define_method (NS(c),#s,NS(f),-1);
398#define OT_SETUP_ALL(d) \
399 VALUE retObj=Qundef; \
401 __attribute__((unused)) const static char __doc[]=d; \
402 __attribute__((unused)) VALUE frame=0;
404#define OT_SETUP_CONSTRUCTOR_ARGS(min,max,d) \
406 OT_CHECK_NUM_ARGS(min,99); \
408#define OT_SETUP_VARARGS(min,max,d) \
410 OT_CHECK_NUM_ARGS(min,max); \
412#define OT_SETUP_ONEARG(d) \
414 OT_CHECK_NUM_ARGS(1,1); \
416#define OT_SETUP_NOARG(d) \
418 OT_CHECK_NUM_ARGS(0,0); \
420#define OT_FRAME_CLEANUP
422#define SETUP_ARGS MK_RT_ARGS LNG_ARGS
423#define SETUP_ARGS_CALL MK_RT_CALL LNG_ARGS_CALL
426#define OT_RET_SELF OT_SELF
428 #ifdef __SANITIZE_ADDRESS__
429 #define OBJ ((MK_OBJ)hdl)
431 #define OBJ &hdl->obj
439#define OT_SETUP_hdl_tmpl(cls) \
440 cls##_type hdl = cls##_VAL2(OT_SELF); \
442 OT_ERROR_VAR_DEFAULT(MK(InitError),"'%s' hdl is NULL",OT_LNG_OBJ_CLASSNAME(OT_SELF)); \
444 SetupRtFromObj_XN(hdl); \
446#define OT_SETUP_hdl_tmpl__null_allow(cls) \
447 cls##_type hdl = cls##_VAL2(OT_SELF); \
448 SetupRtFromObj_X(hdl); \
450#define OT_SETUP_doc __attribute__((unused)) const char *__doc = __func__;
452#define OT_retObj_SET(val) retObj = (val);
453#define OT_retObj_SET_None retObj = Qnil;
454#define OT_retObj_SET_Error retObj = Qundef;
455#define OT_retObj_SET_List retObj = rb_ary_new();
456#define OT_retObj_APPEND(var) rb_ary_push(retObj,var);
457#define OT_retObj_RETURN return retObj;
459#define OT_retObj_SET_BOL(nat) retObj = BOL2VAL(nat);
460#define OT_retObj_SET_I8(nat) retObj = I82VAL(nat);
461#define OT_retObj_SET_I16(nat) retObj = I162VAL(nat);
462#define OT_retObj_SET_I32(nat) retObj = INT2VAL(nat);
463#define OT_retObj_SET_I64(nat) retObj = I642VAL(nat);
464#define OT_retObj_SET_FLT(nat) retObj = FLT2VAL(nat);
465#define OT_retObj_SET_DBL(nat) retObj = DBL2VAL(nat);
466#define OT_retObj_SET_BIN(nat,len) retObj = BIN2VAL(nat,len);
467#define OT_retObj_SET_STR(nat) retObj = STRN2VAL(nat);
468#define OT_retObj_SET_STRN(nat) retObj = STRN2VAL(nat);
469#define OT_retObj_SET_LONG(nat) retObj = LONG2VAL(nat);
470#define OT_retObj_SET_HDL(nat) retObj = HDL2VAL(nat);
474#define OT_MK_CALL_0(obj,cls,meth,ret) { \
475 static __thread ID methid = 0; \
476 if (methid == 0) methid = rb_intern(#meth); \
477 ret = rb_funcallv(cls##_constr(obj),methid,0,NULL); \
480#define OT_MK_CALL_0_0(ret,obj,cls,meth) ret = rb_funcallv(obj,meth,0,NULL)
484#define OT_retObj_CONSTR(mng) OT_retObj_SET(NS(LNG_CONSTR)(clazz,mng,objc-__skip,objv+__skip))
485#define OT_CONSTRUCTOR_POST(x)
489#define OT_ERROR_LNG_RETURN \
490 rb_raise(rb_eRuntimeError, "%s", "not implemented"); \
493#define OT_ERROR_SOFT_CONSTRUCTOR(clazz) \
494 rb_raise(MK(InitError), "InitSoftError: '%s' soft constructor return 'NULL' pointer", #clazz); \
497#define OT_ERROR_CONSTRUCTOR(clazz) \
498 rb_raise(MK(InitError), "'%s' constructor return 'NULL' pointer", #clazz); \
501#define OT_ERROR_TYPE(str) \
502 rb_raise(rb_eTypeError, "%s", str); \
505#define OT_ERROR_RUNTIME(clazz, str) \
506 rb_raise(rb_eRuntimeError, "in class %s: %s.", #clazz, str); \
511#define OT_ERROR_NUMARGS(...) \
512 MkErrorC_CheckD(WrongNumArgs(__VA_ARGS__)); \
515#define MkErrorC_Check(mng,PROC) \
516 if (unlikely(MkErrorCheckI(PROC))) { \
517 OT_ERROR_META_2_LNG(mng); \
521#define MkErrorC_CheckD(PROC) \
522 if (unlikely(MkErrorCheckI(PROC))) { \
523 OT_ERROR_META_2_LNG(hdl); \
527#define check_META(code) if (MkErrorCheckI(code))
529#define OT_ERROR_VAR_DEFAULT(exp,...) do { \
531 ruby_snprintf(buf,512,__VA_ARGS__); \
538#define OT_TMP_BOL_OBJ(val) BOL2VAL(val)
539#define OT_TMP_I8_OBJ(val) I82VAL(val)
540#define OT_TMP_I16_OBJ(val) I162VAL(val)
541#define OT_TMP_I32_OBJ(val) INT2VAL(val)
542#define OT_TMP_I64_OBJ(val) I642VAL(val)
543#define OT_TMP_FLT_OBJ(val) FLT2VAL(val)
544#define OT_TMP_DBL_OBJ(val) DBL2VAL(val)
545#define OT_TMP_BIN_OBJ(val,len) BIN2VAL(val,len)
546#define OT_TMP_STR_OBJ(val) STRN2VAL(val)
550#define OT_Prefix_ARGS MK_RT_ARGS
551#define OT_Prefix_CALL MK_RT_CALL
553#define OT_Check_ARGS SETUP_ARGS, MK_MNG hdl, MK_STRN const arg, int *skipP
554#define OT_Check_CALL(arg) SETUP_ARGS_CALL, hdl, arg, &__skip
555#define OT_Check_CALL2(arg) SETUP_ARGS_CALL, hdl, arg, skipP
557#define OT_CHECK_OPTIONAL(val) if (__skip < objc) {val}
558#define OT_CHECK_REQUIRED(val) val
560#define OT_CHECK_NUM_ARGS(min,max) \
561 if ((objc-__skip) < min || (objc-__skip) > max) { \
562 OT_ERROR_NUMARGS(hdl, __skip, objc, min, max, ""); \
565#define OT_CHECK_NOARGS \
566 if (__skip != objc) { \
567 OT_ERROR_NUMARGS(hdl, __skip, objc, -999, +999, ""); \
570#define OT_CHECK_BNP(val,len) \
571 if (__skip >= objc) { \
572 OT_ERROR_NUMARGS(hdl, __skip, objc, -999, +999, #val); \
574 OT_OBJ_T nat = objv[__skip++]; \
575 val = (MK_BIN) RSTRING_PTR(nat); \
576 len = (MK_SIZE) RSTRING_LEN(nat); \
579#define OT_CHECK_BCP(val) \
580 if (__skip >= objc) { \
581 OT_ERROR_NUMARGS(hdl, __skip, objc, -999, +999, #val); \
583 OT_OBJ_T nat = objv[__skip++]; \
584 val = (MK_BINN) RSTRING_PTR(nat); \
587#define OT_GET_CONSTR_NAME(ctor) OT_LNG_NAME_FROM_OBJ((OT_OBJ_T)ctor)
597#define printLngObj(val) MK(_printObj)(MK_RT_CALL val,__func__);
603mk_inline VALUE
MK(OtNewInstanceWithOneArg)(VALUE type, VALUE arg) {
606 VALUE ret = rb_class_new_instance(1,args,type);
610#define OT_NEW_Mk_enum_OBJ(typ,i) MK(OtNewInstanceWithOneArg)(MK(Mk##typ),INT2VAL(i))
611typedef VALUE(*
MK(procCallF))(VALUE args);
649#define OT_CHECK_LNGTMPL(val,func) MkErrorC_CheckD (func(OT_Check_CALL(#val),&val));
651#define OT_CHECK_bool(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsBOOL))
652#define OT_CHECK_NB1(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsBOL))
653#define OT_CHECK_NI1(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsI8))
654#define OT_CHECK_NI2(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsI16))
655#define OT_CHECK_NI4(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsI32))
656#define OT_CHECK_NI8(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsI64))
657#define OT_CHECK_NF4(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsFLT))
658#define OT_CHECK_NF8(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsDBL))
659#define OT_CHECK_NIL(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsLONG))
660#define OT_CHECK_STRN(val) OT_CHECK_LNGTMPL(val,MK(Obj_AsSTRN))
663#define OT_CHECK_C_COPY(val,size) MkErrorCheck (MK(Obj_AsSTR_COPY)(OT_Check_CALL(#val),val,size));
667#define OT_GET_CALL_PROC MK(Get_Call_Proc) (1,&frame)
668#define OT_GET_CALL_FILE MK(Get_Call_Script) (1,&frame)
669#define OT_GET_CALL_LINE MK(Get_Call_Line) (1,&frame)
678#define OT_GET_CALL_ALL \
679 MK_STRN proc,file; MK_I32 line; MK(Get_Call_All)(0,&proc,&file,&line);
691#define OT_ERROR_META_2_LNG(m) MK(MkExceptionC_Raise) (OT_Prefix_CALL m, __doc, __FILE__, __LINE__)
692#define OT_ERROR_LNG_2_META(m) MK(MkExceptionC_Catch) (OT_Prefix_CALL m, NULL, __func__, NULL)
693#define OT_ERROR_LNG_2_META_2(m,s) MK(MkExceptionC_Catch) (OT_Prefix_CALL m, NULL, __func__, s)
698#define NIL_Check(v) if (NIL_P(v)) goto error;
706# define INCR_REG(val) rb_ary_push(MK(globalRef),val)
707# define DECR_REG(val) rb_ary_delete(MK(globalRef),val)
709# define INCR_REF(valP) rb_gc_register_address(valP)
710# define DECR_REF(valP) rb_gc_unregister_address(valP)
721#define VAL2I8(val) (MK_I8)NUM2CHR(val)
722#define VAL2BOL(val) (MK_BOL)MK(_VAL2BOL)(val)
723#define VAL2SRT(val) (MK_I16)NUM2SHORT(val)
724#define VAL2I32(val) (MK_I32)NUM2INT(val)
725#define VAL2I64(val) (MK_I64)NUM2LL(val)
726#define VAL2FLT(val) (MK_FLT)NUM2DBL(val)
727#define VAL2DBL(val) (MK_DBL)NUM2DBL(val)
728#define VAL2STRN(val) (MK_STRN)RSTRING_PTR(rb_obj_as_string(val))
729#define VAL2BIN(val) (MK_BINN)RSTRING_PTR(val),RSTRING_LEN(val)
730#define VAL2PTR(val) (MK_PTR)(val)
731#define VAL2REF(val) (MK_PTR)(val)
732#define VAL2LONG(val) NUM2LONG(val)
733#define VAL2MNG(val) (MK_MNG)DATA_PTR(val)
735#define PTR2VAL(nat) MK(_PTR2VAL)(nat)
736#define OBJ2VAL(nat) ((OT_OBJ_T)((MK_OBJ)nat)->self)
737#define I82VAL(nat) INT2FIX((MK_I8)nat)
738#define BOL2VAL(nat) ((nat)?Qtrue:Qfalse)
739#define I162VAL(nat) INT2FIX((MK_I16)nat)
740#define INT2VAL(nat) INT2NUM((MK_I32)nat)
741#define I642VAL(nat) LL2NUM((MK_I64)nat)
742#define FLT2VAL(nat) DBL2NUM((double)nat)
743#define DBL2VAL(nat) DBL2NUM((double)nat)
744#define STRN2VAL(nat) MK(_STRN2VAL)(nat)
745#define BIN2VAL(ptr,len) rb_str_new((const char*)ptr,(long)len)
746#define STR2VAL(ptr,len) rb_str_new((const char*)ptr,(long)len)
747#define LONG2VAL(nat) LONG2FIX(nat)
748#define HDL2VAL(nat) INT2NUM(nat)
761 return rb_str_new_cstr(val);
771#define ME_REF_MkBinaryR MkBinaryR
772#define OT_GET__ME_REF_MkBinaryR(b) BIN2VAL(b.data,(int)b.size)
773#define VAL2MkBinaryR(_obj) ({ \
777 if (!OT_LNG_IS_NULL(obj)) { \
778 if (RB_TYPE_P(obj, T_STRING)) { \
779 bin = (MK_BIN)RSTRING_PTR(obj); \
780 len = (MK_SIZE)RSTRING_LEN(obj); \
782 OT_ERROR_TYPE("parameter '" #_obj "' must be a 'byte-array'."); \
785 MkBinaryCreate(len,bin); \
787#define OT_CHECK__ME_REF_MkBinaryR(val) \
788 if (__skip >= objc) { \
789 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
791 val=VAL2MkBinaryR(objv[__skip++]); \
794#define ME_REF_MkStringR MkStringR
795#define OT_GET__ME_REF_MkStringR(b) STR2VAL(b.ptr,b.len)
796#define VAL2MkStringR(_obj) ({ \
800 if (!OT_LNG_IS_NULL(obj)) { \
801 str=RSTRING_PTR(obj); \
802 len=RSTRING_LENINT(obj); \
804 MkStringCreate(len,str); \
806#define OT_CHECK__ME_REF_MkStringR(val) \
807 if (__skip >= objc) { \
808 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
810 val=VAL2MkStringR(objv[__skip++]); \
829 if (obj == NULL)
return Qnil;
830 #define __doc "AtomObjNew"
840 OT_OBJ_T self = TypedData_Wrap_Struct (clazz, type, mng);
841 rb_obj_call_init(self, objc, objv);
842 rb_gc_register_mark_object(self);
850 rb_raise(rb_eRuntimeError,
"MkObjectC: the constructor has a NULL pointer");
855 rb_raise(rb_eRuntimeError,
"MkObjectC: signature check failed");
860 rb_raise(rb_eRuntimeError,
"MkObjectC: unable to create 'NewGlobalRef'");
876 if (mng == NULL)
return;
879 if (obj == NULL)
return;
882 DATA_PTR(self) = NULL;
895 if (obj == NULL)
return;
914 if (obj == NULL)
return;
925 if (obj == NULL)
return;
#define MkObjectC_MK_NULL
#define MkLogFileC_MK_NULL
#define MkBufferListC_MK_NULL
#define MkRuntimeC_MK_NULL
#define MK_RB_EXTERN_DATA
#define MK_RB_EXTERN
static library
#define MkBufferC_MK_NULL
#define MkBufferStreamC_MK_NULL
#define OT_LNG_IS_NULL(val)
#define MkBufferListC_ARGS
#define MkErrorC_Check(mng, PROC)
OT_ProcRet MK MkBufferListC_ToList(MkBufferListC_ARGS)
#define MkBufferC_X2obj(x)
#define MkBufferListC_type
#define MkBufferListC_X2obj(x)
#define MkBufferStreamC_type
#define MkBufferStreamC_X2obj(x)
#define MkErrorC_X2obj(x)
#define MkLogFileC_X2obj(x)
#define MkObjectC_X2obj(x)
static MK_OBJ MkObj(MK_MNG mng)
#define MkRefDecrWithUnlinkSelf(...)
#define MkRefDecrWithoutSelf(...)
static void MkRefIncrSelf(MK_OBJ const obj, MK_PTR const self, MK_PTR const env)
#define MkRuntimeC_X2obj(x)
enum MkCallS::@0 procType
rbmkkernel_procCallF procCall