]> git.zerfleddert.de Git - micropolis/blob - src/tclx/src/tclxint.h
6a1dfee2f54a69a3a3eb62c55bf468adb2213e26
[micropolis] / src / tclx / src / tclxint.h
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 */
80 struct tm *gmtime ();
81 struct 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
104 typedef struct regexp_t {
105 regexp *progPtr;
106 char *boyerMoorePtr;
107 int noCase;
108 } regexp_t;
109 typedef 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
125 typedef 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 */
135 extern 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 */
150 void
151 Tcl_DynBufInit _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
152
153 void
154 Tcl_DynBufFree _ANSI_ARGS_((dynamicBuf_t *dynBufPtr));
155
156 void
157 Tcl_DynBufReturn _ANSI_ARGS_((Tcl_Interp *interp,
158 dynamicBuf_t *dynBufPtr));
159
160 void
161 Tcl_DynBufAppend _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
162 char *newStr));
163
164 void
165 Tcl_ExpandDynBuf _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
166 int appendSize));
167
168 int
169 Tcl_DynamicFgets _ANSI_ARGS_((dynamicBuf_t *dynBufPtr,
170 FILE *filePtr,
171 int append));
172
173 int
174 Tcl_ConvertFileHandle _ANSI_ARGS_((Tcl_Interp *interp,
175 char *handle));
176
177 time_t
178 Tcl_GetDate _ANSI_ARGS_((char *p,
179 time_t now,
180 long zone));
181
182 int
183 Tcl_ProcessSignal _ANSI_ARGS_((Tcl_Interp *interp,
184 int cmdResultCode));
185
186 void
187 Tcl_RegExpClean _ANSI_ARGS_((regexp_pt regExpPtr));
188
189 int
190 Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp,
191 regexp_pt regExpPtr,
192 char *expression,
193 int flags));
194
195 int
196 Tcl_RegExpExecute _ANSI_ARGS_((Tcl_Interp *interp,
197 regexp_pt regExpPtr,
198 char *matchStrIn,
199 char *matchStrLower));
200 void
201 Tcl_ResetSignals ();
202
203 int
204 Tcl_ReturnDouble _ANSI_ARGS_((Tcl_Interp *interp,
205 double number));
206
207 int
208 Tcl_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 */
227 extern int
228 Tcl_BsearchCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
229
230 /*
231 * from tclXchmod.c
232 */
233 extern int
234 Tcl_ChmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
235
236 extern int
237 Tcl_ChownCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
238
239 extern int
240 Tcl_ChgrpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
241
242 /*
243 * from tclXclock.c
244 */
245 extern int
246 Tcl_GetclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
247
248 extern int
249 Tcl_FmtclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
250
251 /*
252 * from tclXcnvclock.c
253 */
254 extern int
255 Tcl_ConvertclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
256
257 /*
258 * from tclXcmdloop.c
259 */
260 extern int
261 Tcl_CommandloopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
262
263 /*
264 * from tclXdebug.c
265 */
266 extern void
267 Tcl_InitDebug _ANSI_ARGS_((Tcl_Interp *interp));
268
269 /*
270 * from tclXdup.c
271 */
272 extern int
273 Tcl_DupCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
274
275 /*
276 * from tclXfcntl.c
277 */
278 extern int
279 Tcl_FcntlCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
280
281 /*
282 * from tclXfilecmds.c
283 */
284 extern int
285 Tcl_PipeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
286
287 extern int
288 Tcl_CopyfileCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
289
290 extern int
291 Tcl_FstatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
292
293 extern int
294 Tcl_LgetsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
295
296 extern int
297 Tcl_FlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
298
299 extern int
300 Tcl_FunlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
301
302 /*
303 * from tclXfilescan.c
304 */
305 extern void
306 Tcl_InitFilescan _ANSI_ARGS_((Tcl_Interp *interp));
307
308 /*
309 * from tclXfmath.c
310 */
311 extern int
312 Tcl_AcosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
313
314 extern int
315 Tcl_AsinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
316
317 extern int
318 Tcl_AtanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
319
320 extern int
321 Tcl_CosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
322
323 extern int
324 Tcl_SinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
325
326 extern int
327 Tcl_TanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
328
329 extern int
330 Tcl_CoshCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
331
332 extern int
333 Tcl_SinhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
334
335 extern int
336 Tcl_TanhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
337
338 extern int
339 Tcl_ExpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
340
341 extern int
342 Tcl_LogCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
343
344 extern int
345 Tcl_Log10Cmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
346
347 extern int
348 Tcl_SqrtCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
349
350 extern int
351 Tcl_FabsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
352
353 extern int
354 Tcl_FloorCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
355
356 extern int
357 Tcl_CeilCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
358
359 extern int
360 Tcl_FmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
361
362 extern int
363 Tcl_PowCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
364
365 /*
366 * from tclXgeneral.c
367 */
368
369 extern int
370 Tcl_EchoCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
371
372 extern int
373 Tcl_InfoxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
374
375 extern int
376 Tcl_LoopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
377
378 /*
379 * from tclXid.c
380 */
381 extern int
382 Tcl_IdCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
383
384 /*
385 * from tclXkeylist.c
386 */
387 extern int
388 Tcl_KeyldelCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
389
390 extern int
391 Tcl_KeylgetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
392
393 extern int
394 Tcl_KeylkeysCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
395
396 extern int
397 Tcl_KeylsetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
398
399 /*
400 * from tclXlist.c
401 */
402 extern int
403 Tcl_LvarpopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
404
405 extern int
406 Tcl_LvarcatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
407
408 extern int
409 Tcl_LvarpushCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
410
411 extern int
412 Tcl_LemptyCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
413
414 /*
415 * from tclXmath.c
416 */
417 extern int
418 Tcl_MaxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
419
420 extern int
421 Tcl_MinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
422
423 extern int
424 Tcl_RandomCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
425
426 /*
427 * from tclXmsgcat.c
428 */
429 extern void
430 Tcl_InitMsgCat _ANSI_ARGS_((Tcl_Interp *interp));
431
432 /*
433 * from tclXprocess.c
434 */
435 extern int
436 Tcl_ExeclCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
437
438 extern int
439 Tcl_ForkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
440
441 extern int
442 Tcl_WaitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
443
444 /*
445 * from tclXprofile.c
446 */
447 void
448 Tcl_InitProfile _ANSI_ARGS_((Tcl_Interp *interp));
449
450 /*
451 * from tclXselect.c
452 */
453 extern int
454 Tcl_SelectCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
455
456 /*
457 * from tclXsignal.c
458 */
459 extern void
460 Tcl_InitSignalHandling _ANSI_ARGS_((Tcl_Interp *interp));
461
462 /*
463 * from tclXstring.c
464 */
465 extern int
466 Tcl_CindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
467
468 extern int
469 Tcl_ClengthCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
470
471 extern int
472 Tcl_CrangeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
473
474 extern int
475 Tcl_ReplicateCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
476
477 extern int
478 Tcl_TranslitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
479
480 extern int
481 Tcl_CtypeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
482
483 /*
484 * from tclXlib.c
485 */
486 extern int
487 Tcl_Demand_loadCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
488
489 extern int
490 Tcl_LoadlibindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
491
492 /*
493 * from tclXunixcmds.c
494 */
495 extern int
496 Tcl_AlarmCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
497
498 extern int
499 Tcl_SleepCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
500
501 extern int
502 Tcl_SystemCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
503
504 extern int
505 Tcl_TimesCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
506
507 extern int
508 Tcl_UmaskCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
509
510 extern int
511 Tcl_LinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
512
513 extern int
514 Tcl_UnlinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
515
516 extern int
517 Tcl_MkdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
518
519 extern int
520 Tcl_RmdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**));
521
522 #endif
Impressum, Datenschutz