[ismrmrd] 06/16: adding (de)serialization of C structs in Python API
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:02:30 UTC 2015
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to annotated tag v1.2.0
in repository ismrmrd.
commit 98d5b4072a33bf15c59139624aad1194688ba3b1
Author: Joseph Naegele <joseph.naegele at gmail.com>
Date: Tue Nov 25 12:27:24 2014 -0500
adding (de)serialization of C structs in Python API
---
bindings/python/ismrmrd.pyx | 50 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/bindings/python/ismrmrd.pyx b/bindings/python/ismrmrd.pyx
index 0958007..aae774a 100644
--- a/bindings/python/ismrmrd.pyx
+++ b/bindings/python/ismrmrd.pyx
@@ -151,9 +151,26 @@ cdef bytes build_exception_string():
)
return err_string
+
def sizeof_data_type(tp):
return cismrmrd.ismrmrd_sizeof_data_type(tp)
+def encoding_counters_from_bytes(buff):
+ e = EncodingCounters()
+ e._from_bytes(buff)
+ return e
+
+def acquisition_header_from_bytes(buff):
+ a = AcquisitionHeader()
+ a._from_bytes(buff)
+ return a
+
+def image_header_from_bytes(buff):
+ i = ImageHeader()
+ i._from_bytes(buff)
+ return i
+
+
cdef class EncodingCounters:
cdef cismrmrd.ISMRMRD_EncodingCounters *thisptr
@@ -175,6 +192,17 @@ cdef class EncodingCounters:
cdef copy_to(self, cismrmrd.ISMRMRD_EncodingCounters *ptr):
memcpy(ptr, self.thisptr, sizeof(cismrmrd.ISMRMRD_EncodingCounters))
+ @staticmethod
+ def _size_in_bytes():
+ return sizeof(cismrmrd.ISMRMRD_EncodingCounters)
+
+ def _from_bytes(self, s):
+ memcpy(self.thisptr, <char *>s, self._size_in_bytes())
+
+ def to_bytes(self):
+ c_string = <char *>(self.thisptr)
+ return c_string[:self._size_in_bytes()]
+
property kspace_encode_step_1:
def __get__(self): return self.thisptr.kspace_encode_step_1
def __set__(self, val): self.thisptr.kspace_encode_step_1 = val
@@ -246,6 +274,17 @@ cdef class AcquisitionHeader:
cdef copy_to(self, cismrmrd.ISMRMRD_AcquisitionHeader *ptr):
memcpy(ptr, self.thisptr, sizeof(cismrmrd.ISMRMRD_AcquisitionHeader))
+ @staticmethod
+ def _size_in_bytes():
+ return sizeof(cismrmrd.ISMRMRD_AcquisitionHeader)
+
+ def _from_bytes(self, s):
+ memcpy(self.thisptr, <char *>s, self._size_in_bytes())
+
+ def to_bytes(self):
+ c_string = <char *>(self.thisptr)
+ return c_string[:self._size_in_bytes()]
+
property version:
def __get__(self): return self.thisptr.version
def __set__(self, val): self.thisptr.version = val
@@ -468,6 +507,17 @@ cdef class ImageHeader:
cdef copy_to(self, cismrmrd.ISMRMRD_ImageHeader *ptr):
memcpy(ptr, self.thisptr, sizeof(cismrmrd.ISMRMRD_ImageHeader))
+ @staticmethod
+ def _size_in_bytes():
+ return sizeof(cismrmrd.ISMRMRD_ImageHeader)
+
+ def _from_bytes(self, s):
+ memcpy(self.thisptr, <char *>s, self._size_in_bytes())
+
+ def to_bytes(self):
+ c_string = <char *>(self.thisptr)
+ return c_string[:self._size_in_bytes()]
+
property version:
def __get__(self): return self.thisptr.version
def __set__(self, val): self.thisptr.version = val
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ismrmrd.git
More information about the debian-science-commits
mailing list