vtkSMTrace.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
47 #ifndef vtkSMTrace_h
48 #define vtkSMTrace_h
49 
50 #include "vtkRemotingServerManagerModule.h" // needed for exports
51 #include "vtkSMObject.h"
52 #include "vtkSmartPointer.h" // needed for iVar
53 
54 #include <vector> // for std::vector
55 
56 class vtkSMProxy;
57 class vtkSmartPyObject;
58 
60 {
61 public:
62  static vtkSMTrace* New();
63  vtkTypeMacro(vtkSMTrace, vtkSMObject);
64  void PrintSelf(ostream& os, vtkIndent indent) override;
65 
70  static vtkSMTrace* GetActiveTracer() { return vtkSMTrace::ActiveTracer.GetPointer(); }
71 
82  static vtkSMTrace* StartTrace(const char* preamble = nullptr);
83 
88  static std::string StopTrace();
89 
91 
96  vtkSetMacro(TraceXMLDefaults, bool);
97  vtkGetMacro(TraceXMLDefaults, bool);
99 
101 
105  vtkSetMacro(LogTraceToStdout, bool);
106  vtkGetMacro(LogTraceToStdout, bool);
108 
110 
117  vtkSetMacro(FullyTraceSupplementalProxies, bool);
118  vtkGetMacro(FullyTraceSupplementalProxies, bool);
120 
122 
125  vtkSetMacro(SkipRenderingComponents, bool);
126  vtkGetMacro(SkipRenderingComponents, bool);
128 
130 
133  vtkSetMacro(FullyTraceCameraAdjustments, bool);
134  vtkGetMacro(FullyTraceCameraAdjustments, bool);
136 
137  enum
138  {
139  RECORD_ALL_PROPERTIES = 0,
140  RECORD_MODIFIED_PROPERTIES = 1,
141  RECORD_USER_MODIFIED_PROPERTIES = 2,
149  RECORD_ACTIVE_MODIFIED_PROPERTIES = 3
150  };
151 
152  vtkSetClampMacro(
153  PropertiesToTraceOnCreate, int, RECORD_ALL_PROPERTIES, RECORD_ACTIVE_MODIFIED_PROPERTIES);
154  vtkGetMacro(PropertiesToTraceOnCreate, int);
155 
159  std::string GetCurrentTrace();
160 
168  static std::string GetState(vtkSMProxy* options);
169 
170  // ************** BEGIN INTERNAL *************************
172 
175  class TraceItem;
177  {
178  public:
179  TraceItemArgs();
180  ~TraceItemArgs();
182 
183  // Overloads for keyword arguments.
184  TraceItemArgs& arg(const char* key, vtkObject* val);
185  TraceItemArgs& arg(const char* key, const char* val);
186  TraceItemArgs& arg(const char* key, int val);
187  TraceItemArgs& arg(const char* key, double val);
188  TraceItemArgs& arg(const char* key, bool val);
189  TraceItemArgs& arg(const char* key, const std::vector<int>& val);
190  TraceItemArgs& arg(const char* key, const std::vector<double>& val);
191  TraceItemArgs& arg(const char* key, const std::vector<std::string>& val);
192  TraceItemArgs& arg(const char* key, const std::vector<vtkObject*>& val);
193 
194  // Overloads for positional arguments.
195  TraceItemArgs& arg(vtkObject* val);
196  TraceItemArgs& arg(const char* val);
197  TraceItemArgs& arg(int val);
198  TraceItemArgs& arg(double val);
199  TraceItemArgs& arg(bool val);
200  TraceItemArgs& arg(const std::vector<std::string>& val);
201 
202  private:
204  void operator=(const TraceItemArgs&);
205 
206  friend class TraceItem;
207  class vtkInternals;
208  vtkInternals* Internals;
209  };
210 
212  {
213  public:
214  TraceItem(const char* type);
215  ~TraceItem();
216  void operator=(const TraceItemArgs& arguments);
217 
218  private:
219  TraceItem(const TraceItem&);
220  void operator=(const TraceItem&);
221  const char* Type;
222  class TraceItemInternals;
223  TraceItemInternals* Internals;
224  };
225  // ************** END INTERNAL *************************
226 
227 protected:
228  vtkSMTrace();
229  ~vtkSMTrace() override;
230 
234  bool CheckForError();
235 
242 
243 private:
244  vtkSMTrace(const vtkSMTrace&) = delete;
245  void operator=(const vtkSMTrace&) = delete;
246 
247  static vtkSmartPointer<vtkSMTrace> ActiveTracer;
248  class vtkInternals;
249  vtkInternals* Internals;
250 
251  friend class TraceItem;
252  const vtkSmartPyObject& GetTraceModule() const;
253  const vtkSmartPyObject& GetCreateItemFunction() const;
254 };
255 
256 #define SM_SCOPED_TRACE_0(x, y) x##y
257 #define SM_SCOPED_TRACE_1(x, y) SM_SCOPED_TRACE_0(x, y)
258 #define SM_SCOPED_TRACE(_A_TRACE_TYPE) \
259  vtkSMTrace::TraceItem SM_SCOPED_TRACE_1(_trace_item, __LINE__)(#_A_TRACE_TYPE); \
260  SM_SCOPED_TRACE_1(_trace_item, __LINE__) = vtkSMTrace::TraceItemArgs()
261 #endif
type
#define VTKREMOTINGSERVERMANAGER_EXPORT
vtkSMTrace is used to produce Python trace in the ParaView application.
Definition: vtkSMTrace.h:59
bool FullyTraceSupplementalProxies
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:239
bool TraceXMLDefaults
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:236
bool SkipRenderingComponents
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:240
superclass for most server manager classes
Definition: vtkSMObject.h:17
bool FullyTraceCameraAdjustments
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:241
static vtkSMTrace * GetActiveTracer()
Provides access to the "active" tracer.
Definition: vtkSMTrace.h:70
static vtkSMObject * New()
proxy for a VTK object(s) on a server
Definition: vtkSMProxy.h:140
T * GetPointer() const
bool LogTraceToStdout
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:237
int PropertiesToTraceOnCreate
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:238
key
void PrintSelf(ostream &os, vtkIndent indent) override