theKernel 10.0
Loading...
Searching...
No Matches
MkKernel_ATL_API

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

+ Collaboration diagram for MkKernel_ATL_API:

Topics

 MkKernel_PrimitiveTypes_ATL_API
 MkKernel PACKAGE - a collection of all native-data-types supported by MkBufferC
 
 MkKernel_Storage_ATL_API
 MkKernel PACKAGE - Storage Management …
 
 MkKernel_Enum_ATL_API
 MkKernel PACKAGE - enum definition …
 
 MkKernel_Setup_libmkkernel_ATL_API
 MkKernel PACKAGE - Setup und Cleanup the atlmkkernel
 

Functions

static int atlmkkernel_Print_Class_Cmd (OtClass_ARGS)
  MkKernel::print object|type tclObj
 
static int atlmkkernel_Const_Class_Cmd (OtClass_ARGS)
  tclObj [MkKernel::const maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD]
 
static int atlmkkernel_Support_Class_Cmd (OtClass_ARGS)
  bool [MkKernel::support thread|fork]
 

Detailed Description

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

The atlmkkernel package is loaded with:

package require atlmkkernel 

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

The atlmkkernel 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 atlmkkernel application environment …

The atlmkkernel 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

◆ atlmkkernel_Const_Class_Cmd()

static int atlmkkernel_Const_Class_Cmd ( OtClass_ARGS )
static

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

Definition at line 1404 of file LibMkKernel_atl.c.

1405{
1407 int index;
1408
1409 OT_OBJ_T Obj = NULL;
1410
1411 static const char *constant[] = {
1412 "maxY", "minY", "maxS", "minS", "maxI", "minI", "maxF", "minF", "maxW", "minW", "maxD", "minD", NULL
1413 };
1414 enum constants {
1415 MAXY, MINY, MAXS, MINS, MAXI, MINI, MAXF, MINF, MAXW, MINW, MAXD, MIND,
1416 };
1417
1418 WNA(1,1,"(maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD)");
1419
1420 // get the Index
1421 check_LNG (Tcl_GetIndexFromObj (interp, objv[__skip], constant, "constant", 0, &index))
1422 return TCL_ERROR;
1423
1424 // do the work
1425 switch ((enum constants) index) {
1426 case MAXY: Obj = Tcl_NewIntObj (SCHAR_MAX); break;
1427 case MINY: Obj = Tcl_NewIntObj (SCHAR_MIN); break;
1428 case MAXS: Obj = Tcl_NewIntObj (SHRT_MAX); break;
1429 case MINS: Obj = Tcl_NewIntObj (SHRT_MIN); break;
1430 case MAXI: Obj = Tcl_NewLongObj (INT_MAX); break;
1431 case MINI: Obj = Tcl_NewLongObj (INT_MIN); break;
1432 case MAXF: Obj = Tcl_NewDoubleObj (FLT_MAX); break;
1433 case MINF: Obj = Tcl_NewDoubleObj (FLT_MIN); break;
1434 case MAXW: Obj = Tcl_NewWideIntObj (LLONG_MAX); break;
1435 case MINW: Obj = Tcl_NewWideIntObj (LLONG_MIN); break;
1436 case MAXD: Obj = Tcl_NewDoubleObj (DBL_MAX); break;
1437 case MIND: Obj = Tcl_NewDoubleObj (DBL_MIN); break;
1438 }
1439
1440 Tcl_SetObjResult (interp, Obj);
1441 return TCL_OK;
1442}
#define OT_SETUP_hdl_static
#define WNA(min, max, txt)
#define check_LNG(code)
MOX_OBJ_T OT_OBJ_T

◆ atlmkkernel_Print_Class_Cmd()

static int atlmkkernel_Print_Class_Cmd ( OtClass_ARGS )
static

MkKernel::print object|type tclObj

MARK_C CODE

Definition at line 1332 of file LibMkKernel_atl.c.

