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 "vtkRemotingServerManagerModule.h" // needed for exports
63 #include "vtkSMObject.h"
64 #include "vtkSmartPointer.h" // needed for iVar
65 
66 #include <vector>
67 
68 class vtkSMProxy;
69 class vtkSmartPyObject;
70 
72 {
73 public:
74  static vtkSMTrace* New();
75  vtkTypeMacro(vtkSMTrace, vtkSMObject);
76  void PrintSelf(ostream& os, vtkIndent indent) override;
77 
82  static vtkSMTrace* GetActiveTracer() { return vtkSMTrace::ActiveTracer.GetPointer(); }
83 
94  static vtkSMTrace* StartTrace(const char* preamble = nullptr);
95 
100  static std::string StopTrace();
101 
103 
108  vtkSetMacro(TraceXMLDefaults, bool);
109  vtkGetMacro(TraceXMLDefaults, bool);
111 
113 
117  vtkSetMacro(LogTraceToStdout, bool);
118  vtkGetMacro(LogTraceToStdout, bool);
120 
122 
129  vtkSetMacro(FullyTraceSupplementalProxies, bool);
130  vtkGetMacro(FullyTraceSupplementalProxies, bool);
132 
134 
137  vtkSetMacro(SkipRenderingComponents, bool);
138  vtkGetMacro(SkipRenderingComponents, bool);
140 
141  enum
142  {
143  RECORD_ALL_PROPERTIES = 0,
144  RECORD_MODIFIED_PROPERTIES = 1,
145  RECORD_USER_MODIFIED_PROPERTIES = 2
146  };
147 
148  vtkSetClampMacro(
149  PropertiesToTraceOnCreate, int, RECORD_ALL_PROPERTIES, RECORD_USER_MODIFIED_PROPERTIES);
150  vtkGetMacro(PropertiesToTraceOnCreate, int);
151 
155  std::string GetCurrentTrace();
156 
164  static std::string GetState(vtkSMProxy* options);
165 
166  // ************** BEGIN INTERNAL *************************
168 
171  class TraceItem;
173  {
174  public:
175  TraceItemArgs();
176  ~TraceItemArgs();
178 
179  // Overloads for keyword arguments.
180  TraceItemArgs& arg(const char* key, vtkObject* val);
181  TraceItemArgs& arg(const char* key, const char* val);
182  TraceItemArgs& arg(const char* key, int val);
183  TraceItemArgs& arg(const char* key, double val);
184  TraceItemArgs& arg(const char* key, bool val);
185  TraceItemArgs& arg(const char* key, const std::vector<int>& val);
186  TraceItemArgs& arg(const char* key, const std::vector<double>& val);
187 
188  // Overloads for positional arguments.
189  TraceItemArgs& arg(vtkObject* val);
190  TraceItemArgs& arg(const char* val);
191  TraceItemArgs& arg(int val);
192  TraceItemArgs& arg(double val);
193  TraceItemArgs& arg(bool val);
194 
195  private:
197  void operator=(const TraceItemArgs&);
198 
199  friend class TraceItem;
200  class vtkInternals;
201  vtkInternals* Internals;
202  };
203 
205  {
206  public:
207  TraceItem(const char* type);
208  ~TraceItem();
209  void operator=(const TraceItemArgs& arguments);
210 
211  private:
212  TraceItem(const TraceItem&);
213  void operator=(const TraceItem&);
214  const char* Type;
215  class TraceItemInternals;
216  TraceItemInternals* Internals;
217  };
218  // ************** END INTERNAL *************************
219 
220 protected:
221  vtkSMTrace();
222  ~vtkSMTrace() override;
223 
227  bool CheckForError();
228 
234 
235 private:
236  vtkSMTrace(const vtkSMTrace&) = delete;
237  void operator=(const vtkSMTrace&) = delete;
238 
239  static vtkSmartPointer<vtkSMTrace> ActiveTracer;
240  class vtkInternals;
241  vtkInternals* Internals;
242 
243  friend class TraceItem;
244  const vtkSmartPyObject& GetTraceModule() const;
245  const vtkSmartPyObject& GetCreateItemFunction() const;
246 };
247 
248 #define SM_SCOPED_TRACE_0(x, y) x##y
249 #define SM_SCOPED_TRACE_1(x, y) SM_SCOPED_TRACE_0(x, y)
250 #define SM_SCOPED_TRACE(_A_TRACE_TYPE) \
251  vtkSMTrace::TraceItem SM_SCOPED_TRACE_1(_trace_item, __LINE__)(#_A_TRACE_TYPE); \
252  SM_SCOPED_TRACE_1(_trace_item, __LINE__) = vtkSMTrace::TraceItemArgs()
253 #endif
type
#define VTKREMOTINGSERVERMANAGER_EXPORT
vtkSMTrace is used to produce Python trace in the ParaView application.
Definition: vtkSMTrace.h:71
bool FullyTraceSupplementalProxies
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:232
bool TraceXMLDefaults
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:229
bool SkipRenderingComponents
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:233
superclass for most server manager classes
Definition: vtkSMObject.h:29
static vtkSMTrace * GetActiveTracer()
Provides access to the "active" tracer.
Definition: vtkSMTrace.h:82
static vtkSMObject * New()
proxy for a VTK object(s) on a server
Definition: vtkSMProxy.h:152
T * GetPointer() const
bool LogTraceToStdout
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:230
int PropertiesToTraceOnCreate
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:231
key
void PrintSelf(ostream &os, vtkIndent indent) override