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,35 +393,28 @@ getlist(PyObject* arg, int* length, const char* wrong_length, int type)
return NULL; return NULL;
} }
switch (type) { for (i = 0; i < n; i++) {
case TYPE_UINT8: op = PySequence_Fast_GET_ITEM(seq, i);
for (i = 0; i < n; i++) { // DRY, branch prediction is going to work _really_ well
op = PySequence_Fast_GET_ITEM(seq, i); // on this switch. And 3 fewer loops to copy/paste.
switch (type) {
case TYPE_UINT8:
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: dtemp = PyFloat_AsDouble(op);
for (i = 0; i < n; i++) { ((FLOAT32*)list)[i] = (FLOAT32) dtemp;
op = PySequence_Fast_GET_ITEM(seq, i); break;
dtemp = PyFloat_AsDouble(op); case TYPE_DOUBLE:
((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); dtemp = PyFloat_AsDouble(op);
((double*)list)[i] = (double) dtemp; ((double*)list)[i] = (double) dtemp;
} break;
break; }
} }
if (length) if (length)