OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I386LINUX / util / I386LINUX / include / vtk / vtkTclUtil.h
1 /*=========================================================================
2
3   Program:   Visualization Toolkit
4   Module:    $RCSfile: vtkTclUtil.h,v $
5   Language:  C++
6   Date:      $Date: 2002/08/08 19:04:23 $
7   Version:   $Revision: 1.38 $
8
9   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
10   All rights reserved.
11   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
12
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.
16
17 =========================================================================*/
18
19 #ifndef __vtkTclInclude_h
20 #define __vtkTclInclude_h
21
22 #include "vtkObject.h"
23 #include "vtkCommand.h"
24 #include <tcl.h>
25
26 #ifdef WIN32
27 #define VTKTCL_EXPORT __declspec( dllexport )
28 #else
29 #define VTKTCL_EXPORT
30 #endif
31
32 extern VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp *interp, 
33                                               char *name,  
34                                               vtkObject *obj);
35
36 extern VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *,
37                                                      unsigned long eventId,
38                                                      void *, void *);
39 extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd);
40
41 extern VTKTCL_EXPORT void 
42 vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp,
43                            int (*command)(ClientData, 
44                                           Tcl_Interp *,int, char *[]));
45
46 extern VTKTCL_EXPORT void *
47 vtkTclGetPointerFromObject(const char *name, const char *result_type,
48                            Tcl_Interp *interp, int &error);
49
50 extern VTKTCL_EXPORT void vtkTclVoidFunc(void *);
51 extern VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *);
52 extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp, 
53                                               ClientData arg);
54 extern VTKTCL_EXPORT int  vtkTclInDelete(Tcl_Interp *interp);
55
56 extern VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd, 
57                                                   Tcl_Interp *interp,
58                                                   int argc, char *argv[]);
59 extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd);
60 extern VTKTCL_EXPORT 
61 void vtkTclCreateNew(Tcl_Interp *interp, const char *cname,
62                      ClientData (*NewCommand)(),
63                      int (*CommandFunction)(ClientData cd,
64                                             Tcl_Interp *interp,
65                                             int argc, char *argv[]));
66
67 class vtkTclCommand : public vtkCommand
68 {
69 public:
70   static vtkTclCommand *New() { return new vtkTclCommand; };
71
72   void SetStringCommand(const char *arg);
73   void SetInterp(Tcl_Interp *interp) { this->Interp = interp; };
74   
75   void Execute(vtkObject *, unsigned long, void *);
76
77   char *StringCommand;
78   Tcl_Interp *Interp;
79 protected:
80   vtkTclCommand();
81   ~vtkTclCommand(); 
82 };
83
84 typedef struct _vtkTclVoidFuncArg 
85 {
86   Tcl_Interp *interp;
87   char *command;
88 } vtkTclVoidFuncArg;
89
90 struct vtkTclCommandArgStruct
91 {
92   void *Pointer;
93   Tcl_Interp *Interp;
94   unsigned long Tag;
95 };
96
97 struct vtkTclCommandStruct
98 {
99   ClientData (*NewCommand)();
100   int (*CommandFunction)(ClientData cd, Tcl_Interp *interp,
101                          int argc, char *argv[]);
102 };
103
104 struct vtkTclInterpStruct
105 {
106   Tcl_HashTable InstanceLookup;
107   Tcl_HashTable PointerLookup;
108   Tcl_HashTable CommandLookup;
109
110   int Number;
111   int DebugOn;
112   int InDelete;
113 };
114
115 #endif
116