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 
167  static std::string GetState(vtkSMProxy* options);
168 
169  // ************** BEGIN INTERNAL *************************
171 
174  class TraceItem;
176  {
177  public:
178  TraceItemArgs();
179  ~TraceItemArgs();
181 
182  // Overloads for keyword arguments.
183  TraceItemArgs& arg(const char* key, vtkObject* val);
184  TraceItemArgs& arg(const char* key, const char* val);
185  TraceItemArgs& arg(const char* key, int val);
186  TraceItemArgs& arg(const char* key, double val);
187  TraceItemArgs& arg(const char* key, bool val);
188  TraceItemArgs& arg(const char* key, const std::vector<int>& val);
189  TraceItemArgs& arg(const char* key, const std::vector<double>& val);
190  TraceItemArgs& arg(const char* key, const std::vector<std::string>& val);
191  TraceItemArgs& arg(const char* key, const std::vector<vtkObject*>& val);
192 
193  // Overloads for positional arguments.
194  TraceItemArgs& arg(vtkObject* val);
195  TraceItemArgs& arg(const char* val);
196  TraceItemArgs& arg(int val);
197  TraceItemArgs& arg(double val);
198  TraceItemArgs& arg(bool val);
199  TraceItemArgs& arg(const std::vector<std::string>& val);
200 
201  private:
203  void operator=(const TraceItemArgs&);
204 
205  friend class TraceItem;
206  class vtkInternals;
207  vtkInternals* Internals;
208  };
209 
211  {
212  public:
213  TraceItem(const char* type);
214  ~TraceItem();
215  void operator=(const TraceItemArgs& arguments);
216 
217  private:
218  TraceItem(const TraceItem&);
219  void operator=(const TraceItem&);
220  const char* Type;
221  class TraceItemInternals;
222  TraceItemInternals* Internals;
223  };
224  // ************** END INTERNAL *************************
225 
226 protected:
227  vtkSMTrace();
228  ~vtkSMTrace() override;
229 
233  bool CheckForError();
234 
241 
242 private:
243  vtkSMTrace(const vtkSMTrace&) = delete;
244  void operator=(const vtkSMTrace&) = delete;
245 
246  inline static vtkSmartPointer<vtkSMTrace> ActiveTracer = nullptr;
247  class vtkInternals;
248  vtkInternals* Internals;
249 
250  friend class TraceItem;
251  const vtkSmartPyObject& GetTraceModule() const;
252  const vtkSmartPyObject& GetCreateItemFunction() const;
253 };
254 
255 #define SM_SCOPED_TRACE_0(x, y) x##y
256 #define SM_SCOPED_TRACE_1(x, y) SM_SCOPED_TRACE_0(x, y)
257 #define SM_SCOPED_TRACE(_A_TRACE_TYPE) \
258  vtkSMTrace::TraceItem SM_SCOPED_TRACE_1(_trace_item, __LINE__)(#_A_TRACE_TYPE); \
259  SM_SCOPED_TRACE_1(_trace_item, __LINE__) = vtkSMTrace::TraceItemArgs()
260 #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:238
bool TraceXMLDefaults
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:235
bool SkipRenderingComponents
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:239
superclass for most server manager classes
Definition: vtkSMObject.h:17
bool FullyTraceCameraAdjustments
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:240
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:236
int PropertiesToTraceOnCreate
Returns true of there&#39;s an error.
Definition: vtkSMTrace.h:237
key
void PrintSelf(ostream &os, vtkIndent indent) override