]> git.zerfleddert.de Git - micropolis/blame - src/tclx/src/tclxint.h
Import Micropolis from http://www.donhopkins.com/home/micropolis/
[micropolis] / src / tclx / src / tclxint.h
CommitLineData
6a5fa4e0
MG
1/*
2 * tclExtdInt.h
3 *
4 * Standard internal include file for Extended Tcl library..
5 *-----------------------------------------------------------------------------
6 * Copyright 1992 Karl Lehenbauer and Mark Diekhans.
7 *
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
13 * implied warranty.
14 *-----------------------------------------------------------------------------
15 * $Id: tclExtdInt.h,v 2.0 1992/10/16 04:51:27 markd Rel $
16 *-----------------------------------------------------------------------------
17 */
18
19#ifndef TCLEXTDINT_H
20#define TCLEXTDINT_H
21
22#include "tclxtend.h"
23#include "tclint.h"
24#include "tclunix.h"
25#include <sys/param.h>
26#include <unistd.h>
27
28
29#ifdef TCL_NEED_SYS_SELECT_H
30# include "sys/select.h"
31#endif
32
33/*
34 * If tclUnix.h has already included time.h, don't include it again, some
35 * systems don't #ifdef inside of the file. On some systems, undef
36 * CLK_TCK (defined in tclUnix.h) to avoid an annoying warning about
37 * redefinition.
38 */
39#ifdef TCL_NEED_TIME_H
40# if TCL_SYS_TIME_H
41# ifdef TCL_DUP_CLK_TCK
42# undef CLK_TCK
43# endif
44# include <time.h>
45# endif
46#endif
47
48/*
49 * Precompute milliseconds-per-tick, the " + CLK_TCK / 2" bit gets it to
50 * round off instead of truncate. Take care of defining CLK_TCK if its not
51 * defined.
52 */
53#ifndef CLK_TCK
54# ifdef HZ
55# define CLK_TCK HZ
56# else
57# define CLK_TCK 60
58# endif
59#endif
60
61#define MS_PER_TICK ((1000 + CLK_TCK/2) / CLK_TCK)
62
63/*
64 * If tclUnix.h did not bring times.h, bring it in here.
65 */
66#if TCL_GETTOD
67# include <sys/times.h>
68#endif
69
70#include <values.h>
71#include <grp.h>
72/*
73 * On some systems this is not included by tclUnix.h.
74 */
75
76/*
77 * These should be take from an include file, but it got to be such a mess
78 * to get the include files right that they are here for good measure.
79 */
80struct tm *gmtime ();
81struct tm *localtime ();
82
83#ifndef MAXINT
84# define BITSPERBYTE 8
85# define BITS(type) (BITSPERBYTE * (int)sizeof(type))
86# define HIBITI ((unsigned int)(1 << BITS(int) - 1))
87# define MAXINT ((int)(~HIBITI))
88#endif
89
90#ifndef MININT
91# define MININT (-MAXINT)-1
92#endif
93
94#ifndef TRUE
95# define TRUE (1)
96# define FALSE (0)
97#endif
98
99/*
100 * Structure to hold a regular expression, plus a Boyer-Moore compiled
101 * pattern.
102 */
103
104typedef struct regexp_t {
105 regexp *progPtr;
106 char *boyerMoorePtr;
107 int noCase;
108 } regexp_t;
109typedef regexp_t *regexp_pt;
110/*
111 * Flags used by RegExpCompile:
112 */
113#define REXP_NO_CASE 1 /* Do matching regardless of case */
114#define REXP_BOTH_ALGORITHMS 2 /* Use boyer-moore along with regexp */
115
116/*
117 * Data structure to control a dynamic buffer. These buffers are primarly
118 * used for reading things from files, were the maximum size is not known
119 * in advance, and the buffer must grow. These are used in the case were
120 * the value is not to be returned as the interpreter result.
121 */
122
123#define INIT_DYN_BUFFER_SIZE 256
124
125typedef struct dynamicBuf_t {
126 char buf [INIT_DYN_BUFFER_SIZE]; /* Initial buffer area. */
127 char *ptr; /* Pointer to buffer area. */
128 int size; /* Current size of buffer. */
129 int len; /* Current string length (less '\0') */
130 } dynamicBuf_t;
131
132/*
133 * Used to return argument messages by most commands.
134 */
135extern char *tclXWrongArgs;
136
137/*
138 * Macros to do string compares. They pre-check the first character before
139 * checking of the strings are equal.
140 */
141
142#define STREQU(str1, str2) \
143 (((str1) [0] == (str2) [0]) && (strcmp (str1, str2) == 0))
144#define STRNEQU(str1, str2, cnt) \
145 (((str1) [0] == (str2) [0]) && (strncmp (str1, str2, cnt) == 0))
146
147/*
148 * Prototypes for utility procedures.
149 */
150void
151Tcl_DynBufInit _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
152
153void
154Tcl_DynBufFree _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
155
156void
157Tcl_DynBufReturn _ANSI_ARGS_((Tcl_Interp *interp,
158 dynamicBuf_t *dynBufPtr));
159
160void
161Tcl_DynBufAppend _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
162 char *newStr));
163
164void
165Tcl_ExpandDynBuf _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
166 int appendSize));
167
168int
169Tcl_DynamicFgets _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
170 FILE *filePtr,
171 int append));
172
173int
174Tcl_ConvertFileHandle _ANSI_ARGS_((Tcl_Interp *interp,
175 char *handle));
176
177time_t
178Tcl_GetDate _ANSI_ARGS_((char *p,
179 time_t now,
180 long zone));
181
182int
183Tcl_ProcessSignal _ANSI_ARGS_((Tcl_Interp *interp,
184 int cmdResultCode));
185
186void
187Tcl_RegExpClean _ANSI_ARGS_((regexp_pt regExpPtr));
188
189int
190Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp,
191 regexp_pt regExpPtr,
192 char *expression,
193 int flags));
194
195int
196Tcl_RegExpExecute _ANSI_ARGS_((Tcl_Interp *interp,
197 regexp_pt regExpPtr,
198 char *matchStrIn,
199 char *matchStrLower));
200void
201Tcl_ResetSignals ();
202
203int
204Tcl_ReturnDouble _ANSI_ARGS_((Tcl_Interp *interp,
205 double number));
206
207int
208Tcl_SetupFileEntry _ANSI_ARGS_((Tcl_Interp *interp,
209 int fileNum,
210 int readable,
211 int writable));
212
213/*
214 * Definitions required to initialize all extended commands. These are either
215 * the command executors or initialization routines that do the command
216 * initialization. The initialization routines are used when there is more
217 * to initializing the command that just binding the command name to the
218 * executor. Usually, this means initializing some command local data via
219 * the ClientData mechanism. The command executors should be declared to be of
220 * type `Tcl_CmdProc', but this blows up some compilers, so they are declared
221 * with an ANSI prototype.
222 */
223
224/*
225 * from tclXbsearch.c
226 */
227extern int
228Tcl_BsearchCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
229
230/*
231 * from tclXchmod.c
232 */
233extern int
234Tcl_ChmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
235
236extern int
237Tcl_ChownCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
238
239extern int
240Tcl_ChgrpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
241
242/*
243 * from tclXclock.c
244 */
245extern int
246Tcl_GetclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
247
248extern int
249Tcl_FmtclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
250
251/*
252 * from tclXcnvclock.c
253 */
254extern int
255Tcl_ConvertclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
256
257/*
258 * from tclXcmdloop.c
259 */
260extern int
261Tcl_CommandloopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
262
263/*
264 * from tclXdebug.c
265 */
266extern void
267Tcl_InitDebug _ANSI_ARGS_((Tcl_Interp *interp));
268
269/*
270 * from tclXdup.c
271 */
272extern int
273Tcl_DupCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
274
275/*
276 * from tclXfcntl.c
277 */
278extern int
279Tcl_FcntlCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
280
281/*
282 * from tclXfilecmds.c
283 */
284extern int
285Tcl_PipeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
286
287extern int
288Tcl_CopyfileCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
289
290extern int
291Tcl_FstatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
292
293extern int
294Tcl_LgetsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
295
296extern int
297Tcl_FlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
298
299extern int
300Tcl_FunlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
301
302/*
303 * from tclXfilescan.c
304 */
305extern void
306Tcl_InitFilescan _ANSI_ARGS_((Tcl_Interp *interp));
307
308/*
309 * from tclXfmath.c
310 */
311extern int
312Tcl_AcosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
313
314extern int
315Tcl_AsinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
316
317extern int
318Tcl_AtanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
319
320extern int
321Tcl_CosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
322
323extern int
324Tcl_SinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
325
326extern int
327Tcl_TanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
328
329extern int
330Tcl_CoshCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
331
332extern int
333Tcl_SinhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
334
335extern int
336Tcl_TanhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
337
338extern int
339Tcl_ExpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
340
341extern int
342Tcl_LogCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
343
344extern int
345Tcl_Log10Cmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
346
347extern int
348Tcl_SqrtCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
349
350extern int
351Tcl_FabsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
352
353extern int
354Tcl_FloorCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
355
356extern int
357Tcl_CeilCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
358
359extern int
360Tcl_FmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
361
362extern int
363Tcl_PowCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
364
365/*
366 * from tclXgeneral.c
367 */
368
369extern int
370Tcl_EchoCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
371
372extern int
373Tcl_InfoxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
374
375extern int
376Tcl_LoopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
377
378/*
379 * from tclXid.c
380 */
381extern int
382Tcl_IdCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
383
384/*
385 * from tclXkeylist.c
386 */
387extern int
388Tcl_KeyldelCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
389
390extern int
391Tcl_KeylgetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
392
393extern int
394Tcl_KeylkeysCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
395
396extern int
397Tcl_KeylsetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
398
399/*
400 * from tclXlist.c
401 */
402extern int
403Tcl_LvarpopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
404
405extern int
406Tcl_LvarcatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
407
408extern int
409Tcl_LvarpushCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
410
411extern int
412Tcl_LemptyCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
413
414/*
415 * from tclXmath.c
416 */
417extern int
418Tcl_MaxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
419
420extern int
421Tcl_MinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
422
423extern int
424Tcl_RandomCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
425
426/*
427 * from tclXmsgcat.c
428 */
429extern void
430Tcl_InitMsgCat _ANSI_ARGS_((Tcl_Interp *interp));
431
432/*
433 * from tclXprocess.c
434 */
435extern int
436Tcl_ExeclCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
437
438extern int
439Tcl_ForkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
440
441extern int
442Tcl_WaitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
443
444/*
445 * from tclXprofile.c
446 */
447void
448Tcl_InitProfile _ANSI_ARGS_((Tcl_Interp *interp));
449
450/*
451 * from tclXselect.c
452 */
453extern int
454Tcl_SelectCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
455
456/*
457 * from tclXsignal.c
458 */
459extern void
460Tcl_InitSignalHandling _ANSI_ARGS_((Tcl_Interp *interp));
461
462/*
463 * from tclXstring.c
464 */
465extern int
466Tcl_CindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
467
468extern int
469Tcl_ClengthCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
470
471extern int
472Tcl_CrangeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
473
474extern int
475Tcl_ReplicateCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
476
477extern int
478Tcl_TranslitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
479
480extern int
481Tcl_CtypeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
482
483/*
484 * from tclXlib.c
485 */
486extern int
487Tcl_Demand_loadCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
488
489extern int
490Tcl_LoadlibindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
491
492/*
493 * from tclXunixcmds.c
494 */
495extern int
496Tcl_AlarmCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
497
498extern int
499Tcl_SleepCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
500
501extern int
502Tcl_SystemCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
503
504extern int
505Tcl_TimesCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
506
507extern int
508Tcl_UmaskCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
509
510extern int
511Tcl_LinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
512
513extern int
514Tcl_UnlinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
515
516extern int
517Tcl_MkdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
518
519extern int
520Tcl_RmdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
521
522#endif
Impressum, Datenschutz