[ismrmrd] 39/177: Switched C++ NDArray to be castable to C version.

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:01:59 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag v1.1.0.beta.1
in repository ismrmrd.

commit 49059e89df24bd37bbf1062755c11c1297d13f4a
Author: Souheil Inati <souheil.inati at nih.gov>
Date:   Wed Sep 3 10:56:59 2014 -0400

    Switched C++ NDArray to be castable to C version.
---
 ismrmrd.cpp | 73 +++++++++++++++++++++----------------------------------------
 ismrmrd.h   | 24 ++++++++------------
 2 files changed, 34 insertions(+), 63 deletions(-)

diff --git a/ismrmrd.cpp b/ismrmrd.cpp
index 725a197..b87e2d4 100644
--- a/ismrmrd.cpp
+++ b/ismrmrd.cpp
@@ -174,9 +174,9 @@ float (&Acquisition::user_float()) [ISMRMRD_USER_FLOATS] {
 }
 
 // Data and Trajectory accessors
-AcquisitionHeader * Acquisition::getHead() {
-    // This returns a pointer
-    return static_cast<AcquisitionHeader *>(&head);
+AcquisitionHeader & Acquisition::getHead() {
+    // This returns a reference
+    return *static_cast<AcquisitionHeader *>(&head);
 }
 
 void Acquisition::setHead(const AcquisitionHeader other) {
@@ -398,39 +398,26 @@ void Image::clearAllFlags() {
 //
 // Array class Implementation
 //
-
 NDArray::NDArray()
 {
-    ismrmrd_init_ndarray(&arr_);
-}
-
-NDArray::NDArray(const ISMRMRD_DataTypes dtype, const uint16_t ndim, const uint16_t dims[ISMRMRD_NDARRAY_MAXDIM])
-{
-    ismrmrd_init_ndarray(&arr_);
-    setProperties(dtype, ndim, dims);
+    ismrmrd_init_ndarray(this);
 }
 
 NDArray::NDArray(const ISMRMRD_DataTypes dtype, const std::vector<uint16_t> dimvec)
 {
-    ismrmrd_init_ndarray(&arr_);
+    ismrmrd_init_ndarray(this);
     setProperties(dtype, dimvec);    
 }
 
 NDArray::NDArray(const NDArray &other)
 {
-    ismrmrd_init_ndarray(&arr_);
-    ismrmrd_copy_ndarray(&arr_, &other.arr_);    
-}
-
-NDArray::NDArray(const ISMRMRD_NDArray *arr)
-{
-    ismrmrd_init_ndarray(&arr_);
-    ismrmrd_copy_ndarray(&arr_, arr);
+    ismrmrd_init_ndarray(this);
+    ismrmrd_copy_ndarray(this, &other);
 }
 
 NDArray::~NDArray()
 {
-    ismrmrd_cleanup_ndarray(&arr_);
+    ismrmrd_cleanup_ndarray(this);
 }
 
 NDArray & NDArray::operator= (const NDArray &other)
@@ -438,54 +425,44 @@ NDArray & NDArray::operator= (const NDArray &other)
     // Assignment makes a copy
     if (this != &other )
     {
-        ismrmrd_init_ndarray(&arr_);
-        ismrmrd_copy_ndarray(&arr_, &other.arr_);
+        ismrmrd_init_ndarray(this);
+        ismrmrd_copy_ndarray(this, &other);
     }
     return *this;
 }
 
-const uint16_t NDArray::version() {
-    return arr_.version;
+const uint16_t NDArray::getVersion() {
+    return version;
 };
 
-const ISMRMRD_DataTypes NDArray::data_type() {
-    return static_cast<ISMRMRD_DataTypes>( arr_.data_type );
+const ISMRMRD_DataTypes NDArray::getDataType() {
+    return static_cast<ISMRMRD_DataTypes>( data_type );
 }
 
-const uint16_t NDArray::ndim() {
-    return  arr_.ndim;
+const uint16_t NDArray::getNDim() {
+    return  ndim;
 };
     
-const uint16_t (&NDArray::dims())[ISMRMRD_NDARRAY_MAXDIM] {
-    return arr_.dims;
+const uint16_t (&NDArray::getDims())[ISMRMRD_NDARRAY_MAXDIM] {
+    return dims;
 };
-    
-int NDArray::setProperties(const ISMRMRD_DataTypes dtype, const uint16_t ndim, const uint16_t dims[ISMRMRD_NDARRAY_MAXDIM]) {
-    arr_.data_type = dtype;
-    arr_.ndim = ndim;
-    for (int n=0; n<ISMRMRD_NDARRAY_MAXDIM; n++) {
-        arr_.dims[n] = dims[n];
-    }
-    int status = ismrmrd_make_consistent_ndarray(&arr_);
-    return status;
-}
 
 int NDArray::setProperties(const ISMRMRD_DataTypes dtype, const std::vector<uint16_t> dimvec) {
     if (dimvec.size() > ISMRMRD_NDARRAY_MAXDIM) {
         // TODO throw exception
         return ISMRMRD_MEMORYERROR;
     }
-    arr_.data_type = dtype;
-    arr_.ndim = dimvec.size();
-    for (int n=0; n<arr_.ndim; n++) {
-        arr_.dims[n] = dimvec[n];
+    data_type = dtype;
+    ndim = dimvec.size();
+    for (int n=0; n<ndim; n++) {
+        dims[n] = dimvec[n];
     }
-    int status=ismrmrd_make_consistent_ndarray(&arr_);
+    int status=ismrmrd_make_consistent_ndarray(this);
     return status;
 }
 
-void * NDArray::data() {
-    return arr_.data;
+void * NDArray::getData() {
+    return data;
 }
 
 } // namespace ISMRMRD
diff --git a/ismrmrd.h b/ismrmrd.h
index 99295bd..af2cee2 100644
--- a/ismrmrd.h
+++ b/ismrmrd.h
@@ -401,11 +401,11 @@ public:
     float (&user_float())[ISMRMRD_USER_FLOATS];
 
     // Header, data and trajectory accessors
-    AcquisitionHeader * getHead();
+    AcquisitionHeader &getHead();
     void setHead(const AcquisitionHeader other);
-    complex_float_t * getData();
+    complex_float_t *getData();
     uint64_t numDataElements();
-    float * getTraj();
+    float *getTraj();
     uint64_t numTrajElements();
 
     // Flag methods
@@ -484,28 +484,22 @@ protected:
     ISMRMRD_Image image_;
 };
 
-class NDArray {
+class NDArray: protected ISMRMRD_NDArray {
 public:
     // Constructors, destructor and copy
     NDArray();
-    NDArray(const ISMRMRD_DataTypes dtype, const uint16_t ndim, const uint16_t dims[ISMRMRD_NDARRAY_MAXDIM]);
     NDArray(const ISMRMRD_DataTypes dtype, const std::vector<uint16_t> dimvec);
     NDArray(const NDArray &other);
-    NDArray(const ISMRMRD_NDArray *arr);
     ~NDArray();
     NDArray & operator= (const NDArray &other);
 
     // Accessors and mutators
-    const uint16_t version();
-    const ISMRMRD_DataTypes data_type();
-    const uint16_t ndim();
-    const uint16_t (&dims())[ISMRMRD_NDARRAY_MAXDIM];
-    int setProperties(const ISMRMRD_DataTypes dtype, const uint16_t ndim, const uint16_t dims[ISMRMRD_NDARRAY_MAXDIM]);
+    const uint16_t getVersion();
+    const ISMRMRD_DataTypes getDataType();
+    const uint16_t getNDim();
+    const uint16_t (&getDims())[ISMRMRD_NDARRAY_MAXDIM];
     int setProperties(const ISMRMRD_DataTypes dtype, const std::vector<uint16_t> dimvec);
-    void * data();
-
-protected:
-    ISMRMRD_NDArray arr_;
+    void * getData();
 };
 
 

-- 
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