13#ifdef WITH_PYTHON_SAFETY
25# define USE_PYRNA_INVALIDATE_WEAKREF
28# define USE_PYRNA_STRUCT_REFERENCE
37#if defined(USE_PYRNA_INVALIDATE_WEAKREF) && !defined(USE_WEAKREFS)
41#if defined(USE_PYRNA_INVALIDATE_GC) && defined(USE_PYRNA_INVALIDATE_WEAKREF)
42# error "Only 1 reference check method at a time!"
69#define BPy_StructRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_struct_Type))
70#define BPy_StructRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_struct_Type)
71#define BPy_PropertyRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_prop_Type))
72#define BPy_PropertyRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_prop_Type)
74#define PYRNA_STRUCT_CHECK_OBJ(obj) \
75 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
79#define PYRNA_STRUCT_CHECK_INT(obj) \
80 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
85#define PYRNA_PROP_CHECK_OBJ(obj) \
86 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
90#define PYRNA_PROP_CHECK_INT(obj) \
91 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
96#define PYRNA_STRUCT_CHECK_OBJ_UNLESS(obj, unless) \
98 const BPy_StructRNA *_obj = obj; \
99 if (UNLIKELY(pyrna_struct_validity_check_only(_obj) == -1) && !(unless)) { \
100 pyrna_struct_validity_exception_only(_obj); \
106#define PYRNA_STRUCT_IS_VALID(pysrna) (LIKELY(((BPy_StructRNA *)(pysrna))->ptr.type != NULL))
107#define PYRNA_PROP_IS_VALID(pysrna) (LIKELY(((BPy_PropertyRNA *)(pysrna))->ptr.type != NULL))
114 PyObject *in_weakreflist;
122 PyObject *in_weakreflist;
125#ifdef USE_PYRNA_STRUCT_REFERENCE
131#ifdef PYRNA_FREE_SUPPORT
140 PyObject *in_weakreflist;
149 PyObject *in_weakreflist;
164 PyObject *in_weakreflist;
174 PyObject *in_weakreflist;
250 const char *error_prefix);
const PointerRNA * pyrna_struct_as_ptr(PyObject *py_obj, const StructRNA *srna)
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)
void pyrna_alloc_types(void)
int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, bool all_args, const char *error_prefix)
PyMethodDef meth_bpy_owner_id_set
bool pyrna_id_CheckPyObject(PyObject *obj)
bool pyrna_write_check(void)
PyObject * pyrna_array_index(PointerRNA *ptr, PropertyRNA *prop, int index)
PyObject * pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
void pyrna_struct_type_extend_capi(StructRNA *srna, PyMethodDef *method, PyGetSetDef *getset)
PyObject * BPY_rna_module(void)
PyMethodDef meth_bpy_owner_id_get
int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
void pyrna_struct_validity_exception_only(const BPy_StructRNA *pysrna)
void pyrna_free_types(void)
void BPY_rna_types_finalize_external_types(PyObject *submodule)
void BPY_update_rna_module(void)
int pyrna_struct_as_ptr_or_null_parse(PyObject *o, void *p)
int pyrna_struct_as_ptr_parse(PyObject *o, void *p)
int pyrna_py_to_array_index(PointerRNA *ptr, PropertyRNA *prop, int arraydim, int arrayoffset, int index, PyObject *py, const char *error_prefix)
StructRNA * srna_from_self(PyObject *self, const char *error_prefix)
PyObject * pyrna_id_CreatePyObject(ID *id)
int pyrna_struct_validity_check(const BPy_StructRNA *pysrna)
int pyrna_prop_validity_check(const BPy_PropertyRNA *self)
int pyrna_struct_validity_check_only(const BPy_StructRNA *pysrna)
const PointerRNA * pyrna_struct_as_ptr_or_null(PyObject *py_obj, const StructRNA *srna)
PyTypeObject pyrna_prop_array_Type
PyTypeObject pyrna_struct_Type
StructRNA * pyrna_struct_as_srna(PyObject *self, bool parent, const char *error_prefix)
PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
PyTypeObject pyrna_func_Type
int pyrna_deferred_register_class(StructRNA *srna, PyTypeObject *py_class)
PyObject * BPY_rna_types(void)
PyMethodDef meth_bpy_unregister_class
PyObject * pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
void pyrna_write_set(bool val)
PyMethodDef meth_bpy_register_class
bool pyrna_id_FromPyObject(PyObject *obj, ID **id)
PyObject * pyrna_struct_CreatePyObject(PointerRNA *ptr)
PyObject * pyrna_py_from_array_index(BPy_PropertyArrayRNA *self, PointerRNA *ptr, PropertyRNA *prop, int index)
BPy_StructRNA * bpy_context_module
PyObject * pyrna_struct_CreatePyObject_with_primitive_support(PointerRNA *ptr)
PyTypeObject pyrna_prop_collection_Type
PyObject * pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop)
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr
PyObject_HEAD CollectionPropertyIterator iter
PyObject_HEAD PointerRNA ptr
PyObject_HEAD PointerRNA ptr