1 /* 2 * tclExtend.h 3 * 4 * External declarations for the extended Tcl library. 5 *----------------------------------------------------------------------------- 6 * Copyright 1991-1999 Karl Lehenbauer and Mark Diekhans. 7 * 8 * Permission to use, copy, modify, and distribute this software and its 9 * documentation for any purpose and without fee is hereby granted, provided 10 * that the above copyright notice appear in all copies. Karl Lehenbauer and 11 * Mark Diekhans make no representations about the suitability of this 12 * software for any purpose. It is provided "as is" without express or 13 * implied warranty. 14 *----------------------------------------------------------------------------- 15 * $Id: tclExtend.h,v 1.5 2002/09/26 00:23:29 hobbs Exp $ 16 *----------------------------------------------------------------------------- 17 */ 18 19 #ifndef TCLEXTEND_H 20 #define TCLEXTEND_H 21 22 #include <stdio.h> 23 #include "tcl.h" 24 25 /* 26 * The following is needed on Windows to deal with export/import of DLL 27 * functions. See tcl???/win/README. 28 */ 29 #if defined(BUILD_tclx) || defined(BUILD_TCLX) 30 # undef TCL_STORAGE_CLASS 31 # define TCL_STORAGE_CLASS DLLEXPORT 32 #endif 33 34 #ifndef CONST84 35 # define CONST84 36 #endif 37 38 /* 39 * The TCLX_DEBUG flag turns on asserts etc. Its an internal flag, however 40 * its normally true for alpha and beta release and false for final releases, 41 * so we put the flag right by the version numbers in hopes that we will 42 * remember to change it. 43 #define TCLX_DEBUG 44 */ 45 46 #define TCLX_PATCHLEVEL 0 47 48 /* 49 * Generic void pointer. 50 */ 51 typedef void *void_pt; 52 53 /* 54 * Flags to command loop functions. 55 */ 56 #define TCLX_CMDL_INTERACTIVE (1<<0) 57 #define TCLX_CMDL_EXIT_ON_EOF (1<<1) 58 59 /* 60 * Application signal error handler. Called after normal signal processing, 61 * when a signal results in an error. Its main purpose in life is to allow 62 * interactive command loops to clear their input buffer on SIGINT. This is 63 * not currently a generic interface, but should be. Only one maybe active. 64 * This is an undocumented interface. Its in the external file in case 65 * someone needs this facility. It might change in the future. Let us 66 * know if you need this functionality. 67 */ 68 typedef int 69 (*TclX_AppSignalErrorHandler) _ANSI_ARGS_((Tcl_Interp *interp, 70 ClientData clientData, 71 int background, 72 int signalNum)); 73 74 /* 75 * Exported TclX initialization functions. 76 */ 77 78 EXTERN int Tclx_Init _ANSI_ARGS_((Tcl_Interp *interp)); 79 80 EXTERN int Tclx_SafeInit _ANSI_ARGS_((Tcl_Interp *interp)); 81 82 EXTERN int Tclx_InitStandAlone _ANSI_ARGS_((Tcl_Interp *interp)); 83 84 EXTERN void TclX_PrintResult _ANSI_ARGS_((Tcl_Interp *interp, 85 int intResult, 86 char *checkCmd)); 87 88 EXTERN void TclX_SetupSigInt _ANSI_ARGS_((void)); 89 90 EXTERN void TclX_SetAppSignalErrorHandler _ANSI_ARGS_(( 91 TclX_AppSignalErrorHandler errorFunc, ClientData clientData)); 92 93 EXTERN void TclX_SetAppInfo _ANSI_ARGS_((int defaultValues, 94 char *appName, 95 char *appLongName, 96 char *appVersion, 97 int appPatchlevel)); 98 99 EXTERN void TclX_SplitWinCmdLine _ANSI_ARGS_((int *argcPtr, 100 char ***argvPtr)); 101 102 /* 103 * Exported utility functions. 104 */ 105 EXTERN void TclX_AppendObjResult _ANSI_ARGS_(TCL_VARARGS_DEF(Tcl_Interp *, interpArg)); 106 107 EXTERN char * TclX_DownShift _ANSI_ARGS_((char *targetStr, CONST char *sourceStr)); 108 109 EXTERN int TclX_StrToInt _ANSI_ARGS_((CONST char *string, int base, int *intPtr)); 110 111 EXTERN int TclX_StrToUnsigned _ANSI_ARGS_((CONST char *string, 112 int base, 113 unsigned *unsignedPtr)); 114 115 EXTERN char * TclX_UpShift _ANSI_ARGS_((char *targetStr, 116 CONST char *sourceStr)); 117 118 /* 119 * Exported keyed list object manipulation functions. 120 */ 121 EXTERN Tcl_Obj * TclX_NewKeyedListObj _ANSI_ARGS_((void)); 122 123 EXTERN int TclX_KeyedListGet _ANSI_ARGS_((Tcl_Interp *interp, 124 Tcl_Obj *keylPtr, 125 const char *key, 126 Tcl_Obj **valuePtrPtr)); 127 128 EXTERN int TclX_KeyedListSet _ANSI_ARGS_((Tcl_Interp *interp, 129 Tcl_Obj *keylPtr, 130 const char *key, 131 Tcl_Obj *valuePtr)); 132 133 EXTERN int TclX_KeyedListDelete _ANSI_ARGS_((Tcl_Interp *interp, 134 Tcl_Obj *keylPtr, 135 const char *key)); 136 137 EXTERN int TclX_KeyedListGetKeys _ANSI_ARGS_((Tcl_Interp *interp, 138 Tcl_Obj *keylPtr, 139 const char *key, 140 Tcl_Obj **listObjPtrPtr)); 141 142 /* 143 * Exported handle table manipulation functions. 144 */ 145 EXTERN void_pt TclX_HandleAlloc _ANSI_ARGS_((void_pt headerPtr, 146 char *handlePtr)); 147 148 EXTERN void TclX_HandleFree _ANSI_ARGS_((void_pt headerPtr, 149 void_pt entryPtr)); 150 151 EXTERN void_pt TclX_HandleTblInit _ANSI_ARGS_((CONST char *handleBase, 152 int entrySize, 153 int initEntries)); 154 155 EXTERN void TclX_HandleTblRelease _ANSI_ARGS_((void_pt headerPtr)); 156 157 EXTERN int TclX_HandleTblUseCount _ANSI_ARGS_((void_pt headerPtr, 158 int amount)); 159 160 EXTERN void_pt TclX_HandleWalk _ANSI_ARGS_((void_pt headerPtr, 161 int *walkKeyPtr)); 162 163 EXTERN void TclX_WalkKeyToHandle _ANSI_ARGS_((void_pt headerPtr, 164 int walkKey, 165 char *handlePtr)); 166 167 EXTERN void_pt TclX_HandleXlate _ANSI_ARGS_((Tcl_Interp *interp, 168 void_pt headerPtr, 169 CONST char *handle)); 170 171 EXTERN void_pt TclX_HandleXlateObj _ANSI_ARGS_((Tcl_Interp *interp, 172 void_pt headerPtr, 173 Tcl_Obj *handleObj)); 174 /* 175 * Command loop functions. 176 */ 177 EXTERN int TclX_CommandLoop _ANSI_ARGS_((Tcl_Interp *interp, 178 int options, 179 char *endCommand, 180 char *prompt1, 181 char *prompt2)); 182 183 EXTERN int TclX_AsyncCommandLoop _ANSI_ARGS_((Tcl_Interp *interp, 184 int options, 185 char *endCommand, 186 char *prompt1, 187 char *prompt2)); 188 189 #undef TCL_STORAGE_CLASS 190 #define TCL_STORAGE_CLASS DLLIMPORT 191 192 #endif 193