Refactor: Move BPY generic headers to proper C++ ones.
NOTE: `bgl.h` was left unchanged, as it is deprecated code anyway, and its conversion to C++ does not seem immediately trivial.
This commit is contained in:
committed by
Bastien Montagne
parent
4fac7828e4
commit
c3247aa4f0
42
source/blender/python/generic/python_utildefines.hh
Normal file
42
source/blender/python/generic/python_utildefines.hh
Normal file
@@ -0,0 +1,42 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/** \file
|
||||
* \ingroup pygen
|
||||
* \brief header-only utilities
|
||||
* \note light addition to Python.h, use py_capi_utils.hh for larger features.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PyTuple_SET_ITEMS(op_arg, ...) \
|
||||
{ \
|
||||
PyTupleObject *op = (PyTupleObject *)op_arg; \
|
||||
PyObject **ob_items = op->ob_item; \
|
||||
CHECK_TYPE_ANY(op_arg, PyObject *, PyTupleObject *); \
|
||||
BLI_assert(VA_NARGS_COUNT(__VA_ARGS__) == PyTuple_GET_SIZE(op)); \
|
||||
ARRAY_SET_ITEMS(ob_items, __VA_ARGS__); \
|
||||
} \
|
||||
(void)0
|
||||
|
||||
/**
|
||||
* Wrap #Py_INCREF & return the result,
|
||||
* use sparingly to avoid comma operator or temp var assignment.
|
||||
*/
|
||||
Py_LOCAL_INLINE(PyObject *) Py_INCREF_RET(PyObject *op)
|
||||
{
|
||||
Py_INCREF(op);
|
||||
return op;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append & transfer ownership to the list,
|
||||
* avoids inline #Py_DECREF all over (which is quite a large macro).
|
||||
*/
|
||||
Py_LOCAL_INLINE(int) PyList_APPEND(PyObject *op, PyObject *v)
|
||||
{
|
||||
int ret = PyList_Append(op, v);
|
||||
Py_DecRef(v);
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user