Annotation of micropolis/src/tcl/tcl.h, revision 1.1.1.1

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-1991 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: /user6/ouster/tcl/RCS/tcl.h,v 1.84 92/08/07 08:21:34 ouster Exp $ SPRITE (Berkeley)
                     17:  */
                     18: 
                     19: #ifndef _TCL
                     20: #define _TCL
                     21: 
                     22: #define TCL_VERSION "6.4"
                     23: 
                     24: /*
                     25:  * Definitions that allow this header file to be used either with or
                     26:  * without ANSI C features like function prototypes.
                     27:  */
                     28: 
                     29: #undef _ANSI_ARGS_
                     30: #undef const
                     31: #if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus)
                     32: #   define _ANSI_ARGS_(x)      x
                     33: #   define CONST const
                     34: #   ifdef __cplusplus
                     35: #       define VARARGS (...)
                     36: #   else
                     37: #       define VARARGS ()
                     38: #   endif
                     39: #else
                     40: #   define _ANSI_ARGS_(x)      ()
                     41: #   define CONST
                     42: #endif
                     43: 
                     44: #ifdef __cplusplus
                     45: #   define EXTERN extern "C"
                     46: #else
                     47: #   define EXTERN extern
                     48: #endif
                     49: 
                     50: /*
                     51:  * Miscellaneous declarations (to allow Tcl to be used stand-alone,
                     52:  * without the rest of Sprite).
                     53:  */
                     54: 
                     55: #ifndef NULL
                     56: #define NULL 0
                     57: #endif
                     58: 
                     59: #ifndef _CLIENTDATA
                     60: typedef int *ClientData;
                     61: #define _CLIENTDATA
                     62: #endif
                     63: 
                     64: /*
                     65:  * Data structures defined opaquely in this module.  The definitions
                     66:  * below just provide dummy types.  A few fields are made visible in
                     67:  * Tcl_Interp structures, namely those for returning string values.
                     68:  * Note:  any change to the Tcl_Interp definition below must be mirrored
                     69:  * in the "real" definition in tclInt.h.
                     70:  */
                     71: 
                     72: typedef struct Tcl_Interp{
                     73:     char *result;              /* Points to result string returned by last
                     74:                                 * command. */
                     75:     void (*freeProc) _ANSI_ARGS_((char *blockPtr));
                     76:                                /* Zero means result is statically allocated.
                     77:                                 * If non-zero, gives address of procedure
                     78:                                 * to invoke to free the result.  Must be
                     79:                                 * freed by Tcl_Eval before executing next
                     80:                                 * command. */
                     81:     int errorLine;             /* When TCL_ERROR is returned, this gives
                     82:                                 * the line number within the command where
                     83:                                 * the error occurred (1 means first line). */
                     84: } Tcl_Interp;
                     85: 
                     86: typedef int *Tcl_Trace;
                     87: typedef int *Tcl_CmdBuf;
                     88: 
                     89: /*
                     90:  * When a TCL command returns, the string pointer interp->result points to
                     91:  * a string containing return information from the command.  In addition,
                     92:  * the command procedure returns an integer value, which is one of the
                     93:  * following:
                     94:  *
                     95:  * TCL_OK              Command completed normally;  interp->result contains
                     96:  *                     the command's result.
                     97:  * TCL_ERROR           The command couldn't be completed successfully;
                     98:  *                     interp->result describes what went wrong.
                     99:  * TCL_RETURN          The command requests that the current procedure
                    100:  *                     return;  interp->result contains the procedure's
                    101:  *                     return value.
                    102:  * TCL_BREAK           The command requests that the innermost loop
                    103:  *                     be exited;  interp->result is meaningless.
                    104:  * TCL_CONTINUE                Go on to the next iteration of the current loop;
                    105:  *                     interp->result is meaninless.
                    106:  */
                    107: 
                    108: #define TCL_OK         0
                    109: #define TCL_ERROR      1
                    110: #define TCL_RETURN     2
                    111: #define TCL_BREAK      3
                    112: #define TCL_CONTINUE   4
                    113: 
                    114: #define TCL_RESULT_SIZE 199
                    115: 
                    116: /*
                    117:  * Procedure types defined by Tcl:
                    118:  */
                    119: 
                    120: typedef void (Tcl_CmdDeleteProc) _ANSI_ARGS_((ClientData clientData));
                    121: typedef int (Tcl_CmdProc) _ANSI_ARGS_((ClientData clientData,
                    122:        Tcl_Interp *interp, int argc, char *argv[]));
                    123: typedef void (Tcl_CmdTraceProc) _ANSI_ARGS_((ClientData clientData,
                    124:        Tcl_Interp *interp, int level, char *command, Tcl_CmdProc *proc,
                    125:        ClientData cmdClientData, int argc, char *argv[]));
                    126: typedef void (Tcl_FreeProc) _ANSI_ARGS_((char *blockPtr));
                    127: typedef char *(Tcl_VarTraceProc) _ANSI_ARGS_((ClientData clientData,
                    128:        Tcl_Interp *interp, char *name1, char *name2, int flags));
                    129: 
                    130: /*
                    131:  * Flag values passed to Tcl_Eval (see the man page for details;  also
                    132:  * see tclInt.h for additional flags that are only used internally by
                    133:  * Tcl):
                    134:  */
                    135: 
                    136: #define TCL_BRACKET_TERM       1
                    137: 
                    138: /*
                    139:  * Flag that may be passed to Tcl_ConvertElement to force it not to
                    140:  * output braces (careful!  if you change this flag be sure to change
                    141:  * the definitions at the front of tclUtil.c).
                    142:  */
                    143: 
                    144: #define TCL_DONT_USE_BRACES    1
                    145: 
                    146: /*
                    147:  * Flag value passed to Tcl_RecordAndEval to request no evaluation
                    148:  * (record only).
                    149:  */
                    150: 
                    151: #define TCL_NO_EVAL            -1
                    152: 
                    153: /*
                    154:  * Specil freeProc values that may be passed to Tcl_SetResult (see
                    155:  * the man page for details):
                    156:  */
                    157: 
                    158: #define TCL_VOLATILE   ((Tcl_FreeProc *) -1)
                    159: #define TCL_STATIC     ((Tcl_FreeProc *) 0)
                    160: #define TCL_DYNAMIC    ((Tcl_FreeProc *) free)
                    161: 
                    162: /*
                    163:  * Flag values passed to variable-related procedures.
                    164:  */
                    165: 
                    166: #define TCL_GLOBAL_ONLY                1
                    167: #define TCL_APPEND_VALUE       2
                    168: #define TCL_LIST_ELEMENT       4
                    169: #define TCL_NO_SPACE           8
                    170: #define TCL_TRACE_READS                0x10
                    171: #define TCL_TRACE_WRITES       0x20
                    172: #define TCL_TRACE_UNSETS       0x40
                    173: #define TCL_TRACE_DESTROYED    0x80
                    174: #define TCL_INTERP_DESTROYED   0x100
                    175: #define TCL_LEAVE_ERR_MSG      0x200
                    176: 
                    177: /*
                    178:  * Additional flag passed back to variable watchers.  This flag must
                    179:  * not overlap any of the TCL_TRACE_* flags defined above or the
                    180:  * TRACE_* flags defined in tclInt.h.
                    181:  */
                    182: 
                    183: #define TCL_VARIABLE_UNDEFINED 8
                    184: 
                    185: /*
                    186:  * The following declarations either map ckalloc and ckfree to
                    187:  * malloc and free, or they map them to procedures with all sorts
                    188:  * of debugging hooks defined in tclCkalloc.c.
                    189:  */
                    190: 
                    191: #ifdef TCL_MEM_DEBUG
                    192: 
                    193: EXTERN char *          Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size,
                    194:                            char *file, int line));
                    195: EXTERN int             Tcl_DbCkfree _ANSI_ARGS_((char *ptr,
                    196:                            char *file, int line));
                    197: #  define ckalloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__)
                    198: #  define ckfree(x)  Tcl_DbCkfree(x, __FILE__, __LINE__)
                    199: 
                    200: #else
                    201: 
                    202: #  define ckalloc(x) malloc(x)
                    203: #  define ckfree(x)  free(x)
                    204: 
                    205: #endif /* TCL_MEM_DEBUG */
                    206: 
                    207: /*
                    208:  * Macro to free up result of interpreter.
                    209:  */
                    210: 
                    211: #define Tcl_FreeResult(interp)                                 \
                    212:     if ((interp)->freeProc != 0) {                             \
                    213:        if ((interp)->freeProc == (Tcl_FreeProc *) free) {      \
                    214:            ckfree((interp)->result);                           \
                    215:        } else {                                                \
                    216:            (*(interp)->freeProc)((interp)->result);            \
                    217:        }                                                       \
                    218:        (interp)->freeProc = 0;                                 \
                    219:     }
                    220: 
                    221: /*
                    222:  * Exported Tcl procedures:
                    223:  */
                    224: 
                    225: EXTERN void            Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp *interp,
                    226:                            char *string, int noSep));
                    227: EXTERN void            Tcl_AppendResult _ANSI_ARGS_((Tcl_Interp *interp, ...));
                    228: EXTERN char *          Tcl_AssembleCmd _ANSI_ARGS_((Tcl_CmdBuf buffer,
                    229:                            char *string));
                    230: EXTERN void            Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp *interp,
                    231:                            char *message));
                    232: EXTERN char            Tcl_Backslash _ANSI_ARGS_((char *src,
                    233:                            int *readPtr));
                    234: EXTERN char *          Tcl_Concat _ANSI_ARGS_((int argc, char **argv));
                    235: EXTERN int             Tcl_ConvertElement _ANSI_ARGS_((char *src,
                    236:                            char *dst, int flags));
                    237: EXTERN Tcl_CmdBuf      Tcl_CreateCmdBuf _ANSI_ARGS_((void));
                    238: EXTERN void            Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp,
                    239:                            char *cmdName, Tcl_CmdProc *proc,
                    240:                            ClientData clientData,
                    241:                            Tcl_CmdDeleteProc *deleteProc));
                    242: EXTERN Tcl_Interp *    Tcl_CreateInterp _ANSI_ARGS_((void));
                    243: EXTERN int             Tcl_CreatePipeline _ANSI_ARGS_((Tcl_Interp *interp,
                    244:                            int argc, char **argv, int **pidArrayPtr,
                    245:                            int *inPipePtr, int *outPipePtr,
                    246:                            int *errFilePtr));
                    247: EXTERN Tcl_Trace       Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp *interp,
                    248:                            int level, Tcl_CmdTraceProc *proc,
                    249:                            ClientData clientData));
                    250: EXTERN void            Tcl_DeleteCmdBuf _ANSI_ARGS_((Tcl_CmdBuf buffer));
                    251: EXTERN int             Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp *interp,
                    252:                            char *cmdName));
                    253: EXTERN void            Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp *interp));
                    254: EXTERN void            Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp *interp,
                    255:                            Tcl_Trace trace));
                    256: EXTERN void            Tcl_DetachPids _ANSI_ARGS_((int numPids, int *pidPtr));
                    257: EXTERN int             Tcl_DumpActiveMemory _ANSI_ARGS_((char *fileName));
                    258: EXTERN char *          Tcl_ErrnoId _ANSI_ARGS_((void));
                    259: EXTERN int             Tcl_Eval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd,
                    260:                            int flags, char **termPtr));
                    261: EXTERN int             Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp *interp,
                    262:                            char *fileName));
                    263: EXTERN int             Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp *interp,
                    264:                            char *string, int *ptr));
                    265: EXTERN int             Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp *interp,
                    266:                            char *string, double *ptr));
                    267: EXTERN int             Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp *interp,
                    268:                            char *string, long *ptr));
                    269: EXTERN int             Tcl_ExprString _ANSI_ARGS_((Tcl_Interp *interp,
                    270:                            char *string));
                    271: EXTERN int             Tcl_Fork _ANSI_ARGS_((void));
                    272: EXTERN int             Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp *interp,
                    273:                            char *string, int *boolPtr));
                    274: EXTERN int             Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp *interp,
                    275:                            char *string, double *doublePtr));
                    276: EXTERN int             Tcl_GetInt _ANSI_ARGS_((Tcl_Interp *interp,
                    277:                            char *string, int *intPtr));
                    278: EXTERN char *          Tcl_GetVar _ANSI_ARGS_((Tcl_Interp *interp,
                    279:                            char *varName, int flags));
                    280: EXTERN char *          Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
                    281:                            char *name1, char *name2, int flags));
                    282: EXTERN int             Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp *interp,
                    283:                            char *command));
                    284: EXTERN void            Tcl_InitHistory _ANSI_ARGS_((Tcl_Interp *interp));
                    285: EXTERN void            Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp *interp));
                    286: EXTERN char *          Tcl_Merge _ANSI_ARGS_((int argc, char **argv));
                    287: EXTERN char *          Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp *interp,
                    288:                            char *string, char **termPtr));
                    289: EXTERN int             Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp *interp,
                    290:                            char *cmd, int flags));
                    291: EXTERN void            Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp *interp));
                    292: #define Tcl_Return Tcl_SetResult
                    293: EXTERN int             Tcl_ScanElement _ANSI_ARGS_((char *string,
                    294:                            int *flagPtr));
                    295: EXTERN void            Tcl_SetErrorCode _ANSI_ARGS_((Tcl_Interp *interp, ...));
                    296: EXTERN void            Tcl_SetResult _ANSI_ARGS_((Tcl_Interp *interp,
                    297:                            char *string, Tcl_FreeProc *freeProc));
                    298: EXTERN char *          Tcl_SetVar _ANSI_ARGS_((Tcl_Interp *interp,
                    299:                            char *varName, char *newValue, int flags));
                    300: EXTERN char *          Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
                    301:                            char *name1, char *name2, char *newValue,
                    302:                            int flags));
                    303: EXTERN char *          Tcl_SignalId _ANSI_ARGS_((int sig));
                    304: EXTERN char *          Tcl_SignalMsg _ANSI_ARGS_((int sig));
                    305: EXTERN int             Tcl_SplitList _ANSI_ARGS_((Tcl_Interp *interp,
                    306:                            char *list, int *argcPtr, char ***argvPtr));
                    307: EXTERN int             Tcl_StringMatch _ANSI_ARGS_((char *string,
                    308:                            char *pattern));
                    309: EXTERN char *          Tcl_TildeSubst _ANSI_ARGS_((Tcl_Interp *interp,
                    310:                            char *name));
                    311: EXTERN int             Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp *interp,
                    312:                            char *varName, int flags, Tcl_VarTraceProc *proc,
                    313:                            ClientData clientData));
                    314: EXTERN int             Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp *interp,
                    315:                            char *name1, char *name2, int flags,
                    316:                            Tcl_VarTraceProc *proc, ClientData clientData));
                    317: EXTERN char *          Tcl_UnixError _ANSI_ARGS_((Tcl_Interp *interp));
                    318: EXTERN int             Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp *interp,
                    319:                            char *varName, int flags));
                    320: EXTERN int             Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp *interp,
                    321:                            char *name1, char *name2, int flags));
                    322: EXTERN void            Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp *interp,
                    323:                            char *varName, int flags, Tcl_VarTraceProc *proc,
                    324:                            ClientData clientData));
                    325: EXTERN void            Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp *interp,
                    326:                            char *name1, char *name2, int flags,
                    327:                            Tcl_VarTraceProc *proc, ClientData clientData));
                    328: EXTERN int             Tcl_VarEval _ANSI_ARGS_((Tcl_Interp *interp, ...));
                    329: EXTERN ClientData      Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp *interp,
                    330:                            char *varName, int flags,
                    331:                            Tcl_VarTraceProc *procPtr,
                    332:                            ClientData prevClientData));
                    333: EXTERN ClientData      Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp *interp,
                    334:                            char *name1, char *name2, int flags,
                    335:                            Tcl_VarTraceProc *procPtr,
                    336:                            ClientData prevClientData));
                    337: EXTERN int             Tcl_WaitPids _ANSI_ARGS_((int numPids, int *pidPtr,
                    338:                            int *statusPtr));
                    339: 
                    340: #endif /* _TCL */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.