tcl/src/TclC.i3


Copyright (C) 1994, Digital Equipment Corp.
 Version 6.2 of TCL 

This file is derived from tcl.h, covered by the following copyright:

* Copyright 1987, 1990 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.

UNSAFE INTERFACE TclC;

FROM Ctypes IMPORT char_star, int_star, int, char,
                   double_star, int_star_star, long_star;
IMPORT Word;

CONST
  TCL_OK       = 0;
  TCL_ERROR    = 1;
  TCL_RETURN   = 2;
  TCL_BREAK    = 3;
  TCL_CONTINUE = 4;

  TCL_RESULT_SIZE = 199;

  BRACKET_TERM  = 1;
  DONT_USE_BRACES = 1;
  NO_EVAL       = -1;

VAR (* READONLY *)
  volatile,  static,  dynamic: FreeProc;

CONST
  GLOBAL_ONLY =      1;
  APPEND_VALUE =     2;
  LIST_ELEMENT =     4;
  NO_SPACE =         8;
  TRACE_READS =      16_10;
  TRACE_WRITES =     16_20;
  TRACE_UNSETS =     16_40;
  TRACE_DESTROYED =  16_80;
  INTERP_DESTROYED = 16_100;
  LEAVE_ERR_MSG	=    16_200;

  VARIABLE_UNDEFINED = 8;

TYPE
  FreeProc = PROCEDURE (blockPtr: char_star);

  Interp = RECORD
             result: char_star;
             freeProc: FreeProc;
             errorLine: int; END;

  Interp_star = UNTRACED REF Interp;

  ClientData = Word.T;

  Argv = UNTRACED REF ARRAY [0..255] OF char_star;
  Argv_star = UNTRACED REF Argv;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_AddErrorInfo *>
PROCEDURE AddErrorInfo (interp: Interp_star; message: char_star);

<*EXTERNAL Tcl_SetErrorCode *>
PROCEDURE SetErrorCode (interp: Interp_star;
                        s1, s2, s3, s4, s5: char_star := NIL);

<*EXTERNAL Tcl_UnixError *>
PROCEDURE UnixError (interp: Interp_star): char_star;
---------------------------------------------------------------------------

TYPE
  CmdBuf = int_star;

<*EXTERNAL Tcl_CreateCmdBuf *>
PROCEDURE CreateCmdBuf (): CmdBuf;

<*EXTERNAL Tcl_DeleteCmdBuf *>
PROCEDURE DeleteCmdBuf (buffer: CmdBuf);

<*EXTERNAL Tcl_AssembleCmd *>
PROCEDURE AssembleCmd (buffer: CmdBuf; string: char_star): char_star;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_Backslash *>
PROCEDURE Backslash (src: char_star; count: int_star): char;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_Concat *>
PROCEDURE Concat (argc: int; argv: Argv): char_star;
---------------------------------------------------------------------------

TYPE
  CmdProc = PROCEDURE (clientData: ClientData;
                       interp: Interp_star;
                       argc:   int;
                       argv:   Argv): int;

  CmdDeleteProc  = PROCEDURE (clientData: ClientData);

<*EXTERNAL Tcl_CreateCommand *>
PROCEDURE CreateCommand (interp: Interp_star;
                         cmdName: char_star;
                         proc: CmdProc;
                         clientData: ClientData;
                         deleteProc: CmdDeleteProc);

<*EXTERNAL Tcl_DeleteCommand *>
PROCEDURE DeleteCommand (interp: Interp_star;
                         cmdName: char_star): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_CreateInterp *>
PROCEDURE CreateInterp (): Interp_star;

<*EXTERNAL Tcl_DeleteInterp *>
PROCEDURE DeleteInterp (interp: Interp_star);
---------------------------------------------------------------------------

<*EXTERNAL Tcl_CreatePipeline *>
PROCEDURE CreatePipeline (interp: Interp_star;
                          argc: int;
                          argv: Argv;
                          pidArrayPtr: int_star_star;
                          inPipePtr: char_star;
                          outPipePtr: char_star;
                          errFilePr: char_star): int;
---------------------------------------------------------------------------

TYPE
  CmdTraceProc = PROCEDURE (clientData: ClientData;
                            interp: Interp_star;
                            level: int;
                            command: char_star;
                            cmdProc: CmdProc;
                            cmdClientData: ClientData;
                            argc: int;
                            argv: Argv);
  Trace = int_star;

<*EXTERNAL Tcl_CreateTrace *>
PROCEDURE CreateTrace (interp: Interp_star;
                       level: int;
                       proc: CmdTraceProc;
                       clientData: ClientData): Trace;

<*EXTERNAL Tcl_DeleteTrace *>
PROCEDURE DeleteTrace (interp: Interp_star; trace: Trace);
---------------------------------------------------------------------------

