10 #ifdef WITH_PYTHON_SAFETY
22 # define USE_PYRNA_INVALIDATE_WEAKREF
25 # define USE_PYRNA_STRUCT_REFERENCE
34 #if defined(USE_PYRNA_INVALIDATE_WEAKREF) && !defined(USE_WEAKREFS)
38 #if defined(USE_PYRNA_INVALIDATE_GC) && defined(USE_PYRNA_INVALIDATE_WEAKREF)
39 # error "Only 1 reference check method at a time!"
49 #define USE_PYRNA_ITER
66 #define BPy_StructRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_struct_Type))
67 #define BPy_StructRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_struct_Type)
68 #define BPy_PropertyRNA_Check(v) (PyObject_TypeCheck(v, &pyrna_prop_Type))
69 #define BPy_PropertyRNA_CheckExact(v) (Py_TYPE(v) == &pyrna_prop_Type)
71 #define PYRNA_STRUCT_CHECK_OBJ(obj) \
72 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
76 #define PYRNA_STRUCT_CHECK_INT(obj) \
77 if (UNLIKELY(pyrna_struct_validity_check(obj) == -1)) { \
82 #define PYRNA_PROP_CHECK_OBJ(obj) \
83 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
87 #define PYRNA_PROP_CHECK_INT(obj) \
88 if (UNLIKELY(pyrna_prop_validity_check(obj) == -1)) { \
93 #define PYRNA_STRUCT_IS_VALID(pysrna) (LIKELY(((BPy_StructRNA *)(pysrna))->ptr.type != NULL))
94 #define PYRNA_PROP_IS_VALID(pysrna) (LIKELY(((BPy_PropertyRNA *)(pysrna))->ptr.type != NULL))
101 PyObject *in_weakreflist;
109 PyObject *in_weakreflist;
112 #ifdef USE_PYRNA_STRUCT_REFERENCE
118 #ifdef PYRNA_FREE_SUPPORT
126 PyObject *in_weakreflist;
135 PyObject *in_weakreflist;
150 PyObject *in_weakreflist;
160 PyObject *in_weakreflist;
218 struct PyMethodDef *py_method,
219 struct PyGetSetDef *py_getset);
234 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_pydict_to_props(PointerRNA *ptr, PyObject *kw, bool all_args, const char *error_prefix)
int pyrna_struct_validity_check(BPy_StructRNA *pysrna)
PyMethodDef meth_bpy_owner_id_set
bool pyrna_id_CheckPyObject(PyObject *obj)
const PointerRNA * pyrna_struct_as_ptr_or_null(PyObject *py_obj, const StructRNA *srna)
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)
PyMethodDef meth_bpy_owner_id_get
StructRNA * pyrna_struct_as_srna(PyObject *self, bool parent, const char *error_prefix)
PyObject * pyrna_struct_CreatePyObject(PointerRNA *ptr)
int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
void pyrna_free_types(void)
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)
PyObject * BPY_rna_module(void)
PyObject * pyrna_array_index(PointerRNA *ptr, PropertyRNA *prop, int index)
const PointerRNA * pyrna_struct_as_ptr(PyObject *py_obj, const StructRNA *srna)
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
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)
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