Spaces:
Sleeping
Sleeping
/* | |
* itcl.h -- | |
* | |
* This file contains definitions for the C-implemeted part of a Itcl | |
* this version of [incr Tcl] (Itcl) is a completely new implementation | |
* based on TclOO extension of Tcl 8.5 | |
* It tries to provide the same interfaces as the original implementation | |
* of Michael J. McLennan | |
* Some small pieces of code are taken from that implementation | |
* | |
* Copyright (c) 2007 by Arnulf P. Wiedemann | |
* | |
* See the file "license.terms" for information on usage and redistribution of | |
* this file, and for a DISCLAIMER OF ALL WARRANTIES. | |
*/ | |
/* | |
* ------------------------------------------------------------------------ | |
* PACKAGE: [incr Tcl] | |
* DESCRIPTION: Object-Oriented Extensions to Tcl | |
* | |
* [incr Tcl] provides object-oriented extensions to Tcl, much as | |
* C++ provides object-oriented extensions to C. It provides a means | |
* of encapsulating related procedures together with their shared data | |
* in a local namespace that is hidden from the outside world. It | |
* promotes code re-use through inheritance. More than anything else, | |
* it encourages better organization of Tcl applications through the | |
* object-oriented paradigm, leading to code that is easier to | |
* understand and maintain. | |
* | |
* ADDING [incr Tcl] TO A Tcl-BASED APPLICATION: | |
* | |
* To add [incr Tcl] facilities to a Tcl application, modify the | |
* Tcl_AppInit() routine as follows: | |
* | |
* 1) Include this header file near the top of the file containing | |
* Tcl_AppInit(): | |
* | |
* #include "itcl.h" | |
* | |
* 2) Within the body of Tcl_AppInit(), add the following lines: | |
* | |
* if (Itcl_Init(interp) == TCL_ERROR) { | |
* return TCL_ERROR; | |
* } | |
* | |
* 3) Link your application with libitcl.a | |
* | |
* NOTE: An example file "tclAppInit.c" containing the changes shown | |
* above is included in this distribution. | |
* | |
*--------------------------------------------------------------------- | |
*/ | |
/* | |
* For C++ compilers, use extern "C" | |
*/ | |
extern "C" { | |
/* | |
* A special definition used to allow this header file to be included from | |
* windows resource files so that they can obtain version information. | |
* RC_INVOKED is defined by default by the windows RC tool. | |
* | |
* Resource compilers don't like all the C stuff, like typedefs and function | |
* declarations, that occur below, so block them out. | |
*/ | |
ITCL_EXTERN int Itcl_Init(Tcl_Interp *interp); | |
ITCL_EXTERN int Itcl_SafeInit(Tcl_Interp *interp); | |
/* | |
* Protection levels: | |
* | |
* ITCL_PUBLIC - accessible from any namespace | |
* ITCL_PROTECTED - accessible from namespace that imports in "protected" mode | |
* ITCL_PRIVATE - accessible only within the namespace that contains it | |
*/ | |
/* | |
* Generic stack. | |
*/ | |
typedef struct Itcl_Stack { | |
ClientData *values; /* values on stack */ | |
int len; /* number of values on stack */ | |
int max; /* maximum size of stack */ | |
ClientData space[5]; /* initial space for stack data */ | |
} Itcl_Stack; | |
/* | |
* Generic linked list. | |
*/ | |
struct Itcl_List; | |
typedef struct Itcl_ListElem { | |
struct Itcl_List* owner; /* list containing this element */ | |
ClientData value; /* value associated with this element */ | |
struct Itcl_ListElem *prev; /* previous element in linked list */ | |
struct Itcl_ListElem *next; /* next element in linked list */ | |
} Itcl_ListElem; | |
typedef struct Itcl_List { | |
int validate; /* validation stamp */ | |
int num; /* number of elements */ | |
struct Itcl_ListElem *head; /* previous element in linked list */ | |
struct Itcl_ListElem *tail; /* next element in linked list */ | |
} Itcl_List; | |
/* | |
* Token representing the state of an interpreter. | |
*/ | |
typedef struct Itcl_InterpState_ *Itcl_InterpState; | |
/* | |
* Include all the public API, generated from itcl.decls. | |
*/ | |
/* | |
* end block for C++ | |
*/ | |
} | |