// python wrapper for vtkLinearSelector // #define VTK_WRAPPING_CXX #define VTK_STREAMS_FWD_ONLY #include "vtkPythonArgs.h" #include "vtkPythonOverload.h" #include "vtkConfigure.h" #include #include #include "vtkVariant.h" #include "vtkIndent.h" #include "vtkLinearSelector.h" extern "C" { VTK_ABI_EXPORT void PyVTKAddFile_vtkLinearSelector(PyObject *); } extern "C" { VTK_ABI_EXPORT PyObject *PyvtkLinearSelector_ClassNew(); } #ifndef DECLARED_PyvtkSelectionAlgorithm_ClassNew extern "C" { PyObject *PyvtkSelectionAlgorithm_ClassNew(); } #define DECLARED_PyvtkSelectionAlgorithm_ClassNew #endif static const char *PyvtkLinearSelector_Doc = "vtkLinearSelector - select cells intersecting a line (possibly broken)\n\n" "Superclass: vtkSelectionAlgorithm\n\n" "This filter takes a vtkCompositeDataSet as input and a line segment\n" "as parameter. It outputs a vtkSelection identifying all the cells\n" "intersecting the given line segment.\n\n" "@par Thanks: This class has been initially developed in the frame of\n" "CEA's Love visualization software development\n\n" "CEA/DIF - Commissariat a l'Energie Atomique, Centre DAM Ile-De-France\n\n" "BP12, F-91297 Arpajon, France.\n\n" "Modified and integrated into VTK, Kitware SAS 2012 This class was\n" "implemented by Thierry Carrard, Charles Pignerol, and Philippe Pebay.\n\n"; static PyObject * PyvtkLinearSelector_IsTypeOf(PyObject *, PyObject *args) { vtkPythonArgs ap(args, "IsTypeOf"); char *temp0 = nullptr; PyObject *result = nullptr; if (ap.CheckArgCount(1) && ap.GetValue(temp0)) { int tempr = vtkLinearSelector::IsTypeOf(temp0); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_IsA(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "IsA"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); char *temp0 = nullptr; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetValue(temp0)) { int tempr = (ap.IsBound() ? op->IsA(temp0) : op->vtkLinearSelector::IsA(temp0)); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_SafeDownCast(PyObject *, PyObject *args) { vtkPythonArgs ap(args, "SafeDownCast"); vtkObjectBase *temp0 = nullptr; PyObject *result = nullptr; if (ap.CheckArgCount(1) && ap.GetVTKObject(temp0, "vtkObjectBase")) { vtkLinearSelector *tempr = vtkLinearSelector::SafeDownCast(temp0); if (!ap.ErrorOccurred()) { result = ap.BuildVTKObject(tempr); } } return result; } static PyObject * PyvtkLinearSelector_NewInstance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "NewInstance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { vtkLinearSelector *tempr = (ap.IsBound() ? op->NewInstance() : op->vtkLinearSelector::NewInstance()); if (!ap.ErrorOccurred()) { result = ap.BuildVTKObject(tempr); if (result && PyVTKObject_Check(result)) { PyVTKObject_GetObject(result)->UnRegister(0); PyVTKObject_SetFlag(result, VTK_PYTHON_IGNORE_UNREGISTER, 1); } } } return result; } static PyObject * PyvtkLinearSelector_SetStartPoint_s1(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetStartPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); double temp0; double temp1; double temp2; PyObject *result = nullptr; if (op && ap.CheckArgCount(3) && ap.GetValue(temp0) && ap.GetValue(temp1) && ap.GetValue(temp2)) { if (ap.IsBound()) { op->SetStartPoint(temp0, temp1, temp2); } else { op->vtkLinearSelector::SetStartPoint(temp0, temp1, temp2); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_SetStartPoint_s2(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetStartPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); const int size0 = 3; double temp0[3]; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetArray(temp0, size0)) { if (ap.IsBound()) { op->SetStartPoint(temp0); } else { op->vtkLinearSelector::SetStartPoint(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_SetStartPoint(PyObject *self, PyObject *args) { int nargs = vtkPythonArgs::GetArgCount(self, args); switch(nargs) { case 3: return PyvtkLinearSelector_SetStartPoint_s1(self, args); case 1: return PyvtkLinearSelector_SetStartPoint_s2(self, args); } vtkPythonArgs::ArgCountError(nargs, "SetStartPoint"); return nullptr; } static PyObject * PyvtkLinearSelector_GetStartPoint(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetStartPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); int sizer = 3; PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double *tempr = (ap.IsBound() ? op->GetStartPoint() : op->vtkLinearSelector::GetStartPoint()); if (!ap.ErrorOccurred()) { result = ap.BuildTuple(tempr, sizer); } } return result; } static PyObject * PyvtkLinearSelector_SetEndPoint_s1(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetEndPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); double temp0; double temp1; double temp2; PyObject *result = nullptr; if (op && ap.CheckArgCount(3) && ap.GetValue(temp0) && ap.GetValue(temp1) && ap.GetValue(temp2)) { if (ap.IsBound()) { op->SetEndPoint(temp0, temp1, temp2); } else { op->vtkLinearSelector::SetEndPoint(temp0, temp1, temp2); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_SetEndPoint_s2(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetEndPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); const int size0 = 3; double temp0[3]; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetArray(temp0, size0)) { if (ap.IsBound()) { op->SetEndPoint(temp0); } else { op->vtkLinearSelector::SetEndPoint(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_SetEndPoint(PyObject *self, PyObject *args) { int nargs = vtkPythonArgs::GetArgCount(self, args); switch(nargs) { case 3: return PyvtkLinearSelector_SetEndPoint_s1(self, args); case 1: return PyvtkLinearSelector_SetEndPoint_s2(self, args); } vtkPythonArgs::ArgCountError(nargs, "SetEndPoint"); return nullptr; } static PyObject * PyvtkLinearSelector_GetEndPoint(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetEndPoint"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); int sizer = 3; PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double *tempr = (ap.IsBound() ? op->GetEndPoint() : op->vtkLinearSelector::GetEndPoint()); if (!ap.ErrorOccurred()) { result = ap.BuildTuple(tempr, sizer); } } return result; } static PyObject * PyvtkLinearSelector_SetPoints(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetPoints"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); vtkPoints *temp0 = nullptr; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetVTKObject(temp0, "vtkPoints")) { if (ap.IsBound()) { op->SetPoints(temp0); } else { op->vtkLinearSelector::SetPoints(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_GetPoints(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetPoints"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { vtkPoints *tempr = (ap.IsBound() ? op->GetPoints() : op->vtkLinearSelector::GetPoints()); if (!ap.ErrorOccurred()) { result = ap.BuildVTKObject(tempr); } } return result; } static PyObject * PyvtkLinearSelector_SetTolerance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetTolerance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); double temp0; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetValue(temp0)) { if (ap.IsBound()) { op->SetTolerance(temp0); } else { op->vtkLinearSelector::SetTolerance(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_GetTolerance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetTolerance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double tempr = (ap.IsBound() ? op->GetTolerance() : op->vtkLinearSelector::GetTolerance()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_SetIncludeVertices(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetIncludeVertices"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); bool temp0 = false; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetValue(temp0)) { if (ap.IsBound()) { op->SetIncludeVertices(temp0); } else { op->vtkLinearSelector::SetIncludeVertices(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_GetIncludeVertices(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetIncludeVertices"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { bool tempr = (ap.IsBound() ? op->GetIncludeVertices() : op->vtkLinearSelector::GetIncludeVertices()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_IncludeVerticesOn(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "IncludeVerticesOn"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { if (ap.IsBound()) { op->IncludeVerticesOn(); } else { op->vtkLinearSelector::IncludeVerticesOn(); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_IncludeVerticesOff(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "IncludeVerticesOff"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { if (ap.IsBound()) { op->IncludeVerticesOff(); } else { op->vtkLinearSelector::IncludeVerticesOff(); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_SetVertexEliminationTolerance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "SetVertexEliminationTolerance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); double temp0; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetValue(temp0)) { if (ap.IsBound()) { op->SetVertexEliminationTolerance(temp0); } else { op->vtkLinearSelector::SetVertexEliminationTolerance(temp0); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkLinearSelector_GetVertexEliminationToleranceMinValue(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetVertexEliminationToleranceMinValue"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double tempr = (ap.IsBound() ? op->GetVertexEliminationToleranceMinValue() : op->vtkLinearSelector::GetVertexEliminationToleranceMinValue()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_GetVertexEliminationToleranceMaxValue(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetVertexEliminationToleranceMaxValue"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double tempr = (ap.IsBound() ? op->GetVertexEliminationToleranceMaxValue() : op->vtkLinearSelector::GetVertexEliminationToleranceMaxValue()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkLinearSelector_GetVertexEliminationTolerance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetVertexEliminationTolerance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkLinearSelector *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { double tempr = (ap.IsBound() ? op->GetVertexEliminationTolerance() : op->vtkLinearSelector::GetVertexEliminationTolerance()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyMethodDef PyvtkLinearSelector_Methods[] = { {"IsTypeOf", PyvtkLinearSelector_IsTypeOf, METH_VARARGS, "V.IsTypeOf(string) -> int\nC++: static vtkTypeBool IsTypeOf(const char *type)\n\nReturn 1 if this class type is the same type of (or a subclass\nof) the named class. Returns 0 otherwise. This method works in\ncombination with vtkTypeMacro found in vtkSetGet.h.\n"}, {"IsA", PyvtkLinearSelector_IsA, METH_VARARGS, "V.IsA(string) -> int\nC++: vtkTypeBool IsA(const char *type) override;\n\nReturn 1 if this class is the same type of (or a subclass of) the\nnamed class. Returns 0 otherwise. This method works in\ncombination with vtkTypeMacro found in vtkSetGet.h.\n"}, {"SafeDownCast", PyvtkLinearSelector_SafeDownCast, METH_VARARGS, "V.SafeDownCast(vtkObjectBase) -> vtkLinearSelector\nC++: static vtkLinearSelector *SafeDownCast(vtkObjectBase *o)\n\n"}, {"NewInstance", PyvtkLinearSelector_NewInstance, METH_VARARGS, "V.NewInstance() -> vtkLinearSelector\nC++: vtkLinearSelector *NewInstance()\n\n"}, {"SetStartPoint", PyvtkLinearSelector_SetStartPoint, METH_VARARGS, "V.SetStartPoint(float, float, float)\nC++: void SetStartPoint(double, double, double)\nV.SetStartPoint((float, float, float))\nC++: void SetStartPoint(double a[3])\n\n"}, {"GetStartPoint", PyvtkLinearSelector_GetStartPoint, METH_VARARGS, "V.GetStartPoint() -> (float, float, float)\nC++: double *GetStartPoint()\n\nSet/Get starting point of intersecting segment\n"}, {"SetEndPoint", PyvtkLinearSelector_SetEndPoint, METH_VARARGS, "V.SetEndPoint(float, float, float)\nC++: void SetEndPoint(double, double, double)\nV.SetEndPoint((float, float, float))\nC++: void SetEndPoint(double a[3])\n\n"}, {"GetEndPoint", PyvtkLinearSelector_GetEndPoint, METH_VARARGS, "V.GetEndPoint() -> (float, float, float)\nC++: double *GetEndPoint()\n\nSet/Get end point of intersecting segment\n"}, {"SetPoints", PyvtkLinearSelector_SetPoints, METH_VARARGS, "V.SetPoints(vtkPoints)\nC++: virtual void SetPoints(vtkPoints *)\n\nSet/Get the list of points defining the intersecting broken line\n"}, {"GetPoints", PyvtkLinearSelector_GetPoints, METH_VARARGS, "V.GetPoints() -> vtkPoints\nC++: virtual vtkPoints *GetPoints()\n\nSet/Get the list of points defining the intersecting broken line\n"}, {"SetTolerance", PyvtkLinearSelector_SetTolerance, METH_VARARGS, "V.SetTolerance(float)\nC++: virtual void SetTolerance(double _arg)\n\nSet/Get tolerance to be used by intersection algorithm\n"}, {"GetTolerance", PyvtkLinearSelector_GetTolerance, METH_VARARGS, "V.GetTolerance() -> float\nC++: virtual double GetTolerance()\n\nSet/Get tolerance to be used by intersection algorithm\n"}, {"SetIncludeVertices", PyvtkLinearSelector_SetIncludeVertices, METH_VARARGS, "V.SetIncludeVertices(bool)\nC++: virtual void SetIncludeVertices(bool _arg)\n\nSet/Get whether lines vertice are included in selection\n"}, {"GetIncludeVertices", PyvtkLinearSelector_GetIncludeVertices, METH_VARARGS, "V.GetIncludeVertices() -> bool\nC++: virtual bool GetIncludeVertices()\n\nSet/Get whether lines vertice are included in selection\n"}, {"IncludeVerticesOn", PyvtkLinearSelector_IncludeVerticesOn, METH_VARARGS, "V.IncludeVerticesOn()\nC++: virtual void IncludeVerticesOn()\n\nSet/Get whether lines vertice are included in selection\n"}, {"IncludeVerticesOff", PyvtkLinearSelector_IncludeVerticesOff, METH_VARARGS, "V.IncludeVerticesOff()\nC++: virtual void IncludeVerticesOff()\n\nSet/Get whether lines vertice are included in selection\n"}, {"SetVertexEliminationTolerance", PyvtkLinearSelector_SetVertexEliminationTolerance, METH_VARARGS, "V.SetVertexEliminationTolerance(float)\nC++: virtual void SetVertexEliminationTolerance(double _arg)\n\nSet/Get relative tolerance for vertex elimination\n"}, {"GetVertexEliminationToleranceMinValue", PyvtkLinearSelector_GetVertexEliminationToleranceMinValue, METH_VARARGS, "V.GetVertexEliminationToleranceMinValue() -> float\nC++: virtual double GetVertexEliminationToleranceMinValue()\n\nSet/Get relative tolerance for vertex elimination\n"}, {"GetVertexEliminationToleranceMaxValue", PyvtkLinearSelector_GetVertexEliminationToleranceMaxValue, METH_VARARGS, "V.GetVertexEliminationToleranceMaxValue() -> float\nC++: virtual double GetVertexEliminationToleranceMaxValue()\n\nSet/Get relative tolerance for vertex elimination\n"}, {"GetVertexEliminationTolerance", PyvtkLinearSelector_GetVertexEliminationTolerance, METH_VARARGS, "V.GetVertexEliminationTolerance() -> float\nC++: virtual double GetVertexEliminationTolerance()\n\nSet/Get relative tolerance for vertex elimination\n"}, {nullptr, nullptr, 0, nullptr} }; static PyTypeObject PyvtkLinearSelector_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "vtkFiltersSelectionPython.vtkLinearSelector", // tp_name sizeof(PyVTKObject), // tp_basicsize 0, // tp_itemsize PyVTKObject_Delete, // tp_dealloc 0, // tp_print nullptr, // tp_getattr nullptr, // tp_setattr nullptr, // tp_compare PyVTKObject_Repr, // tp_repr nullptr, // tp_as_number nullptr, // tp_as_sequence nullptr, // tp_as_mapping nullptr, // tp_hash nullptr, // tp_call PyVTKObject_String, // tp_str PyObject_GenericGetAttr, // tp_getattro PyObject_GenericSetAttr, // tp_setattro &PyVTKObject_AsBuffer, // tp_as_buffer Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, // tp_flags PyvtkLinearSelector_Doc, // tp_doc PyVTKObject_Traverse, // tp_traverse nullptr, // tp_clear nullptr, // tp_richcompare offsetof(PyVTKObject, vtk_weakreflist), // tp_weaklistoffset nullptr, // tp_iter nullptr, // tp_iternext nullptr, // tp_methods nullptr, // tp_members PyVTKObject_GetSet, // tp_getset nullptr, // tp_base nullptr, // tp_dict nullptr, // tp_descr_get nullptr, // tp_descr_set offsetof(PyVTKObject, vtk_dict), // tp_dictoffset nullptr, // tp_init nullptr, // tp_alloc PyVTKObject_New, // tp_new PyObject_GC_Del, // tp_free nullptr, // tp_is_gc nullptr, // tp_bases nullptr, // tp_mro nullptr, // tp_cache nullptr, // tp_subclasses nullptr, // tp_weaklist VTK_WRAP_PYTHON_SUPPRESS_UNINITIALIZED }; static vtkObjectBase *PyvtkLinearSelector_StaticNew() { return vtkLinearSelector::New(); } PyObject *PyvtkLinearSelector_ClassNew() { PyVTKClass_Add( &PyvtkLinearSelector_Type, PyvtkLinearSelector_Methods, "vtkLinearSelector", &PyvtkLinearSelector_StaticNew); PyTypeObject *pytype = &PyvtkLinearSelector_Type; if ((pytype->tp_flags & Py_TPFLAGS_READY) != 0) { return (PyObject *)pytype; } #if !defined(VTK_PY3K) && PY_VERSION_HEX >= 0x02060000 pytype->tp_flags |= Py_TPFLAGS_HAVE_NEWBUFFER; #endif pytype->tp_base = (PyTypeObject *)PyvtkSelectionAlgorithm_ClassNew(); PyType_Ready(pytype); return (PyObject *)pytype; } void PyVTKAddFile_vtkLinearSelector( PyObject *dict) { PyObject *o; o = PyvtkLinearSelector_ClassNew(); if (o && PyDict_SetItemString(dict, "vtkLinearSelector", o) != 0) { Py_DECREF(o); } }