home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / ui_utils / tcl_447.lzh / TCL / TCL.LZH / tcl / includes / tcl.h next >
Encoding:
C/C++ Source or Header  |  1990-05-04  |  6.4 KB  |  176 lines

  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.33 90/01/15 14:06:02 ouster Exp $ SPRITE (Berkeley)
  17.  */
  18.  
  19. #ifndef _TCL
  20. #define _TCL
  21.  
  22. #define TCL_VERSION "2.1"
  23.  
  24. /*
  25.  * Data structures defined opaquely in this module.  The definitions
  26.  * below just provide dummy types.  A few fields are made visible in
  27.  * Tcl_Interp structures, namely those for returning string values.
  28.  * Note:  any change to the Tcl_Interp definition below must be mirrored
  29.  * in the "real" definition in tclInt.h.
  30.  */
  31.  
  32. typedef struct {
  33.     char *result;        /* Points to result string returned by last
  34.                  * command. */
  35.     int dynamic;        /* Non-zero means result is dynamically-
  36.                  * allocated and must be freed by Tcl_Eval
  37.                  * before executing the next command. */
  38.     int errorLine;        /* When TCL_ERROR is returned, this gives
  39.                  * the line number within the command where
  40.                  * the error occurred (1 means first line). */
  41. } Tcl_Interp;
  42. typedef int *Tcl_Trace;
  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):
  73.  */
  74.  
  75. #define TCL_BRACKET_TERM    1
  76.  
  77. /*
  78.  * Flag values passed to Tcl_Return (see the man page for details):
  79.  */
  80.  
  81. #define TCL_STATIC    0
  82. #define TCL_DYNAMIC    1
  83. #define TCL_VOLATILE    2
  84.  
  85. /*
  86.  * Exported Tcl procedures:
  87.  */
  88.  
  89. void panic(char *format, ...);
  90. void *ckalloc(size_t len);
  91. void ckfree(void *what);
  92.  
  93. void Tcl_AddErrorInfo(Tcl_Interp  *interp, char *message);
  94. char Tcl_Backslash(char *src, int *readPtr);
  95. char *Tcl_Concat(int argc, char **argv);
  96. void Tcl_CreateCommand(Tcl_Interp  *interp, char *cmdName, int (*proc)(), 
  97.     int *clientData, void (*deleteProc)());
  98.  
  99. Tcl_Interp *Tcl_CreateInterp(void);
  100. int *Tcl_CreateTrace(Tcl_Interp  *interp, int level, void (*proc)(), 
  101.     int *clientData);
  102. void Tcl_DeleteCommand(Tcl_Interp  *interp, char *cmdName);
  103. void Tcl_DeleteInterp(Tcl_Interp  *interp);
  104. void Tcl_DeleteTrace(Tcl_Interp  *interp, int *trace);
  105.  
  106. int Tcl_Eval(Tcl_Interp  *interp, char *cmd, int flags, char **termPtr);
  107. int Tcl_Expr(Tcl_Interp  *interp, char *string, int *valuePtr);
  108. char *Tcl_GetVar(Tcl_Interp  *interp, char *varName, int global);
  109. char *Tcl_Merge(int argc, char **argv);
  110. char *Tcl_ParseVar(Tcl_Interp  *interp, char *string, char **termPtr);
  111. void Tcl_Return(Tcl_Interp  *interp, char *string, int status);
  112. void Tcl_SetVar(Tcl_Interp  *interp, char *varName, char *newValue, 
  113.     int global);
  114. int Tcl_SplitList(Tcl_Interp  *interp, char *list, int *argcPtr, 
  115.     char ***argvPtr);
  116. int Tcl_StringMatch(char *string, char *pattern);
  117. void Tcl_WatchInterp(Tcl_Interp  *interp, void (*proc)(), int *clientData);
  118.  
  119. /*
  120.  * Built-in Tcl command procedures:
  121.  */
  122.  
  123. int Tcl_BreakCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  124. int Tcl_CaseCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  125. int Tcl_CatchCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  126. int Tcl_ConcatCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  127. int Tcl_ContinueCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  128. int Tcl_ErrorCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  129. int Tcl_EvalCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  130. int Tcl_ExecCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  131. int Tcl_ExprCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  132. int Tcl_FileCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  133. int Tcl_ForCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  134. int Tcl_ForeachCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  135. int Tcl_FormatCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  136. int Tcl_GlobalCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  137.  
  138. int Tcl_IfCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  139. int Tcl_InfoCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  140. int Tcl_IndexCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  141. int Tcl_LengthCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  142. int Tcl_ListCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  143. int Tcl_PrintCmd(int *notUsed, Tcl_Interp  *interp, int argc, char **argv);
  144. int Tcl_ProcCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  145. int Tcl_RangeCmd(int *notUsed, Tcl_Interp  *interp, int argc, char **argv);
  146. int Tcl_RenameCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  147. int Tcl_ReturnCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  148. int Tcl_ScanCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  149. int Tcl_SetCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  150. int Tcl_SourceCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  151. int Tcl_StringCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  152. int Tcl_TimeCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  153. int Tcl_UplevelCmd(int *dummy, Tcl_Interp  *interp, int argc, char **argv);
  154.  
  155. /*
  156.  * Miscellaneous declarations (to allow Tcl to be used stand-alone,
  157.  * without the rest of Sprite).
  158.  */
  159. #ifndef _CLIENTDATA
  160. typedef int *ClientData;
  161. #define _CLIENTDATA
  162. #endif
  163.  
  164. #ifndef NULL
  165. #define NULL 0
  166. #endif
  167.  
  168. /* Portability stuff */
  169. #ifndef BSD
  170. #define bcopy(f,t,l) memcpy(t,f,l)
  171. #endif
  172.  
  173. #endif /* _TCL */
  174.  
  175.  
  176.