Blender V5.0
idprop_py_api.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <Python.h>
12
13struct BPy_IDGroup_Iter;
14struct ID;
15struct IDProperty;
16
17extern PyTypeObject BPy_IDArray_Type;
18extern PyTypeObject BPy_IDGroup_Type;
19
20extern PyTypeObject BPy_IDGroup_ViewKeys_Type;
21extern PyTypeObject BPy_IDGroup_ViewValues_Type;
22extern PyTypeObject BPy_IDGroup_ViewItems_Type;
23
24extern PyTypeObject BPy_IDGroup_IterKeys_Type;
25extern PyTypeObject BPy_IDGroup_IterValues_Type;
26extern PyTypeObject BPy_IDGroup_IterItems_Type;
27
28#define BPy_IDArray_Check(v) (PyObject_TypeCheck(v, &BPy_IDArray_Type))
29#define BPy_IDArray_CheckExact(v) (Py_TYPE(v) == &BPy_IDArray_Type)
30#define BPy_IDGroup_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_Type))
31#define BPy_IDGroup_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_Type)
32
33#define BPy_IDGroup_ViewKeys_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_ViewKeys_Type))
34#define BPy_IDGroup_ViewKeys_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_ViewKeys_Type)
35#define BPy_IDGroup_ViewValues_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_ViewValues_Type))
36#define BPy_IDGroup_ViewValues_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_ViewValues_Type)
37#define BPy_IDGroup_ViewItems_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_ViewItems_Type))
38#define BPy_IDGroup_ViewItems_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_ViewItems_Type)
39
40#define BPy_IDGroup_IterKeys_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_IterKeys_Type))
41#define BPy_IDGroup_IterKeys_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_IterKeys_Type)
42#define BPy_IDGroup_IterValues_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_IterValues_Type))
43#define BPy_IDGroup_IterValues_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_IterValues_Type)
44#define BPy_IDGroup_IterItems_Check(v) (PyObject_TypeCheck(v, &BPy_IDGroup_IterItems_Type))
45#define BPy_IDGroup_IterItems_CheckExact(v) (Py_TYPE(v) == &BPy_IDGroup_IterItems_Type)
46
48 PyObject_VAR_HEAD
49 struct ID *owner_id; /* can be NULL */
50 struct IDProperty *prop; /* must be second member */
52};
53
55 PyObject_VAR_HEAD
56 struct ID *owner_id; /* can be NULL */
57 struct IDProperty *prop; /* must be second member */
58};
59
61 PyObject_VAR_HEAD
63 struct IDProperty *cur;
68};
69
72 PyObject_VAR_HEAD
76};
77
78[[nodiscard]] PyObject *BPy_Wrap_GetKeys(IDProperty *prop);
79[[nodiscard]] PyObject *BPy_Wrap_GetValues(ID *id, IDProperty *prop);
80[[nodiscard]] PyObject *BPy_Wrap_GetItems(ID *id, IDProperty *prop);
81
82[[nodiscard]] PyObject *BPy_Wrap_GetKeys_View_WithID(ID *id, IDProperty *prop);
83[[nodiscard]] PyObject *BPy_Wrap_GetValues_View_WithID(ID *id, IDProperty *prop);
84[[nodiscard]] PyObject *BPy_Wrap_GetItems_View_WithID(ID *id, IDProperty *prop);
85
86[[nodiscard]] int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val);
87
91[[nodiscard]] PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop);
92[[nodiscard]] PyObject *BPy_IDGroup_WrapData(ID *id, IDProperty *prop, IDProperty *parent);
99[[nodiscard]] bool BPy_IDProperty_Map_ValidateAndCreate(PyObject *key,
100 IDProperty *group,
101 PyObject *ob);
102void IDProp_Init_Types();
103
104[[nodiscard]] PyObject *BPyInit_idprop();
PyTypeObject BPy_IDGroup_ViewItems_Type
PyTypeObject BPy_IDGroup_ViewValues_Type
PyTypeObject BPy_IDGroup_ViewKeys_Type
PyTypeObject BPy_IDGroup_IterKeys_Type
PyTypeObject BPy_IDGroup_Type
PyTypeObject BPy_IDArray_Type
PyTypeObject BPy_IDGroup_IterValues_Type
PyTypeObject BPy_IDGroup_IterItems_Type
PyObject * BPy_Wrap_GetKeys(IDProperty *prop)
PyObject * BPyInit_idprop()
PyObject * BPy_Wrap_GetKeys_View_WithID(ID *id, IDProperty *prop)
PyObject * BPy_Wrap_GetItems(ID *id, IDProperty *prop)
int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val)
bool BPy_IDProperty_Map_ValidateAndCreate(PyObject *key, IDProperty *group, PyObject *ob)
PyObject * BPy_Wrap_GetValues(ID *id, IDProperty *prop)
PyObject * BPy_Wrap_GetItems_View_WithID(ID *id, IDProperty *prop)
PyObject * BPy_IDGroup_MapDataToPy(IDProperty *prop)
void IDProp_Init_Types()
PyObject * BPy_IDGroup_WrapData(ID *id, IDProperty *prop, IDProperty *parent)
PyObject * BPy_Wrap_GetValues_View_WithID(ID *id, IDProperty *prop)
PyObject_VAR_HEAD struct ID * owner_id
struct IDProperty * prop
struct IDProperty * cur
PyObject_VAR_HEAD BPy_IDProperty * group
PyObject_VAR_HEAD BPy_IDProperty * group
PyObject_VAR_HEAD struct ID * owner_id
struct IDProperty * parent
struct IDProperty * prop
Definition DNA_ID.h:414