ParaView
vtkSMTrace.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkSMTrace.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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 =========================================================================*/
59 #ifndef vtkSMTrace_h
60 #define vtkSMTrace_h
61 
62 #include "vtkPVServerManagerCoreModule.h" // needed for exports
63 #include "vtkSMObject.h"
64 #include "vtkSmartPointer.h" // needed for iVar
65 #include "vtkStdString.h" // needed for ivar
66 
67 class vtkSMProxy;
68 class vtkSmartPyObject;
69 
70 class VTKPVSERVERMANAGERCORE_EXPORT vtkSMTrace : public vtkSMObject
71 {
72 public:
73  static vtkSMTrace* New();
74  vtkTypeMacro(vtkSMTrace, vtkSMObject);
75  void PrintSelf(ostream& os, vtkIndent indent);
76 
81  static vtkSMTrace* GetActiveTracer() { return vtkSMTrace::ActiveTracer.GetPointer(); }
82 
88  static vtkSMTrace* StartTrace();
89 
94  static vtkStdString StopTrace();
95 
97 
102  vtkSetMacro(TraceXMLDefaults, bool);
103  vtkGetMacro(TraceXMLDefaults, bool);
105 
107 
111  vtkSetMacro(LogTraceToStdout, bool);
112  vtkGetMacro(LogTraceToStdout, bool);
114 
116 
123  vtkSetMacro(FullyTraceSupplementalProxies, bool);
124  vtkGetMacro(FullyTraceSupplementalProxies, bool);
126 
127  enum
128  {
129  RECORD_ALL_PROPERTIES = 0,
130  RECORD_MODIFIED_PROPERTIES = 1,
131  RECORD_USER_MODIFIED_PROPERTIES = 2
132  };
133 
134  vtkSetClampMacro(
135  PropertiesToTraceOnCreate, int, RECORD_ALL_PROPERTIES, RECORD_USER_MODIFIED_PROPERTIES);
136  vtkGetMacro(PropertiesToTraceOnCreate, int);
137 
141  vtkStdString GetCurrentTrace();
142 
147  static vtkStdString GetState(int propertiesToTraceOnCreate, bool skipHiddenRepresentations);
148 
149  // ************** BEGIN INTERNAL *************************
151 
154  class TraceItem;
155  class VTKPVSERVERMANAGERCORE_EXPORT TraceItemArgs
156  {
157  public:
158  TraceItemArgs();
159  ~TraceItemArgs();
161 
162  // Overloads for keyword arguments.
163  TraceItemArgs& arg(const char* key, vtkObject* val);
164  TraceItemArgs& arg(const char* key, const char* val);
165  TraceItemArgs& arg(const char* key, int val);
166  TraceItemArgs& arg(const char* key, double val);
167  TraceItemArgs& arg(const char* key, bool val);
168 
169  // Overloads for positional arguments.
170  TraceItemArgs& arg(vtkObject* val);
171  TraceItemArgs& arg(const char* val);
172  TraceItemArgs& arg(int val);
173  TraceItemArgs& arg(double val);
174  TraceItemArgs& arg(bool val);
175 
176  private:
178  void operator=(const TraceItemArgs&);
179 
180  friend class TraceItem;
181  class vtkInternals;
182  vtkInternals* Internals;
183  };
184 
185  class VTKPVSERVERMANAGERCORE_EXPORT TraceItem
186  {
187  public:
188  TraceItem(const char* type);
189  ~TraceItem();
190  void operator=(const TraceItemArgs& arguments);
191 
192  private:
193  TraceItem(const TraceItem&);
194  void operator=(const TraceItem&);
195  const char* Type;
196  class TraceItemInternals;
197  TraceItemInternals* Internals;
198  };
199  // ************** END INTERNAL *************************
200 
201 protected:
202  vtkSMTrace();
203  virtual ~vtkSMTrace();
204 
208  bool CheckForError();
209 
214 
215 private:
216  vtkSMTrace(const vtkSMTrace&) VTK_DELETE_FUNCTION;
217  void operator=(const vtkSMTrace&) VTK_DELETE_FUNCTION;
218 
219  static vtkSmartPointer<vtkSMTrace> ActiveTracer;
220  class vtkInternals;
221  vtkInternals* Internals;
222 
223  friend class TraceItem;
224  const vtkSmartPyObject& GetTraceModule() const;
225  const vtkSmartPyObject& GetCreateItemFunction() const;
226 };
227 
228 #define SM_SCOPED_TRACE_0(x, y) x##y
229 #define SM_SCOPED_TRACE_1(x, y) SM_SCOPED_TRACE_0(x, y)
230 #define SM_SCOPED_TRACE(_A_TRACE_TYPE) \
231  vtkSMTrace::TraceItem SM_SCOPED_TRACE_1(_trace_item, __LINE__)(#_A_TRACE_TYPE); \
232  SM_SCOPED_TRACE_1(_trace_item, __LINE__) = vtkSMTrace::TraceItemArgs()
233 #endif
void PrintSelf(ostream &os, vtkIndent indent)
vtkSMTrace is used to produce Python trace in the ParaView application.
Definition: vtkSMTrace.h:70
bool FullyTraceSupplementalProxies
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:213
bool TraceXMLDefaults
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:210
superclass for most server manager classes
Definition: vtkSMObject.h:31
static vtkSMTrace * GetActiveTracer()
Provides access to the "active" tracer.
Definition: vtkSMTrace.h:81
static vtkSMObject * New()
proxy for a VTK object(s) on a server
Definition: vtkSMProxy.h:152
bool LogTraceToStdout
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:211
int PropertiesToTraceOnCreate
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:212