home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / itcl.h < prev    next >
C/C++ Source or Header  |  2003-09-01  |  5KB  |  177 lines

  1. /*
  2.  * ------------------------------------------------------------------------
  3.  *      PACKAGE:  [incr Tcl]
  4.  *  DESCRIPTION:  Object-Oriented Extensions to Tcl
  5.  *
  6.  *  [incr Tcl] provides object-oriented extensions to Tcl, much as
  7.  *  C++ provides object-oriented extensions to C.  It provides a means
  8.  *  of encapsulating related procedures together with their shared data
  9.  *  in a local namespace that is hidden from the outside world.  It
  10.  *  promotes code re-use through inheritance.  More than anything else,
  11.  *  it encourages better organization of Tcl applications through the
  12.  *  object-oriented paradigm, leading to code that is easier to
  13.  *  understand and maintain.
  14.  *  
  15.  *  ADDING [incr Tcl] TO A Tcl-BASED APPLICATION:
  16.  *
  17.  *    To add [incr Tcl] facilities to a Tcl application, modify the
  18.  *    Tcl_AppInit() routine as follows:
  19.  *
  20.  *    1) Include this header file near the top of the file containing
  21.  *       Tcl_AppInit():
  22.  *
  23.  *         #include "itcl.h"
  24.  *
  25.  *    2) Within the body of Tcl_AppInit(), add the following lines:
  26.  *
  27.  *         if (Itcl_Init(interp) == TCL_ERROR) {
  28.  *             return TCL_ERROR;
  29.  *         }
  30.  * 
  31.  *    3) Link your application with libitcl.a
  32.  *
  33.  *    NOTE:  An example file "tclAppInit.c" containing the changes shown
  34.  *           above is included in this distribution.
  35.  *  
  36.  * ========================================================================
  37.  *  AUTHOR:  Michael J. McLennan
  38.  *           Bell Labs Innovations for Lucent Technologies
  39.  *           mmclennan@lucent.com
  40.  *           http://www.tcltk.com/itcl
  41.  *
  42.  *       modified for Stubs 5/20/1999 by 
  43.  *           David Gravereaux <davygrvy@bigfoot.com>
  44.  *
  45.  *     RCS:  $Id: itcl.h,v 1.15 2001/05/25 00:12:29 davygrvy Exp $
  46.  * ========================================================================
  47.  *           Copyright (c) 1993-1998  Lucent Technologies, Inc.
  48.  * ------------------------------------------------------------------------
  49.  * See the file "license.terms" for information on usage and redistribution
  50.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  51.  */
  52. #ifndef ITCL_H
  53. #define ITCL_H
  54.  
  55. #include "tcl.h"
  56.  
  57. #undef TCL_STORAGE_CLASS
  58. #ifdef BUILD_itcl
  59. # define TCL_STORAGE_CLASS DLLEXPORT
  60. #else
  61. # ifdef USE_ITCL_STUBS
  62. #  define TCL_STORAGE_CLASS
  63. # else
  64. /* FIXME. We only build static itcl, otherwise this would be DLLIMPORT */
  65. #  define TCL_STORAGE_CLASS
  66. # endif
  67. #endif
  68.  
  69. #define ITCL_VERSION "3.2"
  70. #define ITCL_PATCH_LEVEL "3.2.1"
  71. #define ITCL_MAJOR_VERSION 3
  72. #define ITCL_MINOR_VERSION 2
  73. #define ITCL_RELEASE_LEVEL 1
  74.  
  75. /* 
  76.  * A special definition used to allow this header file to be included 
  77.  * in resource files so that they can get obtain version information from
  78.  * this file.  Resource compilers don't like all the C stuff, like typedefs
  79.  * and procedure declarations, that occur below.
  80.  */
  81.  
  82. #ifndef RC_INVOKED
  83.  
  84. /*
  85.  * Protection levels:
  86.  *
  87.  * ITCL_PUBLIC    - accessible from any namespace
  88.  * ITCL_PROTECTED - accessible from namespace that imports in "protected" mode
  89.  * ITCL_PRIVATE   - accessible only within the namespace that contains it
  90.  */
  91. #define ITCL_PUBLIC           1
  92. #define ITCL_PROTECTED        2
  93. #define ITCL_PRIVATE          3
  94. #define ITCL_DEFAULT_PROTECT  4
  95.  
  96.  
  97. /*
  98.  *  Generic stack.
  99.  */
  100. typedef struct Itcl_Stack {
  101.     ClientData *values;          /* values on stack */
  102.     int len;                     /* number of values on stack */
  103.     int max;                     /* maximum size of stack */
  104.     ClientData space[5];         /* initial space for stack data */
  105. } Itcl_Stack;
  106.  
  107. #define Itcl_GetStackSize(stackPtr) ((stackPtr)->len)
  108.  
  109. /*
  110.  *  Generic linked list.
  111.  */
  112. struct Itcl_List;
  113. typedef struct Itcl_ListElem {
  114.     struct Itcl_List* owner;     /* list containing this element */
  115.     ClientData value;            /* value associated with this element */
  116.     struct Itcl_ListElem *prev;  /* previous element in linked list */
  117.     struct Itcl_ListElem *next;  /* next element in linked list */
  118. } Itcl_ListElem;
  119.  
  120. typedef struct Itcl_List {
  121.     int validate;                /* validation stamp */
  122.     int num;                     /* number of elements */
  123.     struct Itcl_ListElem *head;  /* previous element in linked list */
  124.     struct Itcl_ListElem *tail;  /* next element in linked list */
  125. } Itcl_List;
  126.  
  127. #define Itcl_FirstListElem(listPtr) ((listPtr)->head)
  128. #define Itcl_LastListElem(listPtr)  ((listPtr)->tail)
  129. #define Itcl_NextListElem(elemPtr)  ((elemPtr)->next)
  130. #define Itcl_PrevListElem(elemPtr)  ((elemPtr)->prev)
  131. #define Itcl_GetListLength(listPtr) ((listPtr)->num)
  132. #define Itcl_GetListValue(elemPtr)  ((elemPtr)->value)
  133.  
  134. /*
  135.  *  Token representing the state of an interpreter.
  136.  */
  137. typedef struct Itcl_InterpState_ *Itcl_InterpState;
  138.  
  139.  
  140. /*
  141.  * Include the public function declarations that are accessible via
  142.  * the stubs table.
  143.  */
  144.  
  145. #include "itclDecls.h"
  146.  
  147.  
  148. /*
  149.  * Itcl_InitStubs is used by extensions like Itk that can be linked
  150.  * against the itcl stubs library.  If we are not using stubs
  151.  * then this reduces to package require.
  152.  */
  153.  
  154. #ifdef USE_ITCL_STUBS
  155.  
  156. #ifdef __cplusplus
  157. extern "C"
  158. #endif
  159. CONST char *    Itcl_InitStubs _ANSI_ARGS_((Tcl_Interp *interp,
  160.                 char *version, int exact));
  161. #else
  162. #define Itcl_InitStubs(interp, version, exact) \
  163.       Tcl_PkgRequire(interp, "Itcl", version, exact)
  164. #endif
  165.  
  166. /*
  167.  * Public functions that are not accessible via the stubs table.
  168.  */
  169.  
  170.  
  171. #endif /* RC_INVOKED */
  172.  
  173. #undef TCL_STORAGE_CLASS
  174. #define TCL_STORAGE_CLASS DLLIMPORT
  175.  
  176. #endif /* ITCL_H */
  177.