Commit a19e36ee authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

Buffers: Allow repeat count of 1 on single item format strings

parent acdacfe9
...@@ -450,6 +450,7 @@ def get_ts_check_item(dtype, writer): ...@@ -450,6 +450,7 @@ def get_ts_check_item(dtype, writer):
if char is not None: if char is not None:
# Can use direct comparison # Can use direct comparison
code = dedent("""\ code = dedent("""\
if (*ts == '1') ++ts;
if (*ts != '%s') { if (*ts != '%s') {
PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (rejecting on '%%s')", ts); PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (rejecting on '%%s')", ts);
return NULL; return NULL;
...@@ -461,6 +462,7 @@ def get_ts_check_item(dtype, writer): ...@@ -461,6 +462,7 @@ def get_ts_check_item(dtype, writer):
ctype = dtype.declaration_code("") ctype = dtype.declaration_code("")
code = dedent("""\ code = dedent("""\
int ok; int ok;
if (*ts == '1') ++ts;
switch (*ts) {""", 2) switch (*ts) {""", 2)
if dtype.is_int: if dtype.is_int:
types = [ types = [
......
...@@ -944,14 +944,14 @@ cdef class ShortMockBuffer(MockBuffer): ...@@ -944,14 +944,14 @@ cdef class ShortMockBuffer(MockBuffer):
(<short*>buf)[0] = <short>value (<short*>buf)[0] = <short>value
return 0 return 0
cdef get_itemsize(self): return sizeof(short) cdef get_itemsize(self): return sizeof(short)
cdef get_default_format(self): return "=h" cdef get_default_format(self): return "h" # Try without endian specifier
cdef class UnsignedShortMockBuffer(MockBuffer): cdef class UnsignedShortMockBuffer(MockBuffer):
cdef int write(self, char* buf, object value) except -1: cdef int write(self, char* buf, object value) except -1:
(<unsigned short*>buf)[0] = <unsigned short>value (<unsigned short*>buf)[0] = <unsigned short>value
return 0 return 0
cdef get_itemsize(self): return sizeof(unsigned short) cdef get_itemsize(self): return sizeof(unsigned short)
cdef get_default_format(self): return "=H" cdef get_default_format(self): return "=1H" # Try with repeat count
cdef extern from *: cdef extern from *:
void* addr_of_pyobject "(void*)"(object) void* addr_of_pyobject "(void*)"(object)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment