theKernel 10.0
Loading...
Searching...
No Matches
MkObjectC_jv.c File Reference

tag: nhi1-release-250425 More...

#include "jni_h/jvmkkernel_MkObjectC.h"
#include "LibMkKernel_private_jv.h"
+ Include dependency graph for MkObjectC_jv.c:

Go to the source code of this file.

Macros

#define META_FILE_NAME   "MkObjectC_jv.c"
 
#define ClassInit   \
 
#define MkDbgDumpTmpl(obj, msg, cal)
 
#define MkObjectErrorCatchTmpl(...)
 

Functions

jobject jvmkkernel_MkObjectC_ObjNew (MK_RT mkrt, JNIEnv *env, MK_OBJ hdl)
 
static MK_UNUSED jobject jvmkkernel_MkObjectC_ObjCreate (MK_RT mkrt, JNIEnv *env, MK_OBJ hdl)
 
static MK_PTR jvmkkernel_MkObjectC_selfCreate (MK_RT mkrt, MK_OBJ obj, MK_PTR envP)
 
void jvmkkernel_AtomSelfUnlink (MK_RT mkrt, MK_PTR ptr, MK_PTR envP)
 
JNIEXPORT jlong JNICALL Java_jvmkkernel_MkObjectC_atomCreate (JNIEnv *env, jclass class, jlong mng, jobject self)
 
JNIEXPORT jlong JNICALL Java_jvmkkernel_MkObjectC_atomDelete (JNIEnv *env, jclass class, jlong mng)
 
static enum MkErrorE jvmkkernel_printObj (MK_RT mkrt, JNIEnv *env, MK_MNG mng, jobject val, MK_STRN caller, MK_STRN txt)
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_HandleResolve (JNIEnv *env, jclass class, jint netHdl)
  Java: [static] MkObjectC MkObjectC.HandleResolve(int netHdl) C-API
Handle-Resolve-Slot - return a MkObjectC from netHdl or null if invalid…
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_HandleDelete (JNIEnv *env, jobject self)
  Java: netObj.HandleDelete() C-API
Handle-Delete-Slot - delete a netObj from handle-storage …
 
JNIEXPORT jboolean JNICALL Java_jvmkkernel_MkObjectC_HandleExists (JNIEnv *env, jobject self)
  Java: boolean obj.HandleExists() C-API
check if obj has already a handle defined…
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_HandleGet (JNIEnv *env, jobject self)
  Java: int obj.HandleGet() C-API
Handle-Get-Slot - returns a export-hdl to the MkObjectC useable for external storage
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_HandleGetOfType (JNIEnv *env, jobject self)
  Java: int obj.HandleGetOfType() C-API
Export-Slot - returns typeHdl of the obj .
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_HandleGetOr0 (JNIEnv *env, jobject self)
  Java: int obj.HandleGetOr0() C-API
return export-hdl or 0 in not created…
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_HandleDeleteByNetHdl (JNIEnv *env, jclass class, jint netHdl)
  Java: [static] MkObjectC.HandleDeleteByNetHdl(int netHdl) C-API
Handle-Delete-Slot - delete a netHdl from handle-storage …
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_Next (JNIEnv *env, jobject self)
  Java: MkObjectC obj.Next() C-API
get next instance from linked-list of MkObjectS type
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_Prev (JNIEnv *env, jobject self)
  Java: MkObjectC obj.Prev() C-API
get previous instance from linked-list of MkObjectS type
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_Instances (JNIEnv *env, jclass class)
  Java: [static] MkObjectC MkObjectC.Instances() C-API
get head-instance from linked-list of MkObjectS type …
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_GetNull (JNIEnv *env, jclass class)
  Java: [static] MkObjectC MkObjectC.GetNull() C-API
Null-Slot - return a MkObjectC typed NULL instance …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgDump (JNIEnv *env, jobject self, jstring message, jstring callfunc)
  Java: obj.DbgDump(?String message = "var"?, ?String callfunc = null?) C-API
