1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/*-----------------------------------------------------------------------
The PyVTKSpecialObject was created in Feb 2001 by David Gobbi.
The PyVTKSpecialType class was created in April 2010 by David Gobbi.
-----------------------------------------------------------------------*/
#ifndef PyVTKSpecialObject_h
#define PyVTKSpecialObject_h
#include "vtkABINamespace.h"
#include "vtkPython.h"
#include "vtkSystemIncludes.h"
#include "vtkWrappingPythonCoreModule.h" // For export macro
// This for objects not derived from vtkObjectBase
// Prototypes for per-type copy, delete, and print funcs
// copy the object and return the copy
typedef void* (*vtkcopyfunc)(const void*);
// Because the PyTypeObject can't hold all the typing information that we
// need, we use this PyVTKSpecialType class to hold a bit of extra info.
VTK_ABI_NAMESPACE_BEGIN
class VTKWRAPPINGPYTHONCORE_EXPORT PyVTKSpecialType
{
public:
PyVTKSpecialType()
: py_type(nullptr)
, vtk_methods(nullptr)
, vtk_constructors(nullptr)
, vtk_copy(nullptr)
{
}
PyVTKSpecialType(
PyTypeObject* typeobj, PyMethodDef* cmethods, PyMethodDef* ccons, vtkcopyfunc copyfunc);
// general information
PyTypeObject* py_type;
PyMethodDef* vtk_methods;
PyMethodDef* vtk_constructors;
// copy an object
vtkcopyfunc vtk_copy;
};
// The PyVTKSpecialObject is very lightweight. All special VTK types
// that are wrapped in VTK use this struct, they do not define their
// own structs.
struct PyVTKSpecialObject
{
PyObject_HEAD
PyVTKSpecialType* vtk_info;
void* vtk_ptr;
long vtk_hash;
};
VTK_ABI_NAMESPACE_END
extern "C"
{
VTKWRAPPINGPYTHONCORE_EXPORT
PyTypeObject* PyVTKSpecialType_Add(PyTypeObject* pytype, PyMethodDef* methods,
PyGetSetDef* getsets, PyMethodDef* constructors, vtkcopyfunc copyfunc);
VTKWRAPPINGPYTHONCORE_EXPORT
PyObject* PyVTKSpecialObject_New(const char* classname, void* ptr);
VTKWRAPPINGPYTHONCORE_EXPORT
PyObject* PyVTKSpecialObject_CopyNew(const char* classname, const void* ptr);
VTKWRAPPINGPYTHONCORE_EXPORT
PyObject* PyVTKSpecialObject_Repr(PyObject* self);
VTKWRAPPINGPYTHONCORE_EXPORT
PyObject* PyVTKSpecialObject_SequenceString(PyObject* self);
}
#endif
/* VTK-HeaderTest-Exclude: PyVTKSpecialObject.h */
|