11using System.Diagnostics;
16using System.Reflection;
17using System.Runtime.InteropServices;
18using System.Runtime.CompilerServices;
19using System.Collections.Generic;
20using System.Threading;
28 public partial class MkErrorC
30 public partial class MkErrorC : MkObjectC
33 private readonly
static ConstructorInfo ctor =
getCtor(typeof(MkErrorC));
34 private readonly
static ThreadLocal<MkErrorC> MK_NULL =
new ThreadLocal<MkErrorC>(() => {
42 private static MkErrorC MkErrorC_ObjCreate (IntPtr
hdl) {
46 private static IntPtr MkErrorC_SelfCreate (IntPtr
mkrt, IntPtr obj, IntPtr env) {
50 private static void MkErrorC_SelfUnlink (IntPtr
mkrt, IntPtr
self, IntPtr env) {
54 internal static void SetupThreadERR (IntPtr
mkrt) {
55 Mk.MkCsTypeUpdate(
mkrt, MkCsTypeLookupE.ERR, MkErrorC_SelfCreate, MkErrorC_SelfUnlink);
58 #if !META_STATIC_OVERWRITE
63 SetupThreadERR(IntPtr.Zero);
69 internal MkErrorC (IntPtr bufP) : base(bufP) {
72 private MkErrorC () {}
75 if (err <=
MkErrorE.CONTINUE)
return;
81 Check(IntPtr.Zero,err);
88 [CallerMemberName]
string callfunc =
null,
89 [CallerFilePath]
string callfile =
null,
90 [CallerLineNumber]
int callline = -1
92 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
93 IntPtr callfile_cstr = Marshal.StringToHGlobalAnsi(callfile);
95 Marshal.FreeHGlobal(callfile_cstr);
96 Marshal.FreeHGlobal(callfunc_cstr);
106 var code =
Mk.MkErrorGetCode(err);
107 if (code <=
MkErrorE.CONTINUE)
return code;
109 StackTrace st =
new System.Diagnostics.StackTrace(1,
true);
111 foreach (var sf
in st.GetFrames())
113 var meth = sf.GetMethod();
114 if (meth.Name ==
"ServiceCall")
break;
117 if (StackFrameExtensions.HasSource(sf)) {
118 fn = sf.GetFileName();
119 ln = sf.GetFileLineNumber();
121 fn = meth.DeclaringType.Module.Name;
130 private static IntPtr MkErrorCatchTmpl (IntPtr
mkrt, IntPtr
hdl, Exception exception, IntPtr callfunc) {
136 public partial class MkObjectC
140 if (err <=
MkErrorE.CONTINUE)
return;
147 public partial class MkErrorC {
157 IntPtr __retVal__L =
Mk.MkErrorHandleResolve(IntPtr.Zero, netHdl);
169 public partial class MkErrorC {
179 IntPtr __retVal__L =
Mk.MkErrorNext(
hdl);
185 IntPtr __retVal__L =
Mk.MkErrorPrev(
hdl);
193 IntPtr __retVal__L =
Mk.MkErrorInstances(IntPtr.Zero);
201 public partial class MkErrorC {
211 IntPtr __retVal__L =
Mk.MkErrorGetNull();
219 public partial class MkErrorC {
235 Int32 __retVal__L =
Mk.MkErrorGetNum(
hdl);
241 long __retVal__L =
Mk.MkErrorGetSize(
hdl);
247 IntPtr __retVal__L =
Mk.MkErrorGetText(
hdl);
248 return Marshal.PtrToStringAnsi(__retVal__L);
255 public partial class MkErrorC {
264 public MkErrorC Catch (Exception exception =
null, [CallerMemberName]
string callfunc =
null) {
265 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
266 IntPtr __retVal__L = MkErrorCatchTmpl(
mkrt,
hdl, exception, callfunc_cstr);
267 Marshal.FreeHGlobal(callfunc_cstr);
274 public void Cleanup ([CallerMemberName]
string callfunc =
null, [CallerLineNumber]
int callline = -1) {
275 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
276 Mk.MkErrorCleanup(
mkrt,
hdl, callfunc_cstr, callline);
277 Marshal.FreeHGlobal(callfunc_cstr);
283 public void Println (
string msg =
"", [CallerMemberName]
string callfunc =
null, [CallerLineNumber]
int callline = -1) {
284 IntPtr msg_cstr = Marshal.StringToHGlobalAnsi(msg);
285 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
286 Mk.MkErrorPrintln(
mkrt,
hdl, msg_cstr, callfunc_cstr, callline);
287 Marshal.FreeHGlobal(msg_cstr);
288 Marshal.FreeHGlobal(callfunc_cstr);
292 public void Reset ([CallerMemberName]
string callfunc =
null, [CallerLineNumber]
int callline = -1,
bool force =
false) {
293 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
295 Marshal.FreeHGlobal(callfunc_cstr);
300 public MkErrorE Stack ([CallerMemberName]
string callfunc =
null, [CallerFilePath]
string callfile =
null, [CallerLineNumber]
int callline = -1) {
301 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
302 IntPtr callfile_cstr = Marshal.StringToHGlobalAnsi(callfile);
304 Marshal.FreeHGlobal(callfunc_cstr);
305 Marshal.FreeHGlobal(callfile_cstr);
310 public void StackFormat ([CallerMemberName]
string callfunc =
null, [CallerFilePath]
string callfile =
null, [CallerLineNumber]
int callline = -1) {
311 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
312 IntPtr callfile_cstr = Marshal.StringToHGlobalAnsi(callfile);
313 Mk.MkErrorStackFormat(
mkrt,
hdl, callfunc_cstr, callfile_cstr, callline);
314 Marshal.FreeHGlobal(callfunc_cstr);
315 Marshal.FreeHGlobal(callfile_cstr);
324 public partial class MkErrorC {
334 IntPtr __retVal__L =
Mk.MkErrorNoRaise(
mkrt,
hdl);
342 IntPtr message_cstr = Marshal.StringToHGlobalAnsi(message);
344 Marshal.FreeHGlobal(message_cstr);
354 public void SetC (
string message, [CallerMemberName]
string callfunc =
null,
int errnum = -1) {
355 IntPtr message_cstr = Marshal.StringToHGlobalAnsi(message);
356 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
358 Marshal.FreeHGlobal(message_cstr);
359 Marshal.FreeHGlobal(callfunc_cstr);
366 public static void PanicC (
MkObjectC fmtobj,
string callfunc,
int errnum,
string message) {
368 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
369 IntPtr message_cstr = Marshal.StringToHGlobalAnsi(message);
370 Mk.MkPanicC(IntPtr.Zero, fmtobj_hdl, callfunc_cstr, errnum, message_cstr);
371 Marshal.FreeHGlobal(callfunc_cstr);
372 Marshal.FreeHGlobal(message_cstr);
378 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
379 Mk.MkPanicDEFAULT(IntPtr.Zero, fmtobj_hdl, callfunc_cstr);
380 Marshal.FreeHGlobal(callfunc_cstr);
387 public partial class MkErrorC {
397 bool __retVal__L =
Mk.MkErrorIsABORT(
hdl);
403 bool __retVal__L =
Mk.MkErrorIsEXIT(
hdl);
409 bool __retVal__L =
Mk.MkErrorIsSOCKET(
hdl);
415 bool __retVal__L =
Mk.MkErrorIsTIMEOUT(
hdl);
420 public void SetABORT (
string detail =
"UNKNOWN", [CallerMemberName]
string callfunc =
null) {
421 IntPtr detail_cstr = Marshal.StringToHGlobalAnsi(detail);
422 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
424 Marshal.FreeHGlobal(detail_cstr);
425 Marshal.FreeHGlobal(callfunc_cstr);
440 public void SetEXIT ([CallerMemberName]
string callfunc =
null) {
441 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
443 Marshal.FreeHGlobal(callfunc_cstr);
448 public void SetSOCKET (
string detail =
"UNKNOWN", [CallerMemberName]
string callfunc =
null) {
449 IntPtr detail_cstr = Marshal.StringToHGlobalAnsi(detail);
450 IntPtr callfunc_cstr = Marshal.StringToHGlobalAnsi(callfunc);
452 Marshal.FreeHGlobal(detail_cstr);
453 Marshal.FreeHGlobal(callfunc_cstr);
461 public partial class MkErrorC {
471 IntPtr __retVal__L =
Mk.MkErrorDEFAULT(IntPtr.Zero);
484 IntPtr __retVal__L =
Mk.MkErrorIGNORE(IntPtr.Zero);
490 IntPtr __retVal__L =
Mk.MkErrorPRINT(IntPtr.Zero);
508 IntPtr __retVal__L =
Mk.MkErrorDup(
mkrt,
hdl);
509 if (__retVal__L == IntPtr.Zero) {
512 return MkErrorC.MkErrorC_ObjCreate(__retVal__L);
MkErrorC - the class known as err or error is used to create and manage an error message …
static void Check(IntPtr ctx, MkErrorE err)
static MkErrorE Stack(IntPtr mkrt, IntPtr hdl, [CallerMemberName]string callfunc=null, [CallerFilePath]string callfile=null, [CallerLineNumber]int callline=-1)
C#: MkErrorE err.Stack([CallerMemberName]string callfunc = null, [CallerFilePath]string callfile = n...
static MkErrorC MkErrorC_ObjNew(IntPtr hdl)
static MkErrorE StackFull(IntPtr mkrt, IntPtr hdl)
C#: MkErrorE err.Stack([CallerMemberName]string callfunc = null, [CallerFilePath]string callfile = n...
static void Check(MkErrorE err)
C-API: MkExceptionC_C_API - MkExceptionC - The default-exception of the Programming-Language-Micro-...
static IntPtr Catch(IntPtr mkrt, IntPtr expobj, Exception exception, IntPtr callfunc)
convert an Target-Programming-Language (TPL) exception into an MkErrorC …
MkObjectC - class known as obj or object is used as base-class type for a Programming-Language-Micro-...
static object atomObjNew(Type type, ConstructorInfo ctor, IntPtr obj)
static IntPtr getOBJ_null_allow(MkObjectC obj)
static object atomObjCreate(Type type, ConstructorInfo ctor, IntPtr obj)
static void atomSelfUnlink(IntPtr self, IntPtr env)
static object atomSelfNull(ConstructorInfo ctor)
static IntPtr getOBJ(string cls, MkObjectC obj)
static ConstructorInfo getCtor(Type type)
static IntPtr atomSelfCreate(ConstructorInfo ctor, IntPtr obj, IntPtr env)
static IntPtr MkErrorFORMAT(IntPtr fmtobj)
static MkErrorE MkErrorSetC(IntPtr mkrt, IntPtr err, IntPtr message, IntPtr callfunc, Int32 errnum)
static void MkErrorAppendC(IntPtr mkrt, IntPtr err, IntPtr message)
void ErrorCheck(MkErrorE err)
new MkErrorC Prev()
C#: MkErrorC err.Prev() → C-API get previous instance from linked-list of MkErrorS type
new MkErrorC Next()
C#: MkErrorC err.Next() → C-API get next instance from linked-list of MkErrorS type
new static MkErrorC GetNull()
C#: [static] MkErrorC MkErrorC.GetNull() → C-API Null-Slot - return a MkErrorC typed NULL instan...
new static MkErrorC HandleResolve(Int32 netHdl)
C#: [static] MkErrorC MkErrorC.HandleResolve(Int32 netHdl) → C-API Handle-Resolve-Slot - return ...
new static MkErrorC Instances()
C#: [static] MkErrorC MkErrorC.Instances() → C-API get head-instance from linked-list of MkError...
long GetSize()
C#: long err.GetSize() → C-API get the error-message-size from the exception-object …
MkErrorE GetCode()
C#: MkErrorE err.GetCode() → C-API get the value of MkErrorS::code …
int GetNum()
C#: int err.GetNum() → C-API get the MkErrorS::num. The number can be used as exit-code …
string GetText()
C#: string err.GetText() → C-API get the MkErrorS::text …
void Cleanup([CallerMemberName]string callfunc=null, [CallerLineNumber]int callline=-1)
C#: err.Cleanup([CallerMemberName]string callfunc = null, [CallerLineNumber]int callline = -1) → C-...
MkErrorE Stack([CallerMemberName]string callfunc=null, [CallerFilePath]string callfile=null, [CallerLineNumber]int callline=-1)
C#: MkErrorE err.Stack([CallerMemberName]string callfunc = null, [CallerFilePath]string callfile = n...
MkErrorC Catch(Exception exception=null, [CallerMemberName]string callfunc=null)
C#: MkErrorC err.Catch(Exception exception = null, [CallerMemberName]string callfunc = null) → C-AP...
void Reset([CallerMemberName]string callfunc=null, [CallerLineNumber]int callline=-1, bool force=false)
C#: err.Reset([CallerMemberName]string callfunc = null, [CallerLineNumber]int callline = -1,...
void StackFormat([CallerMemberName]string callfunc=null, [CallerFilePath]string callfile=null, [CallerLineNumber]int callline=-1)
C#: err.StackFormat([CallerMemberName]string callfunc = null, [CallerFilePath]string callfile = null...
void Println(string msg="", [CallerMemberName]string callfunc=null, [CallerLineNumber]int callline=-1)
C#: err.Println(string msg = "", [CallerMemberName]string callfunc = null, [CallerLineNumber]int cal...
MkErrorC NoRaise()
C#: MkErrorC err.NoRaise() → C-API ignore the next return of MK_ERROR and do not raise an targe...
void Raise()
C#: err.Raise() → C-API convert an csmkkernel error into an programming-language-error and rais...
void SetC(string message, [CallerMemberName]string callfunc=null, int errnum=-1)
C#: err.SetC(string message, [CallerMemberName]string callfunc = null, int errnum = -1) → C-API ...
void AppendC(string message)
C#: err.AppendC(string message) → C-API append the message to the MkErrorS::text …
static void PanicDEFAULT(MkObjectC fmtobj=null, [CallerMemberName]string callfunc=null)
C#: [static] MkErrorC.PanicDEFAULT(MkObjectC fmtobj = null, [CallerMemberName]string callfunc = null)...
static void PanicC(MkObjectC fmtobj, string callfunc, int errnum, string message)
C#: [static] MkErrorC.PanicC(MkObjectC fmtobj, string callfunc, int errnum, string message) → C-API ...
void SetSOCKET(string detail="UNKNOWN", [CallerMemberName]string callfunc=null)
C#: err.SetSOCKET(string detail = "UNKNOWN", [CallerMemberName]string callfunc = null) → C-API ...
void SetEXIT([CallerMemberName]string callfunc=null)
C#: err.SetEXIT([CallerMemberName]string callfunc = null) → C-API finish the current callback,...
bool IsEXIT()
C#: bool err.IsEXIT() → C-API check on APPLICATION-EXIT error …
void SetABORT(string detail="UNKNOWN", [CallerMemberName]string callfunc=null)
C#: err.SetABORT(string detail = "UNKNOWN", [CallerMemberName]string callfunc = null) → C-API s...
bool IsTIMEOUT()
C#: bool err.IsTIMEOUT() → C-API check on TIMEOUT error …
void SetCode(MkErrorE code)
C#: err.SetCode(MkErrorE code) → C-API set the MkErrorS::code value …
void SetCONTINUE()
C#: err.SetCONTINUE() → C-API signal end of processing in an MqMqEventIF callback …
bool IsSOCKET()
C#: bool err.IsSOCKET() → C-API check on SOCKET-DOWN error …
bool IsABORT()
C#: bool err.IsABORT() → C-API check on ABORT signal …
static MkErrorC DEFAULT()
C#: [static] MkErrorC MkErrorC.DEFAULT() → C-API default-system-error - default-error …
static MkErrorC IGNORE()
C#: [static] MkErrorC MkErrorC.IGNORE() → C-API ignore-system-error - ignore the next error …
static MkErrorC FORMAT(MkObjectC fmtobj=null)
C#: [static] MkErrorC MkErrorC.FORMAT(MkObjectC fmtobj = null) → C-API system-error-format - for...
static MkErrorC PRINT()
C#: [static] MkErrorC MkErrorC.PRINT() → C-API ignore-system-error - print the next error into M...
void Copy(MkErrorC srce)
C#: dest.Copy(MkErrorC srce) → C-API Copy-Constructor - sync an existing MkErrorC instance with...
MkErrorC Dup()
C#: [constructor] MkErrorC srce.Dup() → C-API Dup-Constructor - create a new MkErrorC instance a...
#define MK_NULL
The Programming-Language-Micro-Kernel (PLMK) NULL value as null in C# …
MkErrorE
→ C-API: MkErrorE → C-API: MkErrorE