From de67e3c0c02e9d08022cff58338099d287505f91 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 21 Feb 2021 21:15:13 +1100 Subject: PyAPI: expose bpy_prop_deferred function & keywords While not needed for Blender, Animation Nodes uses this information, expose this information for scripts to access that need it. --- source/blender/python/intern/bpy_props.c | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'source/blender/python') diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index c596f81a91c..2b3599df86e 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -227,6 +227,37 @@ static PyObject *bpy_prop_deferred_repr(BPy_PropDeferred *self) return PyUnicode_FromFormat("<%.200s, %R, %R>", Py_TYPE(self)->tp_name, self->fn, self->kw); } +/* Get/Set Items. */ + +/** + * Expose the function in case scripts need to introspect this information + * (not currently used by Blender it's self). + */ +static PyObject *bpy_prop_deferred_function_get(BPy_PropDeferred *self, void *UNUSED(closure)) +{ + PyObject *ret = self->fn; + Py_IncRef(ret); + return ret; +} + +/** + * Expose keywords in case scripts need to introspect this information + * (not currently used by Blender it's self). + */ +static PyObject *bpy_prop_deferred_keywords_get(BPy_PropDeferred *self, void *UNUSED(closure)) +{ + PyObject *ret = self->kw; + Py_IncRef(ret); + return ret; +} + +static PyGetSetDef bpy_prop_deferred_getset[] = { + {"function", (getter)bpy_prop_deferred_function_get, (setter)NULL, NULL, NULL}, + {"keywords", (getter)bpy_prop_deferred_keywords_get, (setter)NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL, NULL} /* Sentinel */ +}; + + PyTypeObject bpy_prop_deferred_Type = { PyVarObject_HEAD_INIT(NULL, 0) @@ -239,6 +270,8 @@ PyTypeObject bpy_prop_deferred_Type = { .tp_traverse = (traverseproc)bpy_prop_deferred_traverse, .tp_clear = (inquiry)bpy_prop_deferred_clear, + + .tp_getset = bpy_prop_deferred_getset, }; static PyObject *bpy_prop_deferred_data_CreatePyObject(PyObject *fn, PyObject *kw) -- cgit v1.2.3