Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-11-19 20:04:28 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-11-19 20:04:28 +0300
commitac8ff25b2d6465e3ad2b79c359d74b4bab4985e4 (patch)
tree7d3c51e1e54ea595830a601d53e7fb270d12e2c5 /source/blender/python
parent3f10b91235bdcc931bd4fd05ccf6233ddc579229 (diff)
idprop.get(key, default=None)
matching pythons dict.get() removed checks for a failed PyObject_New(), if python cant make a new object your probably going to crash anyway.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/generic/IDProp.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/source/blender/python/generic/IDProp.c b/source/blender/python/generic/IDProp.c
index 3af2fece258..b3679c8f4a2 100644
--- a/source/blender/python/generic/IDProp.c
+++ b/source/blender/python/generic/IDProp.c
@@ -64,11 +64,6 @@ PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop )
/*blegh*/
{
BPy_IDProperty *group = PyObject_New(BPy_IDProperty, &IDGroup_Type);
- if (!group) {
- PyErr_SetString( PyExc_RuntimeError, "PyObject_New() failed" );
- return NULL;
- }
-
group->id = id;
group->prop = prop;
return (PyObject*) group;
@@ -76,10 +71,6 @@ PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop )
case IDP_ARRAY:
{
BPy_IDProperty *array = PyObject_New(BPy_IDProperty, &IDArray_Type);
- if (!array) {
- PyErr_SetString( PyExc_RuntimeError, "PyObject_New() failed" );
- return NULL;
- }
array->id = id;
array->prop = prop;
return (PyObject*) array;
@@ -352,11 +343,6 @@ static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject
static PyObject *BPy_IDGroup_SpawnIterator(BPy_IDProperty *self)
{
BPy_IDGroup_Iter *iter = PyObject_New(BPy_IDGroup_Iter, &IDGroup_Iter_Type);
-
- if (!iter) {
- PyErr_SetString( PyExc_RuntimeError, "PyObject_New() failed" );
- return NULL;
- }
iter->group = self;
iter->mode = IDPROP_ITER_KEYS;
iter->cur = self->prop->data.group.first;
@@ -464,12 +450,6 @@ static PyObject *BPy_IDGroup_Pop(BPy_IDProperty *self, PyObject *value)
static PyObject *BPy_IDGroup_IterItems(BPy_IDProperty *self)
{
BPy_IDGroup_Iter *iter = PyObject_New(BPy_IDGroup_Iter, &IDGroup_Iter_Type);
-
- if (!iter) {
- PyErr_SetString( PyExc_RuntimeError, "PyObject_New() failed" );
- return NULL;
- }
-
iter->group = self;
iter->mode = IDPROP_ITER_ITEMS;
iter->cur = self->prop->data.group.first;
@@ -607,6 +587,28 @@ static PyObject *BPy_IDGroup_ConvertToPy(BPy_IDProperty *self)
return BPy_IDGroup_MapDataToPy(self->prop);
}
+
+/* Matches python dict.get(key, [default]) */
+PyObject* BPy_IDGroup_Get(BPy_IDProperty *self, PyObject *args)
+{
+ IDProperty *idprop;
+ char *key;
+ PyObject* def = Py_None;
+
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
+ return NULL;
+
+ idprop= IDP_GetPropertyFromGroup(self->prop, key);
+ if (idprop) {
+ PyObject* pyobj = BPy_IDGroup_WrapData(self->id, idprop);
+ if (pyobj)
+ return pyobj;
+ }
+
+ Py_INCREF(def);
+ return def;
+}
+
static struct PyMethodDef BPy_IDGroup_methods[] = {
{"pop", (PyCFunction)BPy_IDGroup_Pop, METH_O,
"pop an item from the group; raises KeyError if the item doesn't exist."},
@@ -620,6 +622,8 @@ static struct PyMethodDef BPy_IDGroup_methods[] = {
"get the items associated with this group."},
{"update", (PyCFunction)BPy_IDGroup_Update, METH_O,
"updates the values in the group with the values of another or a dict."},
+ {"get", (PyCFunction)BPy_IDGroup_Get, METH_VARARGS,
+ "idprop.get(k[,d]) -> idprop[k] if k in idprop, else d. d defaults to None."},
{"convert_to_pyobject", (PyCFunction)BPy_IDGroup_ConvertToPy, METH_NOARGS,
"return a purely python version of the group."},
{0, NULL, 0, NULL}
@@ -709,12 +713,6 @@ PyTypeObject IDGroup_Type = {
PyObject *BPy_Wrap_IDProperty(ID *id, IDProperty *prop, IDProperty *parent)
{
BPy_IDProperty *wrap = PyObject_New(BPy_IDProperty, &IDGroup_Type);
-
- if (!wrap) {
- PyErr_SetString( PyExc_RuntimeError, "PyObject_New() failed" );
- return NULL;
- }
-
wrap->prop = prop;
wrap->parent = parent;
wrap->id = id;