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