<*EXTERNAL Tcl_Eval *>
PROCEDURE Eval (interp: Interp_star;
                cmd: char_star;
                flags: int;
                termPtr: Argv): int;

<*EXTERNAL Tcl_VarEval *>
PROCEDURE VarEval (interp: Interp_star;
                   s1, s2, s3, s4, s5: char_star := NIL): int;

<*EXTERNAL Tcl_EvalFile *>
PROCEDURE EvalFile (interp: Interp_star;
                    fileName: char_star): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_ExprLong *>
PROCEDURE ExprLong (interp: Interp_star;
                    string: char_star; longPtr: long_star): int;

<*EXTERNAL Tcl_ExprDouble *>
PROCEDURE ExprDouble (interp: Interp_star;
                      string: char_star; doublePtr: double_star): int;

<*EXTERNAL Tcl_ExprBoolean *>
PROCEDURE ExprBoolean (interp: Interp_star;
                       string: char_star; booleanPtr: int_star): int;

<*EXTERNAL Tcl_ExprString *>
PROCEDURE ExprString (interp: Interp_star;
                      string: char_star): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_Fork *>
PROCEDURE Fork (): int;

<*EXTERNAL Tcl_WaitPids *>
PROCEDURE WaitPids (numPids: int; pidPtr, statusPtr: int_star): int;

<*EXTERNAL Tcl_DetachPids *>
PROCEDURE DetachPids (numPids: int; pidPtr: int_star): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_GetInt *>
PROCEDURE GetInt (interp: Interp_star;
                  string: char_star; intPtr: int_star): int;

<*EXTERNAL Tcl_GetDouble *>
PROCEDURE GetDouble (interp: Interp_star;
		     string: char_star; doublePtr: double_star): int;

<*EXTERNAL Tcl_GetBoolean *>
PROCEDURE GetBoolean (interp: Interp_star;
		      string: char_star; boolPtr: int_star): int;
---------------------------------------------------------------------------

TYPE
  HashEntry = RECORD
                nextPtr: HashEntry_star;
                tablePtr: HashTable_star;
                bucketPtr: HashEntry_star_star;
                clientData: ClientData;
                key: Word.T; END;
  HashEntry_star = UNTRACED REF HashEntry;
  HashEntry_star_star = UNTRACED REF HashEntry_star;

CONST
  SMALL_HASH_TABLE = 4;

TYPE
  HashTable = RECORD
                buckets: HashEntry_star_star;
                staticBuckets: ARRAY [0..SMALL_HASH_TABLE-1] OF HashEntry_star;
                numBuckets: int;
                numEntries: int;
                rebuildSize: int;
                downShift: int;
                mask: int;
                keyType: int;
                findProc: PROCEDURE (tablePtr: HashTable_star;
                                     key: char_star): HashEntry_star;
                createProc: PROCEDURE (tablePtr: HashTable_star;
                                     key: char_star;
                                     newPtr: int_star): HashEntry_star; END;

  HashTable_star = UNTRACED REF HashTable;

  HashSearch = RECORD
                 tablePtr: HashTable_star;
                 nextIndex: int;
                 nextEntryPtr: HashEntry_star; END;

  HashSearch_star = UNTRACED REF HashSearch;

<*EXTERNAL Tcl_InitHashTable *>
PROCEDURE InitHashTable (tablePtr: HashTable_star; keyType: int);

<*EXTERNAL Tcl_DeleteHashTable *>
PROCEDURE DeleteHashTable (tablePtr: HashTable_star);

<*EXTERNAL Tcl_CreateHashEntry *>
PROCEDURE CreateHashEntry (tablePtr: HashTable_star;
                           key: char_star; newPtr: int_star): HashEntry_star;

<*EXTERNAL Tcl_DeleteHashEntry *>
PROCEDURE DeleteHashEntry (entryPtr: HashEntry_star);

<*EXTERNAL Tcl_FindHashEntry *>
PROCEDURE FindHashEntry (tablePtr: HashTable_star;
                         key: char_star): HashEntry_star;

<*EXTERNAL Tcl_GetHashValue *>
PROCEDURE GetHashValue (entryPtr: HashEntry_star): ClientData;

<*EXTERNAL Tcl_SetHashValue *>
PROCEDURE SetHashValue (entryPtr: HashEntry_star; value: ClientData);

<*EXTERNAL Tcl_GetHashKey *>
PROCEDURE GetHashKey (tablePtr: HashTable_star;
                      entryPtr: HashEntry_star): char_star;

<*EXTERNAL Tcl_FirstHashEntry *>
PROCEDURE FirstHashEntry (tablePtr: HashTable_star;
                          searchPtr: HashSearch_star): HashEntry_star;

