4 * Standard internal include file for Extended Tcl library..
5 *-----------------------------------------------------------------------------
6 * Copyright 1992 Karl Lehenbauer and Mark Diekhans.
8 * Permission to use, copy, modify, and distribute this software and its
9 * documentation for any purpose and without fee is hereby granted, provided
10 * that the above copyright notice appear in all copies. Karl Lehenbauer and
11 * Mark Diekhans make no representations about the suitability of this
12 * software for any purpose. It is provided "as is" without express or
14 *-----------------------------------------------------------------------------
15 * $Id: tclExtdInt.h,v 1.1.1.1 2001/04/29 20:34:44 karll Exp $
16 *-----------------------------------------------------------------------------
24 #include "tclExtend.h"
27 /* #include <sys/param.h> */
30 #ifdef TCL_NEED_SYS_SELECT_H
31 # include "sys/select.h"
35 * If tclUnix.h has already included time.h, don't include it again, some
36 * systems don't #ifdef inside of the file. On some systems, undef
37 * CLK_TCK (defined in tclUnix.h) to avoid an annoying warning about
40 #ifdef TCL_NEED_TIME_H
42 # ifdef TCL_DUP_CLK_TCK
50 * Precompute milliseconds-per-tick, the " + CLK_TCK / 2" bit gets it to
51 * round off instead of truncate. Take care of defining CLK_TCK if its not
62 #define MS_PER_TICK ((1000 + CLK_TCK/2) / CLK_TCK)
65 * If tclUnix.h did not bring times.h, bring it in here.
68 # include <sys/times.h>
72 /* #include <grp.h> */
74 * On some systems this is not included by tclUnix.h.
78 * These should be take from an include file, but it got to be such a mess
79 * to get the include files right that they are here for good measure.
82 struct tm *localtime ();
85 #define MAXINT INT_MAX
89 # define BITSPERBYTE 8
90 # define BITS(type) (BITSPERBYTE * (int)sizeof(type))
91 # define HIBITI ((1 << BITS(int)) - 1)
92 # define MAXINT (~HIBITI)
97 # define MININT INT_MIN
99 # define MININT (-MAXINT)-1
109 * Structure to hold a regular expression, plus a Boyer-Moore compiled
113 typedef struct regexp_t {
118 typedef regexp_t *regexp_pt;
120 * Flags used by RegExpCompile:
122 #define REXP_NO_CASE 1 /* Do matching regardless of case */
123 #define REXP_BOTH_ALGORITHMS 2 /* Use boyer-moore along with regexp */
126 * Data structure to control a dynamic buffer. These buffers are primarly
127 * used for reading things from files, were the maximum size is not known
128 * in advance, and the buffer must grow. These are used in the case were
129 * the value is not to be returned as the interpreter result.
132 #define INIT_DYN_BUFFER_SIZE 256
134 typedef struct dynamicBuf_t {
135 char buf [INIT_DYN_BUFFER_SIZE]; /* Initial buffer area. */
136 char *ptr; /* Pointer to buffer area. */
137 int size; /* Current size of buffer. */
138 int len; /* Current string length (less '\0') */
142 * Used to return argument messages by most commands.
144 extern char *tclXWrongArgs;
147 * Macros to do string compares. They pre-check the first character before
148 * checking of the strings are equal.
151 #define STREQU(str1, str2) \
152 (((str1) [0] == (str2) [0]) && (strcmp (str1, str2) == 0))
153 #define STRNEQU(str1, str2, cnt) \
154 (((str1) [0] == (str2) [0]) && (strncmp (str1, str2, cnt) == 0))
157 * Prototypes for utility procedures.
160 Tcl_DynBufInit _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
163 Tcl_DynBufFree _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
166 Tcl_DynBufReturn _ANSI_ARGS_((Tcl_Interp *interp,
167 dynamicBuf_t *dynBufPtr));
170 Tcl_DynBufAppend _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
174 Tcl_ExpandDynBuf _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
178 Tcl_DynamicFgets _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
183 Tcl_ConvertFileHandle _ANSI_ARGS_((Tcl_Interp *interp,
187 Tcl_GetDate _ANSI_ARGS_((char *p,
192 Tcl_ProcessSignal _ANSI_ARGS_((Tcl_Interp *interp,
196 Tcl_RegExpClean _ANSI_ARGS_((regexp_pt regExpPtr));
199 Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp,
205 Tcl_RegExpExecute _ANSI_ARGS_((Tcl_Interp *interp,
208 char *matchStrLower));
213 Tcl_ReturnDouble _ANSI_ARGS_((Tcl_Interp *interp,
217 Tcl_SetupFileEntry _ANSI_ARGS_((Tcl_Interp *interp,
223 Tcl_SetupSigInt _ANSI_ARGS_(());
226 * Definitions required to initialize all extended commands. These are either
227 * the command executors or initialization routines that do the command
228 * initialization. The initialization routines are used when there is more
229 * to initializing the command that just binding the command name to the
230 * executor. Usually, this means initializing some command local data via
231 * the ClientData mechanism. The command executors should be declared to be of
232 * type `Tcl_CmdProc', but this blows up some compilers, so they are declared
233 * with an ANSI prototype.
240 Tcl_BsearchCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
246 Tcl_ChmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
249 Tcl_ChownCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
252 Tcl_ChgrpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
258 Tcl_GetclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
261 Tcl_FmtclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
264 * from tclXcnvclock.c
267 Tcl_ConvertclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
273 Tcl_CommandloopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
279 Tcl_InitDebug _ANSI_ARGS_((Tcl_Interp *interp));
285 TclX_InitGeneral _ANSI_ARGS_((Tcl_Interp *interp));
291 Tcl_DupCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
297 Tcl_FcntlCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
300 * from tclXfilecmds.c
303 Tcl_PipeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
306 Tcl_CopyfileCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
309 Tcl_FstatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
312 Tcl_LgetsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
315 Tcl_FlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
318 Tcl_FunlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
321 * from tclXfilescan.c
324 Tcl_InitFilescan _ANSI_ARGS_((Tcl_Interp *interp));
330 Tcl_AcosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
333 Tcl_AsinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
336 Tcl_AtanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
339 Tcl_CosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
342 Tcl_SinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
345 Tcl_TanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
348 Tcl_CoshCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
351 Tcl_SinhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
354 Tcl_TanhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
357 Tcl_ExpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
360 Tcl_LogCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
363 Tcl_Log10Cmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
366 Tcl_SqrtCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
369 Tcl_FabsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
372 Tcl_FloorCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
375 Tcl_CeilCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
378 Tcl_FmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
381 Tcl_PowCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
388 Tcl_EchoCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
391 Tcl_InfoxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
394 Tcl_LoopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
400 Tcl_IdCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
406 Tcl_KeyldelCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
409 Tcl_KeylgetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
412 Tcl_KeylkeysCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
415 Tcl_KeylsetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
421 Tcl_LvarpopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
424 Tcl_LvarcatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
427 Tcl_LvarpushCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
430 Tcl_LemptyCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
436 Tcl_MaxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
439 Tcl_MinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
442 Tcl_RandomCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
448 Tcl_InitMsgCat _ANSI_ARGS_((Tcl_Interp *interp));
454 Tcl_ExeclCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
457 Tcl_ForkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
460 Tcl_WaitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
466 Tcl_InitProfile _ANSI_ARGS_((Tcl_Interp *interp));
472 Tcl_SelectCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
478 Tcl_InitSignalHandling _ANSI_ARGS_((Tcl_Interp *interp));
484 Tcl_CindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
487 Tcl_ClengthCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
490 Tcl_CrangeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
493 Tcl_ReplicateCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
496 Tcl_TranslitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
499 Tcl_CtypeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
505 Tcl_Demand_loadCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
508 Tcl_LoadlibindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
511 * from tclXunixcmds.c
514 Tcl_AlarmCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
517 Tcl_SleepCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
520 Tcl_SystemCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
523 Tcl_TimesCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
526 Tcl_UmaskCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
529 Tcl_LinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
532 Tcl_UnlinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
535 Tcl_MkdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
538 Tcl_RmdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));