#pragma prototyped
#ifndef __TKSHLIB_H_
#define __TKSHLIB_H_
#include <tksh.h>
#include <config.h>
#include <stdio.h>
#include <ctype.h>
#undef NTcl_FreeResult
#define NTcl_FreeResult(interp) do { sfprintf(sfstderr, "Free of %s at %s %d (%x)\n", (interp)->result, __FILE__, __LINE__, (interp)->freeProc); (interp)->freeProc = 0; } while(0)
#include "shcompat.h"
#define DEFAULT_PD_PREC 6
#define DEFAULT_PD_FORMAT "%g"
#define UCHAR(c) ((unsigned char) (c))
#define TCL_ALIGN(x) ((x + 7) & ~7)
#if TCL_MINOR_VERSION == 3
#define TCL_PATCH_LEVEL 106
#else
#ifndef TCL_PATCH_LEVEL
#define TCL_PATCH_LEVEL "7.4"
#endif
#endif
#ifndef NO_TCL_INTERP
typedef struct ParseValue {
char *buffer;
char *next;
char *end;
void (*expandProc)(struct ParseValue *pvPtr, int needed);
ClientData clientData;
} ParseValue;
extern char tclTypeTable[];
#define CHAR_TYPE(c) (tclTypeTable+128)[c]
#if _BLD_tcl && defined(__EXPORT__)
#define extern __EXPORT__
#endif
#define TCL_NORMAL 0
#define TCL_SPACE 1
#define TCL_COMMAND_END 2
#define TCL_QUOTE 3
#define TCL_OPEN_BRACKET 4
#define TCL_OPEN_BRACE 5
#define TCL_CLOSE_BRACE 6
#define TCL_BACKSLASH 7
#define TCL_DOLLAR 8
#ifndef TCL_BRACKET_TERM
#define TCL_BRACKET_TERM 1
#endif
#define TCL_ALLOW_EXCEPTIONS 4
extern void TclExpandParseValue(ParseValue *pvPtr, int needed);
extern int TclNeedSpace(char *start, char *end);
extern void TclSetupEnv(Tcl_Interp *interp);
extern void TclWinFlushEvents(void);
extern int Tcl_NumEventsFound(void);
#endif
#ifndef NO_TCL_INTERP
typedef struct Arg {
struct Arg *nextPtr;
char *defValue;
char name[4];
} Arg;
typedef struct Proc {
struct Interp *iPtr;
int refCount;
char *command;
Arg *argPtr;
} Proc;
extern Proc * TclIsProc(Tcl_CmdInfo *cmdPtr);
extern Proc * TclFindProc(Interp *iPtr, char *procName);
extern int TclUpdateReturnInfo(Interp *iPtr);
extern char * TkshMapName(char *name);
extern char * TkshMapKeyword(char *name);
extern char * TkshLibDir(void);
extern int TkshSetListMode(int mode);
#endif
extern int Tcl_TclEval(Tcl_Interp *interp, char *cmd);
extern int Tcl_TclEvalFile(Tcl_Interp *interp, char *fileName);
#undef extern
#include "debug.h"
typedef struct TclEventSource {
Tcl_EventSetupProc *setupProc;
Tcl_EventCheckProc *checkProc;
ClientData clientData;
struct TclEventSource *nextPtr;
} TclEventSource;
#define TclPlatformExit(status) exit(status)
#if _BLD_tcl && defined(__EXPORT__)
#define extern __EXPORT__
#endif
EXTERN Tcl_Channel TclGetDefaultStdChannel(int type);
EXTERN Tcl_Channel TclFindFileChannel(Tcl_File inFil, Tcl_File outFile,
int *fileUsedPtr);
EXTERN int TclGetLoadedPackages(Tcl_Interp *interp,
char *targetName);
EXTERN int TclInterpInit(Tcl_Interp *interp);
EXTERN void TclPlatformInit(Tcl_Interp *interp);
EXTERN void TclFreePackageInfo(Interp *iPtr);
EXTERN int TclChdir(Tcl_Interp *interp, char *dirName);
EXTERN char * TclGetCwd(Tcl_Interp *interp);
EXTERN int TclPreventAliasLoop(Tcl_Interp *interp,
Tcl_Interp *cmdInterp, char *cmdName,
Tcl_CmdProc *proc, ClientData clientData);
EXTERN int TclFindElement(Tcl_Interp *interp,
char *list, char **elementPtr, char **nextPtr,
int *sizePtr, int *bracePtr);
EXTERN void TclCopyAndCollapse(int count, char *src, char *dst);
EXTERN int TclGetListIndex(Tcl_Interp *interp,
char *string, int *indexPtr);
EXTERN unsigned long TclGetSeconds(void);
EXTERN void TclGetTime(Tcl_Time *time);
EXTERN int TclGetTimeZ(unsigned long time);
EXTERN int TclGetDate(char *p, unsigned long now, long zone,
unsigned long *timePtr);
EXTERN int TclGuessPackageName(char *fileName,
Tcl_DString *bufPtr);
EXTERN int TclLoadFile(Tcl_Interp *interp,
char *fileName, char *sym1, char *sym2,
Tcl_PackageInitProc **proc1Ptr,
Tcl_PackageInitProc **proc2Ptr);
EXTERN char * TclGetExtension(char *name);
EXTERN int TclGetOpenMode(Tcl_Interp *interp,
char *string, int *seekFlagPtr);
EXTERN unsigned long TclGetClicks(void);
EXTERN int TclIdlePending(void);
EXTERN int TclServiceIdle(void);
EXTERN int TclWaitForFile(Tcl_File file, int mask, int timeout);
EXTERN int TclParseBraces(Tcl_Interp *interp,
char *string, char **termPtr, ParseValue *pvPtr);
EXTERN int TclParseNestedCmd(Tcl_Interp *interp,
char *string, int flags, char **termPtr,
ParseValue *pvPtr);
EXTERN int TclParseQuotes(Tcl_Interp *interp,
char *string, int termChar, int flags,
char **termPtr, ParseValue *pvPtr);
EXTERN int TclParseWords(Tcl_Interp *interp,
char *string, int flags, int maxWords,
char **termPtr, int *argcPtr, char **argv,
ParseValue *pvPtr);
extern char * TclPrecTraceProc(ClientData clientData,
Tcl_Interp *interp, char *name1, char *name2,
int flags);
#undef extern
extern int tclInInterpreterDeletion;
extern char * tclExecutableName;
void TkshCreateInterp(Tcl_Interp *interp, void *data);
typedef struct Trace {
int level;
Tcl_CmdTraceProc *proc;
ClientData clientData;
struct Trace *nextPtr;
} Trace;
typedef struct AssocData {
Tcl_InterpDeleteProc *proc;
ClientData clientData;
} AssocData;
#endif