[ismrmrd] 23/177: Removing old hdf5 related stuff. Removed xml specific windows exports definitions.

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:01:58 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 fcdeffbda6c446d5894d3fee8e49a56f179d73e0
Author: Souheil Inati <souheil.inati at nih.gov>
Date:   Mon Aug 25 16:31:10 2014 -0400

    Removing old hdf5 related stuff.  Removed xml specific windows exports definitions.
---
 ismrmrd_hdf5.cpp         | 715 -----------------------------------------------
 ismrmrd_hdf5.h           | 312 ---------------------
 ismrmrd_hdf5_datatypes.h | 346 -----------------------
 ismrmrd_xsd_export.h     |  21 --
 xml/ismrmrd_meta.h       |   6 +-
 xml/ismrmrd_xml.h        |   6 +-
 xml/ismrmrd_xml_export.h |  14 -
 7 files changed, 6 insertions(+), 1414 deletions(-)

diff --git a/ismrmrd_hdf5.cpp b/ismrmrd_hdf5.cpp
deleted file mode 100644
index 03c5fca..0000000
--- a/ismrmrd_hdf5.cpp
+++ /dev/null
@@ -1,715 +0,0 @@
-#include "ismrmrd_hdf5.h"
-#include "ismrmrd_hdf5_datatypes.h"
-
-
-#include <iostream>
-#include <boost/algorithm/string.hpp>
-
-
-namespace ISMRMRD
-{
-
-int IsmrmrdDataset::openHDF5File()
-{
-  std::cout << "Opening file" << std::endl;
-	if (file_exists_) {
-		try {
-			if (!H5File::isHdf5(filename_.c_str())) {
-				std::cerr << "File \"" << filename_ << "\" is not an HDF file file" << std::endl;
-				return -1;
-			}
-			file_ = boost::shared_ptr<H5File>(new H5File(filename_.c_str(), H5F_ACC_RDWR));
-		} catch (...) {
-                    try {
-                        file_ = boost::shared_ptr<H5File>(new H5File(filename_.c_str(), H5F_ACC_RDONLY));
-                    } catch (...) {
-                        std::cerr << "Failed to open HDF5 file." << std::endl;
-                        return -1;
-                    }
-		}
-		file_open_ = true;
-	} else if (create_file_if_needed_){
-		try {
-			file_ = boost::shared_ptr<H5File>(new H5File(filename_, H5F_ACC_TRUNC));
-
-			//We will close and then immediately open the file again.
-			//We need to make sure the file is saved as an HDF5 file in case other processes and functions
-			//need to access it immediately. The line above does not cause the file to be marked as and HDF5 file.
-			//H5File::isHdf5(filename_.c_str()) will return false at this point.
-			file_->close();
-			file_ = boost::shared_ptr<H5File>(new H5File(filename_, H5F_ACC_RDWR));
-
-		} catch (...) {
-			std::cerr << "Failed to create and open HDF5 file." << std::endl;
-			return -1;
-		}
-		file_open_ = true;
-		file_exists_ = true;
-	} else {
-		std::cerr << "Unable to find HDF5 file (" << filename_ << "), and file cannot be created." << std::endl;
-		return -1;
-	}
-
-	return 0;
-}
-
-void IsmrmrdDataset::close(void)
-{
-    if (file_open_) {
-        dataset_->flush(H5F_SCOPE_LOCAL);
-        dataset_->close();
-        dataset_.reset();
-        file_->flush(H5F_SCOPE_LOCAL);
-        file_->close();
-        file_.reset();
-        file_open_ = false;
-    }
-}
-
-
-
-bool IsmrmrdDataset::linkExists(const char* name)
-{
-	if (!file_open_) {
-		std::cerr << "IsmrmrdDataset::linkExists: file not open." << std::endl;
-		return false;
-	}
-	std::vector<std::string> name_elements;
-	std::string splitstr("/");
-	std::string namestr(name);
-	boost::split(name_elements, namestr, boost::is_any_of(splitstr));
-	std::string current_path("");
-	for (unsigned int i = 0; i < name_elements.size(); i++) {
-		if (name_elements[i].size() > 0) {
-			current_path = current_path + std::string("/") + name_elements[i];
-			if (!H5Lexists(file_->getId(), current_path.c_str(), H5P_DEFAULT )) {
-				return false;
-			}
-		}
-	}
-	return true;
-}
-
-int IsmrmrdDataset::createGroupForDataset(const char* name)
-{
-	if (!file_open_) {
-		std::cerr << "IsmrmrdDataset::linkExists: file not open." << std::endl;
-		return -1;
-	}
-
-	std::vector<std::string> name_elements;
-	std::string splitstr("/");
-	std::string namestr(name);
-	boost::split(name_elements, namestr, boost::is_any_of(splitstr));
-	std::string current_path("");
-	for (unsigned int i = 0; i < name_elements.size(); i++) {
-		if (name_elements[i].size() > 0) {
-			current_path = current_path + std::string("/") + name_elements[i];
-			if (!H5Lexists(file_->getId(), current_path.c_str(), H5P_DEFAULT )) {
-				file_->createGroup( current_path.c_str());
-			}
-		}
-	}
-	return 0;
-}
-
-template <typename T> int IsmrmrdDataset::appendArray(NDArrayContainer<T>& a, const char* varname)
-{
-
-	std::string data_path = groupname_ + std::string("/") + std::string(varname);
-
-	if (!a.is_consistent()) {
-		std::cerr << "IsmrmrdDataset::append(..): Asking to append inconsistent array." << std::endl;
-		return -1;
-	}
-
-	boost::shared_ptr<DataSet> dataset;
-    boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<T>();
-
-	std::vector<hsize_t> dims;
-	std::vector<hsize_t> max_dims;
-	if (!linkExists(data_path.c_str())) {
-		std::vector<hsize_t> dims;
-		std::vector<hsize_t> max_dims;
-		dims.push_back(1);
-		max_dims.push_back(H5S_UNLIMITED);
-		for (std::vector<unsigned int>::reverse_iterator it = a.dimensions_.rbegin(); it != a.dimensions_.rend(); it++) {
-			dims.push_back(static_cast<unsigned long long int>(*it));
-			max_dims.push_back(static_cast<unsigned long long int>(*it));
-		}
-
-		try {
-
-			if (createGroupForDataset(groupname_.c_str()) < 0) {
-				std::cout << "Failed to create group in HDF 5 file." << std::endl;
-				return -1;
-			}
-
-			DataSpace mspace1( dims.size(), &dims[0], &max_dims[0]);
-
-			DSetCreatPropList cparms;
-			cparms.setChunk( dims.size(), &dims[0] );
-
-			dataset = boost::shared_ptr<DataSet>(new DataSet(file_->createDataSet( data_path.c_str(), *datatype, mspace1, cparms)));
-			mspace1 = dataset->getSpace();
-
-			DataSpace mspace2( dims.size(), &dims[0] );
-
-			std::vector<hsize_t> offset(dims.size());
-			mspace1.selectHyperslab(H5S_SELECT_SET, &dims[0], &offset[0]);
-			dataset->write( &(a.data_[0]), *datatype, mspace2, mspace1 );
-
-		} catch( Exception& e ) {
-			std::cerr << "Exception caught while creating HDF5 dataset" << std::endl;
-			std::cerr << e.getDetailMsg() << std::endl;
-			return -1;
-		}
-	} else {
-		try {  // to determine if the dataset exists in the group
-			dataset = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(data_path.c_str())));
-
-			DataType mtype = dataset->getDataType();
-			if (!(mtype == (*datatype))) {
-				std::cout << "Attempting to append data to HDF5 dataset with the wrong type" << std::endl;
-				return -1;
-			}
-
-			DataSpace mspace1 = dataset->getSpace();
-			int rank = mspace1.getSimpleExtentNdims();
-			std::vector<hsize_t> ddims(rank,0);
-			mspace1.getSimpleExtentDims(&ddims[0], NULL);
-
-
-			if ((ddims.size()-1) != a.dimensions_.size()) {
-				std::cerr << "Dimensions in dataset does not match with existing HDF5 dataset" << std::endl;
-			}
-
-			dims.push_back(1);
-			for (unsigned int i = 1; i < ddims.size(); i++) {
-				if (a.dimensions_[ddims.size()-1-i] != ddims[i]) {
-					std::cerr << "Error trying to write array to existing HDF5 file. Variable has wrong size." << std::endl;
-					std::cerr << a.dimensions_[ddims.size()-1-i] << ", " << ddims[i];
-					std::cerr << std::endl;
-					return -1;
-				}
-				dims.push_back(ddims[i]);
-			}
-
-			std::vector<hsize_t> offset(rank, 0);
-			offset[0] = ddims[0];
-
-			ddims[0]++;
-
-			dataset->extend(&ddims[0]);
-
-			DataSpace fspace2 = dataset->getSpace();
-			fspace2.selectHyperslab( H5S_SELECT_SET, &dims[0], &offset[0] );
-
-			DataSpace mspace2( rank, &dims[0] );
-
-			dataset->write( &(a.data_[0]), *datatype, mspace2, fspace2 );
-
-		 }
-		 catch( FileIException& not_found_error)
-		 {
-			 std::cout << "Dataset is not found. At this point, it should have been created!" << std::endl;
-			 return -1;
-		 }
-	}
-	return 0;
-}
-
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< unsigned short int >& a,const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< float >& a,const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< double >& a,const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< std::complex<float> >& a,const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< std::complex<double> >& a,const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendArray(NDArrayContainer< ImageHeader >& a,const char* varname);
-
-template <typename T> boost::shared_ptr< NDArrayContainer<T> > IsmrmrdDataset::readArray(const char* varname, unsigned long int index)
-{
-  boost::shared_ptr< NDArrayContainer<T> > ret(new NDArrayContainer<T>());
-  boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<T>();
-
-  std::string data_path = groupname_ + std::string("/") + std::string(varname);
-
-
-	try {
-
-		if (!linkExists(data_path.c_str())) {
-			std::cout << "Trying to access non-existing variable in HDF5 file." << std::endl;
-			return ret;
-		}
-
-		DataSet d = file_->openDataSet(H5std_string(data_path.c_str()));
-		DataSpace dataspace = d.getSpace();
-		DataType dtype = d.getDataType();
-
-		if (!(dtype == *datatype)) {
-			std::cout << "HDF5 datatype for selected variable does not match signature of reading function" << std::endl;
-			return ret;
-		}
-
-		int rank = dataspace.getSimpleExtentNdims();
-		std::vector<hsize_t> dims(rank,0);
-		dataspace.getSimpleExtentDims(&dims[0]);
-
-		if (dims[0] <= index) {
-			std::cout << "Attempting to access non-existing hyperslice" << std::endl;
-			return ret;
-		}
-
-		std::vector<hsize_t> slice_dims(rank,0);
-		std::vector<hsize_t> offset(rank,0);
-		ret->dimensions_ = std::vector<unsigned int>(rank-1,0);
-		slice_dims[0] = 1;
-		offset[0] = index;
-
-		for (unsigned int i = 1; i < rank; i++) {
-			slice_dims[i] = dims[i];
-			ret->dimensions_[ret->dimensions_.size()-i] = dims[i]; //Flip dimensions for NDArray.
-		}
-
-		dataspace.selectHyperslab( H5S_SELECT_SET, &slice_dims[0], &offset[0] );
-
-		DataSpace memspace(rank,&slice_dims[0]);
-
-		ret->data_.resize(ret->elements());
-
-		//OK finally ready, now read the data.
-		d.read(reinterpret_cast<void*>(&(ret->data_[0])), *datatype, memspace, dataspace, H5P_DEFAULT);
-
-	} catch (...) {
-		std::cout << "Error caught while attempting to read HDF5 file" << std::endl;
-		return ret;
-	}
-
-	return ret;
-
-}
-
-template EXPORTISMRMRD boost::shared_ptr< NDArrayContainer<unsigned short int> > IsmrmrdDataset::readArray(const char* varname, unsigned long int index);
-template EXPORTISMRMRD boost::shared_ptr< NDArrayContainer<float> > IsmrmrdDataset::readArray(const char* varname, unsigned long int index);
-template EXPORTISMRMRD boost::shared_ptr< NDArrayContainer<double> > IsmrmrdDataset::readArray(const char* varname, unsigned long int index);
-template EXPORTISMRMRD boost::shared_ptr< NDArrayContainer< std::complex<float> > > IsmrmrdDataset::readArray(const char* varname, unsigned long int index);
-template EXPORTISMRMRD boost::shared_ptr< NDArrayContainer< std::complex<double> > > IsmrmrdDataset::readArray(const char* varname, unsigned long int index);
-
-
-int IsmrmrdDataset::appendAcquisition(Acquisition* a)
-{
-	std::vector<hsize_t> dims(2,1);
-	std::vector<hsize_t> max_dims(2,1);max_dims[0] = H5S_UNLIMITED;
-
-	int rank = 2;
-	std::vector<hsize_t> ddims = dims;
-	std::vector<hsize_t> offset(rank,0);
-
-	bool new_dataset = false;
-
-	if (!dataset_open_) {
-		try {
-			boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<AcquisitionHeader_with_data>();
-			if (!linkExists(data_path_.c_str())) {
-				DataSpace mspace1( dims.size(), &dims[0], &max_dims[0]);
-				DSetCreatPropList cparms;
-				cparms.setChunk( dims.size(), &dims[0] );
-				dataset_ = boost::shared_ptr<DataSet>(new DataSet(file_->createDataSet( data_path_.c_str(), *datatype, mspace1, cparms)));
-				new_dataset = true;
-			} else {
-				dataset_ = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(data_path_.c_str())));
-				DataType mtype = dataset_->getDataType();
-				if (!(mtype == (*datatype))) {
-					std::cout << "Attempting to append data to HDF5 dataset with the wrong type" << std::endl;
-					return -1;
-				}
-
-			}
-			dataset_open_ = true;
-		} catch( Exception& e ) {
-			std::cout << "Exception caught while opening (creating) HDF5 dataset" << std::endl;
-			std::cout << e.getDetailMsg() << std::endl;
-			return -1;
-		}
-	}
-
-	try {
-		boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<AcquisitionHeader_with_data>();
-		AcquisitionHeader_with_data tmp;
-		tmp.head = a->getHead();
-		tmp.traj.len = tmp.head.trajectory_dimensions*tmp.head.number_of_samples;
-		tmp.traj.p = const_cast<float*>(&a->getTraj()[0]);
-
-		tmp.data.len = tmp.head.active_channels*tmp.head.number_of_samples*2;
-		tmp.data.p = const_cast<float*>(&a->getData()[0]);
-
-		DataSpace mspace1 = dataset_->getSpace();
-		rank = mspace1.getSimpleExtentNdims();
-		if (rank != 2) {
-			std::cerr << "Wrong rank (" << rank << ") found in HDF5 dataset" << std::endl;
-			return -1;
-		}
-
-		if (!new_dataset) {
-			mspace1.getSimpleExtentDims(&ddims[0], NULL);
-			offset[0] = ddims[0];
-			ddims[0]++;
-
-			dataset_->extend(&ddims[0]);
-		}
-		DataSpace fspace2 = dataset_->getSpace();
-		fspace2.selectHyperslab( H5S_SELECT_SET, &dims[0], &offset[0] );
-
-		DataSpace mspace2( rank, &dims[0] );
-		dataset_->write( &tmp, *datatype, mspace2, fspace2 );
-
-	} catch( Exception& e ) {
-		std::cout << "Exception caught while writing HDF5 data" << std::endl;
-		std::cout << e.getDetailMsg() << std::endl;
-		return -1;
-	}
-
-	return 0;
-}
-
-
-
-unsigned long IsmrmrdDataset::getNumberOfAcquisitions()
-{
-	unsigned long ret = 0;
-
-	if (!linkExists(data_path_.c_str())) {
-		std::cerr << "Data path (" << data_path_ << ") does not exist in HDF5 dataset" << std::endl;
-		return ret;
-	}
-
-	if (!dataset_open_) {
-		try{
-			dataset_ = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(data_path_.c_str())));
-			dataset_open_ = true;
-		} catch( Exception& e ) {
-			std::cout << "Exception caught while opening HDF5 dataset" << std::endl;
-			std::cout << e.getDetailMsg() << std::endl;
-			return ret;
-		}
-	}
-
-	try {
-		DataSpace dataspace = dataset_->getSpace();
-		int rank = dataspace.getSimpleExtentNdims();
-		std::vector<hsize_t> dims(rank,0);
-		dataspace.getSimpleExtentDims(&dims[0]);
-		ret = dims[0];
-	} catch (...) {
-		std::cout << "Error caught while attempting to access the number of elements in HDF5 file" << std::endl;
-		return ret;
-	}
-
-	return ret;
-}
-
-boost::shared_ptr< Acquisition > IsmrmrdDataset::readAcquisition(unsigned long int index)
-{
-	boost::shared_ptr<Acquisition> ret;
-
-	if (!linkExists(data_path_.c_str())) {
-		std::cerr << "Data path does not exist in HDF5 dataset" << std::endl;
-		return ret;
-	}
-
-
-	boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<AcquisitionHeader_with_data>();
-	if (!dataset_open_) {
-		try{
-			dataset_ = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(data_path_.c_str())));
-			dataset_open_ = true;
-		} catch( Exception& e ) {
-			std::cout << "Exception caught while opening (creating) HDF5 dataset" << std::endl;
-			std::cout << e.getDetailMsg() << std::endl;
-			return ret;
-		}
-	}
-
-	try {
-		DataSpace dataspace = dataset_->getSpace();
-		DataType dtype = dataset_->getDataType();
-
-		if (!(dtype == *datatype)) {
-			std::cout << "Attempting to open HDF5 dataset with the wrong type" << std::endl;
-			return ret;
-		}
-
-		int rank = dataspace.getSimpleExtentNdims();
-		std::vector<hsize_t> dims(rank,0);
-		dataspace.getSimpleExtentDims(&dims[0]);
-
-		if (dims[0] <= index) {
-			std::cout << "Attempting to access non-existing hyperslice in HDF5 dataset" << std::endl;
-			return ret;
-		}
-
-		std::vector<hsize_t> slice_dims(rank,1);
-		std::vector<hsize_t> offset(rank,0);
-
-		slice_dims[0] = 1;
-		offset[0] = index;
-
-
-		dataspace.selectHyperslab( H5S_SELECT_SET, &slice_dims[0], &offset[0] );
-
-		DataSpace memspace(rank,&slice_dims[0]);
-
-		AcquisitionHeader_with_data tmp;
-
-		//OK finally ready, now read the data.
-		dataset_->read(reinterpret_cast<void*>(&tmp), *datatype, memspace, dataspace, H5P_DEFAULT);
-
-		ret = boost::shared_ptr<Acquisition>(new Acquisition());
-		ret->setHead(tmp.head);
-		//ret->head_ = tmp.head;
-        size_t tl = tmp.traj.len;
-        size_t dl = tmp.data.len;
-        if ((tl != ret->getTraj().size()) || (dl != ret->getData().size())) {
-        	std::cout << "Header does not match data length in file" << std::endl;
-        	throw;
-        }
-		memcpy(const_cast<float*>(&ret->getTraj()[0]), tmp.traj.p, sizeof(float)*tl);
-		free(tmp.traj.p); //Avoid memory leak
-		memcpy(const_cast<float*>(&ret->getData()[0]), tmp.data.p, sizeof(float)*dl);
-		free(tmp.data.p); //Avoid memory leak
-
-	} catch (...) {
-		std::cout << "Error caught while attempting to read HDF5 file" << std::endl;
-		return ret;
-	}
-
-	return ret;
-
-}
-
-int IsmrmrdDataset::writeHeader(const std::string& xml) {
-	std::vector<hsize_t> dims(1,1);
-	std::vector<hsize_t> max_dims(1,1);
-
-	boost::shared_ptr<DataSet> xml_dataset;
-	boost::shared_ptr<DataType> datatype(new StrType(0, H5T_VARIABLE));
-	try {
-		if (!linkExists(xml_header_path_.c_str())) {
-			DataSpace mspace1( dims.size(), &dims[0], &max_dims[0]);
-			xml_dataset = boost::shared_ptr<DataSet>(new DataSet(file_->createDataSet( xml_header_path_.c_str(), *datatype, mspace1)));
-		} else {
-			xml_dataset = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(xml_header_path_.c_str())));
-			DataType mtype = xml_dataset->getDataType();
-			if (!(mtype == (*datatype))) {
-				std::cout << "Attempting to append XML data to HDF5 dataset with the wrong type" << std::endl;
-				return -1;
-			}
-		}
-		DataSpace mspace1 = xml_dataset->getSpace();
-		xml_dataset->write(xml,*datatype,mspace1);
-
-	} catch( Exception& e ) {
-			std::cout << "Exception caught while writing XML Header to HDF5 file" << std::endl;
-			std::cout << e.getDetailMsg() << std::endl;
-			return -1;
-	}
- return 0;
-}
-
-boost::shared_ptr<std::string> IsmrmrdDataset::readHeader()
-{
-	boost::shared_ptr<std::string> ret(new std::string(""));
-
-	if (!linkExists(xml_header_path_.c_str())) {
-		std::cerr << "Path for XML parameters not found in HDF5 file" << std::endl;
-		return ret;
-	}
-
-	try {
-		boost::shared_ptr<DataSet> xml_dataset = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(xml_header_path_.c_str())));
-		boost::shared_ptr<DataType> datatype(new StrType(0, H5T_VARIABLE));
-		DataType dt = xml_dataset->getDataType();
-		xml_dataset->read(*ret,dt);
-	} catch( Exception& e ) {
-		std::cout << "Exception caught while reading XML Header to HDF5 file" << std::endl;
-		std::cout << e.getDetailMsg() << std::endl;
-		return ret;
-    }
-
-	return ret;
-}
-
-template <typename T> int IsmrmrdDataset::appendImage(Image<T>& m, const char* varname) {
-	ImageHeader_with_data<T> tmp;
-	tmp.head = m.getHead();
-	tmp.data.len = m.getNumberOfElements();
-	tmp.data.p = const_cast<T*>(&m.getData()[0]);
-	std::vector<unsigned int> dims(1,1);
-	NDArrayContainer<ImageHeader_with_data<T> > cont(dims, &tmp);
-	return appendArray<ImageHeader_with_data<T> >(cont, varname);
-}
-
-template <typename T> boost::shared_ptr< Image<T> > IsmrmrdDataset::readImage(const char* varname, unsigned long index)
-{
-	boost::shared_ptr< Image<T> > ret(new Image<T>);
-
-	boost::shared_ptr<NDArrayContainer<ImageHeader_with_data<T> > > tmp = readArray<ImageHeader_with_data<T> >(varname, index);
-
-	if (tmp->elements() != 1) {
-		std::cerr << "IsmrmrdDataset::readImage(..): readArray returned an unexpected number of elements (";
-		std::cerr << tmp->elements() << "). Should be 1.";
-		std::cerr << std::endl;
-		return ret;
-	}
-	//We will copy the header
-	ret->setHead(tmp->data_[0].head);
-
-    size_t dlen = tmp->data_[0].data.len;
-	memcpy (const_cast<T*>(&ret->getData()[0]), tmp->data_[0].data.p, dlen*sizeof(T));
-	free(tmp->data_[0].data.p); //Avoid memory leak
-	return ret;
-}
-
-boost::shared_ptr< ImageHeader > IsmrmrdDataset::readImageHeader(const char* varname, unsigned long index)
-{
-	boost::shared_ptr< ImageHeader > ret(new ImageHeader);
-
-	boost::shared_ptr<NDArrayContainer<ImageHeader> > tmp = readArray<ImageHeader>(varname,index);
-	if (tmp->elements() != 1) {
-		std::cerr << "IsmrmrdDataset::readImageHeader(..): readArray returned an unexpected number of elements (" << tmp->elements() << "). Should be 1." << std::endl;
-		return ret;
-	}
-
-	*ret = tmp->data_[0];
-
-	return ret;
-}
-
-template EXPORTISMRMRD int IsmrmrdDataset::appendImage(Image<float>& m, const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendImage(Image<double>& m, const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendImage(Image<unsigned short>& m, const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendImage(Image< std::complex<float> >& m, const char* varname);
-template EXPORTISMRMRD int IsmrmrdDataset::appendImage(Image< std::complex<double> >& m, const char* varname);
-
-template EXPORTISMRMRD boost::shared_ptr< Image<float> > IsmrmrdDataset::readImage(const char* varname, unsigned long index);
-template EXPORTISMRMRD boost::shared_ptr< Image<double> > IsmrmrdDataset::readImage(const char* varname, unsigned long index);
-template EXPORTISMRMRD boost::shared_ptr< Image<unsigned short> > IsmrmrdDataset::readImage(const char* varname, unsigned long index);
-template EXPORTISMRMRD boost::shared_ptr< Image< std::complex<float> > > IsmrmrdDataset::readImage(const char* varname, unsigned long index);
-template EXPORTISMRMRD boost::shared_ptr< Image< std::complex<double> > > IsmrmrdDataset::readImage(const char* varname, unsigned long index);
-
-int IsmrmrdDataset::appendImageAttrib(std::string& a, const char* varname)
-{
-	std::string data_path = groupname_ + std::string("/") + std::string(varname);
-
-	boost::shared_ptr<DataSet> dataset;
-    boost::shared_ptr<DataType> datatype = getIsmrmrdHDF5Type<std::string>();
-
-	std::vector<hsize_t> dims;
-	std::vector<hsize_t> max_dims;
-	if (!linkExists(data_path.c_str()))
-    {
-		std::vector<hsize_t> dims(1,1);
-		std::vector<hsize_t> max_dims(1,1);
-
-		try
-        {
-			if (createGroupForDataset(groupname_.c_str()) < 0)
-            {
-				std::cout << "Failed to create group in HDF 5 file." << std::endl;
-				return -1;
-			}
-
-			DataSpace mspace1( dims.size(), &dims[0], &max_dims[0]);
-
-			DSetCreatPropList cparms;
-			cparms.setChunk( dims.size(), &dims[0] );
-
-			dataset = boost::shared_ptr<DataSet>(new DataSet(file_->createDataSet( data_path.c_str(), *datatype, mspace1, cparms)));
-			mspace1 = dataset->getSpace();
-
-			DataSpace mspace2( dims.size(), &dims[0] );
-
-			std::vector<hsize_t> offset(dims.size());
-			mspace1.selectHyperslab(H5S_SELECT_SET, &dims[0], &offset[0]);
-			dataset->write( a, *datatype, mspace2, mspace1 );
-
-		} catch( Exception& e ) {
-			std::cerr << "Exception caught while creating HDF5 dataset" << std::endl;
-			std::cerr << e.getDetailMsg() << std::endl;
-			return -1;
-		}
-	}
-    else
-    {
-		try
-        {  // to determine if the dataset exists in the group
-			dataset = boost::shared_ptr<DataSet>(new DataSet(file_->openDataSet(data_path.c_str())));
-
-			DataType mtype = dataset->getDataType();
-			if (!(mtype == (*datatype))) {
-				std::cout << "Attempting to append data to HDF5 dataset with the wrong type" << std::endl;
-				return -1;
-			}
-
-            std::vector<hsize_t> dims(1,1);
-		    std::vector<hsize_t> max_dims(1,1);
-            DataSpace mspace2( dims.size(), &dims[0] );
-
-            DataSpace mspace1( dims.size(), &dims[0], &max_dims[0]);
-            mspace1 = dataset->getSpace();
-
-			std::vector<hsize_t> offset(dims.size());
-			mspace1.selectHyperslab(H5S_SELECT_SET, &dims[0], &offset[0]);
-			dataset->write( a, *datatype, mspace2, mspace1 );
-
-			/*DataSpace mspace1 = dataset->getSpace();
-			int rank = mspace1.getSimpleExtentNdims();
-			std::vector<hsize_t> ddims(rank,0);
-			mspace1.getSimpleExtentDims(&ddims[0], NULL);
-
-			dims.push_back(1);
-			for (unsigned int i = 1; i < ddims.size(); i++)
-            {
-				dims.push_back(ddims[i]);
-			}
-
-			std::vector<hsize_t> offset(rank, 0);
-			offset[0] = ddims[0];
-
-			DataSpace fspace2 = dataset->getSpace();
-			fspace2.selectHyperslab( H5S_SELECT_SET, &dims[0], &offset[0] );
-
-			DataSpace mspace2( rank, &dims[0] );
-
-			dataset->write( a, *datatype, mspace2, fspace2 );*/
-
-		 }
-		 catch( FileIException& not_found_error)
-		 {
-			 std::cout << "Dataset is not found. At this point, it should have been created!" << std::endl;
-			 return -1;
-		 }
-	}
-	return 0;
-}
-
-HDF5Lock* HDF5Lock::instance()
-{
-		if (!instance_) instance_ = new HDF5Lock();
-		return instance_;
-}
-
-void HDF5Lock::acquire()
-{
-	mutex_.lock();
-}
-
-void HDF5Lock::release()
-{
-	mutex_.unlock();
-}
-
-EXPORTISMRMRD HDF5Lock* HDF5Lock::instance_ = NULL;
-
-
-} //End of ISMRMRD namespace
-
diff --git a/ismrmrd_hdf5.h b/ismrmrd_hdf5.h
deleted file mode 100644
index 3e29858..0000000
--- a/ismrmrd_hdf5.h
+++ /dev/null
@@ -1,312 +0,0 @@
-#pragma once
-#ifndef ISMRMRD_HDF5_H
-#define ISMRMRD_HDF5_H
-
-#include "ismrmrd_export.h"
-#include "ismrmrd.h"
-
-#include <fstream>
-#include <typeinfo>
-#include <map>
-#include <string>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/thread.hpp>
-
-
-#include <hdf5.h>
-
-//#ifndef H5_NO_NAMESPACE
-//using namespace H5;
-//#endif
-
-
-namespace ISMRMRD
-{
-
-struct AcquisitionHeader_with_data
-{
-	AcquisitionHeader head;
-	hvl_t traj;
-	hvl_t data;
-};
-
-template <typename T> struct ImageHeader_with_data
-{
-	ImageHeader head;
-	hvl_t data;
-};
-
-}
-
-
-#include "ismrmrd_hdf5_datatypes.h"
-
-namespace ISMRMRD
-{
-
-
-/**
- *   This class provides a simple interface for accessing an ISMRMRD Data Set stored
- *   in HDF5 format.
- *
- *
- *   A given ISMRMRD dataset if assumed to be stored under one group name in the HDF5 file. To make the datasets consistent,
- *   this library enforces that the XML configuration is stored in the variable groupname/xml and the Acquisitions are
- *   stored in groupname/data.
- *
- */
-class EXPORTISMRMRD IsmrmrdDataset
-{
-public:
-	/**
-	 *   Constructor.
-	 *
-	 *   @param filename is the full path to HDF5 file used for storing the data set
-	 *   @param groupname is the group name within the HDF5 file used for this data set.
-	 *   @param create_file_if_needed can be used to automatically create the file if needed.
-	 *
-	 */
-	IsmrmrdDataset(const char* filename, const char* groupname, bool create_file_if_needed = true)
-	: filename_(filename)
-	, groupname_(groupname)
-	, file_open_(false)
-	, dataset_open_(false)
-	, create_file_if_needed_(create_file_if_needed)
-	{
-		std::ifstream ifile(filename_.c_str());
-		file_exists_ = ifile.is_open();
-
-		if (openHDF5File() < 0) {
-			std::cerr << "IsmrmrdDataset: Error opening HDF file." << std::endl;
-		}
-
-		if (!linkExists(groupname_.c_str())) {
-			if (createGroupForDataset(groupname_.c_str()) < 0) {
-				std::cerr << "IsmrmrdDataset: Error create HDF5 group." << std::endl;
-			}
-		}
-
-		xml_header_path_ = groupname_ + std::string("/xml");
-		data_path_ = groupname_ + std::string("/data");
-
-		hid_t t;
-		
-		t = this->type_container_.get_type<float>();
-		std::cout << "Type for float: " << t << std::endl;
-		
-		t = this->type_container_.get_type<double>();
-		std::cout << "Type for double: " << t << std::endl;
-		
-		t = this->type_container_.get_type< std::complex<float> >();
-		std::cout << "Type for complex float: " << t << std::endl;
-
-		t = this->type_container_.get_type< std::complex<double> >();
-		std::cout << "Type for complex double: " << t << std::endl;
-
-		t = this->type_container_.get_type< EncodingCounters >();
-		std::cout << "Type for EncodingCounters: " << t << std::endl;
-
-		t = this->type_container_.get_type< AcquisitionHeader >();
-		std::cout << "Type for AcquisitionHeader: " << t << std::endl;
-
-		t = this->type_container_.get_type< AcquisitionHeader_with_data >();
-		std::cout << "Type for AcquisitionHeader_with_data: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader >();
-		std::cout << "Type for ImageHeader: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data<float> >();
-		std::cout << "Type for ImageHeader_with_data<float>: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data<double> >();
-		std::cout << "Type for ImageHeader_with_data<double>: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data<unsigned short> >();
-		std::cout << "Type for ImageHeader_with_data<unsigned short>: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data<ccomplex_t> >();
-		std::cout << "Type for ImageHeader_with_data<ccomplex_t>: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data<cdouble_complex_t> >();
-		std::cout << "Type for ImageHeader_with_data<cdouble_complex_t>: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data< std::complex<float> > >();
-		std::cout << "Type for ImageHeader_with_data< std::complex<float> >: " << t << std::endl;
-
-		t = this->type_container_.get_type< ImageHeader_with_data< std::complex<double>  > >();
-		std::cout << "Type for ImageHeader_with_data< std::complex<double> >: " << t << std::endl;
-
-		t = this->type_container_.get_type< std::string >();
-		std::cout << "Type for std::string: " << t << std::endl;
- 	}
-
-        /**
-         * Closes all references to the underlying HDF5 file.
-         *
-         *  This method does not NEED to be called. It is most useful in
-         *  a Python interpreter when a dataset instance has not been
-         *  garbage collected but another process needs to read the HDF5 file.
-         */
-        void close(void);
-
-	/**
-	 *   Appends and NMR/MRI acquisition to the data set.
-	 *
-	 *	 Please consult @See Acquisition class for details.
-	 */
-	int appendAcquisition(Acquisition* a);
-
-	/**
-	 *  Reads the acquisition with the specified index from the HDF5 file.
-	 */
-	boost::shared_ptr<Acquisition> readAcquisition(unsigned long index = 0);
-
-	/**
-	 *  Return the number of acquisitions in the dataset.
-	 */
-	unsigned long getNumberOfAcquisitions();
-
-	/**
-	 *  Writes the xml string to the XML header field.
-	 *
-	 *  @warning There is no check of whether the string is a valid XML document at this point.
-	 *
-	 */
-	int writeHeader(const std::string& xml);
-
-	/**
-	 *  Reads the XML configuration header from the data set.
-	 */
-	boost::shared_ptr<std::string> readHeader();
-
-	/**
-	 *  Appends an Image to the variable named varname.
-	 *
-	 *  With this function, the image data is stored as a field in the variable (as a one dimensional array)
-	 *  and when reading it, it would need to be reshaped according to the image dimensions.
-	 *
-	 *  If you would like to store header and image data separately for easy viewing and reading in other applications,
-	 *  please use the appendImageHeader and appendArray functions to store the data in separate variables.
-	 *
-	 */
-	template <typename T> int appendImage(Image<T>& m, const char* varname);
-
-	/**
-	 *   Reads an image stored with appendImage above. The index indicates which image to read.
-	 */
-	template <typename T> boost::shared_ptr< Image<T> > readImage(const char* varname, unsigned long index = 0);
-
-	/**
-	 *  This function appends only the ImageHeader to the data set. Typically used in conjunction with
-	 *  appendArray to store data and header in separate variables.
-	 *
-	 */
-	int appendImageHeader(ImageHeader& h, const char* varname) {
-		std::vector<unsigned int> dims(1,1);
-		NDArrayContainer<ImageHeader> tmp(dims,&h);
-		return appendArray<ImageHeader>(tmp,varname);
-	}
-
-	/**
-	 *   Returns the image header with the indicated index.
-	 */
-	boost::shared_ptr< ImageHeader > readImageHeader(const char* varname, unsigned long index = 0);
-
-	/**
-	 * Appends a generic array (which can contain simple data elements such as float, double, etc).
-	 *
-	 * In the file the variable (with name varname) will contain a multidimensional array with one
-	 * more dimension than the array in a. The first dimension can expand and when new arrays are appended the
-	 * first dimension will grow accordingly.
-	 *
-	 */
-	template <typename T> int appendArray(NDArrayContainer<T>& a, const char* varname);
-
-	/**
-	 * Appends an array directly without using the NDArrayContainer class.
-	 *
-	 */
-	template <typename T> int appendArray(std::vector<unsigned int>& dimensions, T* data, const char* varname) {
-		NDArrayContainer<T> tmp(dimensions, data);
-		return appendArray<T>(tmp,varname);
-	}
-
-	/**
-	 *  Reads a multi-dimensional array from the data file.
-	 */
-	template <typename T> boost::shared_ptr< NDArrayContainer<T> > readArray(const char* varname, unsigned long index = 0);
-
-
-        /**
-	 *  This function appends the meta attribute information to the data set. The meta attributes are stored as an xml file.
-	 */
-	int appendImageAttrib(std::string& a, const char* varname);
-
-protected:
-	int openHDF5File();
-	bool linkExists(const char* name);
-	int createGroupForDataset(const char* name);
-
-	bool fileExists() {
-		return file_exists_;
-	}
-
-
-	std::string filename_;
-	std::string groupname_;
-	std::string xml_header_path_;
-	std::string data_path_;
-
-	bool file_open_;
-	bool file_exists_;
-	bool create_file_if_needed_;
-	bool dataset_open_;
-
-	boost::shared_ptr<H5File> file_;
-	boost::shared_ptr<DataSet> dataset_;
-	
-	IsmrmrdHDF5TypeContainer type_container_;
-};
-
-/**
- *  Convenience class to provide thread-safe access to HDF5 in cases
- *  where that is not compiled into the HDF5 library.
- */
-class EXPORTISMRMRD  HDF5Lock
-{
-
-public:
-	static HDF5Lock* instance();
-
-	void acquire();
-	void release();
-
-protected:
-	HDF5Lock()
-	: mutex_() { }
-
-	virtual ~HDF5Lock() { }
-
-	static HDF5Lock* instance_;
-
-	boost::mutex mutex_;
-};
-
-class HDF5Exclusive
-{
-public:
-	HDF5Exclusive() {
-		HDF5Lock::instance()->acquire();
-	}
-
-	~HDF5Exclusive() {
-		HDF5Lock::instance()->release();
-	}
-
-};
-
-
-} //end of ISMRMRD namespace
-
-#endif //ISMRMRD_HDF5_H
diff --git a/ismrmrd_hdf5_datatypes.h b/ismrmrd_hdf5_datatypes.h
deleted file mode 100644
index c57df8f..0000000
--- a/ismrmrd_hdf5_datatypes.h
+++ /dev/null
@@ -1,346 +0,0 @@
-#pragma once
-#ifndef ISMRMRD_HDF5_DATATYPES_H_
-#define ISMRMRD_HDF5_DATATYPES_H_
-
-#include "ismrmrd.h"
-
-#include <hdf5.h>
-#include <boost/shared_ptr.hpp>
-
-
-#include <vector>
-#include <complex>
-#include <string>
-
-//#ifndef H5_NO_NAMESPACE
-//	using namespace H5;
-//#endif
-
-namespace ISMRMRD
-{
-
-  /* HDF5 C Interface (begin) */
-
-  class IsmrmrdHDF5TypeContainer {
-    
-  public:
-
-    ~IsmrmrdHDF5TypeContainer() {
-      std::map<const std::type_info*, hid_t>::iterator it = hdf5_type_map_.begin();
-      while (it != hdf5_type_map_.end()) {
-	H5Tclose(it->second);
-	it++;
-      }
-      it = hdf5_vlen_type_map_.begin();
-      while (it != hdf5_vlen_type_map_.end()) {
-	H5Tclose(it->second);
-	it++;
-      }
-      
-    }
-
-    template <typename T> hid_t get_type() {
-      std::map<const std::type_info*, hid_t>::iterator it = hdf5_type_map_.find(&typeid(T));
-      if (it != hdf5_type_map_.end()) {
-	return it->second;
-      } else {
-	hid_t t = this->getIsmrmrdHDF5Type<T>();
-	hdf5_type_map_[&typeid(T)] = t;
-	return t;
-      }
-    }
-    
-    template <typename T, int N> hid_t get_array_type() {
-      std::map<const std::type_info*, hid_t>::iterator it = hdf5_type_map_.find(&typeid( T[N] ));
-      if (it != hdf5_type_map_.end()) {
-	return it->second;
-      } else {
-	hid_t t = this->getIsmrmrdHDF5ArrayType<T,N>();
-	hdf5_type_map_[&typeid(T[N])] = t;
-	return t;
-      }
-    }
-    
-    template <typename T> hid_t get_vlen_type() {
-      std::map<const std::type_info*, hid_t>::iterator it = hdf5_vlen_type_map_.find(&typeid(T));
-      if (it != hdf5_vlen_type_map_.end()) {
-	return it->second;
-      } else {
-	hid_t t = this->getIsmrmrdHDF5VLenType<T>();
-	hdf5_vlen_type_map_[&typeid(T)] = t;
-	return t;
-      }
-    }
-    
-    
-  protected:
-    struct compare_typeinfo {
-      bool operator ()(const std::type_info* a, const std::type_info* b) const {
-	return a->before(*b);
-      }
-    };
-    
-    std::map<const std::type_info*, hid_t, compare_typeinfo> hdf5_type_map_;    
-    std::map<const std::type_info*, hid_t, compare_typeinfo> hdf5_vlen_type_map_;    
-    template <typename T> hid_t getIsmrmrdHDF5Type();
-    template <typename T, int N> hid_t getIsmrmrdHDF5ArrayType();
-    template <typename T> hid_t getIsmrmrdHDF5VLenType();
-
-  }; //class IsmrmrdHDF5TypeContainer
-  
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<float>() {
-    return H5Tcopy(H5T_NATIVE_FLOAT);
-  }
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<double>() {
-    return H5Tcopy(H5T_NATIVE_DOUBLE);
-  }
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<char>() {
-    return H5Tcopy(H5T_NATIVE_CHAR);;
-  }
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<unsigned short>() {
-    return H5Tcopy(H5T_NATIVE_USHORT);;
-  }
-  
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type< std::complex<float> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(std::complex<float>));
-    H5Tinsert(t, "real", 0, H5T_NATIVE_FLOAT);
-    H5Tinsert(t, "imag", sizeof(float), H5T_NATIVE_FLOAT);
-    return t;
-  }
-  
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type< std::complex<double> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(std::complex<double>));
-    H5Tinsert(t, "real", 0, H5T_NATIVE_DOUBLE);
-    H5Tinsert(t, "imag", sizeof(double), H5T_NATIVE_DOUBLE);
-    return t;
-  }
-  
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< uint16_t, 3 >() {
-    std::vector<hsize_t> dims(1,3);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_UINT16, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< uint16_t, ISMRMRD_USER_INTS >() {
-    std::vector<hsize_t> dims(1,ISMRMRD_USER_INTS);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_UINT16, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< uint32_t, 3 >() { //TODO: The 3 should be replace with ISMRMRD_PHYS_TIME_STAMPS when that is corrected
-    std::vector<hsize_t> dims(1,3);//TODO: Replace when header is updated
-    hid_t t  = H5Tarray_create(H5T_NATIVE_UINT32, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< int32_t, ISMRMRD_USER_INTS >() {
-    std::vector<hsize_t> dims(1,ISMRMRD_USER_INTS);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_INT32, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< uint64_t, ISMRMRD_CHANNEL_MASKS >() {
-    std::vector<hsize_t> dims(1,ISMRMRD_CHANNEL_MASKS);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_UINT64, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< float, ISMRMRD_POSITION_LENGTH >() {
-    std::vector<hsize_t> dims(1,ISMRMRD_POSITION_LENGTH);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_FLOAT, 1, &dims[0]);
-    return t;
-  }
-  
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5ArrayType< float, ISMRMRD_USER_FLOATS >() {
-    std::vector<hsize_t> dims(1,ISMRMRD_USER_FLOATS);
-    hid_t t  = H5Tarray_create(H5T_NATIVE_FLOAT, 1, &dims[0]);
-    return t;
-  }
-
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<EncodingCounters>() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(EncodingCounters));    
-    H5Tinsert(t, "kspace_encode_step_1", 	HOFFSET(EncodingCounters, kspace_encode_step_1), H5T_NATIVE_UINT16);
-    H5Tinsert(t, "kspace_encode_step_2", 	HOFFSET(EncodingCounters, kspace_encode_step_2), H5T_NATIVE_UINT16);
-    H5Tinsert(t, "average", 			HOFFSET(EncodingCounters, average), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "slice", 			HOFFSET(EncodingCounters, slice), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "contrast", 			HOFFSET(EncodingCounters, contrast), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "phase", 			HOFFSET(EncodingCounters, phase), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "repetition", 			HOFFSET(EncodingCounters, repetition), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "set", 			HOFFSET(EncodingCounters, set), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "segment", 			HOFFSET(EncodingCounters, segment), 		 H5T_NATIVE_UINT16);
-    H5Tinsert(t, "user", 			HOFFSET(EncodingCounters, user), 	         get_array_type< uint16_t, ISMRMRD_USER_INTS >());
-    return t;
-  }
-  
-  template <> inline hid_t  IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<AcquisitionHeader>() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(AcquisitionHeader));    
-    H5Tinsert(t,"version", 			HOFFSET(AcquisitionHeader, version), 		       H5T_NATIVE_UINT16);
-    H5Tinsert(t,"flags", 			HOFFSET(AcquisitionHeader, flags), 		       H5T_NATIVE_UINT64);
-    H5Tinsert(t, "measurement_uid", 		HOFFSET(AcquisitionHeader, measurement_uid), 	       H5T_NATIVE_UINT32);
-    H5Tinsert(t, "scan_counter", 		HOFFSET(AcquisitionHeader, scan_counter), 	       H5T_NATIVE_UINT32);
-    H5Tinsert(t, "acquisition_time_stamp", 	HOFFSET(AcquisitionHeader, acquisition_time_stamp),    H5T_NATIVE_UINT32);
-    H5Tinsert(t, "physiology_time_stamp",       HOFFSET(AcquisitionHeader, physiology_time_stamp),     get_array_type<uint32_t,3>()); //TODO: should be get_array_type<uint32_t,ISMRMRD_PHYS_STAMPS>()
-    H5Tinsert(t, "number_of_samples", 		HOFFSET(AcquisitionHeader, number_of_samples), 	       H5T_NATIVE_UINT16);
-    H5Tinsert(t, "available_channels", 		HOFFSET(AcquisitionHeader, available_channels),        H5T_NATIVE_UINT16);
-    H5Tinsert(t, "active_channels", 		HOFFSET(AcquisitionHeader, active_channels),           H5T_NATIVE_UINT16);    
-    H5Tinsert(t, "channel_mask", 		HOFFSET(AcquisitionHeader, channel_mask), 	       get_array_type<uint64_t,ISMRMRD_CHANNEL_MASKS>());
-    H5Tinsert(t, "discard_pre", 		HOFFSET(AcquisitionHeader, discard_pre), 	       H5T_NATIVE_UINT16);
-    H5Tinsert(t, "discard_post", 		HOFFSET(AcquisitionHeader, discard_post), 	       H5T_NATIVE_UINT16);
-    H5Tinsert(t, "center_sample", 		HOFFSET(AcquisitionHeader, center_sample), 	       H5T_NATIVE_UINT16);
-    H5Tinsert(t, "encoding_space_ref", 		HOFFSET(AcquisitionHeader, encoding_space_ref),        H5T_NATIVE_UINT16);
-    H5Tinsert(t, "trajectory_dimensions",	HOFFSET(AcquisitionHeader, trajectory_dimensions),     H5T_NATIVE_UINT16);
-    H5Tinsert(t, "sample_time_us", 		HOFFSET(AcquisitionHeader, sample_time_us), 	       H5T_NATIVE_FLOAT);    
-    H5Tinsert(t, "position", 			HOFFSET(AcquisitionHeader, position), 		       get_array_type<float,ISMRMRD_POSITION_LENGTH>());
-    H5Tinsert(t, "read_dir", 			HOFFSET(AcquisitionHeader, read_dir), 		       get_array_type<float,ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "phase_dir", 			HOFFSET(AcquisitionHeader, phase_dir), 	               get_array_type<float,ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "slice_dir", 			HOFFSET(AcquisitionHeader, slice_dir), 	               get_array_type<float,ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "patient_table_position", 	HOFFSET(AcquisitionHeader, patient_table_position),    get_array_type<float,ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "idx", 			HOFFSET(AcquisitionHeader, idx), 	               get_type<EncodingCounters>());
-    H5Tinsert(t, "user_int", 			HOFFSET(AcquisitionHeader, user_int), 		       get_array_type<int32_t,ISMRMRD_USER_INTS>());
-    H5Tinsert(t, "user_float", 			HOFFSET(AcquisitionHeader, user_float), 	       get_array_type<float,ISMRMRD_USER_FLOATS>());    
-    return t; 
-  }
-
-  struct ccomplex_t
-  {
-    float real;
-    float imag;
-  };
-
-  struct cdouble_complex_t
-  {
-    double real;
-    double imag;
-  };
-  
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type< ccomplex_t >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ccomplex_t));
-    H5Tinsert(t, "real", HOFFSET(ccomplex_t, real), H5T_NATIVE_FLOAT);
-    H5Tinsert(t, "imag", HOFFSET(ccomplex_t, imag),  H5T_NATIVE_FLOAT);
-    return t;
-  }
-  
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type< cdouble_complex_t >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(cdouble_complex_t));
-    H5Tinsert(t, "real", HOFFSET(cdouble_complex_t, real), H5T_NATIVE_FLOAT);
-    H5Tinsert(t, "imag", HOFFSET(cdouble_complex_t, imag),  H5T_NATIVE_FLOAT);
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5VLenType< float >() {
-    return H5Tvlen_create(H5T_NATIVE_FLOAT);
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5VLenType< double >() {
-    return H5Tvlen_create(H5T_NATIVE_DOUBLE);
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5VLenType< ccomplex_t >() {
-    return H5Tvlen_create(get_type<ccomplex_t>());
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5VLenType< cdouble_complex_t >() {
-    return H5Tvlen_create(get_type<cdouble_complex_t>());
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5VLenType< uint16_t >() {
-    return H5Tvlen_create(H5T_NATIVE_UINT16);
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<AcquisitionHeader_with_data>() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(AcquisitionHeader_with_data));
-    H5Tinsert(t, "head", HOFFSET(AcquisitionHeader_with_data,head),    get_type<AcquisitionHeader>());
-    H5Tinsert(t, "traj", HOFFSET(AcquisitionHeader_with_data,traj),    get_vlen_type<float>());
-    H5Tinsert(t, "data", HOFFSET(AcquisitionHeader_with_data,data),    get_vlen_type< ccomplex_t>());
-    return t;
-  }
-
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader>() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader));
-    
-    H5Tinsert(t, "version", 				HOFFSET(ImageHeader, version), 			    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "flags", 				HOFFSET(ImageHeader, flags), 			    H5T_NATIVE_UINT64);
-    H5Tinsert(t, "measurement_uid", 			HOFFSET(ImageHeader, measurement_uid), 		    H5T_NATIVE_UINT32);
-    H5Tinsert(t, "matrix_size", 		        HOFFSET(ImageHeader, matrix_size), 		    get_array_type<uint16_t,3>());
-    H5Tinsert(t, "field_of_view", 			HOFFSET(ImageHeader, field_of_view), 		    get_array_type<float, ISMRMRD_POSITION_LENGTH>());    
-    H5Tinsert(t, "channels", 				HOFFSET(ImageHeader, channels), 	            H5T_NATIVE_UINT16);    
-    H5Tinsert(t, "position", 				HOFFSET(ImageHeader, position), 		    get_array_type<float, ISMRMRD_POSITION_LENGTH>());
-    H5Tinsert(t, "read_dir", 				HOFFSET(ImageHeader, read_dir), 		    get_array_type<float, ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "phase_dir", 				HOFFSET(ImageHeader, phase_dir), 		    get_array_type<float, ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "slice_dir", 				HOFFSET(ImageHeader, slice_dir), 		    get_array_type<float, ISMRMRD_DIRECTION_LENGTH>());
-    H5Tinsert(t, "patient_table_position", 	        HOFFSET(ImageHeader, patient_table_position),       get_array_type<float, ISMRMRD_POSITION_LENGTH>());
-    H5Tinsert(t, "average", 				HOFFSET(ImageHeader, average), 			    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "slice", 				HOFFSET(ImageHeader, slice), 			    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "contrast", 				HOFFSET(ImageHeader, contrast), 		    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "phase", 				HOFFSET(ImageHeader, phase), 			    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "repetition", 				HOFFSET(ImageHeader, repetition), 		    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "set",   				HOFFSET(ImageHeader, set), 			    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "acquisition_time_stamp", 	        HOFFSET(ImageHeader, acquisition_time_stamp),       H5T_NATIVE_UINT32);    
-    H5Tinsert(t, "physiology_time_stamp",               HOFFSET(ImageHeader, physiology_time_stamp), 	    get_array_type<uint32_t, 3>()); //TODO: get_array_type<uint32_t, ISMRMRD_PHYS_STAMPS>()
-    H5Tinsert(t, "image_data_type",   		        HOFFSET(ImageHeader, image_data_type),		    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "image_type",   			HOFFSET(ImageHeader, image_type),		    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "image_index",   			HOFFSET(ImageHeader, image_index),		    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "image_series_index",		        HOFFSET(ImageHeader, image_series_index),	    H5T_NATIVE_UINT16);
-    H5Tinsert(t, "user_int", 				HOFFSET(ImageHeader, user_int),                     get_array_type<int32_t, ISMRMRD_USER_INTS>());
-    H5Tinsert(t, "user_float", 				HOFFSET(ImageHeader, user_float),                   get_array_type<float, ISMRMRD_USER_FLOATS>());    
-    return t;
-}
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<float> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader_with_data<float>));
-    H5Tinsert(t, "head", HOFFSET(ImageHeader_with_data<float>,head),    get_type<ImageHeader>());
-    H5Tinsert(t, "data", HOFFSET(ImageHeader_with_data<float>,data),    get_vlen_type<float>());
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<double> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader_with_data<double>));
-    H5Tinsert(t, "head", HOFFSET(ImageHeader_with_data<double>,head),    get_type<ImageHeader>());
-    H5Tinsert(t, "data", HOFFSET(ImageHeader_with_data<double>,data),    get_vlen_type<double>());
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<unsigned short> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader_with_data<unsigned short>));
-    H5Tinsert(t, "head", HOFFSET(ImageHeader_with_data<unsigned short>,head),    get_type<ImageHeader>());
-    H5Tinsert(t, "data", HOFFSET(ImageHeader_with_data<unsigned short>,data),    get_vlen_type<unsigned short>());
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<ccomplex_t> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader_with_data<ccomplex_t>));
-    H5Tinsert(t, "head", HOFFSET(ImageHeader_with_data<ccomplex_t>,head),    get_type<ImageHeader>());
-    H5Tinsert(t, "data", HOFFSET(ImageHeader_with_data<ccomplex_t>,data),    get_vlen_type<ccomplex_t>());
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<cdouble_complex_t> >() {
-    hid_t t  = H5Tcreate(H5T_COMPOUND, sizeof(ImageHeader_with_data<cdouble_complex_t>));
-    H5Tinsert(t, "head", HOFFSET(ImageHeader_with_data<cdouble_complex_t>,head),    get_type<ImageHeader>());
-    H5Tinsert(t, "data", HOFFSET(ImageHeader_with_data<cdouble_complex_t>,data),    get_vlen_type<cdouble_complex_t>());
-    return t;
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data< std::complex<float> > >() {
-    return IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<ccomplex_t> >();
-  }
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data< std::complex<double> > >() {
-    return IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type<ImageHeader_with_data<cdouble_complex_t> >();
-  }
-
-
-  template <> inline hid_t IsmrmrdHDF5TypeContainer::getIsmrmrdHDF5Type< std::string >() {
-    hid_t t = H5Tcopy (H5T_C_S1);
-    H5Tset_size (t,H5T_VARIABLE);
-    return t;
-  }
-  /* HDF5 C Interface (end) */
-
-#endif /* ISMRMRD_HDF5_DATATYPES_H_ */
diff --git a/ismrmrd_xsd_export.h b/ismrmrd_xsd_export.h
deleted file mode 100644
index cbb30de..0000000
--- a/ismrmrd_xsd_export.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * ismrmrd_xsd_export.h
- *
- *  Created on: Sep 13, 2012
- *      Author: hansenms
- */
-
-#ifndef ISMRMRD_XSD_EXPORT_H_
-#define ISMRMRD_XSD_EXPORT_H_
-
-#if defined (WIN32)
-#if defined (ismrmrd_xsd_EXPORTS)
-#define EXPORTISMRMRDXSD __declspec(dllexport)
-#else
-#define EXPORTISMRMRDXSD __declspec(dllimport)
-#endif
-#else
-#define EXPORTISMRMRDXSD
-#endif
-
-#endif /* ISMRMRD_XSD_EXPORT_H_ */
diff --git a/xml/ismrmrd_meta.h b/xml/ismrmrd_meta.h
index 477c2aa..1bb87fd 100644
--- a/xml/ismrmrd_meta.h
+++ b/xml/ismrmrd_meta.h
@@ -1,7 +1,7 @@
 #ifndef ISMRMRDMETA_H
 #define ISMRMRDMETA_H
 
-#include "ismrmrd_xml_export.h"
+#include "ismrmrd_export.h"
 
 #include <string>
 #include <sstream>
@@ -243,8 +243,8 @@ namespace ISMRMRD
   template void MetaContainer::append<double>(const char* name, double);
   */
 
-  EXPORTISMRMRDXML void deserialize(const char* xml, MetaContainer& h);
-  EXPORTISMRMRDXML void serialize(MetaContainer& h, std::ostream& o);
+  EXPORTISMRMRD void deserialize(const char* xml, MetaContainer& h);
+  EXPORTISMRMRD void serialize(MetaContainer& h, std::ostream& o);
 
 }
 