<*EXTERNAL Tcl_NextHashEntry *>
PROCEDURE NextHashEntry (searchPtr: HashSearch_star): HashEntry_star;

<*EXTERNAL Tcl_HashStats *>
PROCEDURE HashStats (tablePtr: HashTable_star): char_star;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_InitHistory *>
PROCEDURE InitHistory (interp: Interp_star);

<*EXTERNAL Tcl_RecordAndEval *>
PROCEDURE RecordAndEval (interp: Interp_star;
                         cmd: char_star; flags: char): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_SetResult *>
PROCEDURE SetResult (interp: Interp_star;
                     string: char_star; freeProc: FreeProc);

<*EXTERNAL Tcl_AppendResult *>
PROCEDURE AppendResult (interp: Interp_star;
			s1, s2, s3, s4, s5: char_star := NIL);

<*EXTERNAL Tcl_AppendElement *>
PROCEDURE AppendElement (interp: Interp_star; string: char_star; noSep: int);

<*EXTERNAL Tcl_ResetResult *>
PROCEDURE ResetResult (interp: Interp_star);

PROCEDURE FreeResult (interp: Interp_star);
---------------------------------------------------------------------------

<*EXTERNAL Tcl_SetVar *>
PROCEDURE SetVar (interp: Interp_star;
                  varName, newValue: char_star; flags: int): char_star;

<*EXTERNAL Tcl_SetVar2 *>
PROCEDURE SetVar2 (interp: Interp_star;
                   name1, name2, newValue: char_star; flags: int): char_star;

<*EXTERNAL Tcl_GetVar *>
PROCEDURE GetVar (interp: Interp_star;
		  varName: char_star; flags: int): char_star;

<*EXTERNAL Tcl_GetVar2 *>
PROCEDURE GetVar2 (interp: Interp_star;
		   name1, name2: char_star; flags: int): char_star;

<*EXTERNAL Tcl_UnsetVar *>
PROCEDURE UnsetVar (interp: Interp_star;
	  	    varName: char_star; flags: int): int;

<*EXTERNAL Tcl_UnsetVar2 *>
PROCEDURE UnsetVar2 (interp: Interp_star;
	  	     name1, name2: char_star; flags: int): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_SplitList *>
PROCEDURE SplitList (interp: Interp_star;
 		     list: char_star;
		     argcPtr: int_star;
		     argvPtr: Argv_star): int;

<*EXTERNAL Tcl_Merge *>
PROCEDURE Merge (argc: int; argv: Argv): char_star;

<*EXTERNAL Tcl_ScanElement *>
PROCEDURE ScanElement (src: char_star; flagsPtr: int_star): int;

<*EXTERNAL Tcl_ConvertElement *>
PROCEDURE ConvertElement (src, dst: char_star; flags: int): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_StringMatch *>
PROCEDURE StringMatch (string, pattern: char_star): int;
---------------------------------------------------------------------------

<*EXTERNAL Tcl_TildeSubst *>
PROCEDURE TildeSubst (interp: Interp_star; name: char_star): char_star;
---------------------------------------------------------------------------

TYPE
  VarTraceProc = PROCEDURE (clientData: ClientData;
                            interp: Interp_star;
			    name1, name2: char_star;
                            flags: int): char_star;

<*EXTERNAL Tcl_TraceVar *>
PROCEDURE TraceVar (interp: Interp_star;
		    varName: char_star;
		    flags: int;
		    proc: VarTraceProc;
		    clientData: ClientData): int;

<*EXTERNAL Tcl_TraceVar2 *>
PROCEDURE TraceVar2 (interp: Interp_star;
		     name1, name2: char_star;
		     flags: int;
		     proc: VarTraceProc;
		     clientData: ClientData): int;

<*EXTERNAL Tcl_UnTraceVar *>
PROCEDURE UnTraceVar (interp: Interp_star;
                      varName: char_star;
                      flags: int;
                      proc: VarTraceProc;
  		      clientData: ClientData);

<*EXTERNAL Tcl_UnTraceVar2 *>
PROCEDURE UnTraceVar2 (interp: Interp_star;
                       name1, name2: char_star;
                       flags: int;
                       proc: VarTraceProc;
  		       clientData: ClientData);

<*EXTERNAL Tcl_VarTraceInfo *>
PROCEDURE VarTraceInfo (interp: Interp_star;
			varName: char_star;
			flags: int;
			proc: VarTraceProc;
			prevClientData: ClientData): int;

<*EXTERNAL Tcl_VarTraceInfo2 *>
PROCEDURE VarTraceInfo2 (interp: Interp_star;
			 name1, name2: char_star;
 			 flags: int;
			 proc: VarTraceProc;
			 prevClientData: ClientData): int;
---------------------------------------------------------------------------

END TclC.