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; 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) { switch (type) {
case TYPE_UINT8: case TYPE_UINT8:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
itemp = PyInt_AsLong(op); itemp = PyInt_AsLong(op);
((UINT8*)list)[i] = CLIP(itemp); ((UINT8*)list)[i] = CLIP(itemp);
}
break; break;
case TYPE_INT32: case TYPE_INT32:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
itemp = PyInt_AsLong(op); itemp = PyInt_AsLong(op);
((INT32*)list)[i] = itemp; ((INT32*)list)[i] = itemp;
}
break; break;
case TYPE_FLOAT32: case TYPE_FLOAT32:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
dtemp = PyFloat_AsDouble(op); dtemp = PyFloat_AsDouble(op);
((FLOAT32*)list)[i] = (FLOAT32) dtemp; ((FLOAT32*)list)[i] = (FLOAT32) dtemp;
}
break; break;
case TYPE_DOUBLE: case TYPE_DOUBLE:
for (i = 0; i < n; i++) {
op = PySequence_Fast_GET_ITEM(seq, i);
dtemp = PyFloat_AsDouble(op); dtemp = PyFloat_AsDouble(op);
((double*)list)[i] = (double) dtemp; ((double*)list)[i] = (double) dtemp;
}
break; break;
} }
}
if (length) if (length)
*length = n; *length = n;