diff --git a/xml/ismrmrd_xml.h b/xml/ismrmrd_xml.h
index 1650c7b..b3786f4 100644
--- a/xml/ismrmrd_xml.h
+++ b/xml/ismrmrd_xml.h
@@ -1,7 +1,7 @@
 #ifndef ISMRMRDXML_H
 #define ISMRMRDXML_H
 
-#include "ismrmrd_xml_export.h"
+#include "ismrmrd_export.h"
 
 
 #include <cstddef>
@@ -286,8 +286,8 @@ namespace ISMRMRD
 
 
 
-  EXPORTISMRMRDXML void deserialize(const char* xml, IsmrmrdHeader& h);
-  EXPORTISMRMRDXML void serialize(const IsmrmrdHeader& h, std::ostream& o);
+  EXPORTISMRMRD void deserialize(const char* xml, IsmrmrdHeader& h);
+  EXPORTISMRMRD void serialize(const IsmrmrdHeader& h, std::ostream& o);
 }
 
 #endif //ISMRMRDXML_H
diff --git a/xml/ismrmrd_xml_export.h b/xml/ismrmrd_xml_export.h
deleted file mode 100644
index 2ee3e08..0000000
--- a/xml/ismrmrd_xml_export.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef ISMRMRD_XML_EXPORT_H_
-#define ISMRMRD_XML_EXPORT_H_
-
-#if defined (WIN32)
-#if defined (ismrmrd_xml_EXPORTS)
-#define EXPORTISMRMRDXML __declspec(dllexport)
-#else
-#define EXPORTISMRMRDXML __declspec(dllimport)
-#endif
-#else
-#define EXPORTISMRMRDXML
-#endif
-
-#endif /* ISMRMRD_XML_EXPORT_H_ */

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