|
|
1.1 root 1: /*
2: * tcl.h --
3: *
4: * This header file describes the externally-visible facilities
5: * of the Tcl interpreter.
6: *
7: * Copyright 1987 Regents of the University of California
8: * Permission to use, copy, modify, and distribute this
9: * software and its documentation for any purpose and without
10: * fee is hereby granted, provided that the above copyright
11: * notice appear in all copies. The University of California
12: * makes no representations about the suitability of this
13: * software for any purpose. It is provided "as is" without
14: * express or implied warranty.
15: *
16: * $Header: /sprite/src/lib/tcl/RCS/tcl.h,v 1.35 90/04/18 16:05:56 ouster Exp $ SPRITE (Berkeley)
17: */
18:
19: #ifndef _TCL
20: #define _TCL
21:
22: /*
23: * Data structures defined opaquely in this module. The definitions
24: * below just provide dummy types. A few fields are made visible in
25: * Tcl_Interp structures, namely those for returning string values.
26: * Note: any change to the Tcl_Interp definition below must be mirrored
27: * in the "real" definition in tclInt.h.
28: */
29:
30: typedef struct Tcl_Interp{
31: char *result; /* Points to result string returned by last
32: * command. */
33: int dynamic; /* Non-zero means result is dynamically-
34: * allocated and must be freed by Tcl_Eval
35: * before executing the next command. */
36: int errorLine; /* When TCL_ERROR is returned, this gives
37: * the line number within the command where
38: * the error occurred (1 means first line). */
39: } Tcl_Interp;
40:
41: typedef int *Tcl_Trace;
42: typedef int *Tcl_CmdBuf;
43:
44: /*
45: * When a TCL command returns, the string pointer interp->result points to
46: * a string containing return information from the command. In addition,
47: * the command procedure returns an integer value, which is one of the
48: * following:
49: *
50: * TCL_OK Command completed normally; interp->result contains
51: * the command's result.
52: * TCL_ERROR The command couldn't be completed successfully;
53: * interp->result describes what went wrong.
54: * TCL_RETURN The command requests that the current procedure
55: * return; interp->result contains the procedure's
56: * return value.
57: * TCL_BREAK The command requests that the innermost loop
58: * be exited; interp->result is meaningless.
59: * TCL_CONTINUE Go on to the next iteration of the current loop;
60: * interp->result is meaninless.
61: */
62:
63: #define TCL_OK 0
64: #define TCL_ERROR 1
65: #define TCL_RETURN 2
66: #define TCL_BREAK 3
67: #define TCL_CONTINUE 4
68:
69: #define TCL_RESULT_SIZE 199
70:
71: /*
72: * Flag values passed to Tcl_Eval (see the man page for details; also
73: * see tclInt.h for additional flags that are only used internally by
74: * Tcl):
75: */
76:
77: #define TCL_BRACKET_TERM 1
78:
79: /*
80: * Flag value passed to Tcl_RecordAndEval to request no evaluation
81: * (record only).
82: */
83:
84: #define TCL_NO_EVAL -1
85:
86: /*
87: * Flag values passed to Tcl_Return (see the man page for details):
88: */
89:
90: #define TCL_STATIC 0
91: #define TCL_DYNAMIC 1
92: #define TCL_VOLATILE 2
93:
94: #ifndef _CLIENTDATA
95: typedef int *ClientData;
96: #define _CLIENTDATA
97: #endif
98:
99: /*
100: * Exported Tcl procedures:
101: */
102:
103: typedef int (*Tcl_Cmdfn)(ClientData, Tcl_Interp *, int, char **);
104: typedef void (*Tcl_Tracefn)(ClientData, Tcl_Interp *, int, char *, Tcl_Cmdfn, ClientData, int, char **);
105: extern char * Tcl_AssembleCmd(Tcl_CmdBuf, char *);
106: extern void Tcl_AddErrorInfo(Tcl_Interp *, char *);
107: extern char Tcl_Backslash(char *, int *);
108: extern char * Tcl_Concat(int, char **);
109: extern Tcl_CmdBuf Tcl_CreateCmdBuf(void);
110: extern void Tcl_CreateCommand(Tcl_Interp *, char *, Tcl_Cmdfn, ClientData, void (*)(ClientData));
111: extern Tcl_Interp * Tcl_CreateInterp(void);
112: extern Tcl_Trace Tcl_CreateTrace(Tcl_Interp *, int, Tcl_Tracefn, ClientData);
113: extern void Tcl_DeleteCmdBuf(Tcl_CmdBuf);
114: extern void Tcl_DeleteCommand(Tcl_Interp *, char *);
115: extern void Tcl_DeleteInterp(Tcl_Interp *);
116: extern void Tcl_DeleteTrace(Tcl_Interp *, Tcl_Trace);
117: extern int Tcl_Eval(Tcl_Interp *, char *, int, char **);
118: extern int Tcl_Expr(Tcl_Interp *, char *, int *);
119: extern char * Tcl_GetVar(Tcl_Interp *, char *, int);
120: extern char * Tcl_Merge(int, char **);
121: extern char * Tcl_ParseVar(Tcl_Interp *, char *, char **);
122: extern int Tcl_RecordAndEval(Tcl_Interp *, char *, int);
123: extern void Tcl_Return(Tcl_Interp *, char *, int);
124: extern void Tcl_SetVar(Tcl_Interp *, char *, char *, int);
125: extern int Tcl_SplitList(Tcl_Interp *, char *, int *, char ***);
126: extern int Tcl_StringMatch(char *, char *);
127: extern char * Tcl_TildeSubst(Tcl_Interp *, char *);
128: extern void Tcl_WatchInterp(Tcl_Interp *, void (*)(void), ClientData);
129:
130: /*
131: * Built-in Tcl command procedures:
132: */
133:
134: extern int Tcl_BreakCmd(ClientData , Tcl_Interp *, int , char **);
135: extern int Tcl_CaseCmd(ClientData , Tcl_Interp *, int , char **);
136: extern int Tcl_CatchCmd(ClientData , Tcl_Interp *, int , char **);
137: extern int Tcl_ConcatCmd(ClientData , Tcl_Interp *, int , char **);
138: extern int Tcl_ContinueCmd(ClientData , Tcl_Interp *, int , char **);
139: extern int Tcl_ErrorCmd(ClientData , Tcl_Interp *, int , char **);
140: extern int Tcl_EvalCmd(ClientData , Tcl_Interp *, int , char **);
141: extern int Tcl_ExecCmd(ClientData , Tcl_Interp *, int , char **);
142: extern int Tcl_ExprCmd(ClientData , Tcl_Interp *, int , char **);
143: extern int Tcl_FileCmd(ClientData , Tcl_Interp *, int , char **);
144: extern int Tcl_ForCmd(ClientData , Tcl_Interp *, int , char **);
145: extern int Tcl_ForeachCmd(ClientData , Tcl_Interp *, int , char **);
146: extern int Tcl_FormatCmd(ClientData , Tcl_Interp *, int , char **);
147: extern int Tcl_GlobCmd(ClientData , Tcl_Interp *, int , char **);
148: extern int Tcl_GlobalCmd(ClientData , Tcl_Interp *, int , char **);
149: extern int Tcl_HistoryCmd(ClientData , Tcl_Interp *, int , char **);
150: extern int Tcl_IfCmd(ClientData , Tcl_Interp *, int , char **);
151: extern int Tcl_InfoCmd(ClientData , Tcl_Interp *, int , char **);
152: extern int Tcl_IndexCmd(ClientData , Tcl_Interp *, int , char **);
153: extern int Tcl_LengthCmd(ClientData , Tcl_Interp *, int , char **);
154: extern int Tcl_ListCmd(ClientData , Tcl_Interp *, int , char **);
155: extern int Tcl_PrintCmd(ClientData , Tcl_Interp *, int , char **);
156: extern int Tcl_ProcCmd(ClientData , Tcl_Interp *, int , char **);
157: extern int Tcl_RangeCmd(ClientData , Tcl_Interp *, int , char **);
158: extern int Tcl_RenameCmd(ClientData , Tcl_Interp *, int , char **);
159: extern int Tcl_ReturnCmd(ClientData , Tcl_Interp *, int , char **);
160: extern int Tcl_ScanCmd(ClientData , Tcl_Interp *, int , char **);
161: extern int Tcl_SetCmd(ClientData , Tcl_Interp *, int , char **);
162: extern int Tcl_SourceCmd(ClientData , Tcl_Interp *, int , char **);
163: extern int Tcl_StringCmd(ClientData , Tcl_Interp *, int , char **);
164: extern int Tcl_TimeCmd(ClientData , Tcl_Interp *, int , char **);
165: extern int Tcl_UplevelCmd(ClientData , Tcl_Interp *, int , char **);
166:
167: /*
168: * Miscellaneous declarations (to allow Tcl to be used stand-alone,
169: * without the rest of Sprite).
170: */
171:
172: #ifndef NULL
173: #define NULL 0
174: #endif
175:
176: #endif _TCL
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.