4 * This file defines a C++ classes that can be used to access a Tcl
5 * interpreter. If tcl.h is not already included, it includes it. Tcl.h has
6 * macros that allow it to work with K&R C, ANSI C and C++.
7 *-----------------------------------------------------------------------------
8 * Copyright 1992 Karl Lehenbauer and Mark Diekhans.
10 * Permission to use, copy, modify, and distribute this software and its
11 * documentation for any purpose and without fee is hereby granted, provided
12 * that the above copyright notice appear in all copies. Karl Lehenbauer and
13 * Mark Diekhans make no representations about the suitability of this
14 * software for any purpose. It is provided "as is" without express or
16 *-----------------------------------------------------------------------------
17 * Based on Tcl C++ classes developed by Parag Patel.
18 *-----------------------------------------------------------------------------
19 * $Id: tcl++.h,v 2.0 1992/10/16 04:51:25 markd Rel $
20 *-----------------------------------------------------------------------------
23 #ifndef _TCL_PLUS_PLUS_H
24 #define _TCL_PLUS_PLUS_H
31 # include "tclxtend.h"
38 friend class TclTrace_cl
;
42 CatVarArgs (va_list argPtr
);
48 interp
= Tcl_CreateExtendedInterp ();
54 Tcl_DeleteInterp (interp
);
60 return interp
->result
;
66 return interp
->errorLine
;
76 * Exported Tcl procedures (from standard baseline):
80 AppendElement (const char *string
,
83 Tcl_AppendElement (interp
, (char *) string
, noSep
);
87 AppendResult (const char *p
,
91 AddErrorInfo (const char *message
)
93 Tcl_AddErrorInfo (interp
, (char *)message
);
97 CreateCommand (const char *cmdName
,
100 Tcl_CmdDeleteProc
*deleteProc
)
102 Tcl_CreateCommand (interp
, (char*) cmdName
, proc
, data
, deleteProc
);
106 CreatePipeline (int argc
,
113 return Tcl_CreatePipeline (interp
, argc
, argv
, pidArrayPtr
, inPipePtr
,
114 outPipePtr
, errFilePtr
);
118 CreateTrace (int level
,
119 Tcl_CmdTraceProc
*proc
,
122 return Tcl_CreateTrace (interp
, level
, proc
, data
);
126 DeleteCommand (const char *cmdName
)
128 Tcl_DeleteCommand (interp
, (char *)cmdName
);
132 DeleteTrace (Tcl_Trace trace
)
134 Tcl_DeleteTrace(interp
, trace
);
138 DetachPids (int numPids
,
141 Tcl_DetachPids (numPids
, pidPtr
);
145 Eval (const char *cmd
,
147 char **termPtr
= NULL
)
148 { return Tcl_Eval (interp
, (char *) cmd
, flags
, termPtr
); }
151 EvalFile (const char *fileName
)
153 return Tcl_EvalFile (interp
, (char *) fileName
);
157 ExprBoolean (const char *string
,
160 return Tcl_ExprBoolean (interp
, (char *) string
, ptr
);
164 ExprDouble (const char *string
,
167 return Tcl_ExprDouble (interp
, (char *) string
, ptr
);
171 ExprLong (const char *string
,
174 return Tcl_ExprLong (interp
, (char *) string
, ptr
);
178 ExprString (const char *string
)
180 return Tcl_ExprString (interp
, (char *) string
);
184 GetBoolean (Tcl_Interp
*interp
,
188 return Tcl_GetBoolean (interp
, (char *) string
, boolPtr
);
192 GetDouble (Tcl_Interp
*interp
,
196 return Tcl_GetDouble (interp
, (char *) string
, doublePtr
);
200 GetInt (Tcl_Interp
*interp
,
204 return Tcl_GetInt (interp
, (char *) string
, intPtr
);
208 GetVar (const char *varName
,
211 return Tcl_GetVar (interp
, (char *) varName
, flags
);
215 GetVar2 (const char *name1
,
219 return Tcl_GetVar2 (interp
, (char *) name1
, (char *) name2
, flags
);
225 Tcl_InitMemory (interp
);
229 ParseVar (const char *string
,
231 { return Tcl_ParseVar (interp
, (char *) string
, termPtr
); }
234 RecordAndEval (const char *cmd
,
236 { return Tcl_RecordAndEval (interp
, (char *) cmd
, flags
); }
241 Tcl_ResetResult (interp
);
245 SetErrorCode (char *p
,
249 SetResult (const char *string
)
251 Tcl_SetResult (interp
, (char *) string
, TCL_VOLATILE
);
255 SetResult (const char *string
,
256 Tcl_FreeProc
*freeProc
)
258 Tcl_SetResult (interp
, (char *) string
, freeProc
);
262 SetVar (const char *varName
,
263 const char *newValue
,
266 return Tcl_SetVar (interp
, (char *) varName
, (char *) newValue
,
271 SetVar2 (const char *name1
,
273 const char *newValue
,
276 return Tcl_SetVar2 (interp
, (char *) name1
, (char *) name2
,
277 (char *) newValue
, global
);
281 SplitList (const char *list
,
284 { return Tcl_SplitList (interp
, (char *) list
, &argcP
, &argvP
); }
287 TildeSubst (Tcl_Interp
*interp
,
289 { return Tcl_TildeSubst (interp
, (char *) name
); }
292 TraceVar (const char *varName
,
294 Tcl_VarTraceProc
*proc
,
295 ClientData clientData
)
297 return Tcl_TraceVar (interp
, (char *) varName
, flags
, proc
,
302 TraceVar2 (const char *name1
,
305 Tcl_VarTraceProc
*proc
,
306 ClientData clientData
)
308 return Tcl_TraceVar2 (interp
, (char *) name1
, (char *) name2
, flags
,
315 return Tcl_UnixError (interp
);
319 UnsetVar (Tcl_Interp
*interp
,
322 { Tcl_UnsetVar (interp
, (char *) varName
, global
); }
325 UnsetVar2 (Tcl_Interp
*interp
,
329 { Tcl_UnsetVar2 (interp
, (char *) name1
, (char *) name2
, global
); }
332 UntraceVar (const char *varName
,
334 Tcl_VarTraceProc
*proc
,
335 ClientData clientData
)
337 Tcl_UntraceVar (interp
, (char *) varName
, flags
, proc
, clientData
);
342 UntraceVar2 (Tcl_Interp
*interp
,
346 Tcl_VarTraceProc
*proc
,
347 ClientData clientData
)
349 Tcl_UntraceVar2 (interp
, (char *) name1
, (char *) name2
, flags
, proc
,
354 VarEval (const char *p
,
358 VarTraceInfo (const char *varName
,
360 Tcl_VarTraceProc
*procPtr
,
361 ClientData prevClientData
)
363 return Tcl_VarTraceInfo (interp
, (char *) varName
, flags
, procPtr
,
368 VarTraceInfo2 (const char *name1
,
371 Tcl_VarTraceProc
*procPtr
,
372 ClientData prevClientData
)
374 return Tcl_VarTraceInfo2 (interp
, (char *) name1
, (char *) name2
,
375 flags
, procPtr
, prevClientData
);
379 * Exported Tcl functions added to baseline Tcl by the Extended Tcl
384 CommandLoop (FILE *inFile
,
389 Tcl_CommandLoop (interp
, inFile
, outFile
, evalProc
, options
);
393 DeleteKeyedListField (const char *fieldName
,
394 const char *keyedList
)
396 return Tcl_DeleteKeyedListField (interp
, fieldName
, keyedList
);
400 ErrorAbort (int exitCode
)
402 Tcl_ErrorAbort (interp
, exitCode
);
406 GetKeyedListField (const char *fieldName
,
407 const char *keyedList
,
408 char **fieldValuePtr
)
410 return Tcl_GetKeyedListField (interp
, fieldName
, keyedList
,
415 GetKeyedListKeys (const char *subFieldName
,
416 const char *keyedList
,
418 char ***keyesArgvPtr
)
421 return Tcl_GetKeyedListKeys (interp
, subFieldName
, keyedList
,
422 keyesArgcPtr
, keyesArgvPtr
);
426 GetLong (Tcl_Interp
*interp
,
430 return Tcl_GetLong (interp
, string
, longPtr
);
434 GetUnsigned (Tcl_Interp
*interp
,
436 unsigned *unsignedPtr
)
438 return Tcl_GetUnsigned (interp
, string
, unsignedPtr
);
442 SetKeyedListField (const char *fieldName
,
443 const char *fieldvalue
,
444 const char *keyedList
)
446 return Tcl_SetKeyedListField (interp
, fieldName
, fieldvalue
,
451 ShellEnvInit (unsigned options
,
452 const char *programName
,
456 const char *defaultFile
)
458 return Tcl_ShellEnvInit (interp
, options
, programName
, argc
, argv
,
459 interactive
, defaultFile
);
465 const char *defaultFile
,
466 unsigned options
= 0)
468 Tcl_Startup (interp
, argc
, argv
, defaultFile
, options
);
472 System (const char *command
)
474 return Tcl_System (interp
, (char*) command
);
485 TclTrace_cl (TclInterp_cl
&interpCl
,
487 Tcl_CmdTraceProc
*proc
,
490 trace
= Tcl_CreateTrace (interp
= interpCl
.interp
, level
, proc
, data
);
493 inline ~TclTrace_cl ()
494 { Tcl_DeleteTrace (interp
, trace
); }
505 { buf
= Tcl_CreateCmdBuf (); }
509 { Tcl_DeleteCmdBuf (buf
); }
512 AssembleCmd (const char *string
)
513 { return Tcl_AssembleCmd (buf
, (char *) string
); }
516 class TclHandleTbl_cl
522 TclHandleTbl_cl (const char *handleBase
,
527 headerPtr
= Tcl_HandleTblInit (handleBase
, entrySize
, initEntries
);
533 Tcl_HandleTblRelease (headerPtr
);
537 HandleAlloc (char *handlePtr
)
539 return Tcl_HandleAlloc (headerPtr
, handlePtr
);
543 HandleFree (void_pt entryPtr
)
545 Tcl_HandleFree (headerPtr
, entryPtr
);
549 HandleTblUseCount (int amount
)
551 return Tcl_HandleTblUseCount (headerPtr
, amount
);
555 HandleWalk (int *walkKeyPtr
)
557 return Tcl_HandleWalk (headerPtr
, walkKeyPtr
);
561 HandleXlate (Tcl_Interp
*interp
,
564 return Tcl_HandleXlate (interp
, headerPtr
, handle
);
568 #endif /* _TCL_PLUS_PLUS_H */