[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