VTK  9.2.20230603
vtkTclUtil.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkTclUtil.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
16 #ifndef vtkTclUtil_h
17 #define vtkTclUtil_h
18 
19 #include "vtkCommand.h"
20 #include "vtkObject.h"
21 #include "vtkTcl.h"
22 
23 #ifdef _WIN32
24 #define VTKTCL_EXPORT __declspec(dllexport)
25 #else
26 #define VTKTCL_EXPORT
27 #endif
28 
29 VTK_ABI_NAMESPACE_BEGIN
30 extern VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp* interp, char* name, vtkObject* obj);
31 
33  vtkObject*, unsigned long eventId, void*, void*);
34 extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd);
35 
37  Tcl_Interp* interp, void* temp, const char* targetType);
38 
40  const char* name, const char* result_type, Tcl_Interp* interp, int& error);
41 
42 extern VTKTCL_EXPORT void vtkTclVoidFunc(void*);
44 extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp* interp, ClientData arg);
45 extern VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp* interp);
46 
48  ClientData cd, Tcl_Interp* interp, int argc, char* argv[]);
49 extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd);
50 extern VTKTCL_EXPORT void vtkTclCreateNew(Tcl_Interp* interp, const char* cname,
51  ClientData (*NewCommand)(),
52  int (*CommandFunction)(ClientData cd, Tcl_Interp* interp, int argc, char* argv[]));
53 
54 class vtkTclCommand : public vtkCommand
55 {
56 public:
57  static vtkTclCommand* New() { return new vtkTclCommand; }
58 
59  void SetStringCommand(const char* arg);
60  void SetInterp(Tcl_Interp* interp) { this->Interp = interp; }
61 
62  void Execute(vtkObject*, unsigned long, void*) override;
63 
65  Tcl_Interp* Interp;
66 
67 protected:
69  ~vtkTclCommand() override;
70 };
71 
72 typedef struct _vtkTclVoidFuncArg
73 {
74  Tcl_Interp* interp;
75  char* command;
77 
79 {
80  void* Pointer;
81  Tcl_Interp* Interp;
82  unsigned long Tag;
83 };
84 
86 {
87  ClientData (*NewCommand)();
88  int (*CommandFunction)(ClientData cd, Tcl_Interp* interp, int argc, char* argv[]);
89 };
90 
92 {
93  Tcl_HashTable InstanceLookup;
94  Tcl_HashTable PointerLookup;
95  Tcl_HashTable CommandLookup;
96 
97  int Number;
98  int DebugOn;
99  int InDelete;
101 };
102 
103 extern VTKTCL_EXPORT void vtkTclApplicationInitExecutable(int argc, const char* const argv[]);
105  Tcl_Interp* interp, const char* const relative_dirs[]);
106 
107 VTK_ABI_NAMESPACE_END
108 #endif
109 // VTK-HeaderTest-Exclude: vtkTclUtil.h
superclass for callback/observer methods
Definition: vtkCommand.h:396
abstract base class for most VTK objects
Definition: vtkObject.h:83
~vtkTclCommand() override
char * StringCommand
Definition: vtkTclUtil.h:64
void SetInterp(Tcl_Interp *interp)
Definition: vtkTclUtil.h:60
void SetStringCommand(const char *arg)
void Execute(vtkObject *, unsigned long, void *) override
All derived classes of vtkCommand must implement this method.
static vtkTclCommand * New()
Definition: vtkTclUtil.h:57
Tcl_Interp * Interp
Definition: vtkTclUtil.h:65
@ name
Definition: vtkX3D.h:231
Tcl_Interp * interp
Definition: vtkTclUtil.h:74
Tcl_Interp * Interp
Definition: vtkTclUtil.h:81
unsigned long Tag
Definition: vtkTclUtil.h:82
ClientData(* NewCommand)()
Definition: vtkTclUtil.h:87
int(* CommandFunction)(ClientData cd, Tcl_Interp *interp, int argc, char *argv[])
Definition: vtkTclUtil.h:88
Tcl_HashTable InstanceLookup
Definition: vtkTclUtil.h:93
Tcl_HashTable PointerLookup
Definition: vtkTclUtil.h:94
Tcl_HashTable CommandLookup
Definition: vtkTclUtil.h:95
int DeleteExistingObjectOnNew
Definition: vtkTclUtil.h:100
VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd)
VTKTCL_EXPORT void vtkTclVoidFunc(void *)
VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *)
VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp, ClientData arg)
VTKTCL_EXPORT void vtkTclApplicationInitTclTk(Tcl_Interp *interp, const char *const relative_dirs[])
VTKTCL_EXPORT void * vtkTclGetPointerFromObject(const char *name, const char *result_type, Tcl_Interp *interp, int &error)
VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *, unsigned long eventId, void *, void *)
VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd, Tcl_Interp *interp, int argc, char *argv[])
#define VTKTCL_EXPORT
Definition: vtkTclUtil.h:26
VTKTCL_EXPORT void vtkTclApplicationInitExecutable(int argc, const char *const argv[])
VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp *interp, char *name, vtkObject *obj)
struct _vtkTclVoidFuncArg vtkTclVoidFuncArg
VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp *interp)
VTKTCL_EXPORT void vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp, const char *targetType)
VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd)
VTKTCL_EXPORT void vtkTclCreateNew(Tcl_Interp *interp, const char *cname, ClientData(*NewCommand)(), int(*CommandFunction)(ClientData cd, Tcl_Interp *interp, int argc, char *argv[]))