1 /*=========================================================================
3 Program: Visualization Toolkit
4 Module: $RCSfile: vtkTclUtil.h,v $
6 Date: $Date: 2002/08/08 19:04:23 $
7 Version: $Revision: 1.38 $
9 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
11 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notice for more information.
17 =========================================================================*/
19 #ifndef __vtkTclInclude_h
20 #define __vtkTclInclude_h
22 #include "vtkObject.h"
23 #include "vtkCommand.h"
27 #define VTKTCL_EXPORT __declspec( dllexport )
32 extern VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp *interp,
36 extern VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *,
37 unsigned long eventId,
39 extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd);
41 extern VTKTCL_EXPORT void
42 vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp,
43 int (*command)(ClientData,
44 Tcl_Interp *,int, char *[]));
46 extern VTKTCL_EXPORT void *
47 vtkTclGetPointerFromObject(const char *name, const char *result_type,
48 Tcl_Interp *interp, int &error);
50 extern VTKTCL_EXPORT void vtkTclVoidFunc(void *);
51 extern VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *);
52 extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp,
54 extern VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp *interp);
56 extern VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd,
58 int argc, char *argv[]);
59 extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd);
61 void vtkTclCreateNew(Tcl_Interp *interp, const char *cname,
62 ClientData (*NewCommand)(),
63 int (*CommandFunction)(ClientData cd,
65 int argc, char *argv[]));
67 class vtkTclCommand : public vtkCommand
70 static vtkTclCommand *New() { return new vtkTclCommand; };
72 void SetStringCommand(const char *arg);
73 void SetInterp(Tcl_Interp *interp) { this->Interp = interp; };
75 void Execute(vtkObject *, unsigned long, void *);
84 typedef struct _vtkTclVoidFuncArg
90 struct vtkTclCommandArgStruct
97 struct vtkTclCommandStruct
99 ClientData (*NewCommand)();
100 int (*CommandFunction)(ClientData cd, Tcl_Interp *interp,
101 int argc, char *argv[]);
104 struct vtkTclInterpStruct
106 Tcl_HashTable InstanceLookup;
107 Tcl_HashTable PointerLookup;
108 Tcl_HashTable CommandLookup;