Exemplo n.º 1
0
PyObject *BPy_Wrap_GetValues(ID *id, IDProperty *prop)
{
    PyObject *list = PyList_New(prop->len);
    IDProperty *loop;
    int i;

    for (i = 0, loop = prop->data.group.first; loop; loop = loop->next, i++) {
        PyList_SET_ITEM(list, i, BPy_IDGroup_WrapData(id, loop, prop));
    }

    if (i != prop->len) {
        BPy_IDGroup_CorrectListLen(prop, list, i, __func__);
        Py_DECREF(list); /*free the list*/
        /*call self again*/
        return BPy_Wrap_GetValues(id, prop);
    }

    return list;
}
Exemplo n.º 2
0
PyObject *BPy_Wrap_GetKeys(IDProperty *prop)
{
    PyObject *seq = PyList_New(prop->len);
    IDProperty *loop;
    int i;

    for (i=0, loop=prop->data.group.first; loop && (i < prop->len); loop=loop->next, i++)
        PyList_SET_ITEM(seq, i, PyUnicode_FromString(loop->name));

    /* if the id prop is corrupt, count the remaining */
    for (; loop; loop=loop->next, i++) {}

    if (i != prop->len) { /* if the loop didnt finish, we know the length is wrong */
        BPy_IDGroup_CorrectListLen(prop, seq, i);
        Py_DECREF(seq); /*free the list*/
        /*call self again*/
        return BPy_Wrap_GetKeys(prop);
    }

    return seq;
}
Exemplo n.º 3
0
PyObject *BPy_Wrap_GetItems(ID *id, IDProperty *prop)
{
    PyObject *seq = PyList_New(prop->len);
    IDProperty *loop;
    int i;

    for (i = 0, loop = prop->data.group.first; loop; loop = loop->next, i++) {
        PyObject *item = PyTuple_New(2);
        PyTuple_SET_ITEM(item, 0, PyUnicode_FromString(loop->name));
        PyTuple_SET_ITEM(item, 1, BPy_IDGroup_WrapData(id, loop, prop));
        PyList_SET_ITEM(seq, i, item);
    }

    if (i != prop->len) {
        BPy_IDGroup_CorrectListLen(prop, seq, i, __func__);
        Py_DECREF(seq); /*free the list*/
        /*call self again*/
        return BPy_Wrap_GetItems(id, prop);
    }

    return seq;
}