24 #ifdef WITH_PYTHON_SAFETY
36 # define USE_PYRNA_INVALIDATE_WEAKREF
39 # define USE_PYRNA_STRUCT_REFERENCE
48 #if defined(USE_PYRNA_INVALIDATE_WEAKREF) && !defined(USE_WEAKREFS)
52 #if defined(USE_PYRNA_INVALIDATE_GC) && defined(USE_PYRNA_INVALIDATE_WEAKREF)
53 # error "Only 1 reference check method at a time!"
63 #define USE_PYRNA_ITER
80 #define BPy_StructRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_struct_Type))
81 #define BPy_StructRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_struct_Type)
82 #define BPy_PropertyRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_prop_Type))
83 #define BPy_PropertyRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_prop_Type)
85 #define PYRNA_STRUCT_CHECK_OBJ(obj) \
86 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
90 #define PYRNA_STRUCT_CHECK_INT(obj) \
91 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
96 #define PYRNA_PROP_CHECK_OBJ(obj) \
97 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
101 #define PYRNA_PROP_CHECK_INT(obj) \
102 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
107 #define PYRNA_STRUCT_IS_VALID(pysrna) (LIKELY(((BPy_StructRNA *)(pysrna))->ptr.type != NULL))
108 #define PYRNA_PROP_IS_VALID(pysrna) (LIKELY(((BPy_PropertyRNA *)(pysrna))->ptr.type != NULL))
115 PyObject *in_weakreflist;
123 PyObject *in_weakreflist;
126 #ifdef USE_PYRNA_STRUCT_REFERENCE
132 #ifdef PYRNA_FREE_SUPPORT
140 PyObject *in_weakreflist;
149 PyObject *in_weakreflist;
164 PyObject *in_weakreflist;
174 PyObject *in_weakreflist;
201 const char *error_prefix);
207 bool type_convert_sign,
209 const char *error_prefix);
214 const char *error_prefix);
217 const char *identifier,
219 const char *error_prefix);
224 struct PyMethodDef *py_method,
225 struct PyGetSetDef *py_getset);
240 const char *error_prefix);
PyObject * pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
int pyrna_py_to_array(PointerRNA *ptr, PropertyRNA *prop, char *param_data, PyObject *py, const char *error_prefix)
PyTypeObject pyrna_struct_meta_idprop_Type
PyTypeObject pyrna_prop_Type
void pyrna_invalidate(BPy_DummyPointerRNA *self)
PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
void pyrna_alloc_types(void)
int pyrna_struct_validity_check(BPy_StructRNA *pysrna)
PyMethodDef meth_bpy_owner_id_set
bool pyrna_id_CheckPyObject(PyObject *obj)
bool pyrna_write_check(void)
void pyrna_struct_type_extend_capi(struct StructRNA *srna, struct PyMethodDef *py_method, struct PyGetSetDef *py_getset)
bool pyrna_id_FromPyObject(PyObject *obj, struct ID **id)
int pyrna_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix)
PyMethodDef meth_bpy_owner_id_get
PyObject * pyrna_struct_CreatePyObject(PointerRNA *ptr)
int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
StructRNA * pyrna_struct_as_srna(PyObject *self, const bool parent, const char *error_prefix)
int pyrna_set_to_enum_bitfield(const struct EnumPropertyItem *items, PyObject *value, int *r_value, const char *error_prefix)
void pyrna_free_types(void)
void BPY_update_rna_module(void)
int pyrna_py_to_array_index(PointerRNA *ptr, PropertyRNA *prop, int arraydim, int arrayoffset, int index, PyObject *py, const char *error_prefix)
PyObject * BPY_rna_module(void)
PyObject * pyrna_array_index(PointerRNA *ptr, PropertyRNA *prop, int index)
PyTypeObject pyrna_prop_array_Type
PyObject * pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
StructRNA * srna_from_self(PyObject *self, const char *error_prefix)
PyTypeObject pyrna_struct_Type
int pyrna_deferred_register_class(struct StructRNA *srna, PyTypeObject *py_class)
PyTypeObject pyrna_func_Type
int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const bool all_args, const char *error_prefix)
PyMethodDef meth_bpy_unregister_class
PyObject * pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop)
void pyrna_write_set(bool val)
PyObject * pyrna_id_CreatePyObject(struct ID *id)
PyMethodDef meth_bpy_register_class
int pyrna_prop_validity_check(BPy_PropertyRNA *self)
PyObject * pyrna_py_from_array_index(BPy_PropertyArrayRNA *self, PointerRNA *ptr, PropertyRNA *prop, int index)
uint * pyrna_set_to_enum_bitmap(const struct EnumPropertyItem *items, PyObject *value, int type_size, bool type_convert_sign, int bitmap_size, const char *error_prefix)
PyObject * pyrna_enum_bitfield_to_py(const struct EnumPropertyItem *items, int value)
PyObject * BPY_rna_types(void)
BPy_StructRNA * bpy_context_module
PyTypeObject pyrna_prop_collection_Type
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr
PyObject_HEAD CollectionPropertyIterator iter
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr