theKernel 10.0
Loading...
Searching...
No Matches
MkKernel_TCL_API

MkKernel PACKAGE - The package is the toplevel structure of the Programming-Language-Micro-Kernel (PLMK)More...

+ Collaboration diagram for MkKernel_TCL_API:

Topics

 MkKernel_PrimitiveTypes_TCL_API
 MkKernel PACKAGE - a collection of all native-data-types supported by MkBufferC
 
 MkKernel_Storage_TCL_API
 MkKernel PACKAGE - Storage Management …
 
 MkKernel_Enum_TCL_API
 MkKernel PACKAGE - enum definition …
 
 MkKernel_Setup_libmkkernel_TCL_API
 MkKernel PACKAGE - Setup und Cleanup the tclmkkernel
 

Functions

static int tclmkkernel_Print_Class_Cmd (OtClass_ARGS)
  tclmkkernel::print object|type tclObj
 
static int tclmkkernel_Const_Class_Cmd (OtClass_ARGS)
  tclObj [tclmkkernel::const maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD]
 

Detailed Description

MkKernel PACKAGE - The package is the toplevel structure of the Programming-Language-Micro-Kernel (PLMK)

The tclmkkernel package is loaded with:

package require tclmkkernel 

and is a composition of one or more class-item.

The tclmkkernel package add the following public classes into MkObjectC_C_API :

Object C-Type Description
MkObjectC MK_OBJ MkObjectC - class known as obj or object is used as base-class type for a Programming-Language-Micro-Kernel (PLMK) class …
MkBufferC MK_BUF MkBufferC - the abstract class known as buf or buffer is used to create and manage dynamic, generic, mixed typed data. …
MkBufferStreamC MK_BUS MkBufferStreamC - the abstract class known as bus or stream is a subclass of MkBufferC and is used for package-based-io
MkBufferListC MK_BFL MkBufferListC - the class known as bfl or buffer-list is used to create and manage a list of MkBufferC
MkLogFileC MK_LFL MkLogFileC - the class known as lfl or log-file is used to control the target of the logging-output
MkErrorC MK_ERR MkErrorC - the class known as err or error is used to create and manage an error message …
MkRuntimeC MK_RT MkRuntimeC - The class known as mkrt or runtime is the main tclmkkernel application environment …

The tclmkkernel package add the following public types into MkObjectC_C_API :

    ABSTRACT: MkTypeSTT (TypeTypeType = type of a TypeType)
    |
    |- ABSTRACT: MkTypeDefSTT (TypeType = type of a Type)
       |
       |- MkObjectST, MkLogFileST, MkBufferListST,
       |- MkErrorPanicST, MkErrorIgnoreST, MkErrorPrintST, MkErrorDefaultST, MkErrorST
       |
       |- ABSTRACT: MkBufferST
          |- FINAL: MkBuffer64ST, MkBuffer256ST, MkBuffer1024ST
          |- ABSTRACT: MkBufferStreamST
             | FINAL: MkBufferStream64ST, MkBufferStream256ST, MkBufferStream1024ST, MkBufferStream16384ST

Function Documentation

◆ tclmkkernel_Const_Class_Cmd()

static int tclmkkernel_Const_Class_Cmd ( OtClass_ARGS )
static

tclObj [tclmkkernel::const maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD]

Definition at line 1233 of file LibMkKernel_tcl.c.

1234{
1236 int index;
1237
1238 OT_OBJ_T lngO = NULL;
1239
1240 static const char *constant[] = {
1241 "maxY", "minY", "maxS", "minS", "maxI", "minI", "maxF", "minF", "maxW", "minW", "maxD", "minD", NULL
1242 };
1243 enum constants {
1244 MAXY, MINY, MAXS, MINS, MAXI, MINI, MAXF, MINF, MAXW, MINW, MAXD, MIND,
1245 };
1246
1247 WNA(1,1,"(maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD)");
1248
1249 // get the Index
1250 OtErrorCheckLng (Tcl_GetIndexFromObj (interp, objv[__skip], constant, "constant", 0, &index));
1251
1252 // do the work
1253 switch ((enum constants) index) {
1254 case MAXY: lngO = Tcl_NewIntObj (SCHAR_MAX); break;
1255 case MINY: lngO = Tcl_NewIntObj (SCHAR_MIN); break;
1256 case MAXS: lngO = Tcl_NewIntObj (SHRT_MAX); break;
1257 case MINS: lngO = Tcl_NewIntObj (SHRT_MIN); break;
1258 case MAXI: lngO = Tcl_NewLongObj (INT_MAX); break;
1259 case MINI: lngO = Tcl_NewLongObj (INT_MIN); break;
1260 case MAXF: lngO = Tcl_NewDoubleObj (FLT_MAX); break;
1261 case MINF: lngO = Tcl_NewDoubleObj (FLT_MIN); break;
1262 case MAXW: lngO = Tcl_NewWideIntObj (LLONG_MAX); break;
1263 case MINW: lngO = Tcl_NewWideIntObj (LLONG_MIN); break;
1264 case MAXD: lngO = Tcl_NewDoubleObj (DBL_MAX); break;
1265 case MIND: lngO = Tcl_NewDoubleObj (DBL_MIN); break;
1266 }
1267
1268 Tcl_SetObjResult (interp, lngO);
1269 return TCL_OK;
1270}
#define OT_SETUP_hdl_static
#define WNA(min, max, txt)
#define OtErrorCheckLng(cmd)
Tcl_Obj * OT_OBJ_T

