home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2004 July / APC0407D2.iso / workshop / apache / files / ActivePerl-5.6.1.638-MSWin32-x86.msi / _5e830e1b0ff87fb6f48b74d963d230f1 < prev    next >
Encoding:
Text File  |  2004-04-13  |  66.2 KB  |  1,712 lines

  1. /*
  2.  * tcl.h --
  3.  *
  4.  *    This header file describes the externally-visible facilities
  5.  *    of the Tcl interpreter.
  6.  *
  7.  * Copyright (c) 1987-1994 The Regents of the University of California.
  8.  * Copyright (c) 1994-1997 Sun Microsystems, Inc.
  9.  * Copyright (c) 1993-1996 Lucent Technologies.
  10.  *
  11.  * See the file "license.terms" for information on usage and redistribution
  12.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  13.  *
  14.  * SCCS: @(#) tcl.h 1.318 97/06/26 13:43:02
  15.  */
  16.  
  17. #ifndef _LANG
  18. #define _LANG
  19.  
  20. #include "tkConfig.h"
  21. #include <sys/types.h>
  22. #ifndef NO_STDLIB_H
  23. #include <stdlib.h>
  24. #endif
  25.  
  26. #if !defined(__GNUC__) && !defined(_AIX)
  27. #ifdef __STDC__
  28. #ifndef STRINGIFY
  29. #define STRINGIFY(x)        STRINGIFY1(x)
  30. #define STRINGIFY1(x)       #x
  31. #endif    /* STRINGIFY */
  32. #define __FUNCTION__ __FILE__ ":" STRINGIFY(__LINE__)
  33. #else     /* STDC */
  34. #define __FUNCTION__ ""
  35. #endif    /* STDC */
  36. #endif    /* GNUC or AIX */
  37.  
  38. #define USE_TCLALLOC 1
  39.  
  40. #ifdef __EMX__
  41. typedef long fd_mask;
  42. #   define strncasecmp strnicmp
  43. #   define strcasecmp stricmp
  44. #endif
  45.  
  46. #ifdef __CYGWIN__
  47. #include <sys/time.h>
  48. #define MASK_SIZE howmany(FD_SETSIZE, NFDBITS)
  49. #endif
  50.  
  51. /*
  52.  * When version numbers change here, must also go into the following files
  53.  * and update the version numbers:
  54.  *
  55.  * library/init.tcl
  56.  * unix/configure.in
  57.  * unix/pkginfo
  58.  * win/makefile.bc
  59.  * win/makefile.vc
  60.  *
  61.  * The release level should be  0 for alpha, 1 for beta, and 2 for
  62.  * final/patch.  The release serial value is the number that follows the
  63.  * "a", "b", or "p" in the patch level; for example, if the patch level
  64.  * is 7.6b2, TCL_RELEASE_SERIAL is 2.  It restarts at 1 whenever the
  65.  * release level is changed, except for the final release which is 0
  66.  * (the first patch will start at 1).
  67.  */
  68.  
  69. #define TCL_MAJOR_VERSION   8
  70. #define TCL_MINOR_VERSION   0
  71. #define TCL_RELEASE_LEVEL   1
  72. #define TCL_RELEASE_SERIAL  2
  73.  
  74. #define TCL_VERSION        "8.0"
  75. #define TCL_PATCH_LEVEL        "8.0b2"
  76.  
  77. /*
  78.  * The following definitions set up the proper options for Windows
  79.  * compilers.  We use this method because there is no autoconf equivalent.
  80.  */
  81.  
  82. #ifndef __WIN32__
  83. #   if defined(_WIN32) || defined(WIN32)
  84. #    define __WIN32__
  85. #   endif
  86. #endif
  87.  
  88. #ifdef __WIN32__
  89. #   ifndef STRICT
  90. #    define STRICT
  91. #   endif
  92. #   ifndef USE_PROTOTYPE
  93. #    define USE_PROTOTYPE 1
  94. #   endif
  95. #   ifndef HAS_STDARG
  96. #    define HAS_STDARG 1
  97. #   endif
  98. #   ifndef USE_TCLALLOC
  99. #    define USE_TCLALLOC 0
  100. #   endif
  101. #endif /* __WIN32__ */
  102.  
  103. /*
  104.  * The following definitions set up the proper options for Macintosh
  105.  * compilers.  We use this method because there is no autoconf equivalent.
  106.  */
  107.  
  108. #ifdef MAC_TCL
  109. #   ifndef HAS_STDARG
  110. #    define HAS_STDARG 1
  111. #   endif
  112. #   ifndef USE_TCLALLOC
  113. #    define USE_TCLALLOC 1
  114. #   endif
  115. #   ifndef NO_STRERROR
  116. #    define NO_STRERROR 1
  117. #   endif
  118. #endif
  119.  
  120. /*
  121.  * A special definition used to allow this header file to be included
  122.  * in resource files so that they can get obtain version information from
  123.  * this file.  Resource compilers don't like all the C stuff, like typedefs
  124.  * and procedure declarations, that occur below.
  125.  */
  126.  
  127. #ifndef RESOURCE_INCLUDED
  128.  
  129. /*
  130.  * Definitions that allow Tcl functions with variable numbers of
  131.  * arguments to be used with either varargs.h or stdarg.h.  TCL_VARARGS
  132.  * is used in procedure prototypes.  TCL_VARARGS_DEF is used to declare
  133.  * the arguments in a function definiton: it takes the type and name of
  134.  * the first argument and supplies the appropriate argument declaration
  135.  * string for use in the function definition.  TCL_VARARGS_START
  136.  * initializes the va_list data structure and returns the first argument.
  137.  */
  138.  
  139. #if defined(__STDC__) || defined(HAS_STDARG)
  140. #   define TCL_VARARGS(type, name) (type name, ...)
  141. #   define TCL_VARARGS_DEF(type, name) (type name, ...)
  142. #   define TCL_VARARGS_START(type, name, list) (va_start(list, name), name)
  143. #else
  144. #   ifdef __cplusplus
  145. #    define TCL_VARARGS(type, name) (type name, ...)
  146. #    define TCL_VARARGS_DEF(type, name) (type va_alist, ...)
  147. #   else
  148. #    define TCL_VARARGS(type, name) ()
  149. #    define TCL_VARARGS_DEF(type, name) (va_alist)
  150. #   endif
  151. #   define TCL_VARARGS_START(type, name, list) (va_start(list), va_arg(list, type))
  152. #endif
  153.  
  154. /*
  155.  * Definitions that allow this header file to be used either with or
  156.  * without ANSI C features like function prototypes.
  157.  */
  158.  
  159. #undef _ANSI_ARGS_
  160. #undef CONST
  161.  
  162. #if defined(USE_PROTOTYPE) || ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus)
  163. #   define _USING_PROTOTYPES_ 1
  164. #   define _ANSI_ARGS_(x)    x
  165. #   define CONST const
  166. #else
  167. #   define _ANSI_ARGS_(x)    ()
  168. #   define CONST
  169. #endif
  170.  
  171. #ifdef __cplusplus
  172. #   define EXTERN extern "C"
  173. #else
  174. #   define EXTERN extern
  175. #endif
  176. #define MOVEXT EXTERN
  177. #define XFree_arg_t void
  178.  
  179. /*
  180.  * Macro to use instead of "void" for arguments that must have
  181.  * type "void *" in ANSI C;  maps them to type "char *" in
  182.  * non-ANSI systems.
  183.  */
  184. #ifndef __WIN32__
  185. #ifndef VOID
  186. #   ifdef __STDC__
  187. #       define VOID void
  188. #   else
  189. #       define VOID char
  190. #   endif
  191. #endif
  192. #else /* __WIN32__ */
  193. #ifndef VOID
  194. #include <windows.h>
  195. #if 0
  196. /*
  197.  * The following code is copied from winnt.h
  198.  */
  199. #define VOID void
  200. typedef char CHAR;
  201. typedef short SHORT;
  202. typedef long LONG;
  203. #endif
  204. #endif
  205. #endif /* __WIN32__ */
  206.  
  207. /*
  208.  * Miscellaneous declarations.
  209.  */
  210.  
  211. #include "LangIO.h"
  212.  
  213. #ifndef NULL
  214. #define NULL 0
  215. #endif
  216.  
  217. #ifndef _CLIENTDATA
  218. #   if defined(__STDC__) || defined(__cplusplus)
  219.     typedef void *ClientData;
  220. #   else
  221.     typedef int *ClientData;
  222. #   endif /* __STDC__ */
  223. #define _CLIENTDATA
  224. #endif
  225.  
  226.  
  227. /*
  228.  * Data structures defined opaquely in this module. The definitions below
  229.  * just provide dummy types. A few fields are made visible in Tcl_Interp
  230.  * structures, namely those used for returning a string result from
  231.  * commands. Direct access to the result field is discouraged in Tcl 8.0.
  232.  * The interpreter result is either an object or a string, and the two
  233.  * values are kept consistent unless some C code sets interp->result
  234.  * directly. Programmers should use either the procedure Tcl_GetObjResult()
  235.  * or Tcl_GetStringResult() to read the interpreter's result. See the
  236.  * SetResult man page for details.
  237.  *
  238.  * Note: any change to the Tcl_Interp definition below must be mirrored
  239.  * in the "real" definition in tclInt.h.
  240.  *
  241.  * Note: Tcl_ObjCmdProc procedures do not directly set result and freeProc.
  242.  * Instead, they set a Tcl_Obj member in the "real" structure that can be
  243.  * accessed with Tcl_GetObjResult() and Tcl_SetObjResult().
  244.  */
  245.  
  246. #ifndef Tcl_Interp
  247. typedef struct Tcl_Interp
  248. #ifdef USE_TCL_STRUCTS
  249. {
  250.     char *result;        /* If the last command returned a string
  251.                  * result, this points to it. */
  252.     void (*freeProc) _ANSI_ARGS_((char *blockPtr));
  253.                 /* Zero means the string result is
  254.                  * statically allocated. TCL_DYNAMIC means
  255.                  * it was allocated with ckalloc and should
  256.                  * be freed with ckfree. Other values give
  257.                  * the address of procedure to invoke to
  258.                  * free the result. Tcl_Eval must free it
  259.                  * before executing next command. */
  260.     int errorLine;              /* When TCL_ERROR is returned, this gives
  261.                                  * the line number within the command where
  262.                                  * the error occurred (1 if first line). */
  263. }
  264. #endif /* USE_TCL_STRUCTS */
  265. Tcl_Interp;
  266. #endif /* Tcl_Interp */
  267.  
  268. typedef struct Tcl_AsyncHandler_ *Tcl_AsyncHandler;
  269. typedef struct Tcl_Channel_ *Tcl_Channel;
  270. #ifndef Tcl_Command
  271. typedef struct Tcl_Command_ *Tcl_Command;
  272. #endif
  273. typedef struct Tcl_Event Tcl_Event;
  274. typedef struct Tcl_Pid_ *Tcl_Pid;
  275. #ifndef Tcl_RegExp
  276. typedef struct Tcl_RegExp_ *Tcl_RegExp;
  277. #endif
  278. typedef struct Tcl_TimerToken_ *Tcl_TimerToken;
  279. typedef struct Tcl_Trace_ *Tcl_Trace;
  280.  
  281.  
  282. #ifndef Var
  283. typedef struct Var *Var;
  284. #endif
  285. typedef struct Tcl_Var_ *Tcl_Var;
  286.  
  287. #ifndef LangResultSave
  288. typedef struct LangResultSave LangResultSave;
  289. #endif
  290.  
  291. /*
  292.  * When a TCL command returns, the interpreter contains a result from the
  293.  * command. Programmers are strongly encouraged to use one of the
  294.  * procedures Tcl_GetObjResult() or Tcl_GetStringResult() to read the
  295.  * interpreter's result. See the SetResult man page for details. Besides
  296.  * this result, the command procedure returns an integer code, which is
  297.  * one of the following:
  298.  *
  299.  * TCL_OK        Command completed normally; the interpreter's
  300.  *            result contains    the command's result.
  301.  * TCL_ERROR        The command couldn't be completed successfully;
  302.  *            the interpreter's result describes what went wrong.
  303.  * TCL_RETURN        The command requests that the current procedure
  304.  *            return; the interpreter's result contains the
  305.  *            procedure's return value.
  306.  * TCL_BREAK        The command requests that the innermost loop
  307.  *            be exited; the interpreter's result is meaningless.
  308.  * TCL_CONTINUE        Go on to the next iteration of the current loop;
  309.  *            the interpreter's result is meaningless.
  310.  */
  311.  
  312. #define TCL_OK        0
  313. #define TCL_ERROR    1
  314. #define TCL_RETURN    2
  315. #define TCL_BREAK    3
  316. #define TCL_CONTINUE    4
  317.  
  318. #define TCL_RESULT_SIZE 200
  319.  
  320. /*
  321.  * Argument descriptors for math function callbacks in expressions:
  322.  */
  323.  
  324. typedef enum {TCL_INT, TCL_DOUBLE, TCL_EITHER} Tcl_ValueType;
  325. typedef struct Tcl_Value {
  326.     Tcl_ValueType type;        /* Indicates intValue or doubleValue is
  327.                  * valid, or both. */
  328.     long intValue;        /* Integer value. */
  329.     double doubleValue;        /* Double-precision floating value. */
  330. } Tcl_Value;
  331.  
  332. /*
  333.  * Forward declaration of Tcl_Obj to prevent an error when the forward
  334.  * reference to Tcl_Obj is encountered in the procedure types declared
  335.  * below.
  336.  */
  337.  
  338. #ifndef Tcl_Obj
  339. typedef struct Tcl_Obj Tcl_Obj;
  340. #endif
  341.  
  342. #ifndef Arg
  343. typedef Tcl_Obj *Arg;
  344. #endif
  345.  
  346. /*
  347.  * Procedure types defined by Tcl:
  348.  */
  349.  
  350. typedef int (Tcl_AppInitProc) _ANSI_ARGS_((Tcl_Interp *interp));
  351. typedef int (Tcl_AsyncProc) _ANSI_ARGS_((ClientData clientData,
  352.     Tcl_Interp *interp, int code));
  353. typedef void (Tcl_ChannelProc) _ANSI_ARGS_((ClientData clientData, int mask));
  354. typedef void (Tcl_CloseProc) _ANSI_ARGS_((ClientData data));
  355. typedef void (Tcl_CmdDeleteProc) _ANSI_ARGS_((ClientData clientData));
  356. typedef int (Tcl_CmdProc) _ANSI_ARGS_((ClientData clientData,
  357.     Tcl_Interp *interp, int argc, Tcl_Obj **argv));
  358. typedef void (Tcl_CmdTraceProc) _ANSI_ARGS_((ClientData clientData,
  359.     Tcl_Interp *interp, int level, char *command, Tcl_CmdProc *proc,
  360.     ClientData cmdClientData, int argc, char *argv[]));
  361. typedef void (Tcl_DupInternalRepProc) _ANSI_ARGS_((Tcl_Obj *srcPtr,
  362.         Tcl_Obj *dupPtr));
  363. typedef int (Tcl_EventProc) _ANSI_ARGS_((Tcl_Event *evPtr, int flags));
  364. typedef void (Tcl_EventCheckProc) _ANSI_ARGS_((ClientData clientData,
  365.     int flags));
  366. typedef int (Tcl_EventDeleteProc) _ANSI_ARGS_((Tcl_Event *evPtr,
  367.         ClientData clientData));
  368. typedef void (Tcl_EventSetupProc) _ANSI_ARGS_((ClientData clientData,
  369.     int flags));
  370. typedef void (Tcl_ExitProc) _ANSI_ARGS_((ClientData clientData));
  371. typedef void (Tcl_FileProc) _ANSI_ARGS_((ClientData clientData, int mask));
  372. typedef void (Tcl_FileFreeProc) _ANSI_ARGS_((ClientData clientData));
  373. typedef void (Tcl_FreeInternalRepProc) _ANSI_ARGS_((Tcl_Obj *objPtr));
  374. typedef void (Tcl_FreeProc) _ANSI_ARGS_((char *blockPtr));
  375. typedef void (Tcl_IdleProc) _ANSI_ARGS_((ClientData clientData));
  376. typedef void (Tcl_InterpDeleteProc) _ANSI_ARGS_((ClientData clientData,
  377.     Tcl_Interp *interp));
  378. typedef int (Tcl_MathProc) _ANSI_ARGS_((ClientData clientData,
  379.     Tcl_Interp *interp, Tcl_Value *args, Tcl_Value *resultPtr));
  380. typedef void (Tcl_NamespaceDeleteProc) _ANSI_ARGS_((ClientData clientData));
  381. typedef int (Tcl_ObjCmdProc) _ANSI_ARGS_((ClientData clientData,
  382.     Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[]));
  383. typedef int (Tcl_PackageInitProc) _ANSI_ARGS_((Tcl_Interp *interp));
  384. typedef void (Tcl_TcpAcceptProc) _ANSI_ARGS_((ClientData callbackData,
  385.         Tcl_Channel chan, char *address, int port));
  386. typedef void (Tcl_TimerProc) _ANSI_ARGS_((ClientData clientData));
  387. typedef int (Tcl_SetFromAnyProc) _ANSI_ARGS_((Tcl_Interp *interp,
  388.     Tcl_Obj *objPtr));
  389. typedef void (Tcl_UpdateStringProc) _ANSI_ARGS_((Tcl_Obj *objPtr));
  390. typedef char *(Tcl_VarTraceProc) _ANSI_ARGS_((ClientData clientData,
  391.     Tcl_Interp *interp, Var part1, char *part2, int flags));
  392.  
  393. /*
  394.  * The following structure represents a type of object, which is a
  395.  * particular internal representation for an object plus a set of
  396.  * procedures that provide standard operations on objects of that type.
  397.  */
  398.  
  399. typedef struct Tcl_ObjType
  400. #ifdef USE_TCL_STRUCTS
  401. {
  402.     char *name;            /* Name of the type, e.g. "int". */
  403.     Tcl_FreeInternalRepProc *freeIntRepProc;
  404.                 /* Called to free any storage for the type's
  405.                  * internal rep. NULL if the internal rep
  406.                  * does not need freeing. */
  407.     Tcl_DupInternalRepProc *dupIntRepProc;
  408.                     /* Called to create a new object as a copy
  409.                  * of an existing object. */
  410.     Tcl_UpdateStringProc *updateStringProc;
  411.                     /* Called to update the string rep from the
  412.                  * type's internal representation. */
  413.     Tcl_SetFromAnyProc *setFromAnyProc;
  414.                     /* Called to convert the object's internal
  415.                  * rep to this type. Frees the internal rep
  416.                  * of the old type. Returns TCL_ERROR on
  417.                  * failure. */
  418. }
  419. #endif /* USE_TCL_STRUCTS */
  420. Tcl_ObjType;
  421.  
  422. /*
  423.  * One of the following structures exists for each object in the Tcl
  424.  * system. An object stores a value as either a string, some internal
  425.  * representation, or both.
  426.  */
  427.  
  428. #ifdef USE_TCL_STRUCTS
  429. struct Tcl_Obj
  430. {
  431.     int refCount;        /* When 0 the object will be freed. */
  432.     char *bytes;        /* This points to the first byte of the
  433.                  * object's string representation. The array
  434.                  * must be followed by a null byte (i.e., at
  435.                  * offset length) but may also contain
  436.                  * embedded null characters. The array's
  437.                  * storage is allocated by ckalloc. NULL
  438.                  * means the string rep is invalid and must
  439.                  * be regenerated from the internal rep.
  440.                  * Clients should use Tcl_GetStringFromObj
  441.                  * to get a pointer to the byte array as a
  442.                  * readonly value. */
  443.     int length;            /* The number of bytes at *bytes, not
  444.                  * including the terminating null. */
  445.     Tcl_ObjType *typePtr;    /* Denotes the object's type. Always
  446.                  * corresponds to the type of the object's
  447.                  * internal rep. NULL indicates the object
  448.                  * has no internal rep (has no type). */
  449.     union {            /* The internal representation: */
  450.     long longValue;        /*   - an long integer value */
  451.     double doubleValue;    /*   - a double-precision floating value */
  452.     VOID *otherValuePtr;    /*   - another, type-specific value */
  453.     struct {        /*   - internal rep as two pointers */
  454.         VOID *ptr1;
  455.         VOID *ptr2;
  456.     } twoPtrValue;
  457.     } internalRep;
  458. };
  459. #endif /* USE_TCL_STRUCTS */
  460.  
  461. /*
  462.  * Macros to increment and decrement a Tcl_Obj's reference count, and to
  463.  * test whether an object is shared (i.e. has reference count > 1).
  464.  * Note: clients should use Tcl_DecrRefCount() when they are finished using
  465.  * an object, and should never call TclFreeObj() directly. TclFreeObj() is
  466.  * only defined and made public in tcl.h to support Tcl_DecrRefCount's macro
  467.  * definition. Note also that Tcl_DecrRefCount() refers to the parameter
  468.  * "obj" twice. This means that you should avoid calling it with an
  469.  * expression that is expensive to compute or has side effects.
  470.  */
  471.  
  472. #ifdef USE_TCL_STRUCTS
  473. #define Tcl_IncrRefCount(objPtr) \
  474.     ++(objPtr)->refCount
  475. #define Tcl_DecrRefCount(objPtr) \
  476.     if (--(objPtr)->refCount <= 0) TclFreeObj(objPtr)
  477. #define Tcl_IsShared(objPtr) \
  478.     ((objPtr)->refCount > 1)
  479.  
  480. #else  /* USE_TCL_STRUCTS */
  481.  
  482. /* Fake Tcl_Obj operations */
  483.  
  484. EXTERN void Tcl_IncrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr));
  485. EXTERN void Tcl_DecrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr));
  486.  
  487. #endif /* USE_TCL_STRUCTS */
  488.  
  489.  
  490. /*
  491.  * Macros and definitions that help to debug the use of Tcl objects.
  492.  * When TCL_MEM_DEBUG is defined, the Tcl_New* declarations are
  493.  * overridden to call debugging versions of the object creation procedures.
  494.  */
  495.  
  496. EXTERN Tcl_Obj *    Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue));
  497. EXTERN Tcl_Obj *    Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue));
  498. EXTERN Tcl_Obj *    Tcl_NewIntObj _ANSI_ARGS_((int intValue));
  499. EXTERN Tcl_Obj *    Tcl_NewListObj _ANSI_ARGS_((int objc,
  500.                 Tcl_Obj *CONST objv[]));
  501. EXTERN Tcl_Obj *    Tcl_NewLongObj _ANSI_ARGS_((long longValue));
  502. EXTERN Tcl_Obj *    Tcl_NewObj _ANSI_ARGS_((void));
  503. EXTERN Tcl_Obj *    Tcl_NewStringObj _ANSI_ARGS_((char *bytes,
  504.                 int length));
  505.  
  506. #ifdef TCL_MEM_DEBUG
  507. #  define Tcl_NewBooleanObj(val) \
  508.      Tcl_DbNewBooleanObj(val, __FILE__, __LINE__)
  509. #  define Tcl_NewDoubleObj(val) \
  510.      Tcl_DbNewDoubleObj(val, __FILE__, __LINE__)
  511. #  define Tcl_NewIntObj(val) \
  512.      Tcl_DbNewLongObj(val, __FILE__, __LINE__)
  513. #  define Tcl_NewListObj(objc, objv) \
  514.      Tcl_DbNewListObj(objc, objv, __FILE__, __LINE__)
  515. #  define Tcl_NewLongObj(val) \
  516.      Tcl_DbNewLongObj(val, __FILE__, __LINE__)
  517. #  define Tcl_NewObj() \
  518.      Tcl_DbNewObj(__FILE__, __LINE__)
  519. #  define Tcl_NewStringObj(bytes, len) \
  520.      Tcl_DbNewStringObj(bytes, len, __FILE__, __LINE__)
  521. #endif /* TCL_MEM_DEBUG */
  522.  
  523.  
  524. /*
  525.  * The following definitions support Tcl's namespace facility.
  526.  * Note: the first five fields must match exactly the fields in a
  527.  * Namespace structure (see tcl.h).
  528.  */
  529.  
  530. typedef struct Tcl_Namespace
  531. #ifdef USE_TCL_STRUCTS
  532. {
  533.     char *name;                 /* The namespace's name within its parent
  534.                  * namespace. This contains no ::'s. The
  535.                  * name of the global namespace is ""
  536.                  * although "::" is an synonym. */
  537.     char *fullName;             /* The namespace's fully qualified name.
  538.                  * This starts with ::. */
  539.     ClientData clientData;      /* Arbitrary value associated with this
  540.                  * namespace. */
  541.     Tcl_NamespaceDeleteProc* deleteProc;
  542.                                 /* Procedure invoked when deleting the
  543.                  * namespace to, e.g., free clientData. */
  544.     struct Tcl_Namespace* parentPtr;
  545.                                 /* Points to the namespace that contains
  546.                  * this one. NULL if this is the global
  547.                  * namespace. */
  548. }
  549. #endif /* USE_TCL_STRUCTS */
  550. Tcl_Namespace;
  551.  
  552. /*
  553.  * The following structure represents a call frame, or activation record.
  554.  * A call frame defines a naming context for a procedure call: its local
  555.  * scope (for local variables) and its namespace scope (used for non-local
  556.  * variables; often the global :: namespace). A call frame can also define
  557.  * the naming context for a namespace eval or namespace inscope command:
  558.  * the namespace in which the command's code should execute. The
  559.  * Tcl_CallFrame structures exist only while procedures or namespace
  560.  * eval/inscope's are being executed, and provide a Tcl call stack.
  561.  *
  562.  * A call frame is initialized and pushed using Tcl_PushCallFrame and
  563.  * popped using Tcl_PopCallFrame. Storage for a Tcl_CallFrame must be
  564.  * provided by the Tcl_PushCallFrame caller, and callers typically allocate
  565.  * them on the C call stack for efficiency. For this reason, Tcl_CallFrame
  566.  * is defined as a structure and not as an opaque token. However, most
  567.  * Tcl_CallFrame fields are hidden since applications should not access
  568.  * them directly; others are declared as "dummyX".
  569.  *
  570.  * WARNING!! The structure definition must be kept consistent with the
  571.  * CallFrame structure in tclInt.h. If you change one, change the other.
  572.  */
  573.  
  574. typedef struct Tcl_CallFrame {
  575.     Tcl_Namespace *nsPtr;
  576.     int dummy1;
  577.     int dummy2;
  578.     char *dummy3;
  579.     char *dummy4;
  580.     char *dummy5;
  581.     int dummy6;
  582.     char *dummy7;
  583.     char *dummy8;
  584.     int dummy9;
  585.     char* dummy10;
  586. } Tcl_CallFrame;
  587.  
  588. /*
  589.  * Information about commands that is returned by Tcl_GetCmdInfo and passed
  590.  * to Tcl_SetCmdInfo. objProc is an objc/objv object-based command procedure
  591.  * while proc is a traditional Tcl argc/argv string-based procedure.
  592.  * Tcl_CreateObjCommand and Tcl_CreateCommand ensure that both objProc and
  593.  * proc are non-NULL and can be called to execute the command. However,
  594.  * it may be faster to call one instead of the other. The member
  595.  * isNativeObjectProc is set to 1 if an object-based procedure was
  596.  * registered by Tcl_CreateObjCommand, and to 0 if a string-based procedure
  597.  * was registered by Tcl_CreateCommand. The other procedure is typically set
  598.  * to a compatibility wrapper that does string-to-object or object-to-string
  599.  * argument conversions then calls the other procedure.
  600.  */
  601.  
  602. typedef struct Tcl_CmdInfo {
  603.     int isNativeObjectProc;     /* 1 if objProc was registered by a call to
  604.                   * Tcl_CreateObjCommand; 0 otherwise.
  605.                   * Tcl_SetCmdInfo does not modify this
  606.                   * field. */
  607.     Tcl_ObjCmdProc *objProc;     /* Command's object-based procedure. */
  608.     ClientData objClientData;     /* ClientData for object proc. */
  609.     Tcl_CmdProc *proc;         /* Command's string-based procedure. */
  610.     ClientData clientData;     /* ClientData for string proc. */
  611.     Tcl_CmdDeleteProc *deleteProc;
  612.                                  /* Procedure to call when command is
  613.                                   * deleted. */
  614.     ClientData deleteData;     /* Value to pass to deleteProc (usually
  615.                   * the same as clientData). */
  616.     Tcl_Namespace *namespacePtr; /* Points to the namespace that contains
  617.                   * this command. Note that Tcl_SetCmdInfo
  618.                   * will not change a command's namespace;
  619.                   * use Tcl_RenameCommand to do that. */
  620.  
  621. } Tcl_CmdInfo;
  622.  
  623. /*
  624.  * The structure defined below is used to hold dynamic strings.  The only
  625.  * field that clients should use is the string field, and they should
  626.  * never modify it.
  627.  */
  628.  
  629. #ifdef USE_TCL_STRUCTS
  630. #define TCL_DSTRING_STATIC_SIZE 200
  631. typedef struct Tcl_DString {
  632.     char *string;        /* Points to beginning of string:  either
  633.                  * staticSpace below or a malloced array. */
  634.     int length;            /* Number of non-NULL characters in the
  635.                  * string. */
  636.     int spaceAvl;        /* Total number of bytes available for the
  637.                  * string and its terminating NULL char. */
  638.     char staticSpace[TCL_DSTRING_STATIC_SIZE];
  639.                 /* Space to use in common case where string
  640.                  * is small. */
  641. } Tcl_DString;
  642.  
  643. #define Tcl_DStringLength(dsPtr) ((dsPtr)->length)
  644. #define Tcl_DStringValue(dsPtr) ((dsPtr)->string)
  645. #define Tcl_DStringTrunc Tcl_DStringSetLength
  646.  
  647. #else
  648. #ifndef Tcl_DString
  649. typedef struct _Tcl_DString *Tcl_DString;
  650. #endif
  651.  
  652. EXTERN int Tcl_DStringLength _ANSI_ARGS_((Tcl_DString *dsPtr));
  653. EXTERN char *Tcl_DStringValue _ANSI_ARGS_((Tcl_DString *dsPtr));
  654. #define Tcl_DStringTrunc Tcl_DStringSetLength
  655.  
  656. #endif /* USE_TCL_STRUCTS */
  657. /*
  658.  * Definitions for the maximum number of digits of precision that may
  659.  * be specified in the "tcl_precision" variable, and the number of
  660.  * characters of buffer space required by Tcl_PrintDouble.
  661.  */
  662.  
  663. #define TCL_MAX_PREC 17
  664. #define TCL_DOUBLE_SPACE (TCL_MAX_PREC+10)
  665.  
  666. /*
  667.  * Flag that may be passed to Tcl_ConvertElement to force it not to
  668.  * output braces (careful!  if you change this flag be sure to change
  669.  * the definitions at the front of tclUtil.c).
  670.  */
  671.  
  672. #define TCL_DONT_USE_BRACES    1
  673.  
  674. /*
  675.  * Flag that may be passed to Tcl_GetIndexFromObj to force it to disallow
  676.  * abbreviated strings.
  677.  */
  678.  
  679. #define TCL_EXACT    1
  680.  
  681. /*
  682.  * Flag values passed to Tcl_RecordAndEval.
  683.  * WARNING: these bit choices must not conflict with the bit choices
  684.  * for evalFlag bits in tclInt.h!!
  685.  */
  686.  
  687. #define TCL_NO_EVAL        0x10000
  688. #define TCL_EVAL_GLOBAL        0x20000
  689.  
  690. /*
  691.  * Special freeProc values that may be passed to Tcl_SetResult (see
  692.  * the man page for details):
  693.  */
  694.  
  695. #define TCL_VOLATILE    ((Tcl_FreeProc *) 1)
  696. #define TCL_STATIC    ((Tcl_FreeProc *) 0)
  697. #define TCL_DYNAMIC    ((Tcl_FreeProc *) 3)
  698.  
  699. /*
  700.  * Flag values passed to variable-related procedures.
  701.  */
  702.  
  703. #define TCL_GLOBAL_ONLY         1
  704. #define TCL_NAMESPACE_ONLY     2
  705. #define TCL_APPEND_VALUE     4
  706. #define TCL_LIST_ELEMENT     8
  707. #define TCL_TRACE_READS         0x10
  708. #define TCL_TRACE_WRITES     0x20
  709. #define TCL_TRACE_UNSETS     0x40
  710. #define TCL_TRACE_DESTROYED     0x80
  711. #define TCL_INTERP_DESTROYED     0x100
  712. #define TCL_LEAVE_ERR_MSG     0x200
  713. #define TCL_PARSE_PART1         0x400
  714.  
  715. /*
  716.  * Types for linked variables:
  717.  */
  718.  
  719. #define TCL_LINK_INT        1
  720. #define TCL_LINK_DOUBLE        2
  721. #define TCL_LINK_BOOLEAN    3
  722. #define TCL_LINK_STRING        4
  723. #define TCL_LINK_READ_ONLY    0x80
  724.  
  725. /*
  726.  * The following declarations either map ckalloc and ckfree to
  727.  * malloc and free, or they map them to procedures with all sorts
  728.  * of debugging hooks defined in tclCkalloc.c.
  729.  */
  730.  
  731. EXTERN char *        Tcl_Alloc _ANSI_ARGS_((unsigned int size));
  732. EXTERN void        Tcl_Free _ANSI_ARGS_((char *ptr));
  733. EXTERN char *        Tcl_Realloc _ANSI_ARGS_((char *ptr,
  734.                 unsigned int size));
  735. EXTERN char *        Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size,char *file,int line));
  736. EXTERN void        Tcl_DbCkfree _ANSI_ARGS_((char *ptr,char *file,int line));
  737. EXTERN char *        Tcl_DbCkrealloc _ANSI_ARGS_((char *ptr,
  738.                 unsigned int size,char *file,int line));
  739.  
  740. #define TCL_MEM_DEBUG
  741. #ifdef TCL_MEM_DEBUG
  742.  
  743. #  define Tcl_Alloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__)
  744. #  define Tcl_Free(x)  Tcl_DbCkfree(x, __FILE__, __LINE__)
  745. #  define Tcl_Realloc(x,y) Tcl_DbCkrealloc((x), (y),__FILE__, __LINE__)
  746. #  define ckalloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__)
  747. #  define ckfree(x)  Tcl_DbCkfree(x, __FILE__, __LINE__)
  748. #  define ckrealloc(x,y) Tcl_DbCkrealloc((x), (y),__FILE__, __LINE__)
  749.  
  750. EXTERN int        Tcl_DumpActiveMemory _ANSI_ARGS_((char *fileName));
  751. EXTERN void        Tcl_ValidateAllMemory _ANSI_ARGS_((char *file,
  752.                 int line));
  753. #else
  754.  
  755. #  if USE_TCLALLOC
  756. #     define ckalloc(x) Tcl_Alloc(x)
  757. #     define ckfree(x) Tcl_Free(x)
  758. #     define ckrealloc(x,y) Tcl_Realloc(x,y)
  759. #  else
  760. #     define ckalloc(x) malloc(x)
  761. #     define ckfree(x)  free(x)
  762. #     define ckrealloc(x,y) realloc(x,y)
  763. #  endif
  764. #  define Tcl_DumpActiveMemory(x)
  765. #  define Tcl_ValidateAllMemory(x,y)
  766.  
  767. #endif /* TCL_MEM_DEBUG */
  768.  
  769. /*
  770.  * Forward declaration of Tcl_HashTable.  Needed by some C++ compilers
  771.  * to prevent errors when the forward reference to Tcl_HashTable is
  772.  * encountered in the Tcl_HashEntry structure.
  773.  */
  774.  
  775. #ifdef __cplusplus
  776. struct Tcl_HashTable;
  777. #endif
  778.  
  779. /*
  780.  * Structure definition for an entry in a hash table.  No-one outside
  781.  * Tcl should access any of these fields directly;  use the macros
  782.  * defined below.
  783.  */
  784.  
  785. typedef struct Tcl_HashEntry {
  786.     struct Tcl_HashEntry *nextPtr;    /* Pointer to next entry in this
  787.                      * hash bucket, or NULL for end of
  788.                      * chain. */
  789.     struct Tcl_HashTable *tablePtr;    /* Pointer to table containing entry. */
  790.     struct Tcl_HashEntry **bucketPtr;    /* Pointer to bucket that points to
  791.                      * first entry in this entry's chain:
  792.                      * used for deleting the entry. */
  793.     ClientData clientData;        /* Application stores something here
  794.                      * with Tcl_SetHashValue. */
  795.     union {                /* Key has one of these forms: */
  796.     char *oneWordValue;        /* One-word value for key. */
  797.     int words[1];            /* Multiple integer words for key.
  798.                      * The actual size will be as large
  799.                      * as necessary for this table's
  800.                      * keys. */
  801.     char string[4];            /* String for key.  The actual size
  802.                      * will be as large as needed to hold
  803.                      * the key. */
  804.     } key;                /* MUST BE LAST FIELD IN RECORD!! */
  805. } Tcl_HashEntry;
  806.  
  807. /*
  808.  * Structure definition for a hash table.  Must be in tcl.h so clients
  809.  * can allocate space for these structures, but clients should never
  810.  * access any fields in this structure.
  811.  */
  812.  
  813. #define TCL_SMALL_HASH_TABLE 4
  814. typedef struct Tcl_HashTable {
  815.     Tcl_HashEntry **buckets;        /* Pointer to bucket array.  Each
  816.                      * element points to first entry in
  817.                      * bucket's hash chain, or NULL. */
  818.     Tcl_HashEntry *staticBuckets[TCL_SMALL_HASH_TABLE];
  819.                     /* Bucket array used for small tables
  820.                      * (to avoid mallocs and frees). */
  821.     int numBuckets;            /* Total number of buckets allocated
  822.                      * at **bucketPtr. */
  823.     int numEntries;            /* Total number of entries present
  824.                      * in table. */
  825.     int rebuildSize;            /* Enlarge table when numEntries gets
  826.                      * to be this large. */
  827.     int downShift;            /* Shift count used in hashing
  828.                      * function.  Designed to use high-
  829.                      * order bits of randomized keys. */
  830.     int mask;                /* Mask value used in hashing
  831.                      * function. */
  832.     int keyType;            /* Type of keys used in this table.
  833.                      * It's either TCL_STRING_KEYS,
  834.                      * TCL_ONE_WORD_KEYS, or an integer
  835.                      * giving the number of ints that
  836.                                          * is the size of the key.
  837.                      */
  838.     Tcl_HashEntry *(*findProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr,
  839.         CONST char *key));
  840.     Tcl_HashEntry *(*createProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr,
  841.         CONST char *key, int *newPtr));
  842. } Tcl_HashTable;
  843.  
  844. /*
  845.  * Structure definition for information used to keep track of searches
  846.  * through hash tables:
  847.  */
  848.  
  849. typedef struct Tcl_HashSearch {
  850.     Tcl_HashTable *tablePtr;        /* Table being searched. */
  851.     int nextIndex;            /* Index of next bucket to be
  852.                      * enumerated after present one. */
  853.     Tcl_HashEntry *nextEntryPtr;    /* Next entry to be enumerated in the
  854.                      * the current bucket. */
  855. } Tcl_HashSearch;
  856.  
  857. /*
  858.  * Acceptable key types for hash tables:
  859.  */
  860.  
  861. #define TCL_STRING_KEYS        0
  862. #define TCL_ONE_WORD_KEYS    1
  863.  
  864. /*
  865.  * Macros for clients to use to access fields of hash entries:
  866.  */
  867.  
  868. #define Tcl_GetHashValue(h) ((h)->clientData)
  869. #define Tcl_SetHashValue(h, value) ((h)->clientData = (ClientData) (value))
  870. #define Tcl_GetHashKey(tablePtr, h) \
  871.     ((char *) (((tablePtr)->keyType == TCL_ONE_WORD_KEYS) ? (h)->key.oneWordValue \
  872.                         : (h)->key.string))
  873.  
  874. /*
  875.  * Macros to use for clients to use to invoke find and create procedures
  876.  * for hash tables:
  877.  */
  878.  
  879. #define Tcl_FindHashEntry(tablePtr, key) \
  880.     (*((tablePtr)->findProc))(tablePtr, key)
  881. #define Tcl_CreateHashEntry(tablePtr, key, newPtr) \
  882.     (*((tablePtr)->createProc))(tablePtr, key, newPtr)
  883.  
  884. /*
  885.  * Flag values to pass to Tcl_DoOneEvent to disable searches
  886.  * for some kinds of events:
  887.  */
  888.  
  889. #define TCL_DONT_WAIT        (1<<1)
  890. #define TCL_WINDOW_EVENTS    (1<<2)
  891. #define TCL_FILE_EVENTS        (1<<3)
  892. #define TCL_TIMER_EVENTS    (1<<4)
  893. #define TCL_IDLE_EVENTS        (1<<5)    /* WAS 0x10 ???? */
  894. #define TCL_ALL_EVENTS        (~TCL_DONT_WAIT)
  895.  
  896. /*
  897.  * The following structure defines a generic event for the Tcl event
  898.  * system.  These are the things that are queued in calls to Tcl_QueueEvent
  899.  * and serviced later by Tcl_DoOneEvent.  There can be many different
  900.  * kinds of events with different fields, corresponding to window events,
  901.  * timer events, etc.  The structure for a particular event consists of
  902.  * a Tcl_Event header followed by additional information specific to that
  903.  * event.
  904.  */
  905.  
  906. #if defined(USE_TCL_STRUCTS) || defined(TCL_EVENT_IMPLEMENT)
  907.  
  908. struct Tcl_Event {
  909.     Tcl_EventProc *proc;    /* Procedure to call to service this event. */
  910.     struct Tcl_Event *nextPtr;    /* Next in list of pending events, or NULL. */
  911. };
  912.  
  913. #else
  914. struct Tcl_Event {
  915.     void *(*spaceforproc)(void);
  916.     void *spaceforlink;
  917. };
  918. #endif
  919.  
  920. /*
  921.  * Positions to pass to Tcl_QueueEvent:
  922.  */
  923.  
  924. typedef enum {
  925.     TCL_QUEUE_TAIL, TCL_QUEUE_HEAD, TCL_QUEUE_MARK
  926. } Tcl_QueuePosition;
  927.  
  928. /*
  929.  * Values to pass to Tcl_SetServiceMode to specify the behavior of notifier
  930.  * event routines.
  931.  */
  932.  
  933. #define TCL_SERVICE_NONE 0
  934. #define TCL_SERVICE_ALL 1
  935.  
  936. /*
  937.  * The following structure keeps is used to hold a time value, either as
  938.  * an absolute time (the number of seconds from the epoch) or as an
  939.  * elapsed time. On Unix systems the epoch is Midnight Jan 1, 1970 GMT.
  940.  * On Macintosh systems the epoch is Midnight Jan 1, 1904 GMT.
  941.  */
  942.  
  943. typedef struct Tcl_Time {
  944.     long sec;            /* Seconds. */
  945.     long usec;            /* Microseconds. */
  946. } Tcl_Time;
  947.  
  948. /*
  949.  * Bits to pass to Tcl_CreateFileHandler and Tcl_CreateChannelHandler
  950.  * to indicate what sorts of events are of interest:
  951.  */
  952.  
  953. #define TCL_READABLE    (1<<1)
  954. #define TCL_WRITABLE    (1<<2)
  955. #define TCL_EXCEPTION    (1<<3)
  956.  
  957. /*
  958.  * Flag values to pass to Tcl_OpenCommandChannel to indicate the
  959.  * disposition of the stdio handles.  TCL_STDIN, TCL_STDOUT, TCL_STDERR,
  960.  * are also used in Tcl_GetStdChannel.
  961.  */
  962.  
  963. #define TCL_STDIN        (1<<1)
  964. #define TCL_STDOUT        (1<<2)
  965. #define TCL_STDERR        (1<<3)
  966. #define TCL_ENFORCE_MODE    (1<<4)
  967.  
  968. /*
  969.  * Typedefs for the various operations in a channel type:
  970.  */
  971.  
  972. typedef int    (Tcl_DriverBlockModeProc) _ANSI_ARGS_((
  973.             ClientData instanceData, int mode));
  974. typedef int    (Tcl_DriverCloseProc) _ANSI_ARGS_((ClientData instanceData,
  975.             Tcl_Interp *interp));
  976. typedef int    (Tcl_DriverInputProc) _ANSI_ARGS_((ClientData instanceData,
  977.             char *buf, int toRead, int *errorCodePtr));
  978. typedef int    (Tcl_DriverOutputProc) _ANSI_ARGS_((ClientData instanceData,
  979.             char *buf, int toWrite, int *errorCodePtr));
  980. typedef int    (Tcl_DriverSeekProc) _ANSI_ARGS_((ClientData instanceData,
  981.             long offset, int mode, int *errorCodePtr));
  982. typedef int    (Tcl_DriverSetOptionProc) _ANSI_ARGS_((
  983.             ClientData instanceData, Tcl_Interp *interp,
  984.                 char *optionName, char *value));
  985. typedef int    (Tcl_DriverGetOptionProc) _ANSI_ARGS_((
  986.             ClientData instanceData, Tcl_Interp *interp,
  987.             char *optionName, Tcl_DString *dsPtr));
  988. typedef void    (Tcl_DriverWatchProc) _ANSI_ARGS_((
  989.             ClientData instanceData, int mask));
  990. typedef int    (Tcl_DriverGetHandleProc) _ANSI_ARGS_((
  991.             ClientData instanceData, int direction,
  992.             ClientData *handlePtr));
  993.  
  994. /*
  995.  * Enum for different end of line translation and recognition modes.
  996.  */
  997.  
  998. typedef enum Tcl_EolTranslation {
  999.     TCL_TRANSLATE_AUTO,            /* Eol == \r, \n and \r\n. */
  1000.     TCL_TRANSLATE_CR,            /* Eol == \r. */
  1001.     TCL_TRANSLATE_LF,            /* Eol == \n. */
  1002.     TCL_TRANSLATE_CRLF            /* Eol == \r\n. */
  1003. } Tcl_EolTranslation;
  1004.  
  1005. /*
  1006.  * struct Tcl_ChannelType:
  1007.  *
  1008.  * One such structure exists for each type (kind) of channel.
  1009.  * It collects together in one place all the functions that are
  1010.  * part of the specific channel type.
  1011.  */
  1012.  
  1013. typedef struct Tcl_ChannelType {
  1014.     char *typeName;            /* The name of the channel type in Tcl
  1015.                                          * commands. This storage is owned by
  1016.                                          * channel type. */
  1017.     Tcl_DriverBlockModeProc *blockModeProc;
  1018.                         /* Set blocking mode for the
  1019.                                          * raw channel. May be NULL. */
  1020.     Tcl_DriverCloseProc *closeProc;    /* Procedure to call to close
  1021.                                          * the channel. */
  1022.     Tcl_DriverInputProc *inputProc;    /* Procedure to call for input
  1023.                                          * on channel. */
  1024.     Tcl_DriverOutputProc *outputProc;    /* Procedure to call for output
  1025.                                          * on channel. */
  1026.     Tcl_DriverSeekProc *seekProc;    /* Procedure to call to seek
  1027.                                          * on the channel. May be NULL. */
  1028.     Tcl_DriverSetOptionProc *setOptionProc;
  1029.                         /* Set an option on a channel. */
  1030.     Tcl_DriverGetOptionProc *getOptionProc;
  1031.                         /* Get an option from a channel. */
  1032.     Tcl_DriverWatchProc *watchProc;    /* Set up the notifier to watch
  1033.                                          * for events on this channel. */
  1034.     Tcl_DriverGetHandleProc *getHandleProc;
  1035.                     /* Get an OS handle from the channel
  1036.                                          * or NULL if not supported. */
  1037. } Tcl_ChannelType;
  1038.  
  1039. /*
  1040.  * The following flags determine whether the blockModeProc above should
  1041.  * set the channel into blocking or nonblocking mode. They are passed
  1042.  * as arguments to the blockModeProc procedure in the above structure.
  1043.  */
  1044.  
  1045. #define TCL_MODE_BLOCKING 0        /* Put channel into blocking mode. */
  1046. #define TCL_MODE_NONBLOCKING 1        /* Put channel into nonblocking
  1047.                      * mode. */
  1048.  
  1049. /*
  1050.  * Enum for different types of file paths.
  1051.  */
  1052.  
  1053. typedef enum Tcl_PathType {
  1054.     TCL_PATH_ABSOLUTE,
  1055.     TCL_PATH_RELATIVE,
  1056.     TCL_PATH_VOLUME_RELATIVE
  1057. } Tcl_PathType;
  1058.  
  1059. /*
  1060.  * Exported Tcl procedures:
  1061.  */
  1062.  
  1063. EXTERN void        Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp *interp,
  1064.                 char *message));
  1065. EXTERN void        Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp *interp,
  1066.                 char *message, int length));
  1067. EXTERN void        Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp *interp));
  1068. EXTERN int        Tcl_AppendAllObjTypes _ANSI_ARGS_((
  1069.                 Tcl_Interp *interp, Tcl_Obj *objPtr));
  1070. EXTERN void        Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp *interp,
  1071.                 char *string));
  1072. EXTERN void        Tcl_AppendResult _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp));
  1073. EXTERN void        Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1074.                 char *bytes, int length));
  1075. EXTERN void        Tcl_AppendStringsToObj _ANSI_ARGS_(TCL_VARARGS(Tcl_Obj *,interp));
  1076. EXTERN int        Tcl_AppInit _ANSI_ARGS_((Tcl_Interp *interp));
  1077. EXTERN Tcl_AsyncHandler    Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc *proc,
  1078.                 ClientData clientData));
  1079. EXTERN void        Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async));
  1080. EXTERN int        Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp *interp,
  1081.                 int code));
  1082. EXTERN void        Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async));
  1083. EXTERN int        Tcl_AsyncReady _ANSI_ARGS_((void));
  1084. EXTERN void        Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp *interp));
  1085. EXTERN char        Tcl_Backslash _ANSI_ARGS_((char *src,
  1086.                 int *readPtr));
  1087. EXTERN int        Tcl_BadChannelOption _ANSI_ARGS_((Tcl_Interp *interp,
  1088.                 char *optionName, char *optionList));
  1089. EXTERN void        Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp *interp,
  1090.                 Tcl_InterpDeleteProc *proc,
  1091.                 ClientData clientData));
  1092. EXTERN void        Tcl_CancelIdleCall _ANSI_ARGS_((Tcl_IdleProc *idleProc,
  1093.                 ClientData clientData));
  1094. #define Tcl_Ckalloc Tcl_Alloc
  1095. #define Tcl_Ckfree Tcl_Free
  1096. #define Tcl_Ckrealloc Tcl_Realloc
  1097. EXTERN int        Tcl_Close _ANSI_ARGS_((Tcl_Interp *interp,
  1098.                     Tcl_Channel chan));
  1099. EXTERN int        Tcl_CommandComplete _ANSI_ARGS_((char *cmd));
  1100. EXTERN Tcl_Obj *Tcl_Concat _ANSI_ARGS_((int argc, Tcl_Obj **argv));
  1101. EXTERN Tcl_Obj *    Tcl_ConcatObj _ANSI_ARGS_((int objc,
  1102.                 Tcl_Obj *CONST objv[]));
  1103. EXTERN int        Tcl_ConvertCountedElement _ANSI_ARGS_((char *src,
  1104.                 int length, char *dst, int flags));
  1105. EXTERN int        Tcl_ConvertElement _ANSI_ARGS_((char *src,
  1106.                 char *dst, int flags));
  1107. EXTERN int        Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp *interp,
  1108.                 Tcl_Obj *objPtr, struct Tcl_ObjType *typePtr));
  1109. EXTERN int        Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp *slave,
  1110.                 char *slaveCmd, Tcl_Interp *target,
  1111.                     char *targetCmd, int argc, char **argv));
  1112. EXTERN int        Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp *slave,
  1113.                 char *slaveCmd, Tcl_Interp *target,
  1114.                     char *targetCmd, int objc,
  1115.                     Tcl_Obj *CONST objv[]));
  1116. EXTERN Tcl_Channel    Tcl_CreateChannel _ANSI_ARGS_((
  1117.                     Tcl_ChannelType *typePtr, char *chanName,
  1118.                             ClientData instanceData, int mask));
  1119. EXTERN void        Tcl_CreateChannelHandler _ANSI_ARGS_((
  1120.                 Tcl_Channel chan, int mask,
  1121.                             Tcl_ChannelProc *proc, ClientData clientData));
  1122. EXTERN void        Tcl_CreateCloseHandler _ANSI_ARGS_((
  1123.                 Tcl_Channel chan, Tcl_CloseProc *proc,
  1124.                             ClientData clientData));
  1125. EXTERN Tcl_Command    Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp,
  1126.                 char *cmdName, Tcl_CmdProc *proc,
  1127.                 ClientData clientData,
  1128.                 Tcl_CmdDeleteProc *deleteProc));
  1129. EXTERN void        Tcl_CreateEventSource _ANSI_ARGS_((
  1130.                 Tcl_EventSetupProc *setupProc,
  1131.                 Tcl_EventCheckProc *checkProc,
  1132.                 ClientData clientData));
  1133. EXTERN void        Tcl_CreateExitHandler _ANSI_ARGS_((Tcl_ExitProc *proc,
  1134.                 ClientData clientData));
  1135. EXTERN void        Tcl_CreateFileHandler _ANSI_ARGS_((
  1136.                     int fd, int mask, Tcl_FileProc *proc,
  1137.                 ClientData clientData));
  1138. EXTERN Tcl_Interp *    Tcl_CreateInterp _ANSI_ARGS_((void));
  1139. EXTERN void        Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp *interp,
  1140.                 char *name, int numArgs, Tcl_ValueType *argTypes,
  1141.                 Tcl_MathProc *proc, ClientData clientData));
  1142. EXTERN Tcl_Command    Tcl_CreateObjCommand _ANSI_ARGS_((
  1143.                 Tcl_Interp *interp, char *cmdName,
  1144.                 Tcl_ObjCmdProc *proc, ClientData clientData,
  1145.                 Tcl_CmdDeleteProc *deleteProc));
  1146. EXTERN Tcl_Interp *    Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp *interp,
  1147.                     char *slaveName, int isSafe));
  1148. EXTERN Tcl_TimerToken    Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds,
  1149.                 Tcl_TimerProc *proc, ClientData clientData));
  1150. EXTERN Tcl_Trace    Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp *interp,
  1151.                 int level, Tcl_CmdTraceProc *proc,
  1152.                 ClientData clientData));
  1153. EXTERN char *        Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size,
  1154.                 char *file, int line));
  1155. EXTERN void        Tcl_DbCkfree _ANSI_ARGS_((char *ptr,
  1156.                 char *file, int line));
  1157. EXTERN char *        Tcl_DbCkrealloc _ANSI_ARGS_((char *ptr,
  1158.                 unsigned int size, char *file, int line));
  1159. EXTERN Tcl_Obj *    Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue,
  1160.                             char *file, int line));
  1161. EXTERN Tcl_Obj *    Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue,
  1162.                             char *file, int line));
  1163. EXTERN Tcl_Obj *    Tcl_DbNewListObj _ANSI_ARGS_((int objc,
  1164.                 Tcl_Obj *CONST objv[], char *file, int line));
  1165. EXTERN Tcl_Obj *    Tcl_DbNewLongObj _ANSI_ARGS_((long longValue,
  1166.                             char *file, int line));
  1167. EXTERN Tcl_Obj *    Tcl_DbNewObj _ANSI_ARGS_((char *file, int line));
  1168. EXTERN Tcl_Obj *    Tcl_DbNewStringObj _ANSI_ARGS_((char *bytes,
  1169.                 int length, char *file, int line));
  1170. EXTERN void        Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp *interp,
  1171.                             char *name));
  1172. EXTERN int        Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp *interp,
  1173.                 char *cmdName));
  1174. EXTERN int        Tcl_DeleteCommandFromToken _ANSI_ARGS_((
  1175.                 Tcl_Interp *interp, Tcl_Command command));
  1176. EXTERN void        Tcl_DeleteChannelHandler _ANSI_ARGS_((
  1177.                     Tcl_Channel chan, Tcl_ChannelProc *proc,
  1178.                             ClientData clientData));
  1179. EXTERN void        Tcl_DeleteCloseHandler _ANSI_ARGS_((
  1180.                 Tcl_Channel chan, Tcl_CloseProc *proc,
  1181.                             ClientData clientData));
  1182. EXTERN void        Tcl_DeleteEvents _ANSI_ARGS_((
  1183.                 Tcl_EventDeleteProc *proc,
  1184.                             ClientData clientData));
  1185. EXTERN void        Tcl_DeleteEventSource _ANSI_ARGS_((
  1186.                 Tcl_EventSetupProc *setupProc,
  1187.                 Tcl_EventCheckProc *checkProc,
  1188.                 ClientData clientData));
  1189. EXTERN void        Tcl_DeleteExitHandler _ANSI_ARGS_((Tcl_ExitProc *proc,
  1190.                 ClientData clientData));
  1191. EXTERN void        Tcl_DeleteFileHandler _ANSI_ARGS_((int fd));
  1192. EXTERN void        Tcl_DeleteHashEntry _ANSI_ARGS_((
  1193.                 Tcl_HashEntry *entryPtr));
  1194. EXTERN void        Tcl_DeleteHashTable _ANSI_ARGS_((
  1195.                 Tcl_HashTable *tablePtr));
  1196. EXTERN void        Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp *interp));
  1197. EXTERN void        Tcl_DeleteTimerHandler _ANSI_ARGS_((
  1198.                 Tcl_TimerToken token));
  1199. EXTERN void        Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp *interp,
  1200.                 Tcl_Trace trace));
  1201. EXTERN void        Tcl_DetachPids _ANSI_ARGS_((int numPids, Tcl_Pid *pidPtr));
  1202. EXTERN void        Tcl_DontCallWhenDeleted _ANSI_ARGS_((
  1203.                 Tcl_Interp *interp, Tcl_InterpDeleteProc *proc,
  1204.                 ClientData clientData));
  1205. EXTERN int        Tcl_DoOneEvent _ANSI_ARGS_((int flags));
  1206. EXTERN void        Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc *proc,
  1207.                 ClientData clientData));
  1208. EXTERN char *        Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString *dsPtr,
  1209.                 char *string, int length));
  1210. EXTERN char *        Tcl_DStringAppendElement _ANSI_ARGS_((
  1211.                 Tcl_DString *dsPtr, char *string));
  1212. EXTERN void        Tcl_DStringEndSublist _ANSI_ARGS_((Tcl_DString *dsPtr));
  1213. EXTERN void        Tcl_DStringFree _ANSI_ARGS_((Tcl_DString *dsPtr));
  1214. EXTERN void        Tcl_DStringGetResult _ANSI_ARGS_((Tcl_Interp *interp,
  1215.                 Tcl_DString *dsPtr));
  1216. EXTERN void        Tcl_DStringInit _ANSI_ARGS_((Tcl_DString *dsPtr));
  1217. EXTERN void        Tcl_DbDStringInit _ANSI_ARGS_((Tcl_DString *dsPtr,char *file,int line));
  1218. EXTERN void        Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp *interp,
  1219.                 Tcl_DString *dsPtr));
  1220. EXTERN void        Tcl_DStringSetLength _ANSI_ARGS_((Tcl_DString *dsPtr,
  1221.                 int length));
  1222. EXTERN void        Tcl_DStringStartSublist _ANSI_ARGS_((
  1223.                 Tcl_DString *dsPtr));
  1224. EXTERN Tcl_Obj *    Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj *objPtr));
  1225. EXTERN int        Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan));
  1226. EXTERN char *        Tcl_ErrnoId _ANSI_ARGS_((void));
  1227. EXTERN char *        Tcl_ErrnoMsg _ANSI_ARGS_((int err));
  1228. EXTERN int        Tcl_Eval _ANSI_ARGS_((Tcl_Interp *interp,
  1229.                 char *string));
  1230. EXTERN int        Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp *interp,
  1231.                 char *fileName));
  1232. EXTERN void        Tcl_EventuallyFree _ANSI_ARGS_((ClientData clientData,
  1233.                 Tcl_FreeProc *freeProc));
  1234. EXTERN int        Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp *interp,
  1235.                 Tcl_Obj *objPtr));
  1236. EXTERN void        Tcl_Exit _ANSI_ARGS_((int status));
  1237. EXTERN int        Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp *interp,
  1238.                     char *hiddenCmdName, char *cmdName));
  1239. EXTERN int        Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp *interp,
  1240.                 char *string, int *ptr));
  1241. EXTERN int        Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp *interp,
  1242.                 Tcl_Obj *objPtr, int *ptr));
  1243. EXTERN int        Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp *interp,
  1244.                 char *string, double *ptr));
  1245. EXTERN int        Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp *interp,
  1246.                 Tcl_Obj *objPtr, double *ptr));
  1247. EXTERN int        Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp *interp,
  1248.                 char *string, long *ptr));
  1249. EXTERN int        Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp *interp,
  1250.                 Tcl_Obj *objPtr, long *ptr));
  1251. EXTERN int        Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp *interp,
  1252.                 Tcl_Obj *objPtr, Tcl_Obj **resultPtrPtr));
  1253. EXTERN int        Tcl_ExprString _ANSI_ARGS_((Tcl_Interp *interp,
  1254.                 char *string));
  1255. EXTERN void        Tcl_Finalize _ANSI_ARGS_((void));
  1256. EXTERN void        Tcl_FindExecutable _ANSI_ARGS_((char *argv0));
  1257. EXTERN Tcl_HashEntry *    Tcl_FirstHashEntry _ANSI_ARGS_((
  1258.                 Tcl_HashTable *tablePtr,
  1259.                 Tcl_HashSearch *searchPtr));
  1260. EXTERN int        Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan));
  1261. EXTERN void        TclFreeObj _ANSI_ARGS_((Tcl_Obj *objPtr));
  1262. EXTERN void        Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp *interp));
  1263. EXTERN int        Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp *interp,
  1264.                        char *slaveCmd, Tcl_Interp **targetInterpPtr,
  1265.                             char **targetCmdPtr, int *argcPtr,
  1266.                 char ***argvPtr));
  1267. EXTERN int        Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp *interp,
  1268.                        char *slaveCmd, Tcl_Interp **targetInterpPtr,
  1269.                             char **targetCmdPtr, int *objcPtr,
  1270.                 Tcl_Obj ***objv));
  1271. EXTERN ClientData    Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp *interp,
  1272.                             char *name, Tcl_InterpDeleteProc **procPtr));
  1273. EXTERN int        Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp *interp,
  1274.                 Tcl_Obj *string, int *boolPtr));
  1275. EXTERN int        Tcl_GetBooleanFromObj _ANSI_ARGS_((
  1276.                 Tcl_Interp *interp, Tcl_Obj *objPtr,
  1277.                 int *boolPtr));
  1278. EXTERN Tcl_Channel    Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp *interp,
  1279.                     char *chanName, int *modePtr));
  1280. EXTERN int        Tcl_GetChannelBufferSize _ANSI_ARGS_((
  1281.                     Tcl_Channel chan));
  1282. EXTERN int        Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan,
  1283.                     int direction, ClientData *handlePtr));
  1284. EXTERN ClientData    Tcl_GetChannelInstanceData _ANSI_ARGS_((
  1285.                     Tcl_Channel chan));
  1286. EXTERN int        Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan));
  1287. EXTERN char *        Tcl_GetChannelName _ANSI_ARGS_((Tcl_Channel chan));
  1288. EXTERN int        Tcl_GetChannelOption _ANSI_ARGS_((Tcl_Interp *interp,
  1289.                 Tcl_Channel chan, char *optionName,
  1290.                 Tcl_DString *dsPtr));
  1291. EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan));
  1292. EXTERN int        Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp *interp,
  1293.                 char *cmdName, Tcl_CmdInfo *infoPtr));
  1294. EXTERN char *        Tcl_GetCommandName _ANSI_ARGS_((Tcl_Interp *interp,
  1295.                 Tcl_Command command));
  1296. EXTERN char *        Tcl_GetCwd _ANSI_ARGS_((char *buf, int len));
  1297. EXTERN int        Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp *interp,
  1298.                 Tcl_Obj *string, double *doublePtr));
  1299. EXTERN int        Tcl_GetDoubleFromObj _ANSI_ARGS_((
  1300.                 Tcl_Interp *interp, Tcl_Obj *objPtr,
  1301.                 double *doublePtr));
  1302. EXTERN int        Tcl_GetErrno _ANSI_ARGS_((void));
  1303. EXTERN int        Tcl_GetErrorLine _ANSI_ARGS_((Tcl_Interp *interp));
  1304. EXTERN char *        Tcl_GetHostName _ANSI_ARGS_((void));
  1305. EXTERN int        Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp *interp,
  1306.                 Tcl_Obj *objPtr, char **tablePtr, char *msg,
  1307.                 int flags, int *indexPtr));
  1308. EXTERN int        Tcl_GetInt _ANSI_ARGS_((Tcl_Interp *interp,
  1309.                 Tcl_Obj *string, int *intPtr));
  1310. EXTERN int        Tcl_GetInterpPath _ANSI_ARGS_((Tcl_Interp *askInterp,
  1311.                 Tcl_Interp *slaveInterp));
  1312. EXTERN int        Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp *interp,
  1313.                 Tcl_Obj *objPtr, int *intPtr));
  1314. EXTERN int        Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp *interp,
  1315.                 Tcl_Obj *objPtr, long *longPtr));
  1316. EXTERN Tcl_Interp *    Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp *interp));
  1317. EXTERN Tcl_Obj *    Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp *interp));
  1318. EXTERN Tcl_ObjType *    Tcl_GetObjType _ANSI_ARGS_((char *typeName));
  1319. EXTERN int        Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp *interp,
  1320.                 Tcl_Obj *string, int write, int checkUsage,
  1321.                 ClientData *filePtr));
  1322. EXTERN Tcl_Command    Tcl_GetOriginalCommand _ANSI_ARGS_((
  1323.                 Tcl_Command command));
  1324. EXTERN Tcl_PathType    Tcl_GetPathType _ANSI_ARGS_((char *path));
  1325. EXTERN int        Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan,
  1326.                     Tcl_DString *dsPtr));
  1327. EXTERN int        Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan,
  1328.                     Tcl_Obj *objPtr));
  1329. EXTERN int        Tcl_GetServiceMode _ANSI_ARGS_((void));
  1330. EXTERN Tcl_Interp *    Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp *interp,
  1331.                 char *slaveName));
  1332. EXTERN Tcl_Channel    Tcl_GetStdChannel _ANSI_ARGS_((int type));
  1333. EXTERN char *        Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1334.                 int *lengthPtr));
  1335. EXTERN char *        Tcl_GetStringResult _ANSI_ARGS_((Tcl_Interp *interp));
  1336. EXTERN Tcl_Obj *Tcl_GetVar _ANSI_ARGS_((Tcl_Interp *interp,
  1337.                 Var varName, int flags));
  1338. EXTERN Tcl_Obj *Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1339.                 Var part1, char *part2, int flags));
  1340. EXTERN int        Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp *interp,
  1341.                 char *command));
  1342. EXTERN int        Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp *interp,
  1343.                 Tcl_Obj *objPtr));
  1344. EXTERN char *        Tcl_HashStats _ANSI_ARGS_((Tcl_HashTable *tablePtr));
  1345. EXTERN int        Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp *interp,
  1346.                     char *cmdName, char *hiddenCmdName));
  1347. EXTERN int        Tcl_Init _ANSI_ARGS_((Tcl_Interp *interp));
  1348. EXTERN void        Tcl_InitHashTable _ANSI_ARGS_((Tcl_HashTable *tablePtr,
  1349.                 int keyType));
  1350. EXTERN void        Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp *interp));
  1351. EXTERN int        Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan));
  1352. EXTERN int        Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan));
  1353. EXTERN int        Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp *interp));
  1354. EXTERN int        Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp *interp));
  1355. EXTERN void        Tcl_InvalidateStringRep _ANSI_ARGS_((
  1356.                 Tcl_Obj *objPtr));
  1357. EXTERN char *        Tcl_JoinPath _ANSI_ARGS_((int argc, char **argv,
  1358.                 Tcl_DString *resultPtr));
  1359. EXTERN int        Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp *interp,
  1360.                 char *varName, char *addr, int type));
  1361. EXTERN int        Tcl_ListObjAppendList _ANSI_ARGS_((
  1362.                 Tcl_Interp *interp, Tcl_Obj *listPtr,
  1363.                 Tcl_Obj *elemListPtr));
  1364. EXTERN int        Tcl_ListObjAppendElement _ANSI_ARGS_((
  1365.                 Tcl_Interp *interp, Tcl_Obj *listPtr,
  1366.                 Tcl_Obj *objPtr));
  1367. EXTERN int        Tcl_ListObjGetElements _ANSI_ARGS_((
  1368.                 Tcl_Interp *interp, Tcl_Obj *listPtr,
  1369.                 int *objcPtr, Tcl_Obj ***objvPtr));
  1370. EXTERN int        Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp *interp,
  1371.                 Tcl_Obj *listPtr, int index,
  1372.                 Tcl_Obj **objPtrPtr));
  1373. EXTERN int        Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp *interp,
  1374.                 Tcl_Obj *listPtr, int *intPtr));
  1375. EXTERN int        Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp *interp,
  1376.                 Tcl_Obj *listPtr, int first, int count,
  1377.                 int objc, Tcl_Obj *CONST objv[]));
  1378. EXTERN void        Tcl_Main _ANSI_ARGS_((int argc, char **argv,
  1379.                 Tcl_AppInitProc *appInitProc));
  1380. EXTERN Tcl_Channel    Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle,
  1381.                 int mode));
  1382. EXTERN int        Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp *interp));
  1383. EXTERN Tcl_Channel    Tcl_MakeTcpClientChannel _ANSI_ARGS_((
  1384.                     ClientData tcpSocket));
  1385. EXTERN Tcl_Obj *Tcl_Merge _ANSI_ARGS_((int argc, Tcl_Obj **argv));
  1386. EXTERN Tcl_HashEntry *    Tcl_NextHashEntry _ANSI_ARGS_((
  1387.                 Tcl_HashSearch *searchPtr));
  1388. EXTERN void        Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel,
  1389.                 int mask));
  1390. EXTERN Tcl_Obj *    Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1391.                 Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr,
  1392.                 int flags));
  1393. EXTERN Tcl_Obj *    Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1394.                 Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr,
  1395.                 Tcl_Obj *newValuePtr, int flags));
  1396. EXTERN Tcl_Channel    Tcl_OpenCommandChannel _ANSI_ARGS_((
  1397.                     Tcl_Interp *interp, int argc, char **argv,
  1398.                 int flags));
  1399. EXTERN Tcl_Channel    Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp *interp,
  1400.                     char *fileName, char *modeString,
  1401.                             int permissions));
  1402. EXTERN Tcl_Channel    Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp *interp,
  1403.                 int port, char *address, char *myaddr,
  1404.                     int myport, int async));
  1405. EXTERN Tcl_Channel    Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp *interp,
  1406.                     int port, char *host,
  1407.                     Tcl_TcpAcceptProc *acceptProc,
  1408.                 ClientData callbackData));
  1409. EXTERN char *        Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp *interp,
  1410.                 char *string, char **termPtr));
  1411. EXTERN int        Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp *interp,
  1412.                 char *name, char *version));
  1413. EXTERN char *        Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp *interp,
  1414.                 char *name, char *version, int exact));
  1415. EXTERN char *        Tcl_PosixError _ANSI_ARGS_((Tcl_Interp *interp));
  1416. EXTERN void        Tcl_Preserve _ANSI_ARGS_((ClientData data));
  1417. EXTERN void        Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp *interp,
  1418.                 double value, char *dst));
  1419. EXTERN int        Tcl_PutEnv _ANSI_ARGS_((CONST char *string));
  1420. EXTERN void        Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event *evPtr,
  1421.                 Tcl_QueuePosition position));
  1422. EXTERN void        Tcl_QueueProcEvent _ANSI_ARGS_((Tcl_EventProc *proc,
  1423.                 Tcl_Event *evPtr,
  1424.                 Tcl_QueuePosition position));
  1425. EXTERN int        Tcl_Read _ANSI_ARGS_((Tcl_Channel chan,
  1426.                     char *bufPtr, int toRead));
  1427. EXTERN void        Tcl_ReapDetachedProcs _ANSI_ARGS_((void));
  1428. EXTERN int        Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp *interp,
  1429.                 char *cmd, int flags));
  1430. EXTERN Tcl_RegExp    Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp,
  1431.                 char *string));
  1432. EXTERN int        Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp *interp,
  1433.                 Tcl_RegExp regexp, char *string, char *start));
  1434. EXTERN int        Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp *interp,
  1435.                 char *string, char *pattern));
  1436. EXTERN void        Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp,
  1437.                 int index, char **startPtr, char **endPtr));
  1438. EXTERN void        Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp *interp,
  1439.                     Tcl_Channel chan));
  1440. EXTERN void        Tcl_RegisterObjType _ANSI_ARGS_((
  1441.                 Tcl_ObjType *typePtr));
  1442. EXTERN void        Tcl_Release _ANSI_ARGS_((ClientData clientData));
  1443. EXTERN void        Tcl_RestartIdleTimer _ANSI_ARGS_((void));
  1444. EXTERN void        Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp *interp));
  1445. #define Tcl_Return Tcl_SetResult
  1446. EXTERN int        Tcl_ScanCountedElement _ANSI_ARGS_((char *string,
  1447.                 int length, int *flagPtr));
  1448. EXTERN int        Tcl_ScanElement _ANSI_ARGS_((char *string,
  1449.                 int *flagPtr));
  1450. EXTERN int        Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan,
  1451.                     int offset, int mode));
  1452. EXTERN int        Tcl_ServiceAll _ANSI_ARGS_((void));
  1453. EXTERN int        Tcl_ServiceEvent _ANSI_ARGS_((int flags));
  1454. EXTERN void        Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp *interp,
  1455.                             char *name, Tcl_InterpDeleteProc *proc,
  1456.                             ClientData clientData));
  1457. EXTERN void        Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1458.                 int boolValue));
  1459. EXTERN void        Tcl_SetChannelBufferSize _ANSI_ARGS_((
  1460.                 Tcl_Channel chan, int sz));
  1461. EXTERN int        Tcl_SetChannelOption _ANSI_ARGS_((
  1462.                 Tcl_Interp *interp, Tcl_Channel chan,
  1463.                     char *optionName, char *newValue));
  1464. EXTERN int        Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp *interp,
  1465.                 char *cmdName, Tcl_CmdInfo *infoPtr));
  1466. EXTERN void        Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1467.                 double doubleValue));
  1468. EXTERN void        Tcl_SetErrno _ANSI_ARGS_((int err));
  1469. EXTERN void        Tcl_SetErrorCode _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp));
  1470. EXTERN void        Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1471.                 int intValue));
  1472. EXTERN void        Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1473.                 int objc, Tcl_Obj *CONST objv[]));
  1474. EXTERN void        Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1475.                 long longValue));
  1476. EXTERN void        Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time *timePtr));
  1477. EXTERN void        Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp *interp,
  1478.                 Tcl_Obj *errorObjPtr));
  1479. EXTERN void        Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj *objPtr,
  1480.                 int length));
  1481. EXTERN void        Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp *interp,
  1482.                 Tcl_Obj *resultObjPtr));
  1483. EXTERN void        Tcl_SetPanicProc _ANSI_ARGS_((void (*proc)
  1484.                 _ANSI_ARGS_(TCL_VARARGS(char *, format))));
  1485. EXTERN int        Tcl_SetRecursionLimit _ANSI_ARGS_((Tcl_Interp *interp,
  1486.                 int depth));
  1487. EXTERN void        Tcl_SetResult _ANSI_ARGS_((Tcl_Interp *interp,
  1488.                 char *string, Tcl_FreeProc *freeProc));
  1489. EXTERN int        Tcl_SetServiceMode _ANSI_ARGS_((int mode));
  1490. EXTERN void        Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel,
  1491.                 int type));
  1492. EXTERN void        Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj *objPtr,
  1493.                 char *bytes, int length));
  1494. EXTERN void        Tcl_SetTimer _ANSI_ARGS_((Tcl_Time *timePtr));
  1495. EXTERN char *        Tcl_SetVar _ANSI_ARGS_((Tcl_Interp *interp,
  1496.                 Var varName, char *newValue, int flags));
  1497. EXTERN char *        Tcl_SetVarArg _ANSI_ARGS_((Tcl_Interp *interp,
  1498.                 Var varName, Tcl_Obj *newValue, int flags));
  1499. EXTERN char *        Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1500.                 Var part1, char *part2, char *newValue,
  1501.                 int flags));
  1502. EXTERN char *        Tcl_SignalId _ANSI_ARGS_((int sig));
  1503. EXTERN char *        Tcl_SignalMsg _ANSI_ARGS_((int sig));
  1504. EXTERN void        Tcl_Sleep _ANSI_ARGS_((int ms));
  1505. EXTERN void        Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp *interp));
  1506. EXTERN int        Tcl_SplitList _ANSI_ARGS_((Tcl_Interp *interp,
  1507.                 char *list, int *argcPtr, char ***argvPtr));
  1508. EXTERN void        Tcl_SplitPath _ANSI_ARGS_((char *path,
  1509.                 int *argcPtr, char ***argvPtr));
  1510. EXTERN void        Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp *interp,
  1511.                 char *pkgName, Tcl_PackageInitProc *initProc,
  1512.                 Tcl_PackageInitProc *safeInitProc));
  1513. EXTERN int        Tcl_StringMatch _ANSI_ARGS_((char *string,
  1514.                 char *pattern));
  1515. EXTERN int        Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan));
  1516. EXTERN int        Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp *interp,
  1517.                 Var varName, int flags, Tcl_VarTraceProc *proc,
  1518.                 ClientData clientData));
  1519. EXTERN int        Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1520.                 Var part1, char *part2, int flags,
  1521.                 Tcl_VarTraceProc *proc, ClientData clientData));
  1522. EXTERN char *        Tcl_TranslateFileName _ANSI_ARGS_((Tcl_Interp *interp,
  1523.                 char *name, Tcl_DString *bufferPtr));
  1524. EXTERN int        Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, char *str,
  1525.                 int len, int atHead));
  1526. EXTERN void        Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp *interp,
  1527.                 char *varName));
  1528. EXTERN int        Tcl_UnregisterChannel _ANSI_ARGS_((Tcl_Interp *interp,
  1529.                 Tcl_Channel chan));
  1530. EXTERN int        Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp *interp,
  1531.                 char *varName, int flags));
  1532. EXTERN int        Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1533.                 char *part1, char *part2, int flags));
  1534. EXTERN void        Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp *interp,
  1535.                 Var varName, int flags, Tcl_VarTraceProc *proc,
  1536.                 ClientData clientData));
  1537. EXTERN void        Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1538.                 Var part1, char *part2, int flags,
  1539.                 Tcl_VarTraceProc *proc, ClientData clientData));
  1540. EXTERN void        Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp *interp,
  1541.                 char *varName));
  1542. EXTERN int        Tcl_UpVar _ANSI_ARGS_((Tcl_Interp *interp,
  1543.                 char *frameName, char *varName,
  1544.                 char *localName, int flags));
  1545. EXTERN int        Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp *interp,
  1546.                 char *frameName, char *part1, char *part2,
  1547.                 char *localName, int flags));
  1548. EXTERN int        Tcl_VarEval _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp));
  1549. EXTERN ClientData    Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp *interp,
  1550.                 char *varName, int flags,
  1551.                 Tcl_VarTraceProc *procPtr,
  1552.                 ClientData prevClientData));
  1553. EXTERN ClientData    Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp *interp,
  1554.                 char *part1, char *part2, int flags,
  1555.                 Tcl_VarTraceProc *procPtr,
  1556.                 ClientData prevClientData));
  1557. EXTERN int        Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time *timePtr));
  1558. EXTERN Tcl_Pid        Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int *statPtr,
  1559.                 int options));
  1560. EXTERN int        Tcl_Write _ANSI_ARGS_((Tcl_Channel chan,
  1561.                     char *s, int slen));
  1562. EXTERN void        Tcl_AppendArg _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *));
  1563. EXTERN void        Tcl_IntResults _ANSI_ARGS_((Tcl_Interp *interp,int,int,...));
  1564. EXTERN void        Tcl_DoubleResults _ANSI_ARGS_((Tcl_Interp *interp,int,int,...));
  1565.  
  1566. EXTERN int        TclIdlePending _ANSI_ARGS_((void));
  1567. EXTERN int        TclServiceIdle _ANSI_ARGS_((void));
  1568. EXTERN void        TclFinalizeCompExecEnv _ANSI_ARGS_((void));
  1569. EXTERN void        TclFinalizeEnvironment _ANSI_ARGS_((void));
  1570. EXTERN int        Tcl_AfterObjCmd _ANSI_ARGS_((ClientData clientData,
  1571.                 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
  1572.  
  1573.  
  1574. #define Tcl_GlobalEval(interp,cmd) LangEval(interp,cmd,1)
  1575. EXTERN char *        LangMergeString _ANSI_ARGS_((int argc, Tcl_Obj **args));
  1576.  
  1577. EXTERN int LangEval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd, int global));
  1578.  
  1579. EXTERN char *LangString _ANSI_ARGS_((Tcl_Obj *));
  1580. EXTERN void LangSetString _ANSI_ARGS_((Tcl_Obj **,char *));
  1581. EXTERN void LangSetDefault _ANSI_ARGS_((Tcl_Obj **,char *));
  1582. EXTERN void LangSetInt _ANSI_ARGS_((Tcl_Obj **,int));
  1583. EXTERN void LangSetDouble _ANSI_ARGS_((Tcl_Obj **,double));
  1584. EXTERN void LangSetObj _ANSI_ARGS_((Tcl_Obj **,Tcl_Obj *));
  1585. EXTERN void LangOldSetArg _ANSI_ARGS_((Tcl_Obj **,Tcl_Obj *,char *,int));
  1586. #define LangSetArg(ap,a) LangOldSetArg(ap,a,__FILE__,__LINE__)
  1587. EXTERN void LangSetVar _ANSI_ARGS_((Tcl_Obj **,Var));
  1588.  
  1589. EXTERN int  LangCmpArg  _ANSI_ARGS_((Tcl_Obj *,Tcl_Obj *));
  1590. EXTERN int  LangCmpOpt  _ANSI_ARGS_((char *opt,char *arg,size_t length));
  1591. EXTERN void Lang_OldArgResult _ANSI_ARGS_ ((Tcl_Interp *,Tcl_Obj *,char *,int));
  1592. EXTERN Tcl_Obj *LangObjArg  _ANSI_ARGS_ ((Tcl_Obj *,char *,int));
  1593.  
  1594. #define LangStringArg(s) Tcl_NewStringObj(s,-1)
  1595. #define Tcl_ArgResult(interp,obj) Lang_OldArgResult(interp,obj,__FILE__,__LINE__)
  1596.  
  1597. /* FIXME:
  1598.    Tk will set freeProc as for Tcl e.g. NULL for statics & UIDs
  1599.    and to "free" for Tcl_Merge etc.
  1600.    Non Tk users *may* be able to use it as a guide,
  1601.    but it is more likely that they will have to use
  1602.    their own ref counts.
  1603.    Perhaps Tcl_Merge should set freeProc and/or Tcl's
  1604.    LangSetString() deliberately malloc() a copy of the string so we don't need
  1605.    the freeProc
  1606. */
  1607. EXTERN void LangFreeArg _ANSI_ARGS_((Tcl_Obj *,Tcl_FreeProc *freeProc));
  1608. EXTERN Tcl_Obj *LangCopyArg _ANSI_ARGS_((Tcl_Obj *));
  1609.  
  1610. EXTERN void LangRestoreResult _ANSI_ARGS_((Tcl_Interp **,LangResultSave *));
  1611. EXTERN LangResultSave *LangSaveResult _ANSI_ARGS_((Tcl_Interp **));
  1612.  
  1613. EXTERN void Tcl_SprintfResult _ANSI_ARGS_((Tcl_Interp *,char *,...));
  1614. EXTERN char *Tcl_GetResult _ANSI_ARGS_((Tcl_Interp *));
  1615. EXTERN void Tcl_Panic _ANSI_ARGS_((char *,...));
  1616. #define panic Tcl_Panic
  1617.  
  1618.  
  1619. EXTERN int  LangNull _ANSI_ARGS_((Tcl_Obj *));
  1620.  
  1621. /* Used to default Menu variable to the label
  1622.    TCL just strdup's the string so it can be ckfree'ed
  1623. */
  1624.  
  1625. EXTERN int  LangStringMatch _ANSI_ARGS_((char *string, Tcl_Obj *match));
  1626.  
  1627. EXTERN void LangExit _ANSI_ARGS_((int));
  1628.  
  1629. EXTERN void        Tcl_DStringGetResult _ANSI_ARGS_((Tcl_Interp *interp,
  1630.                 Tcl_DString *dsPtr));
  1631. EXTERN void        Tcl_DStringSetLength _ANSI_ARGS_((Tcl_DString *dsPtr,
  1632.                 int length));
  1633.  
  1634. EXTERN Tcl_RegExp    Lang_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp,
  1635.                 char *string, int fold));
  1636. EXTERN int        Lang_RegExpExec _ANSI_ARGS_((Tcl_Interp *interp,
  1637.                 Tcl_RegExp regexp, char *string, char *start));
  1638. EXTERN void        Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp,
  1639.                 int index, char **startPtr, char **endPtr));
  1640.  
  1641. EXTERN void        TclpGetTime _ANSI_ARGS_((Tcl_Time *time));
  1642.  
  1643. EXTERN void Lang_SetErrorCode _ANSI_ARGS_((Tcl_Interp *interp,char *code));
  1644. EXTERN char *Lang_GetErrorCode _ANSI_ARGS_((Tcl_Interp *interp));
  1645. EXTERN char *Lang_GetErrorInfo _ANSI_ARGS_((Tcl_Interp *interp));
  1646.  
  1647. EXTERN int LangSaveVar _ANSI_ARGS_((Tcl_Interp *,Tcl_Obj *,Var *,int type));
  1648. EXTERN void LangFreeVar _ANSI_ARGS_((Var));
  1649. EXTERN Tcl_Obj *Tcl_ResultArg _ANSI_ARGS_((Tcl_Interp *interp));
  1650. EXTERN Tcl_Obj *LangScalarResult _ANSI_ARGS_((Tcl_Interp *interp));
  1651.  
  1652. EXTERN void        Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp *interp,
  1653.                 int objc, Tcl_Obj *CONST objv[], char *message));
  1654.  
  1655. EXTERN int        Lang_GetStrInt _ANSI_ARGS_((Tcl_Interp *interp,
  1656.                 char *string, int *intPtr));
  1657.  
  1658. EXTERN int LangEventHook _ANSI_ARGS_((int flags));
  1659. EXTERN void LangBadFile  _ANSI_ARGS_((int fd));
  1660. EXTERN void Lang_BuildInImages _ANSI_ARGS_((void));
  1661. EXTERN void Lang_FreeRegExp _ANSI_ARGS_((Tcl_RegExp regexp));
  1662. EXTERN void *    TclCalloc _ANSI_ARGS_((size_t n,size_t s));
  1663. EXTERN void LangDebug _ANSI_ARGS_((char *fmt,...));
  1664. EXTERN void LangDumpVec _ANSI_ARGS_((char *tag, int argc, Tcl_Obj **vec));
  1665.  
  1666. EXTERN void Lang_DeleteObject _ANSI_ARGS_((Tcl_Interp *,Tcl_Command));
  1667. EXTERN Tcl_Command    Lang_CreateObject _ANSI_ARGS_((Tcl_Interp *interp,
  1668.                 char *cmdName, Tcl_CmdProc *proc,
  1669.                 ClientData clientData,
  1670.                 Tcl_CmdDeleteProc *deleteProc));
  1671.  
  1672. EXTERN int Lang_CallWithArgs _ANSI_ARGS_ ((Tcl_Interp *interp,
  1673.                     char *sub, int argc, Tcl_Obj **argv));
  1674.  
  1675. #ifndef LangCallback
  1676. typedef struct LangCallback *LangCallback;
  1677. #endif
  1678.  
  1679. EXTERN int LangDoCallback _ANSI_ARGS_((Tcl_Interp *,LangCallback *,int result,int argc,...));
  1680. EXTERN int LangMethodCall _ANSI_ARGS_((Tcl_Interp *,Tcl_Obj *,char *,int result,int argc,...));
  1681.  
  1682. EXTERN char *LangLibraryDir _ANSI_ARGS_((void));
  1683. EXTERN void Lang_SetBinaryResult _ANSI_ARGS_((Tcl_Interp *interp,
  1684.                 char *string, int len, Tcl_FreeProc *freeProc));
  1685. EXTERN Tcl_CmdProc *LangOptionCommand;
  1686.  
  1687. EXTERN long Lang_OSHandle _ANSI_ARGS_((int fd));
  1688. #define TK_LIBRARY LangLibraryDir()
  1689. #define TclPlatformExit(status) LangExit(status)
  1690.  
  1691. #ifdef WIN32
  1692. #ifdef __BORLANDC__
  1693. #pragma warn -par    /* "parameter 'foo' is never used" */
  1694. #pragma warn -aus    /* "'foo' is assigned a value that is never used" */
  1695. #pragma warn -use    /* "'foo' is declared but never used" */
  1696. #endif
  1697.  
  1698. #ifdef _MSC_VER
  1699. #pragma warning(disable:4101 4102 4244 4018)
  1700. #pragma warning(disable:4133) /* init incompatible for xlib */
  1701. #endif
  1702. #endif
  1703.  
  1704. #if !defined(TCL_EVENT_IMPLEMENT)
  1705. #include "tkEvent.h"
  1706. #include "tkEvent.m"
  1707. #endif
  1708.  
  1709. #endif /* RESOURCE_INCLUDED */
  1710. #endif /* _LANG */
  1711.  
  1712.