1333{
1334 int ret = TCL_OK;
1336 int index;
1337
1338 static const char *option[] = {
1339 "object", "type", "var", NULL
1340 };
1341 enum options {
1342 OBJECT, TYPE, VARIABLE
1343 };
1344
1345 // get the Index
1346 check_LNG (Tcl_GetIndexFromObj (interp, objv[__skip++], option, "subcommand", 0, &index))
1347 return TCL_ERROR;
1348
1349 // do the work
1350 switch ((enum options) index) {
1351 case OBJECT:
1352 WNA(1,1,"tclObj");
1353 Tcl_SetResult (interp, MK(PrintObj) (OT_Prefix_CALL "print", objv[__skip]), TCL_VOLATILE);
1354 break;
1355 case TYPE:
1356 WNA(1,1,"tclObj");
1357 Tcl_SetResult (interp, (char*) MK(GetTypeFromObj) (OT_Prefix_CALL objv[__skip], NULL), TCL_VOLATILE);
1358 break;
1359 case VARIABLE: {
1360 // same as tcl "Print ..."
1361 WNA(1,99,"tclObj...");
1363 RL_init( 1, info_level_1, RL_NewS(0,"::tcl::info::level") )
1364 OT_OBJ_T lvlObj = RL_EvalFr(varframe,0);
1365 int lvl;
1366 check_LNG(Tcl_GetIntFromObj(interp,lvlObj,&lvl)) goto error;
1367 char *STR;
1368 fputs("print var ",stderr);
1369 if (lvl > 0) {
1370 RL_init( 2, info_level_2, RL_NewS(0,"::tcl::info::level") ; RL_NewI(1,0) ) ;
1371 lvlObj = RL_EvalFr(varframe,0);
1372 OT_OBJ_T nameObj;
1373 check_LNG(Tcl_ListObjIndex(interp,lvlObj,0,&nameObj)) goto error;
1374 STR = Tcl_GetString(nameObj);
1375 } else {
1376 STR = "GLOBAL -> ";
1377 }
1378 fputs(STR,stderr);
1379
1380 for (int i=2; i<objc; i++) {
1381 char * nameS = Tcl_GetString(objv[i]);
1382 OT_OBJ_T var = Tcl_ObjGetVar2(interp,objv[i],NULL,0);
1383 if (var) {
1384 fprintf(stderr,"%s<%s>, ", nameS, Tcl_GetString(var));
1385 } else {
1386 fprintf(stderr,"%s<not set>, ", nameS);
1387 }
1388 }
1389 fputs("\n",stderr);
1391 break;
1392error:
1393 ret = TCL_ERROR;
1395 break;
1396 }
1397 }
1398
1399 return ret;
1400}
#define MK(n)
#define OT_VARFRAME_DELETE
#define OT_Prefix_CALL
#define OT_VARFRAME_CREATE
#define RL_EvalFr(frm, f)

◆ atlmkkernel_Support_Class_Cmd()

static int atlmkkernel_Support_Class_Cmd ( OtClass_ARGS )
static

bool [MkKernel::support thread|fork]

Definition at line 1446 of file LibMkKernel_atl.c.

1447{
1449 int index;
1450
1451 Tcl_Obj *Obj = NULL;
1452
1453 static const char *constant[] = {
1454 "thread", "fork", NULL
1455 };
1456 enum constants {
1457 THREAD, FORK,
1458 };
1459
1460 WNA(1,1,"(thread|fork)")
1461
1462 // get the Index
1463 check_LNG (Tcl_GetIndexFromObj (interp, objv[__skip], constant, "configuration", 0, &index)) return TCL_ERROR;
1464
1465 // do the work
1466 switch ((enum constants) index) {
1467 case THREAD:
1468#if META_HAS_THREAD
1469 Obj = Tcl_NewBooleanObj (1);
1470#else
1471 Obj = Tcl_NewBooleanObj (0);
1472#endif
1473 break;
1474 case FORK:
1475#if defined(HAVE_FORK)
1476 Obj = Tcl_NewBooleanObj (1);
1477#else
1478 Obj = Tcl_NewBooleanObj (0);
1479#endif
1480 break;
1481 }
1482
1483 Tcl_SetObjResult (interp, Obj);
1484 return TCL_OK;
1485}