◆ tclmkkernel_Print_Class_Cmd()

static int tclmkkernel_Print_Class_Cmd ( OtClass_ARGS )
static

tclmkkernel::print object|type tclObj

MARK_C CODE

Definition at line 1160 of file LibMkKernel_tcl.c.

1161{
1162 int ret = TCL_OK;
1164 int index;
1165
1166 static const char *option[] = {
1167 "object", "type", "var", NULL
1168 };
1169 enum options {
1170 OBJECT, TYPE, VARIABLE
1171 };
1172
1173 // get the Index
1174 OtErrorCheckLng (Tcl_GetIndexFromObj (interp, objv[__skip++], option, "subcommand", 0, &index));
1175
1176 // do the work
1177 switch ((enum options) index) {
1178 case OBJECT:
1179 WNA(1,1,"tclObj");
1180 Tcl_SetResult (interp, MK(PrintLngObj) (OT_Prefix_CALL "print", objv[__skip]), TCL_VOLATILE);
1181 break;
1182 case TYPE:
1183 WNA(1,1,"tclObj");
1184 Tcl_SetResult (interp, (char*) MK(GetTypeFromObj) (OT_Prefix_CALL objv[__skip], NULL), TCL_VOLATILE);
1185 break;
1186 case VARIABLE: {
1187 // same as tcl "Print ..."
1188 WNA(1,99,"tclObj...");
1190 RL_init( RL_O(0,RG(infoLevelCmd)) )
1191 OT_OBJ_T lvlObj = MK(EvalObjvAR)(MK_RT_CALL varframe,interp,0,RL_objv(1));
1192 check_NULL(lvlObj) goto varerror;
1193 int lvl;
1194 check_LNG(Tcl_GetIntFromObj(interp,lvlObj,&lvl)) goto varerror;
1195 char *STR;
1196 fputs("print var ",stderr);
1197 if (lvl > 0) {
1198 RL_init( RL_O(0,RG(infoLevelCmd)) RL_NewI(1,0) )
1199 lvlObj = MK(EvalObjvAR)(MK_RT_CALL varframe,interp,0,RL_objv(2));
1200 check_NULL(lvlObj) goto varerror;
1201 OT_OBJ_T nameObj;
1202 check_LNG(Tcl_ListObjIndex(interp,lvlObj,0,&nameObj)) goto varerror;
1203 STR = Tcl_GetString(nameObj);
1204 } else {
1205 STR = "GLOBAL -> ";
1206 }
1207 fputs(STR,stderr);
1208
1209 for (int i=2; i<objc; i++) {
1210 char * nameS = Tcl_GetString(objv[i]);
1211 OT_OBJ_T var = Tcl_ObjGetVar2(interp,objv[i],NULL,0);
1212 if (var) {
1213 fprintf(stderr,"%s<%s>, ", nameS, Tcl_GetString(var));
1214 } else {
1215 fprintf(stderr,"%s<not set>, ", nameS);
1216 }
1217 }
1218 fputs("\n",stderr);
1220 break;
1221varerror:
1222 ret = TCL_ERROR;
1224 break;
1225 }
1226 }
1227
1228 return ret;
1229}
#define check_NULL(code)
#define MK(n)
#define RL_objv(num)
#define OT_VARFRAME_DELETE
#define OT_Prefix_CALL
#define RL_NewI(num, itg)
#define RL_O(num, obj)
#define check_LNG(code)
#define RL_init(code)
#define RG(_key)
#define OT_VARFRAME_CREATE
#define MK_RT_CALL