Program Listing for File vtkMRMLLayerDMPythonUtil.h

Return to documentation for file (MRML/vtkMRMLLayerDMPythonUtil.h)

#pragma once
#include "vtkSlicerLayerDMModuleMRMLExport.h"

// VTK includes
#include <vtkObject.h>
#include <vtkPython.h>
#include <vtkPythonUtil.h>
#include <vtkSmartPyObject.h>

// STD includes
#include <string>
#include <vector>

class VTK_SLICER_LAYERDM_MODULE_MRML_EXPORT vtkMRMLLayerDMPythonUtil : public vtkObject
{
public:
  static vtkMRMLLayerDMPythonUtil* New();
  vtkTypeMacro(vtkMRMLLayerDMPythonUtil, vtkObject);

  static PyObject* ToPyObject(vtkObjectBase* obj);

  static PyObject* ToPyObject(unsigned long value);

  static PyObject* ToPyObject(const std::string& value);

  static PyObject* RawPtrToPython(void* ptr);

  static vtkSmartPyObject ToPyArgs(const std::vector<PyObject*>& pyObjs);

  static vtkSmartPyObject ToPyArgs(vtkObjectBase* obj);

  static vtkSmartPyObject ToPyArgs(vtkObject* obj, unsigned long eventId, void* callData);

  static PyObject* CastCallData(PyObject* object, int vtkType);

  static PyObject* CallPythonMethod(PyObject* object, const vtkSmartPyObject& pyArgs, const std::string& fName);

  static PyObject* CallPythonObject(PyObject* object, const vtkSmartPyObject& pyArgs);

  static void SetPythonObject(PyObject** destObject, PyObject* object);

  static void DeletePythonObject(PyObject** destObject);

  static bool IsValidPythonContext();

  static std::string FormatExceptionTraceback();

  static void PrintErrorTraceback(const vtkObject* object, const std::string& errorMsg);

  static std::string GetObjectStr(PyObject* object);

protected:
  vtkMRMLLayerDMPythonUtil();
  ~vtkMRMLLayerDMPythonUtil() override;
};