Files
retrobsd/include/tcl/tcl.h
Serge Vakulenko 9d39282ae9 All paths moved to path.h.
Cleanup in curses.h: removed reg definition.
All include files reformatted for 4-space indent.
2015-06-24 20:57:08 -07:00

243 lines
11 KiB
C

/*
* tcl.h --
*
* This header file describes the externally-visible facilities
* of the Tcl interpreter.
*
* Copyright 1987-1991 Regents of the University of California
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies. The University of California
* makes no representations about the suitability of this
* software for any purpose. It is provided "as is" without
* express or implied warranty.
*/
#ifndef _TCL
#define _TCL
#define TCL_VERSION "6.7"
#define TCL_MAJOR_VERSION 6
#define TCL_MINOR_VERSION 7
/*
* Data structures defined opaquely in this module. The definitions
* below just provide dummy types. A few fields are made visible in
* Tcl_Interp structures, namely those for returning string values.
* Note: any change to the Tcl_Interp definition below must be mirrored
* in the "real" definition in tclInt.h.
*/
typedef struct Tcl_Interp {
unsigned char *result; /* Points to result string returned by last
* command. */
void (*freeProc) (unsigned char *blockPtr);
/* Zero means result is statically allocated.
* If non-zero, gives address of procedure
* to invoke to free the result. Must be
* freed by Tcl_Eval before executing next
* command. */
unsigned short errorLine; /* When TCL_ERROR is returned, this gives
* the line number within the command where
* the error occurred (1 means first line). */
} Tcl_Interp;
typedef void *Tcl_Trace;
typedef void *Tcl_CmdBuf;
/*
* When a TCL command returns, the string pointer interp->result points to
* a string containing return information from the command. In addition,
* the command procedure returns an integer value, which is one of the
* following:
*
* TCL_OK Command completed normally; interp->result contains
* the command's result.
* TCL_ERROR The command couldn't be completed successfully;
* interp->result describes what went wrong.
* TCL_RETURN The command requests that the current procedure
* return; interp->result contains the procedure's
* return value.
* TCL_BREAK The command requests that the innermost loop
* be exited; interp->result is meaningless.
* TCL_CONTINUE Go on to the next iteration of the current loop;
* interp->result is meaninless.
*/
#define TCL_OK 0
#define TCL_ERROR 1
#define TCL_RETURN 2
#define TCL_BREAK 3
#define TCL_CONTINUE 4
#define TCL_RESULT_SIZE 199
/*
* Procedure types defined by Tcl:
*/
typedef void (Tcl_CmdDeleteProc) (void *clientData);
typedef int (Tcl_CmdProc) (void *clientData,
Tcl_Interp *interp, int argc, unsigned char *argv[]);
typedef void (Tcl_CmdTraceProc) (void *clientData,
Tcl_Interp *interp, int level, unsigned char *command, Tcl_CmdProc *proc,
void *cmdClientData, int argc, unsigned char *argv[]);
typedef void (Tcl_FreeProc) (unsigned char *blockPtr);
typedef unsigned char *(Tcl_VarTraceProc) (void *clientData,
Tcl_Interp *interp, unsigned char *part1, unsigned char *part2, int flags);
/*
* Flag values passed to Tcl_Eval (see the man page for details; also
* see tclInt.h for additional flags that are only used internally by
* Tcl):
*/
#define TCL_BRACKET_TERM 1
/*
* Flag that may be passed to Tcl_ConvertElement to force it not to
* output braces (careful! if you change this flag be sure to change
* the definitions at the front of tclUtil.c).
*/
#define TCL_DONT_USE_BRACES 1
/*
* Flag value passed to Tcl_RecordAndEval to request no evaluation
* (record only).
*/
#define TCL_NO_EVAL -1
/*
* Specil freeProc values that may be passed to Tcl_SetResult (see
* the man page for details):
*/
#define TCL_STATIC ((Tcl_FreeProc *) 0)
#define TCL_VOLATILE ((Tcl_FreeProc *) -1)
#define TCL_DYNAMIC ((Tcl_FreeProc *) -2)
/*
* Flag values passed to variable-related procedures.
*/
#define TCL_GLOBAL_ONLY 1
#define TCL_APPEND_VALUE 2
#define TCL_LIST_ELEMENT 4
#define TCL_NO_SPACE 8
#define TCL_TRACE_READS 0x10
#define TCL_TRACE_WRITES 0x20
#define TCL_TRACE_UNSETS 0x40
#define TCL_TRACE_DESTROYED 0x80
#define TCL_INTERP_DESTROYED 0x100
#define TCL_LEAVE_ERR_MSG 0x200
/*
* Additional flag passed back to variable watchers. This flag must
* not overlap any of the TCL_TRACE_* flags defined above or the
* TRACE_* flags defined in tclInt.h.
*/
#define TCL_VARIABLE_UNDEFINED 8
/*
* Exported Tcl procedures:
*/
extern void Tcl_AppendElement (Tcl_Interp *interp, unsigned char *string,
int noSep);
extern void Tcl_AppendResult (Tcl_Interp *interp, ...);
extern unsigned char * Tcl_AssembleCmd (Tcl_CmdBuf buffer, unsigned char *string);
extern void Tcl_AddErrorInfo (Tcl_Interp *interp, unsigned char *message);
extern char Tcl_Backslash (unsigned char *src, int *readPtr);
extern int Tcl_CommandComplete (unsigned char *cmd);
extern unsigned char * Tcl_Concat (int argc, unsigned char **argv);
extern int Tcl_ConvertElement (unsigned char *src, unsigned char *dst, int flags);
extern Tcl_CmdBuf Tcl_CreateCmdBuf (void);
extern void Tcl_CreateCommand (Tcl_Interp *interp, unsigned char *cmdName,
Tcl_CmdProc *proc, void *clientData,
Tcl_CmdDeleteProc *deleteProc);
extern Tcl_Interp * Tcl_CreateInterp (void);
extern int Tcl_CreatePipeline (Tcl_Interp *interp, int argc,
unsigned char **argv, int **pidArrayPtr,
int *inPipePtr, int *outPipePtr,
int *errFilePtr);
extern Tcl_Trace Tcl_CreateTrace (Tcl_Interp *interp,
int level, Tcl_CmdTraceProc *proc,
void *clientData);
extern void Tcl_DeleteCmdBuf (Tcl_CmdBuf buffer);
extern int Tcl_DeleteCommand (Tcl_Interp *interp,
unsigned char *cmdName);
extern void Tcl_DeleteInterp (Tcl_Interp *interp);
extern void Tcl_DeleteTrace (Tcl_Interp *interp,
Tcl_Trace trace);
extern void Tcl_DetachPids (int numPids, int *pidPtr);
extern unsigned char * Tcl_ErrnoId (void);
extern int Tcl_Eval (Tcl_Interp *interp, unsigned char *cmd,
int flags, unsigned char **termPtr);
extern int Tcl_EvalFile (Tcl_Interp *interp,
unsigned char *fileName);
extern int Tcl_ExprBoolean (Tcl_Interp *interp, unsigned char *string,
int *ptr);
extern int Tcl_ExprLong (Tcl_Interp *interp, unsigned char *string,
long *ptr);
extern int Tcl_ExprString (Tcl_Interp *interp, unsigned char *string);
extern int Tcl_Fork (void);
extern void Tcl_FreeResult (Tcl_Interp *interp);
extern int Tcl_GetBoolean (Tcl_Interp *interp,
unsigned char *string, int *boolPtr);
extern int Tcl_GetInt (Tcl_Interp *interp,
unsigned char *string, int *intPtr);
extern unsigned char * Tcl_GetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern unsigned char * Tcl_GetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern int Tcl_GlobalEval (Tcl_Interp *interp,
unsigned char *command);
extern void Tcl_InitHistory (Tcl_Interp *interp);
extern void Tcl_InitMemory (Tcl_Interp *interp);
extern unsigned char * Tcl_Merge (int argc, unsigned char **argv);
extern unsigned char * Tcl_ParseVar (Tcl_Interp *interp,
unsigned char *string, unsigned char **termPtr);
extern int Tcl_RecordAndEval (Tcl_Interp *interp,
unsigned char *cmd, int flags);
extern void Tcl_ResetResult (Tcl_Interp *interp);
extern int Tcl_ScanElement (unsigned char *string,
int *flagPtr);
extern void Tcl_SetErrorCode (Tcl_Interp *interp, ...);
extern void Tcl_SetResult (Tcl_Interp *interp,
unsigned char *string, Tcl_FreeProc *freeProc);
extern unsigned char * Tcl_SetVar (Tcl_Interp *interp,
unsigned char *varName, unsigned char *newValue, int flags);
extern unsigned char * Tcl_SetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2,
unsigned char *newValue, int flags);
extern unsigned char * Tcl_SignalId (int sig);
extern unsigned char * Tcl_SignalMsg (int sig);
extern int Tcl_SplitList (Tcl_Interp *interp,
unsigned char *list, int *argcPtr, unsigned char ***argvPtr);
extern int Tcl_StringMatch (unsigned char *string,
unsigned char *pattern);
extern unsigned char * Tcl_TildeSubst (Tcl_Interp *interp,
unsigned char *name);
extern int Tcl_TraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern int Tcl_TraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_UnsetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern int Tcl_UnsetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern void Tcl_UntraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern void Tcl_UntraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_VarEval (Tcl_Interp *interp, ...);
extern void * Tcl_VarTraceInfo (Tcl_Interp *interp,
unsigned char *varName, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern void * Tcl_VarTraceInfo2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern int Tcl_WaitPids (int numPids, int *pidPtr,
int *statusPtr);
#endif /* _TCL */