self.oid = oids.INT2_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
- cdef char *buf = CDumper.ensure_size(rv, offset, sizeof(int16_t))
+ cdef int16_t *buf = <int16_t *>CDumper.ensure_size(
+ rv, offset, sizeof(int16_t))
cdef int16_t val = PyLong_AsLongLong(obj)
# swap bytes if needed
cdef uint16_t *ptvar = <uint16_t *>(&val)
- cdef int16_t beval = endian.htobe16(ptvar[0])
- memcpy(buf, <void *>&beval, sizeof(int16_t))
+ buf[0] = endian.htobe16(ptvar[0])
return sizeof(int16_t)
self.oid = oids.INT4_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
- cdef char *buf = CDumper.ensure_size(rv, offset, sizeof(int32_t))
+ cdef int32_t *buf = <int32_t *>CDumper.ensure_size(
+ rv, offset, sizeof(int32_t))
cdef int32_t val = PyLong_AsLongLong(obj)
# swap bytes if needed
cdef uint32_t *ptvar = <uint32_t *>(&val)
- cdef int32_t beval = endian.htobe32(ptvar[0])
- memcpy(buf, <void *>&beval, sizeof(int32_t))
+ buf[0] = endian.htobe32(ptvar[0])
return sizeof(int32_t)
self.oid = oids.INT8_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
- cdef char *buf = CDumper.ensure_size(rv, offset, sizeof(int64_t))
+ cdef int64_t *buf = <int64_t *>CDumper.ensure_size(
+ rv, offset, sizeof(int64_t))
cdef int64_t val = PyLong_AsLongLong(obj)
# swap bytes if needed
cdef uint64_t *ptvar = <uint64_t *>(&val)
- cdef int64_t beval = endian.htobe64(ptvar[0])
- memcpy(buf, <void *>&beval, sizeof(int64_t))
+ buf[0] = endian.htobe64(ptvar[0])
return sizeof(int64_t)
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef double d = PyFloat_AsDouble(obj)
cdef uint64_t *intptr = <uint64_t *>&d
- cdef uint64_t swp = endian.htobe64(intptr[0])
- cdef char *tgt = CDumper.ensure_size(rv, offset, sizeof(swp))
- memcpy(tgt, <void *>&swp, sizeof(swp))
- return sizeof(swp)
+ cdef uint64_t *buf = <uint64_t *>CDumper.ensure_size(
+ rv, offset, sizeof(uint64_t))
+ buf[0] = endian.htobe64(intptr[0])
+ return sizeof(uint64_t)
@cython.final
self.oid = oids.BOOL_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
- CDumper.ensure_size(rv, offset, 1)
+ cdef char *buf = CDumper.ensure_size(rv, offset, 1)
# Fast paths, just a pointer comparison
- cdef char val
if obj is True:
- val = b"t"
+ buf[0] = b"t"
elif obj is False:
- val = b"f"
+ buf[0] = b"f"
elif obj:
- val = b"t"
+ buf[0] = b"t"
else:
- val = b"f"
+ buf[0] = b"f"
- cdef char *buf = PyByteArray_AS_STRING(rv)
- buf[offset] = val
return 1
def quote(self, obj: bool) -> bytes:
self.oid = oids.BOOL_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
- CDumper.ensure_size(rv, offset, 1)
+ cdef char *buf = CDumper.ensure_size(rv, offset, 1)
# Fast paths, just a pointer comparison
- cdef char val
if obj is True:
- val = b"\x01"
+ buf[0] = b"\x01"
elif obj is False:
- val = b"\x00"
+ buf[0] = b"\x00"
elif obj:
- val = b"\x01"
+ buf[0] = b"\x01"
else:
- val = b"\x00"
+ buf[0] = b"\x00"
- cdef char *buf = PyByteArray_AS_STRING(rv)
- buf[offset] = val
return 1