1 #ifndef __CIFTI_FILE_H__ 2 #define __CIFTI_FILE_H__ 31 #include "Common/AString.h" 32 #include "Common/CiftiException.h" 33 #include "Common/MultiDimIterator.h" 34 #include "Cifti/CiftiXML.h" 36 #include "boost/shared_ptr.hpp" 59 explicit CiftiFile(
const AString &fileName);
62 void openFile(
const AString& fileName);
73 const CiftiXML& getCiftiXML()
const {
return m_xml; }
74 bool isInMemory()
const;
77 void getRow(
float* dataOut,
const std::vector<int64_t>& indexSelect,
const bool& tolerateShortRead =
false)
const;
78 const std::vector<int64_t>& getDimensions()
const {
return m_dims; }
87 void getColumn(
float* dataOut,
const int64_t& index)
const;
89 void setCiftiXML(
const CiftiXML& xml,
const bool useOldMetadata =
true);
90 void setRow(
const float* dataIn,
const std::vector<int64_t>& indexSelect);
93 void setColumn(
const float* dataIn,
const int64_t& index);
96 void getRow(
float* dataOut,
const int64_t& index,
const bool& tolerateShortRead =
false)
const;
99 void setRow(
const float* dataIn,
const int64_t& index);
105 virtual void getRow(
float* dataOut,
const std::vector<int64_t>& indexSelect,
const bool& tolerateShortRead)
const = 0;
106 virtual void getColumn(
float* dataOut,
const int64_t& index)
const = 0;
107 virtual bool isInMemory()
const {
return false; }
114 virtual void setRow(
const float* dataIn,
const std::vector<int64_t>& indexSelect) = 0;
115 virtual void setColumn(
const float* dataIn,
const int64_t& index) = 0;
119 std::vector<int64_t> m_dims;
120 boost::shared_ptr<WriteImplInterface> m_writingImpl;
121 boost::shared_ptr<ReadImplInterface> m_readingImpl;
122 AString m_writingFile;
127 void verifyWriteImpl();
133 #endif //__CIFTI_FILE_H__ void openFile(const AString &fileName)
starts on-disk reading
Definition: CiftiFile.cxx:144
MultiDimIterator< int64_t > getIteratorOverRows() const
convenience function for iterating over arbitrary numbers of dimensions
Definition: CiftiFile.h:81
namespace for all CiftiLib functionality
Definition: CiftiBrainModelsMap.h:41
Definition: CiftiFile.h:111
class for retrieving and setting mapping information of cifti files
Definition: CiftiXML.h:48
void writeFile(const AString &fileName, const CiftiVersion &writingVersion=CiftiVersion(), const ENDIAN &endian=ANY)
does nothing if filename, version, and effective endianness match file currently open, otherwise writes complete file
Definition: CiftiFile.cxx:164
void convertToInMemory()
reads file into memory, closes file
Definition: CiftiFile.cxx:193
void setWritingFile(const AString &fileName, const CiftiVersion &writingVersion=CiftiVersion(), const ENDIAN &endian=NATIVE)
starts on-disk writing
Definition: CiftiFile.cxx:156
void getRow(float *dataOut, const std::vector< int64_t > &indexSelect, const bool &tolerateShortRead=false) const
the tolerateShortRead parameter is useful for on-disk writing when it is easiest to do RMW multiple t...
class for reading and writing cifti files
Definition: CiftiFile.h:44
Definition: CiftiVersion.h:37
void getColumn(float *dataOut, const int64_t &index) const
for 2D only, will be slow if on disk!
Definition: CiftiFile.cxx:224
Definition: CiftiFile.h:102
void setColumn(const float *dataIn, const int64_t &index)
for 2D only, will be slow if on disk!
Definition: CiftiFile.cxx:258
Definition: MultiDimIterator.h:38