00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef __vtkTclInclude_h
00042 #define __vtkTclInclude_h
00043
00044 #include "vtkObject.h"
00045 #include "vtkCommand.h"
00046 #include <tcl.h>
00047
00048 #ifdef WIN32
00049 #define VTKTCL_EXPORT __declspec( dllexport )
00050 #else
00051 #define VTKTCL_EXPORT
00052 #endif
00053
00054 extern VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *,
00055 unsigned long eventId,
00056 void *, void *);
00057 extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd);
00058
00059 extern VTKTCL_EXPORT void
00060 vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp,
00061 int (*command)(ClientData,
00062 Tcl_Interp *,int, char *[]));
00063
00064 extern VTKTCL_EXPORT void *
00065 vtkTclGetPointerFromObject(const char *name, const char *result_type,
00066 Tcl_Interp *interp, int &error);
00067
00068 extern VTKTCL_EXPORT void vtkTclVoidFunc(void *);
00069 extern VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *);
00070 extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp,
00071 ClientData arg);
00072 extern VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp *interp);
00073
00074 extern VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd,
00075 Tcl_Interp *interp,
00076 int argc, char *argv[]);
00077 extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd);
00078 extern VTKTCL_EXPORT
00079 void vtkTclCreateNew(Tcl_Interp *interp, const char *cname,
00080 ClientData (*NewCommand)(),
00081 int (*CommandFunction)(ClientData cd,
00082 Tcl_Interp *interp,
00083 int argc, char *argv[]));
00084
00085 class vtkTclCommand : public vtkCommand
00086 {
00087 public:
00088 static vtkTclCommand *New() { return new vtkTclCommand; };
00089
00090 void SetStringCommand(const char *arg);
00091 void SetInterp(Tcl_Interp *interp) { this->Interp = interp; };
00092
00093 void Execute(vtkObject *, unsigned long, void *);
00094
00095 char *StringCommand;
00096 Tcl_Interp *Interp;
00097 protected:
00098 vtkTclCommand();
00099 ~vtkTclCommand();
00100 };
00101
00102 typedef struct _vtkTclVoidFuncArg
00103 {
00104 Tcl_Interp *interp;
00105 char *command;
00106 } vtkTclVoidFuncArg;
00107
00108 struct vtkTclCommandArgStruct
00109 {
00110 void *Pointer;
00111 Tcl_Interp *Interp;
00112 unsigned long Tag;
00113 };
00114
00115 struct vtkTclCommandStruct
00116 {
00117 ClientData (*NewCommand)();
00118 int (*CommandFunction)(ClientData cd, Tcl_Interp *interp,
00119 int argc, char *argv[]);
00120 };
00121
00122 struct vtkTclInterpStruct
00123 {
00124 Tcl_HashTable InstanceLookup;
00125 Tcl_HashTable PointerLookup;
00126 Tcl_HashTable CommandLookup;
00127
00128 int Number;
00129 int DebugOn;
00130 int InDelete;
00131 };
00132
00133 #endif
00134