Fork me on GitHub

source: git/external/tcl/tcl.h@ c27c038

Last change on this file since c27c038 was adeddd8, checked in by Pavel Demin <pavel-demin@…>, 5 years ago

remove debug code from Tcl

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