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