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