14#include <fmt/format.h>
23 in.read(
reinterpret_cast<char*
>(&nitems),
sizeof(
int));
24 if (in.fail() || nitems < 0) {
25 throw std::length_error(fmt::format(
"invalid input : cannot get number of {}", itemName));
32 out.write(
reinterpret_cast<const char*
>(&nofItems),
sizeof(uint32_t));
35int advance(std::istream& in,
size_t itemByteSize,
const char* itemName)
37 if (in.peek() == EOF) {
43 auto current = in.tellg();
44 in.seekg(current +
static_cast<decltype(current)
>(nitems * itemByteSize));
51 int nrofs =
advance(in, dff.rofSize,
"rofs");
53 return std::make_pair(-1, -1);
55 int ndigits =
advance(in, dff.digitSize,
"digits");
56 return std::make_pair(nrofs, ndigits);
std::pair< int, int > advanceOneEvent(std::istream &in, int fileFormatVersion)
int advance(std::istream &in, size_t itemByteSize, const char *itemName)
void writeNofItems(std::ostream &out, uint32_t nofItems)
int readNofItems(std::istream &in, const char *itemName)
std::array< DigitFileFormat, 5 > digitFileFormats