('b', 'char'), ('h', 'short'), ('i', 'int'),
('l', 'long'), ('q', 'long long')
]
+ if dtype.signed == 0:
+ for char, against in types:
+ defcode.putln("case '%s': ok = (sizeof(%s) == sizeof(%s) && (%s)-1 > 0); break;" %
+ (char.upper(), ctype, against, ctype))
+ else:
+ for char, against in types:
+ defcode.putln("case '%s': ok = (sizeof(%s) == sizeof(%s) && (%s)-1 < 0); break;" %
+ (char, ctype, against, ctype))
elif dtype.is_float:
types = [('f', 'float'), ('d', 'double'), ('g', 'long double')]
- else:
- assert False
- if dtype.signed == 0:
for char, against in types:
- defcode.putln("case '%s': ok = (sizeof(%s) == sizeof(unsigned %s) && (%s)-1 > 0); break;" %
- (char.upper(), ctype, against, ctype))
+ defcode.putln("case '%s': ok = (sizeof(%s) == sizeof(%s)); break;" %
+ (char, ctype, against))
else:
- for char, against in types:
- defcode.putln("case '%s': ok = (sizeof(%s) == sizeof(%s) && (%s)-1 < 0); break;" %
- (char, ctype, against, ctype))
+ assert False
defcode.putln("default: ok = 0;")
defcode.putln("}")
put_assert("ok", "expected %s, got %%s" % dtype)
__Pyx_BufferNdimError(buf, nd);
goto fail;
}
- if (buf->itemsize != sizeof(%(dtype_cname)s)) {
- PyErr_SetString(PyExc_ValueError,
- "Item size of buffer does not match size of %(dtype)s.");
- goto fail;
- }
if (!cast) {
ts = buf->format;
ts = __Pyx_ConsumeWhitespace(ts);
goto fail;
}
}
+ if (buf->itemsize != sizeof(%(dtype_cname)s)) {
+ PyErr_SetString(PyExc_ValueError,
+ "Item size of buffer does not match size of '%(dtype)s'");
+ goto fail;
+ }
if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
return 0;
fail:;