debug: Dump a instance to stderr with LNG and MQ internal data…
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgL (JNIEnv *env, jobject self, jstring message, jint debug, jstring callfunc, jint lvl)
  Java: fmtobj.DbgL(String message, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
debug: write a instance-marker to the MkLogFileC (default: stderr) using the fmtobj as prefix …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgLogC (JNIEnv *env, jobject self, jstring callfunc)
  Java: obj.DbgLogC(?String callfunc = null?) C-API
debug: write a short-obj-summary to MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgO (JNIEnv *env, jobject self, jstring callfunc)
  Java: obj.DbgO(?String callfunc = null?) C-API
debug: write the object-details to MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgSTACK (JNIEnv *env, jobject self, jint skip, jint num, jstring callfunc)
  Java: fmtobj.DbgSTACK(?int skip = 0?, ?int num = -1?, ?String callfunc = null?) C-API
debug: write the stack-trace to MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DbgM (JNIEnv *env, jclass class, jstring message, jint debug, jstring callfunc, jint lvl)
  Java: [static] MkObjectC.DbgM(String message, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
debug: write a static-marker to the MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_LogC (JNIEnv *env, jobject self, jstring message, jint debug, jstring callfunc)
  Java: fmtobj.LogC(String message, ?int debug = 0?, ?String callfunc = null?) C-API
write a logging-message to MkLogFileC (default: stderr) using the internal format …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_LogHEX (JNIEnv *env, jobject self, jstring callfunc, jbyteArray data)
  Java: fmtobj.LogHEX(?String callfunc = null?, byte[] data) C-API
log binaray data as HEX into the MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_Log (JNIEnv *env, jobject self, jobject fmtobj, jint debug, jstring callfunc, jint lvl)
  Java: obj.Log(?MkObjectC fmtobj = null?, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
Log-Slot - log a summary of an object to the MkLogFileC (default: stderr) target …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_LogLong (JNIEnv *env, jobject self, jobject fmtobj, jint debug, jstring callfunc, jint lvl)
  Java: obj.LogLong(?MkObjectC fmtobj = null?, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
log the MkObjectS verbose into the MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_LogShort (JNIEnv *env, jobject self, jobject fmtobj, jint debug, jstring callfunc, jint lvl)
  Java: obj.LogShort(?MkObjectC fmtobj = null?, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
log the MkObjectS into the MkLogFileC (default: stderr) …
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_LogType (JNIEnv *env, jobject self, jobject fmtobj, jint debug, jstring callfunc, jint lvl)
  Java: obj.LogType(?MkObjectC fmtobj = null?, ?int debug = 0?, ?String callfunc = null?, ?int lvl = 0?) C-API
log the tyoe of the MkObjectS into the MkLogFileC (default: stderr) …
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_ErrorCatch (JNIEnv *env, jobject self, jthrowable exception, jstring callfunc)
  Java: MkErrorC obj.ErrorCatch(?Throwable exception = null?, ?String callfunc = null?) C-API
convert a programming-language-error into an jvmkkernel error …
 
JNIEXPORT jobject JNICALL Java_jvmkkernel_MkObjectC_ToError (JNIEnv *env, jobject self)
  Java: MkErrorC obj.ToError() C-API
Error-Slot - return an error-object pre initialized with obj data.
 
JNIEXPORT jboolean JNICALL Java_jvmkkernel_MkObjectC_IsNull (JNIEnv *env, jobject self)
  Java: boolean obj.IsNull() C-API
ckeck if the object is null
 
JNIEXPORT jstring JNICALL Java_jvmkkernel_MkObjectC_ToName (JNIEnv *env, jobject self)
  Java: String obj.ToName() C-API
Info-Slot - returns brief information about the obj as a string
 
JNIEXPORT jstring JNICALL Java_jvmkkernel_MkObjectC_ToNameOfClass (JNIEnv *env, jobject self)
  Java: String obj.ToNameOfClass() C-API
Class-Slot - returns the Java-Class-Name of the obj as string
 
JNIEXPORT jstring JNICALL Java_jvmkkernel_MkObjectC_ToNameOfType (JNIEnv *env, jobject self)
  Java: String obj.ToNameOfType() C-API
Type-Slot - returns the LibMkKernel-Type-Name of the obj as a string
 
JNIEXPORT jstring JNICALL Java_jvmkkernel_MkObjectC_ToString (JNIEnv *env, jobject self)
  Java: String inst.ToString() C-API
String-Slot - returns the string representation of the inst
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_RefGet (JNIEnv *env, jobject self)
 MkRefGet
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_SysKill (JNIEnv *env, jobject self, jint pid, jint signal)
 MkSysKill
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_SysGetPid (JNIEnv *env, jobject self)
 MkSysGetPid
 
JNIEXPORT jint JNICALL Java_jvmkkernel_MkObjectC_SysHashI32 (JNIEnv *env, jclass class, jstring key, jint length)
 MkSysHashI32
 
JNIEXPORT jstring JNICALL Java_jvmkkernel_MkObjectC_SysHashSTR (JNIEnv *env, jclass class, jstring key, jint length)
 MkSysHashSTR
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_Dispose (JNIEnv *env, jobject self)
  Java: [destructor] obj.Dispose() C-API
Dispose-Slot - untie the connection between the Native-Java-Instance and the jvmkkernel-Instance.
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_Delete (JNIEnv *env, jobject self)
  Java: [destructor] obj.Delete() C-API
Delete-Slot - delete an instance.
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DeleteCallbackCleanup (JNIEnv *env, jclass class, jstring ident)
  Java: [static] MkObjectC.DeleteCallbackCleanup(String ident) C-API
cleanup the DeleteCallback installed with MkObjectDeleteCallbackSetup
 
JNIEXPORT void JNICALL Java_jvmkkernel_MkObjectC_DeleteCallbackSetup (JNIEnv *env, jclass class, jstring ident, jobject callback, jstring filter)
  Java: [static] MkObjectC.DeleteCallbackSetup(String ident, ?MkObjectDeleteIF callback = null?, ?String filter = null?) C-API
Create/Delete the instance-delete-callback
 
void jvmkkernel_MkObjectC_Init (MK_RT mkrt)
 

Detailed Description

tag: nhi1-release-250425

Definition in file MkObjectC_jv.c.

Macro Definition Documentation

◆ ClassInit

#define ClassInit   \

Definition at line 31 of file MkObjectC_jv.c.

31#define ClassInit \
32

◆ META_FILE_NAME

#define META_FILE_NAME   "MkObjectC_jv.c"

Definition at line 10 of file MkObjectC_jv.c.

◆ MkDbgDumpTmpl

#define MkDbgDumpTmpl ( obj,
msg,
cal )
Value:
NS(printObj)(MK_RT_CALL env,NULL,self,cal,msg)
#define MK_RT_CALL

Definition at line 103 of file MkObjectC_jv.c.

◆ MkObjectErrorCatchTmpl

#define MkObjectErrorCatchTmpl ( ...)
Value:
MK(MkExceptionC_Catch) (env,__VA_ARGS__, NULL)

Definition at line 145 of file MkObjectC_jv.c.

Function Documentation

◆ Java_jvmkkernel_MkObjectC_atomCreate()

JNIEXPORT jlong JNICALL Java_jvmkkernel_MkObjectC_atomCreate ( JNIEnv * env,
jclass class,
jlong mng,
jobject self )

Definition at line 61 of file MkObjectC_jv.c.

63{
64 if (mng == 0L) {
65 (*env)->ThrowNew(env, NS(Class_MkInitError), "MkObjectC");
66 goto error;
67 }
68 MK_OBJ hdl = MkObj((MK_MNG)mng);
69 if (hdl == NULL) {
70 (*env)->ThrowNew(env, NS(Class_RuntimeException), "MkObjectC: signature check failed");
71 goto error;
72 }
73#if META_STRONG_REF
74 MK_PTR ref = (MK_PTR) (*env)->NewGlobalRef(env, self);
75#else
76 MK_PTR ref = (MK_PTR) (*env)->NewWeakGlobalRef(env, self);
77#endif
78 if ((*env)->IsSameObject(env,ref,NULL)) {
79#if META_STRONG_REF
80 (*env)->ThrowNew(env, NS(Class_RuntimeException), "MkObjectC: unable to create 'NewGlobalRef'");
81#else
82 (*env)->ThrowNew(env, NS(Class_RuntimeException), "MkObjectC: unable to create 'NewWeakGlobalRef'");
83#endif
84 goto error;
85 }
86 MkRefIncrSelf(hdl,ref,env);
87 return mng;
88error:
89 return 0;
90}
MK_PTRB * MK_PTR
generic pointer data-type
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
static MK_OBJ MkObj(MK_MNG mng)
cast a unknown-object into an MkObjectS pointer or NULL if not possible
static void MkRefIncrSelf(MK_OBJ const obj, MK_PTR const self, MK_PTR const env)
ATOMIC operation -> link self with reference-count.
object header …

◆ Java_jvmkkernel_MkObjectC_atomDelete()

JNIEXPORT jlong JNICALL Java_jvmkkernel_MkObjectC_atomDelete ( JNIEnv * env,
jclass class,
jlong mng )

Definition at line 92 of file MkObjectC_jv.c.

94{
95 MK_OBJ obj = MkObj((MK_PTR)mng);
96 if (obj == NULL) return 0;
97 MkRtSetup_ON(obj);
98//printXTxt(obj,MkObjectToName(obj))
100 return 0;
101}
#define MkRefDecrWithUnlinkSelf(...)
#define MkRtSetup_ON(o)

◆ jvmkkernel_AtomSelfUnlink()

void jvmkkernel_AtomSelfUnlink ( MK_RT mkrt,
MK_PTR ptr,
MK_PTR envP )

ATOM API

Definition at line 43 of file MkObjectC_jv.c.

43 {
44 if (!envP) return;
45 JNIEnv *env = (JNIEnv*) envP;
46 jobject self = (jobject) ptr;
47#ifndef META_STRONG_REF
48 if ((*env)->IsSameObject(env,self,NULL)) goto end;
49#endif
50//X0(pObj2Hdl(env, self))
51 (*env)->SetLongField(env,self,NS(FID_MkObjectC_hdl),0);
52 JavaErrorReport
53end: MK_UNUSED
54#if META_STRONG_REF
55 (*env)->DeleteGlobalRef(env, self);
56#else
57 (*env)->DeleteWeakGlobalRef(env, self);
58#endif
59}
#define MK_UNUSED
mark unnused variables and functions

◆ jvmkkernel_MkObjectC_Init()

void jvmkkernel_MkObjectC_Init ( MK_RT mkrt)

Definition at line 811 of file MkObjectC_jv.c.

811 {
813
814 MkObjectC_TT->selfCreate = NS(MkObjectC_selfCreate);
815 MkObjectC_TT->selfUnlink = MK(AtomSelfUnlink);
816}
#define ClassInit
#define MkObjectC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …

◆ jvmkkernel_MkObjectC_ObjCreate()

static MK_UNUSED jobject jvmkkernel_MkObjectC_ObjCreate ( MK_RT mkrt,
JNIEnv * env,
MK_OBJ hdl )
static

Definition at line 22 of file MkObjectC_jv.c.

22 {
23 return MK(AtomObjCreate)(MK_RT_CALL env, MkObjectC_X2obj(hdl));
24}
#define MkObjectC_X2obj(x)

◆ jvmkkernel_MkObjectC_ObjNew()

jobject jvmkkernel_MkObjectC_ObjNew ( MK_RT mkrt,
JNIEnv * env,
MK_OBJ hdl )

Definition at line 16 of file MkObjectC_jv.c.

16 {
17 static MkThreadLocal jobject NS_NULL = NULL;
18 return (hdl ? MK(AtomObjNew)(MK_RT_CALL env, MkObjectC_X2obj(hdl)) : MK_GET__NS_NULL(MkObjectC));
19}
#define MkThreadLocal

◆ jvmkkernel_MkObjectC_selfCreate()

static MK_PTR jvmkkernel_MkObjectC_selfCreate ( MK_RT mkrt,
MK_OBJ obj,
MK_PTR envP )
static

Definition at line 26 of file MkObjectC_jv.c.

26 {
27 JNIEnv *env = (JNIEnv*) envP;
28 return (*env)->NewObject(env, NS(Class_MkObjectC), NS(MID_MkObjectC_INIT), (jlong) obj, JNI_TRUE);
29}

◆ jvmkkernel_printObj()

static enum MkErrorE jvmkkernel_printObj ( MK_RT mkrt,
JNIEnv * env,
MK_MNG mng,
jobject val,
MK_STRN caller,
MK_STRN txt )
static

Definition at line 105 of file MkObjectC_jv.c.

105 {
106 MK_OBJ fmt = mng ? MkObj(mng) : MK_ERROR_DEFAULT;
107 if (val == NULL) {
108 MkLogC(fmt, "NULL\n", 0, caller);
109 } else {
110 MK_OBJ obj = NULL;
111 if (OT_LNG_OBJ_CLASS_IS(val,MK(Class_MkObjectC))) {
112 obj = (MK_OBJ)pObj2Hdl__null_allow(env,val);
113 if (fmt == MK_ERROR_DEFAULT && obj != NULL) fmt = obj;
114 MkLogV(fmt, caller, 0,
115 "DUMP %s: { jval=%p }\n", (txt?txt:"printObj"), val
116 );
117 } else {
118 MkLogV(fmt, caller, 0,
119 "DUMP %s: { jval=%p }\n", (txt?txt:"printObj"), val
120 );
121 }
122 if (obj) MkObjectLogShort(obj,NULL,0,caller,1);
123 jstring ret = (*env)->CallStaticObjectMethod(env, MK(Class_MkKernel), MK(MID_MkKernel_dump), val);
124 JavaErrorCheck;
125 if (ret) {
126 jboolean isCopy;
127 MK_STRN retCC = (*env)->GetStringUTFChars(env,ret,&isCopy);
128 MK_STR retC = isCopy ? (MK_STR) retCC : strdup(retCC);
129 JavaErrorCheck;
130 MK_STR start = strtok(retC,META_EOL);
131 while (start != NULL) {
132 MkLogV(fmt, caller, 0, " | %s\n", start);
133 start = strtok(NULL,META_EOL);
134 }
135 if (retC) (*env)->ReleaseStringUTFChars(env,ret,retCC);
136 if (!isCopy) free(retC);
137 }
138 }
139 return MK_OK;
140error:
141 OT_ERROR_LNG_2_META(mng);
142 return MK_ERROR;
143}
#define MK_ERROR_DEFAULT
#define META_EOL
@ MK_ERROR
(persistent) raise an error-event, the calling-fucntion is interrupted.
@ MK_OK
(persistent) everything is OK.
const MK_STRB * MK_STRN
constant string pointer data-type
MK_STRB * MK_STR
string pointer data-type with UTF8 ecoding (String)
struct MkObjectS * MK_OBJ
class-shortcut for struct MkObjectS *, all shortcut using the XX_YYY syntax (only for public API) …
#define MkObjectLogShort(...)
#define MkLogC(...)
#define MkLogV(...)