Blender V5.0
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");
70static int UnaryPredicate0D___init__(BPy_UnaryPredicate0D *self, PyObject *args, PyObject *kwds)
71{
72 static const char *kwlist[] = {nullptr};
73
74 if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
75 return -1;
76 }
77 self->up0D = new UnaryPredicate0D();
78 self->up0D->py_up0D = (PyObject *)self;
79 return 0;
80}
81
83{
84 delete self->up0D;
85 Py_TYPE(self)->tp_free((PyObject *)self);
86}
87
89{
90 return PyUnicode_FromFormat("type: %s - address: %p", Py_TYPE(self)->tp_name, self->up0D);
91}
92
94 PyObject *args,
95 PyObject *kwds)
96{
97 static const char *kwlist[] = {"it", nullptr};
98 PyObject *py_if0D_it;
99
100 if (!PyArg_ParseTupleAndKeywords(
101 args, kwds, "O!", (char **)kwlist, &Interface0DIterator_Type, &py_if0D_it))
102 {
103 return nullptr;
104 }
105
106 Interface0DIterator *if0D_it = ((BPy_Interface0DIterator *)py_if0D_it)->if0D_it;
107
108 if (!if0D_it) {
109 string class_name(Py_TYPE(self)->tp_name);
110 PyErr_SetString(PyExc_RuntimeError, (class_name + " has no Interface0DIterator").c_str());
111 return nullptr;
112 }
113 if (typeid(*(self->up0D)) == typeid(UnaryPredicate0D)) {
114 PyErr_SetString(PyExc_TypeError, "__call__ method not properly overridden");
115 return nullptr;
116 }
117 if (self->up0D->operator()(*if0D_it) < 0) {
118 if (!PyErr_Occurred()) {
119 string class_name(Py_TYPE(self)->tp_name);
120 PyErr_SetString(PyExc_RuntimeError, (class_name + " __call__ method failed").c_str());
121 }
122 return nullptr;
123 }
124 return PyBool_from_bool(self->up0D->result);
125}
126
127/*----------------------UnaryPredicate0D get/setters ----------------------------*/
128
130 /* Wrap. */
131 UnaryPredicate0D_name_doc,
132 "The name of the unary 0D predicate.\n"
133 "\n"
134 ":type: str\n");
135static PyObject *UnaryPredicate0D_name_get(BPy_UnaryPredicate0D *self, void * /*closure*/)
136{
137 return PyUnicode_FromString(Py_TYPE(self)->tp_name);
138}
139
140static PyGetSetDef BPy_UnaryPredicate0D_getseters[] = {
141 {"name",
143 (setter) nullptr,
144 UnaryPredicate0D_name_doc,
145 nullptr},
146 {nullptr, nullptr, nullptr, nullptr, nullptr} /* Sentinel */
147};
148
149/*-----------------------BPy_UnaryPredicate0D type definition ------------------------------*/
150
151PyTypeObject UnaryPredicate0D_Type = {
152 /*ob_base*/ PyVarObject_HEAD_INIT(nullptr, 0)
153 /*tp_name*/ "UnaryPredicate0D",
154 /*tp_basicsize*/ sizeof(BPy_UnaryPredicate0D),
155 /*tp_itemsize*/ 0,
156 /*tp_dealloc*/ (destructor)UnaryPredicate0D___dealloc__,
157 /*tp_vectorcall_offset*/ 0,
158 /*tp_getattr*/ nullptr,
159 /*tp_setattr*/ nullptr,
160 /*tp_as_async*/ nullptr,
161 /*tp_repr*/ (reprfunc)UnaryPredicate0D___repr__,
162 /*tp_as_number*/ nullptr,
163 /*tp_as_sequence*/ nullptr,
164 /*tp_as_mapping*/ nullptr,
165 /*tp_hash*/ nullptr,
166 /*tp_call*/ (ternaryfunc)UnaryPredicate0D___call__,
167 /*tp_str*/ nullptr,
168 /*tp_getattro*/ nullptr,
169 /*tp_setattro*/ nullptr,
170 /*tp_as_buffer*/ nullptr,
171 /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
172 /*tp_doc*/ UnaryPredicate0D___doc__,
173 /*tp_traverse*/ nullptr,
174 /*tp_clear*/ nullptr,
175 /*tp_richcompare*/ nullptr,
176 /*tp_weaklistoffset*/ 0,
177 /*tp_iter*/ nullptr,
178 /*tp_iternext*/ nullptr,
179 /*tp_methods*/ nullptr,
180 /*tp_members*/ nullptr,
181 /*tp_getset*/ BPy_UnaryPredicate0D_getseters,
182 /*tp_base*/ nullptr,
183 /*tp_dict*/ nullptr,
184 /*tp_descr_get*/ nullptr,
185 /*tp_descr_set*/ nullptr,
186 /*tp_dictoffset*/ 0,
187 /*tp_init*/ (initproc)UnaryPredicate0D___init__,
188 /*tp_alloc*/ nullptr,
189 /*tp_new*/ PyType_GenericNew,
190};
191
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