Skip to content
Commits on Source (7)
......@@ -3,6 +3,8 @@
*.so
build/
.DS_Store
.idea/
.project
.cproject
# autogenerated
cmake/cpack_options.cmake
......@@ -49,7 +49,7 @@ if (WIN32)
add_definitions(-D__func__=__FUNCTION__)
else ()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
endif ()
# --- VERSIONING (begin) ----
......@@ -63,12 +63,12 @@ endif ()
#in the utility libraries, that don't affect the data format itself.
# For more information see http://semver.org/
set(ISMRMRD_VERSION_MAJOR 1)
set(ISMRMRD_VERSION_MINOR 3)
set(ISMRMRD_VERSION_PATCH 3)
set(ISMRMRD_VERSION_MINOR 4)
set(ISMRMRD_VERSION_PATCH 0)
set(ISMRMRD_VERSION_STRING ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR}.${ISMRMRD_VERSION_PATCH})
set(ISMRMRD_SOVERSION ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR})
set(ISMRMRD_XML_SCHEMA_SHA1 "9b899c6ad806bc2388c70461d6e5affe5cc6d750")
set(ISMRMRD_XML_SCHEMA_SHA1 "275129288d0c5ec39ee11bf8f78f952ae1dcec76")
#Remove line breaks and white space that does not change the meaning of the schema
file(STRINGS ${CMAKE_SOURCE_DIR}/schema/ismrmrd.xsd SCHEMA_STRINGS) #Read all strings from file
......@@ -106,13 +106,15 @@ endif()
# Find HDF5 for dataset support
find_package(HDF5 1.8 COMPONENTS C)
find_package(HDF5 COMPONENTS C)
if (HDF5_FOUND)
set (ISMRMRD_DATASET_SUPPORT true)
set (ISMRMRD_DATASET_SOURCES libsrc/dataset.c libsrc/dataset.cpp)
set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_C_INCLUDE_DIR})
set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_INCLUDE_DIRS})
set (ISMRMRD_DATASET_LIBRARIES ${HDF5_LIBRARIES})
add_definitions(${HDF5_DEFINITIONS})
include_directories(${HDF5_INCLUDE_DIRS})
else ()
set (ISMRMRD_DATASET_SUPPORT false)
message (WARNING "HDF5 not found. Dataset and file support unavailable!")
......@@ -164,6 +166,8 @@ set(ISMRMRD_TARGET_SOURCES
libsrc/ismrmrd.cpp
libsrc/xml.cpp
libsrc/meta.cpp
libsrc/waveform.cpp
libsrc/waveform.c
${ISMRMRD_DATASET_SOURCES}
)
......@@ -196,7 +200,7 @@ set_target_properties(ismrmrd PROPERTIES
)
target_link_libraries(ismrmrd ${ISMRMRD_TARGET_LINK_LIBS})
list(APPEND ISMRMRD_LIBRARIES ismrmrd) # Add to list of libraries to be found
list(APPEND ISMRMRD_LIBRARY_DIRS ${CMAKE_BINARY_DIR} ) # Add to list of directories to find libaries
list(APPEND ISMRMRD_LIBRARY_DIRS ${CMAKE_BINARY_DIR} ) # Add to list of directories to find libraries
# install the main library
install(TARGETS ismrmrd EXPORT ISMRMRDTargets
......@@ -258,6 +262,11 @@ configure_file(cmake/ISMRMRDConfig.cmake.in
set(CONFIG_ISMRMRD_SCHEMA_DIR ${CMAKE_INSTALL_PREFIX}/share/ismrmrd/schema)
set(CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
set(CONFIG_ISMRMRD_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib)
if (ISMRMRD_DATASET_SUPPORT)
list(APPEND CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
list(APPEND CONFIG_ISMRMRD_LIBRARY_DIRS ${HDF5_LIBRARY_DIRS})
list(APPEND ISMRMRD_LIBRARIES ${HDF5_LIBRARIES})
endif ()
configure_file(cmake/ISMRMRDConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/InstallFiles/ISMRMRDConfig.cmake"
@ONLY
......@@ -274,6 +283,15 @@ install(
Devel
)
install(
FILES
cmake/FindFFTW3.cmake
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel
)
# Create package
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
include(${ISMRMRD_CMAKE_DIR}/ismrmrd_cpack.cmake)
......
......@@ -78,14 +78,14 @@ if (WIN32)
string(TOUPPER ${_lib} _LIB)
find_library(${_LIB}_LIBRARY lib${_lib}-3
find_library(${_LIB}_LIBRARY NAMES lib${_lib}-3 lib${_lib}
HINTS $ENV{FFTW3_ROOT_DIR} PATH_SUFFIXES lib)
mark_as_advanced(${_LIB}_LIBRARY)
list(APPEND FFTW3_LIBRARIES ${${_LIB}_LIBRARY})
list(APPEND _check_list ${_LIB}_LIBRARY)
endforeach()
message("FFTW3 WINDOWS libraries: " ${FFTW3_LIBRARIES})
message(STATUS "FFTW3 WINDOWS libraries: " ${FFTW3_LIBRARIES})
else ()
foreach(_lib ${_libraries})
......@@ -99,7 +99,7 @@ else ()
list(APPEND _check_list ${_LIB}_LIBRARY)
endforeach()
message("FFTW3 UNIX libraries: " ${FFTW3_LIBRARIES})
message(STATUS "FFTW3 UNIX libraries: " ${FFTW3_LIBRARIES})
endif ()
# Search for the header file.
......
......@@ -14,16 +14,16 @@ set(ISMRMRD_VERSION_MINOR "@ISMRMRD_VERSION_MINOR@")
set(ISMRMRD_VERSION_PATCH "@ISMRMRD_VERSION_PATCH@")
# ISMRMRD_SCHEMA_DIR - where to find ismrmrd.xsd
set(ISMRMRD_SCHEMA_DIR @CONFIG_ISMRMRD_SCHEMA_DIR@)
set(ISMRMRD_SCHEMA_DIR "@CONFIG_ISMRMRD_SCHEMA_DIR@")
# ISMRMRD_INCLUDE_DIR - where to find ismrmrd.h, etc.
set(ISMRMRD_INCLUDE_DIRS @CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@)
set(ISMRMRD_INCLUDE_DIRS "@CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@")
# ISMRMRD_LIBRARY_DIRS - where to search for libraries
set(ISMRMRD_LIBRARY_DIRS @CONFIG_ISMRMRD_LIBRARY_DIRS@)
set(ISMRMRD_LIBRARY_DIRS "@CONFIG_ISMRMRD_LIBRARY_DIRS@")
# ISMRMRD_LIBRARIES - i.e. ismrmrd
set(ISMRMRD_LIBRARIES @ISMRMRD_LIBRARIES@)
set(ISMRMRD_LIBRARIES "@ISMRMRD_LIBRARIES@")
## For backwards compatibility use existing variable name
## Include directories can be lists, and should be plural
## to conform with naming schemes in many other cmake packages
set(ISMRMRD_INCLUDE_DIR @CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@)
set(ISMRMRD_LIB_DIR @CONFIG_ISMRMRD_LIBRARY_DIRS@)
set(ISMRMRD_INCLUDE_DIR "@CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@")
set(ISMRMRD_LIB_DIR "@CONFIG_ISMRMRD_LIBRARY_DIRS@")
ismrmrd (1.4.0-1) unstable; urgency=medium
* Team upload.
* New upstream version
* debhelper 12
* Standards-Version: 4.3.0
-- Andreas Tille <tille@debian.org> Sat, 26 Jan 2019 08:23:41 +0100
ismrmrd (1.3.3-3) unstable; urgency=medium
* Team upload.
......
......@@ -4,14 +4,14 @@ Uploaders: Ghislain Antony Vaillant <ghisvail@gmail.com>
Section: science
Priority: optional
Build-Depends: cmake,
debhelper (>= 11~),
debhelper (>= 12~),
libboost-program-options-dev,
libboost-test-dev,
libfftw3-dev,
libhdf5-dev,
libpugixml-dev
Build-Depends-Indep: doxygen
Standards-Version: 4.1.5
Standards-Version: 4.3.0
Vcs-Browser: https://salsa.debian.org/med-team/ismrmrd
Vcs-Git: https://salsa.debian.org/med-team/ismrmrd.git
Homepage: http://ismrmrd.github.io/
......
......@@ -6,13 +6,11 @@ Subject: Add support for multiarch.
CMakeLists.txt | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e6b7589..b614f71 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -198,10 +198,12 @@ target_link_libraries(ismrmrd ${ISMRMRD_TARGET_LINK_LIBS})
@@ -202,10 +202,12 @@ target_link_libraries(ismrmrd ${ISMRMRD_
list(APPEND ISMRMRD_LIBRARIES ismrmrd) # Add to list of libraries to be found
list(APPEND ISMRMRD_LIBRARY_DIRS ${CMAKE_BINARY_DIR} ) # Add to list of directories to find libaries
list(APPEND ISMRMRD_LIBRARY_DIRS ${CMAKE_BINARY_DIR} ) # Add to list of directories to find libraries
+include(GNUInstallDirs)
+
......@@ -25,7 +23,7 @@ index e6b7589..b614f71 100644
RUNTIME DESTINATION bin
COMPONENT Devel
)
@@ -257,7 +259,7 @@ configure_file(cmake/ISMRMRDConfig.cmake.in
@@ -261,7 +263,7 @@ configure_file(cmake/ISMRMRDConfig.cmake
set(CONFIG_ISMRMRD_SCHEMA_DIR ${CMAKE_INSTALL_PREFIX}/share/ismrmrd/schema)
set(CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
......@@ -34,7 +32,7 @@ index e6b7589..b614f71 100644
if (ISMRMRD_DATASET_SUPPORT)
list(APPEND CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
list(APPEND CONFIG_ISMRMRD_LIBRARY_DIRS ${HDF5_LIBRARY_DIRS})
@@ -268,7 +270,7 @@ configure_file(cmake/ISMRMRDConfig.cmake.in
@@ -272,7 +274,7 @@ configure_file(cmake/ISMRMRDConfig.cmake
@ONLY
)
......
From: Ghislain Antony Vaillant <ghisvail@gmail.com>
Date: Fri, 11 Nov 2016 12:36:34 +0000
Subject: Fix CMake package configuration.
---
CMakeLists.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e9b1a9..e6b7589 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -258,6 +258,11 @@ configure_file(cmake/ISMRMRDConfig.cmake.in
set(CONFIG_ISMRMRD_SCHEMA_DIR ${CMAKE_INSTALL_PREFIX}/share/ismrmrd/schema)
set(CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
set(CONFIG_ISMRMRD_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib)
+if (ISMRMRD_DATASET_SUPPORT)
+ list(APPEND CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
+ list(APPEND CONFIG_ISMRMRD_LIBRARY_DIRS ${HDF5_LIBRARY_DIRS})
+ list(APPEND ISMRMRD_LIBRARIES ${HDF5_LIBRARIES})
+endif ()
configure_file(cmake/ISMRMRDConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/InstallFiles/ISMRMRDConfig.cmake"
@ONLY
From: Ghislain Antony Vaillant <ghisvail@gmail.com>
Date: Wed, 16 Nov 2016 10:29:41 +0000
Subject: Fix CMake package detection.
---
examples/c/CMakeLists.txt | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt
index 778ab5a..b9a30c4 100644
--- a/examples/c/CMakeLists.txt
+++ b/examples/c/CMakeLists.txt
@@ -3,13 +3,7 @@ project(ISMRMRD-C-EXAMPLE)
# if building this example as a standalone project
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
- if(NOT DEFINED ENV{ISMRMRD_HOME})
- message(FATAL_ERROR "ISMRMRD_HOME environment variable must be defined")
- endif()
-
- list(APPEND CMAKE_MODULE_PATH "$ENV{ISMRMRD_HOME}/share/ismrmrd/cmake")
-
- find_package(Ismrmrd REQUIRED)
+ find_package(ISMRMRD REQUIRED)
# otherwise, building it as part of ISMRMRD itself
else()
......@@ -6,20 +6,9 @@ Subject: Fix HDF5 detection with CMake 3.6.
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 665e106..5e9b1a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -111,7 +111,7 @@ find_package(HDF5 1.8 COMPONENTS C)
if (HDF5_FOUND)
set (ISMRMRD_DATASET_SUPPORT true)
set (ISMRMRD_DATASET_SOURCES libsrc/dataset.c libsrc/dataset.cpp)
- set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_C_INCLUDE_DIR})
+ set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_INCLUDE_DIRS})
set (ISMRMRD_DATASET_LIBRARIES ${HDF5_LIBRARIES})
else ()
set (ISMRMRD_DATASET_SUPPORT false)
@@ -146,7 +146,7 @@ if (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
@@ -148,7 +148,7 @@ if (HDF5_FOUND AND WIN32 AND ISMRMRD_INS
if(DEFINED ENV{HDF5_ROOT})
set(HDF5_BIN_DIR $ENV{HDF5_ROOT}/bin)
else ()
......
Disable-HTML-timestamps.patch
Use-explicit-64-bit-shifts-in-testsuite.patch
Fix-HDF5-detection-with-CMake-3.6.patch
Fix-CMake-package-configuration.patch
Fix-CMake-package-detection.patch
Add-support-for-multiarch.patch
......@@ -1075,7 +1075,7 @@ HTML_STYLESHEET =
# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefor more robust against future updates.
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra stylesheet files is of importance (e.g. the last
# stylesheet in the list overrules the setting of the previous ones in the
......@@ -1618,8 +1618,8 @@ EXTRA_PACKAGES =
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
# $projectbrief, $projectlogo. Doxygen will replace $title with the empy string,
# for the replacement values of the other commands the user is refered to
# $projectbrief, $projectlogo. Doxygen will replace $title with the empty string,
# for the replacement values of the other commands the user is referred to
# HTML_HEADER.
# This tag requires that the tag GENERATE_LATEX is set to YES.
......
......@@ -75,7 +75,7 @@ Linux installation
The dependencies mentioned above should be included in most linux distributions. On Ubuntu you can install all required dependencies with::
sudo apt-get install libhdf5-serial-dev h5utils cmake cmake-curses-gui libboost-all-dev doxygen git
sudo apt-get install libhdf5-serial-dev h5utils cmake cmake-curses-gui libboost-all-dev libfftw3-dev doxygen git
After installation of dependencies, the library can be installed with:
......@@ -390,7 +390,7 @@ To reconstruct this synthetic dataset, you can use the test reconstruction appli
Matlab Example Code and Datasets
--------------------------------
The ``examples`` folder contains some matlab code to illustrate simple interaction with the ISMRMRD data format. The examples use test data sets, wich can be downloaded from the Github website_. Go to the ``examples/data`` folder and type the following to download the data::
The ``examples`` folder contains some matlab code to illustrate simple interaction with the ISMRMRD data format. The examples use test data sets, which can be downloaded from the Github website_. Go to the ``examples/data`` folder and type the following to download the data::
wget https://sourceforge.net/projects/ismrmrd/files/data/3D_partial_fourier.h5
wget https://sourceforge.net/projects/ismrmrd/files/data/simple_gre.h5
......
......@@ -3,13 +3,7 @@ project(ISMRMRD-C-EXAMPLE)
# if building this example as a standalone project
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
if(NOT DEFINED ENV{ISMRMRD_HOME})
message(FATAL_ERROR "ISMRMRD_HOME environment variable must be defined")
endif()
list(APPEND CMAKE_MODULE_PATH "$ENV{ISMRMRD_HOME}/share/ismrmrd/cmake")
find_package(Ismrmrd REQUIRED)
find_package(ISMRMRD REQUIRED)
# otherwise, building it as part of ISMRMRD itself
else()
......
......@@ -88,7 +88,7 @@ catch
nContrasts = 1;
end
% TODO add the other possibilites
% TODO add the other possibilities
%% Read all the data
% Reading can be done one acquisition (or chunk) at a time,
......
......@@ -9,6 +9,7 @@
#define ISMRMRD_DATASET_H
#include "ismrmrd/ismrmrd.h"
#include "ismrmrd/waveform.h"
#include <hdf5.h>
#ifdef __cplusplus
......@@ -83,6 +84,22 @@ EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t
*/
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset);
/**
* Appends and waveform data to the dataset.
*
* Please consult @See ISMRMRD_Waveform struct for details.
*/
EXPORTISMRMRD int ismrmrd_append_waveform(const ISMRMRD_Dataset *dset, const ISMRMRD_Waveform *wav);
/**
* Reads the wveformith the specified index from the dataset.
*/
EXPORTISMRMRD int ismrmrd_read_waveform(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Waveform* wav);
/**
* Return the number of waveforms in the dataset.
*/
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_waveforms(const ISMRMRD_Dataset *dset);
/**
* Appends an Image to the variable named varname in the dataset.
*
......@@ -166,6 +183,10 @@ public:
template <typename T> void readNDArray(const std::string &var, uint32_t index, NDArray<T> &arr);
uint32_t getNumberOfNDArrays(const std::string &var);
//Waveforms
void appendWaveform(const Waveform &wav);
void readWaveform(uint32_t index, Waveform & wav);
uint32_t getNumberOfWaveforms();
protected:
ISMRMRD_Dataset dset_;
};
......
......@@ -59,7 +59,7 @@ typedef double complex complex_double_t;
/* Booleans - part of C++ */
#ifndef __cplusplus
#ifdef _MSC_VER /* MS C compiler */
#if defined (_MSC_VER) && (_MSC_VER < 1800) /* old MS C compiler */
typedef int bool;
#define false 0
#define true 1
......
......@@ -60,7 +60,7 @@ namespace ISMRMRD
{
public:
/** Default construtor */
/** Default constructor */
MetaValue()
{
set(0L);
......@@ -166,7 +166,7 @@ namespace ISMRMRD
{
typedef std::map< std::string, std::vector<MetaValue> > map_t;
friend void serialize(MetaContainer& h, std::ostream& o);
friend void EXPORTISMRMRD serialize(MetaContainer& h, std::ostream& o);
public:
MetaContainer()
......@@ -231,7 +231,7 @@ namespace ISMRMRD
{
map_t::const_iterator it = map_.find(std::string(name));
if (it == map_.end()) {
throw std::runtime_error("Attempting to access unkown parameter");
throw std::runtime_error("Attempting to access unknown parameter");
}
if (index >= it->second.size()) {
throw std::runtime_error("Attempting to access indexed value out of bounds");
......
//
// Created by dch on 26/02/18.
//
#ifndef ISMRMRD_WAVEFORM_H
#define ISMRMRD_WAVEFORM_H
#include "export.h"
#ifdef __cplusplus
#include <cstdint>
namespace ISMRMRD {
extern "C" {
#endif
typedef struct ISMRMRD_WaveformHeader
{
uint16_t version;
/**< First unsigned int indicates the version */
uint64_t flags;
/**< bit field with flags */
uint32_t measurement_uid;
/**< Unique ID for the measurement */
uint32_t scan_counter;
/**< Number of the acquisition after this waveform */
uint32_t time_stamp;
/**< Time stamp of the waveform */
uint16_t number_of_samples;
/**< Number of samples acquired */
uint16_t channels;
/**< Available channels */
float sample_time_us;
/**< Time between samples in micro seconds */
uint16_t waveform_id;
/**< Id matching the types specified in the xml header */
} ISMRMRD_WaveformHeader;
typedef struct ISMRMRD_Waveform
{
ISMRMRD_WaveformHeader head;
uint32_t *data;
} ISMRMRD_Waveform;
EXPORTISMRMRD int ismrmrd_make_consistent_waveform(ISMRMRD_Waveform* wav);
EXPORTISMRMRD int ismrmrd_size_of_waveform_data(const ISMRMRD_Waveform* wav);
EXPORTISMRMRD ISMRMRD_Waveform* ismrmrd_create_waveform();
EXPORTISMRMRD int ismrmrd_free_waveform(ISMRMRD_Waveform*);
EXPORTISMRMRD int ismrmrd_init_waveform(ISMRMRD_Waveform*);
EXPORTISMRMRD int ismrmrd_init_waveformheader(ISMRMRD_WaveformHeader* header);
EXPORTISMRMRD int ismrmrd_copy_waveform(ISMRMRD_Waveform* dest, const ISMRMRD_Waveform* src);
#ifdef __cplusplus
}
struct EXPORTISMRMRD WaveformHeader : public ISMRMRD_WaveformHeader {
// Flag methods
bool isFlagSet(const uint64_t val);
void setFlag(const uint64_t val);
void clearFlag(const uint64_t val);
void clearAllFlags();
};
struct EXPORTISMRMRD Waveform : public ISMRMRD_Waveform {
Waveform();
Waveform(const Waveform &other);
Waveform(Waveform&& other);
Waveform(uint16_t number_of_samples, uint16_t available_channels);
~Waveform();
Waveform & operator=(const Waveform &other);
Waveform & operator=(Waveform &&other);
uint32_t* begin_data();
uint32_t* end_data();
size_t size() const;
};
}
#endif
#endif //ISMRMRD_WAVEFORM_H_H