14 bool check_host_little_endian_() {
28 std::numeric_limits<float>::is_iec559 && std::numeric_limits<double>::is_iec559;
35 std::size_t counter = 0;
37 auto old_position = str.tellg();
39 if(++counter > max_offset)
throw std::runtime_error(
"could not detect file line ending");
48 str.seekg(old_position);
56 std::getline(str, line,
'\r');
57 while(str.peek() !=
'\n') {
58 std::string part_line;
59 std::getline(str, part_line,
'\r');
60 line.append(1,
'\r').append(part_line);
70 const auto max_count = std::numeric_limits<std::streamsize>::max();
73 str.ignore(max_count,
'\r');
74 while(str.peek() !=
'\n') str.ignore(max_count,
'\r');
93 default:
throw std::invalid_argument(
"line delimitor not specified");
102 std::ptrdiff_t i = sz/2 - 1;
103 std::ptrdiff_t o = sz - i - 1;
104 while(i >= 0) std::swap(data[i--], data[o++]);
const bool host_is_little_endian
void end_line(std::ostream &str, line_delimitor ld)
void skip_line(std::istream &str, line_delimitor ld)
const line_delimitor default_line_delimitor
void read_line(std::istream &str, std::string &line, line_delimitor ld)
const bool host_has_iec559_float
line_delimitor detect_line_delimitor(std::istream &str, std::size_t max_offset)
Detects line delimitor used in given file.
void write_line(std::ostream &str, const std::string &line, line_delimitor ld)
void flip_endianness(byte *data, std::size_t sz)