Blender V4.5
BPy_UnaryPredicate0D.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2004-2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
10
11#include "BPy_Convert.h"
15
16using namespace Freestyle;
17
19
20//-------------------MODULE INITIALIZATION--------------------------------
22{
23 if (module == nullptr) {
24 return -1;
25 }
26
27 if (PyType_Ready(&UnaryPredicate0D_Type) < 0) {
28 return -1;
29 }
30 PyModule_AddObjectRef(module, "UnaryPredicate0D", (PyObject *)&UnaryPredicate0D_Type);
31
32 if (PyType_Ready(&FalseUP0D_Type) < 0) {
33 return -1;
34 }
35 PyModule_AddObjectRef(module, "FalseUP0D", (PyObject *)&FalseUP0D_Type);
36
37 if (PyType_Ready(&TrueUP0D_Type) < 0) {
38 return -1;
39 }
40 PyModule_AddObjectRef(module, "TrueUP0D", (PyObject *)&TrueUP0D_Type);
41
42 return 0;
43}
44
45//------------------------INSTANCE METHODS ----------------------------------
46
48 /* Wrap. */
49 UnaryPredicate0D___doc__,
50 "Base class for unary predicates that work on\n"
51 ":class:`Interface0DIterator`. A UnaryPredicate0D is a functor that\n"
52 "evaluates a condition on an Interface0DIterator and returns true or\n"
53 "false depending on whether this condition is satisfied or not. The\n"
54 "UnaryPredicate0D is used by invoking its __call__() method. Any\n"
55 "inherited class must overload the __call__() method.\n"
56 "\n"
57 ".. method:: __init__()\n"
58 "\n"
59 " Default constructor.\n"
60 "\n"
61 ".. method:: __call__(it)\n"
62 "\n"
63 " Must be overload by inherited classes.\n"
64 "\n"
65 " :arg it: The Interface0DIterator pointing onto the Interface0D at\n"
66 " which we wish to evaluate the predicate.\n"
67 " :type it: :class:`Interface0DIterator`\n"
68 " :return: True if the condition is satisfied, false otherwise.\n"
69 " :rtype: bool\n");
70
71static int UnaryPredicate0D___init__(BPy_UnaryPredicate0D *self, PyObject *args, PyObject *kwds)
72{
73 static const char *kwlist[] = {nullptr};
74
75 if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
76 return -1;
77 }
78 self->up0D = new UnaryPredicate0D();
79 self->up0D->py_up0D = (PyObject *)self;
80 return 0;
81}
82
84{
85 delete self->up0D;
86 Py_TYPE(self)->tp_free((PyObject *)self);
87}
88
90{
91 return PyUnicode_FromFormat("type: %s - address: %p", Py_TYPE(self)->tp_name, self->up0D);
92}
93
95 PyObject *args,
96 PyObject *kwds)
97{
98 static const char *kwlist[] = {"it", nullptr};
99 PyObject *py_if0D_it;
100
101 if (!PyArg_ParseTupleAndKeywords(
102 args, kwds, "O!", (char **)kwlist, &Interface0DIterator_Type, &py_if0D_it))
103 {
104 return nullptr;
105 }
106
107 Interface0DIterator *if0D_it = ((BPy_Interface0DIterator *)py_if0D_it)->if0D_it;
108
109 if (!if0D_it) {
110 string class_name(Py_TYPE(self)->tp_name);
111 PyErr_SetString(PyExc_RuntimeError, (class_name + " has no Interface0DIterator").c_str());
112 return nullptr;
113 }
114 if (typeid(*(self->up0D)) == typeid(UnaryPredicate0D)) {
115 PyErr_SetString(PyExc_TypeError, "__call__ method not properly overridden");
116 return nullptr;
117 }
118 if (self->up0D->operator()(*if0D_it) < 0) {
119 if (!PyErr_Occurred()) {
120 string class_name(Py_TYPE(self)->tp_name);
121 PyErr_SetString(PyExc_RuntimeError, (class_name + " __call__ method failed").c_str());
122 }
123 return nullptr;
124 }
125 return PyBool_from_bool(self->up0D->result);
126}
127
128/*----------------------UnaryPredicate0D get/setters ----------------------------*/
129
131 /* Wrap. */
132 UnaryPredicate0D_name_doc,
133 "The name of the unary 0D predicate.\n"
134 "\n"
135 ":type: str");
136
137static PyObject *UnaryPredicate0D_name_get(BPy_UnaryPredicate0D *self, void * /*closure*/)
138{
139 return PyUnicode_FromString(Py_TYPE(self)->tp_name);
140}
141
142static PyGetSetDef BPy_UnaryPredicate0D_getseters[] = {
143 {"name",
145 (setter) nullptr,
146 UnaryPredicate0D_name_doc,
147 nullptr},
148 {nullptr, nullptr, nullptr, nullptr, nullptr} /* Sentinel */
149};
150
151/*-----------------------BPy_UnaryPredicate0D type definition ------------------------------*/
152
153PyTypeObject UnaryPredicate0D_Type = {
154 /*ob_base*/ PyVarObject_HEAD_INIT(nullptr, 0)
155 /*tp_name*/ "UnaryPredicate0D",
156 /*tp_basicsize*/ sizeof(BPy_UnaryPredicate0D),
157 /*tp_itemsize*/ 0,
158 /*tp_dealloc*/ (destructor)UnaryPredicate0D___dealloc__,
159 /*tp_vectorcall_offset*/ 0,
160 /*tp_getattr*/ nullptr,
161 /*tp_setattr*/ nullptr,
162 /*tp_as_async*/ nullptr,
163 /*tp_repr*/ (reprfunc)UnaryPredicate0D___repr__,
164 /*tp_as_number*/ nullptr,
165 /*tp_as_sequence*/ nullptr,
166 /*tp_as_mapping*/ nullptr,
167 /*tp_hash*/ nullptr,
168 /*tp_call*/ (ternaryfunc)UnaryPredicate0D___call__,
169 /*tp_str*/ nullptr,
170 /*tp_getattro*/ nullptr,
171 /*tp_setattro*/ nullptr,
172 /*tp_as_buffer*/ nullptr,
173 /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
174 /*tp_doc*/ UnaryPredicate0D___doc__,
175 /*tp_traverse*/ nullptr,
176 /*tp_clear*/ nullptr,
177 /*tp_richcompare*/ nullptr,
178 /*tp_weaklistoffset*/ 0,
179 /*tp_iter*/ nullptr,
180 /*tp_iternext*/ nullptr,
181 /*tp_methods*/ nullptr,
182 /*tp_members*/ nullptr,
183 /*tp_getset*/ BPy_UnaryPredicate0D_getseters,
184 /*tp_base*/ nullptr,
185 /*tp_dict*/ nullptr,
186 /*tp_descr_get*/ nullptr,
187 /*tp_descr_set*/ nullptr,
188 /*tp_dictoffset*/ 0,
189 /*tp_init*/ (initproc)UnaryPredicate0D___init__,
190 /*tp_alloc*/ nullptr,
191 /*tp_new*/ PyType_GenericNew,
192};
193
PyObject * PyBool_from_bool(bool b)
PyTypeObject FalseUP0D_Type
PyTypeObject Interface0DIterator_Type
PyTypeObject TrueUP0D_Type
static PyObject * UnaryPredicate0D_name_get(BPy_UnaryPredicate0D *self, void *)
int UnaryPredicate0D_Init(PyObject *module)
PyTypeObject UnaryPredicate0D_Type
PyDoc_STRVAR(UnaryPredicate0D___doc__, "Base class for unary predicates that work on\n" ":class:`Interface0DIterator`. A UnaryPredicate0D is a functor that\n" "evaluates a condition on an Interface0DIterator and returns true or\n" "false depending on whether this condition is satisfied or not. The\n" "UnaryPredicate0D is used by invoking its __call__() method. Any\n" "inherited class must overload the __call__() method.\n" "\n" ".. method:: __init__()\n" "\n" " Default constructor.\n" "\n" ".. method:: __call__(it)\n" "\n" " Must be overload by inherited classes.\n" "\n" " :arg it: The Interface0DIterator pointing onto the Interface0D at\n" " which we wish to evaluate the predicate.\n" " :type it: :class:`Interface0DIterator`\n" " :return: True if the condition is satisfied, false otherwise.\n" " :rtype: bool\n")
static PyObject * UnaryPredicate0D___repr__(BPy_UnaryPredicate0D *self)
static void UnaryPredicate0D___dealloc__(BPy_UnaryPredicate0D *self)
static int UnaryPredicate0D___init__(BPy_UnaryPredicate0D *self, PyObject *args, PyObject *kwds)
static PyObject * UnaryPredicate0D___call__(BPy_UnaryPredicate0D *self, PyObject *args, PyObject *kwds)
static PyGetSetDef BPy_UnaryPredicate0D_getseters[]
PyObject * self
inherits from class Rep
Definition AppCanvas.cpp:20
static struct PyModuleDef module
Definition python.cpp:796