13 #include "eckit/eckit.h"
14 #include "eckit/io/Length.h"
15 #include "eckit/io/Offset.h"
16 #include "eckit/io/PartFileHandle.h"
26 using namespace eckit;
36 auto it = reader.
begin();
37 auto end = reader.
end();
38 for (; it != end; ++it)
41 Length length = it->nextPosition() - it->startPosition();
43 r.push_back(std::make_pair(offset,length));
49 std::vector<eckit::PathName> Indexer::createIndex(
const std::vector<PathName> &dataFiles)
51 std::vector<eckit::PathName> indices;
52 for (
size_t i(0);
i < dataFiles.size(); ++
i)
54 const PathName index (dataFiles[
i] +
".idx");
56 createIndex(dataFiles[
i], index);
57 indices.push_back(index);
62 void Indexer::createIndex(
const PathName &dataFile,
const PathName& indexFile)
78 for (
size_t i(0);
i < offsets.size(); ++
i)
80 Offset blockBegin (offsets[
i].first);
81 Length blockLength (offsets[
i].second);
83 PartFileHandle h(dataFile, blockBegin, blockLength);
94 int seqno ( (*it)[0] );
95 if (seqno == prevSeqno)
101 (*writer)[0] = blockBegin;
102 (*writer)[1] = blockLength;
103 (*writer)[2] = prevSeqno;
104 (*writer)[3] = nRows;
114 (*writer)[0] = blockBegin;
115 (*writer)[1] = blockLength;
116 (*writer)[2] = prevSeqno;
117 (*writer)[3] = nRows;
eckit::Offset startPosition() const
std::vector< std::pair< eckit::Offset, eckit::Length > > BlockOffsets
subroutine write(self, filename_in)