Public feed
#378013
static int dict_socks_to_typeinfo(PyObject *dict, bNodeSocketType **socks, int len, int stage) {
int a = 0, pos = 0;
PyObject *key = NULL, *value = NULL, *list = NULL;
int i, n;
bNodeSocketType *newsocks = NULL;
if(stage!=SH_NODE_SCRIPT_READY) {
newsocks = MEM_callocN(sizeof(bNodeSocketType)*(len+1), "bNodeSocketType");
if (dict) {
if(PyDict_Check(dict)) {//<rcruiz>
list=PyDict_Keys(dict);
PyList_Sort(list);
n = PyList_Size(list);
for (i = 0; i < n; i++) {
key = PyList_GetItem(list, i);
value=PyDict_GetItem(dict,key);
if(PyTuple_Check(value) && PyTuple_Size(value)==7) {
newsocks[a].name = BLI_strdup(PyString_AsString(key));
newsocks[a].type = (int)(PyInt_AsLong(PyTuple_GetItem(value, 0)));
newsocks[a].val1 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 1)));
newsocks[a].val2 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 2)));
newsocks[a].val3 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 3)));
newsocks[a].val4 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 4)));
newsocks[a].min = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 5)));
newsocks[a].max = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 6)));
a++;
}
}//</rcruiz>
/*
while(PyDict_Next(dict, &pos, &key, &value)) {
if(PyTuple_Check(value) && PyTuple_Size(value)==7) {
newsocks[a].name = BLI_strdup(PyString_AsString(key));
newsocks[a].type = (int)(PyInt_AsLong(PyTuple_GetItem(value, 0)));
newsocks[a].val1 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 1)));
newsocks[a].val2 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 2)));
newsocks[a].val3 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 3)));
newsocks[a].val4 = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 4)));
newsocks[a].min = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 5)));
newsocks[a].max = (float)(PyFloat_AsDouble(PyTuple_GetItem(value, 6)));
a++;
}
}
*/
} else {
return(EXPP_ReturnIntError( PyExc_AttributeError, "INPUT must be a dict"));
}
}
newsocks[a].type = -1;
if(*socks) {
int b = 0;
while((*socks)[b].type!=-1) {
MEM_freeN((*socks)[b].name);
(*socks)[b].name = NULL;
b++;
}
MEM_freeN(*socks);
}
*socks = newsocks;
}
return 0;
}