theConfig 10.0
Loading...
Searching...
No Matches
LcCall.cs
Go to the documentation of this file.
1
9/* LABEL-NO */
10
11/*****************************************************************************/
12/* */
13/* misc */
14/* */
15/*****************************************************************************/
16
17using System;
18using System.Runtime.InteropServices;
19using csmkkernel;
20
21namespace cslcconfig {
22
23 public partial class LcConfigC
24 {
25
27 public delegate void LcConfigIncludeCCB( string incDir, string path, MkBufferListC ret);
28 public delegate void LcSettingDeleteCCB( long cfsH );
29
30 internal struct LcCall {
31 public LcConfigIncludeCCB callC;
32 public LcSettingDeleteCCB callS;
33
34 public LcCall(IntPtr rt, LcConfigIncludeCCB val) {
35 callC = val;
36 callS = null;
37 }
38
39 public LcCall(IntPtr rt, LcSettingDeleteCCB val) {
40 callC = null;
41 callS = val;
42 }
43 }
44
45 private static MkErrorE LcConfigIncludeCall (IntPtr mkrt, IntPtr cfg, IntPtr incDir, IntPtr path, IntPtr ret)
46 {
47 IntPtr data = Lc.LcConfigGetIncludeFunc(cfg);
48 if (data == IntPtr.Zero) return MkErrorE.OK;
49 LcCall dataC = (LcCall)GCHandle.FromIntPtr(data).Target;
50 if (dataC.callC == null) return MkErrorE.OK;
51
52//printBool(MqS.MqObjCheck(hdl),"check:hdl");
53
54 // call the function
55 try {
56 dataC.callC(Marshal.PtrToStringAnsi(incDir), Marshal.PtrToStringAnsi(path), MkBufferListC.MkBufferListC_ObjNew(ret));
57 } catch (Exception ex) {
58 IntPtr cstr = Marshal.StringToHGlobalAnsi("LcConfigIncludeCall");
59 MkExceptionC.Catch(mkrt,cfg,ex,cstr);
60 Marshal.FreeHGlobal(cstr);
61 }
62
63 // everything is OK
65 }
66
67 private static MkErrorE LcSettingDeleteCall(IntPtr mkrt, IntPtr cfg, IntPtr cfs)
68 {
69 IntPtr data = Lc.LcConfigGetSettingDeleteFunc(cfg);
70 if (data == IntPtr.Zero) return MkErrorE.OK;
71 LcCall dataC = (LcCall)GCHandle.FromIntPtr(data).Target;
72 if (dataC.callS == null) return MkErrorE.OK;
73
74//printBool(MqS.MqObjCheck(hdl),"check:hdl");
75
76 long hdl = Mk.MkObjectHandleGet(mkrt,cfs);
77
78 // call the function
79 try {
80 dataC.callS(hdl);
81 } catch (Exception ex) {
82 IntPtr cstr = Marshal.StringToHGlobalAnsi("LcSettingDeleteCall");
83 MkExceptionC.Catch(mkrt,cfg,ex,cstr);
84 Marshal.FreeHGlobal(cstr);
85 }
86
87 // everything is OK
89 }
90
91 private static void LcConfigIncludeFree (IntPtr mkrt, IntPtr cfg) {
92 IntPtr data = Lc.LcConfigGetIncludeFunc(cfg);
93 if (data == IntPtr.Zero) return;
94 GCHandle.FromIntPtr(data).Free();
95 data = IntPtr.Zero;
96 }
97
98 private static void LcSettingDeleteFree (IntPtr mkrt, IntPtr cfg) {
99 IntPtr data = Lc.LcConfigGetSettingDeleteFunc(cfg);
100 if (data == IntPtr.Zero) return;
101 GCHandle.FromIntPtr(data).Free();
102 data = IntPtr.Zero;
103 }
104
105 } // END - class "LcConfigC"
106} // END - namespace "cslcconfig"
107
LcConfigC - the class known as lccfg or Config define the main-configuration-handle …
Definition LcConfigC.cs:416
delegate void LcConfigIncludeCCB(string incDir, string path, MkBufferListC ret)
implements the cslcconfig API object: public version from LcConfigIncludeF as method
delegate void LcSettingDeleteCCB(long cfsH)
static MkBufferListC MkBufferListC_ObjNew(IntPtr hdl)
static IntPtr Catch(IntPtr mkrt, IntPtr expobj, Exception exception, IntPtr callfunc)
static Int32 MkObjectHandleGet(IntPtr mkrt, IntPtr obj)
static unsafe MkErrorE CsRuntimeErrorGetCode(IntPtr mkrt)
MkErrorE