DRY, moved case inside loop

This commit is contained in:
wiredfool 2014-07-23 15:16:23 -07:00
parent a5aea42bc9
commit 5def1010c7

View File

@ -393,36 +393,29 @@ getlist(PyObject* arg, int* length, const char* wrong_length, int type)
return NULL;
}
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
// DRY, branch prediction is going to work _really_ well
// on this switch. And 3 fewer loops to copy/paste.
switch (type) {
case TYPE_UINT8:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
itemp = PyInt_AsLong(op);
((UINT8*)list)[i] = CLIP(itemp);
}
break;
case TYPE_INT32:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
itemp = PyInt_AsLong(op);
((INT32*)list)[i] = itemp;
}
break;
case TYPE_FLOAT32:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
dtemp = PyFloat_AsDouble(op);
((FLOAT32*)list)[i] = (FLOAT32) dtemp;
}
break;
case TYPE_DOUBLE:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
dtemp = PyFloat_AsDouble(op);
((double*)list)[i] = (double) dtemp;
}
break;
}
}
if (length)
*length = n;