This program reads a Cifti file from argv[1], and writes it out to argv[2] with a second CiftiFile object. It uses on-disk reading and writing, so DO NOT have both filenames point to the same file, CiftiFile truncates without any warning when told to write to an existing file.
#include "CiftiFile.h"
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv)
{
if (argc < 3)
{
cout << "usage: " << argv[0] << " <input cifti> <output cifti> [<endian>]" << endl;
cout << " rewrite the input cifti file to the output filename." << endl;
cout << " endian can be 'LITTLE' or 'BIG', and uses native endianness if not specified" << endl;
return 1;
}
CiftiFile::ENDIAN myEndian = CiftiFile::NATIVE;
if (argc > 3)
{
if (AString(argv[3]) == "LITTLE")
{
myEndian = CiftiFile::LITTLE;
} else if (AString(argv[3]) == "BIG") {
myEndian = CiftiFile::BIG;
} else {
cerr << "unrecognized endianness string: " << argv[3] << endl;
return 1;
}
}
try
{
outputFile.setCiftiXML(inputFile.getCiftiXML());
const vector<int64_t>& dims = inputFile.getDimensions();
vector<float> scratchRow(dims[0]);
{
inputFile.getRow(scratchRow.data(), *iter);
outputFile.setRow(scratchRow.data(), *iter);
}
cerr <<
"Caught CiftiException: " + AString_to_std_string(e.
whatString()) << endl;
return 1;
}
return 0;
}
Definition CiftiException.h:40
virtual AString whatString() const
Definition CiftiException.cxx:95
class for reading and writing cifti files
Definition CiftiFile.h:46
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,...
Definition CiftiFile.cxx:189
void setWritingFile(const AString &fileName, const CiftiVersion &writingVersion=CiftiVersion(), const ENDIAN &endian=NATIVE)
starts on-disk writing
Definition CiftiFile.cxx:163
Definition CiftiVersion.h:38
Definition MultiDimIterator.h:39
namespace for all CiftiLib functionality
Definition CiftiBrainModelsMap.h:42