7#include "roo_backport.h"
8#include "roo_backport/string_view.h"
19template <
typename InputIterator>
25template <
typename InputIterator>
31template <
typename InputIterator>
37template <
typename InputIterator>
44template <
typename InputIterator>
51template <
typename InputIterator>
58template <
typename InputIterator>
65template <
typename InputIterator>
71template <
typename InputIterator>
79template <
typename InputIterator>
85template <
typename InputIterator>
91template <
typename InputIterator>
100 return v | (((
v & 0x00800000) > 0) * 0xFF000000);
106template <
typename InputIterator>
112template <
typename InputIterator>
118template <
typename InputIterator>
124template <
typename InputIterator>
130template <
typename InputIterator>
136template <
typename InputIterator>
143template <
typename InputIterator>
146 "ReadBeFloat requires 32-bit float.");
147 static_assert(std::numeric_limits<float>::is_iec559,
148 "ReadBeFloat requires IEEE754 float.");
156template <
typename InputIterator>
159 "ReadLeFloat requires 32-bit float.");
160 static_assert(std::numeric_limits<float>::is_iec559,
161 "ReadLeFloat requires IEEE754 float.");
169template <
typename InputIterator>
172 "ReadBeDouble requires 64-bit double.");
173 static_assert(std::numeric_limits<double>::is_iec559,
174 "ReadBeDouble requires IEEE754 double.");
182template <
typename InputIterator>
185 "ReadLeDouble requires 64-bit double.");
186 static_assert(std::numeric_limits<double>::is_iec559,
187 "ReadLeDouble requires IEEE754 double.");
200template <
typename InputIterator>
216template <
typename InputIterator>
223 if (
in.status() !=
kOk) {
228 }
while ((read &
byte{0x80}) !=
byte{0});
233template <ByteOrder
byte_order>
239 template <
typename InputIterator>
244 template <
typename InputIterator>
249 template <
typename InputIterator>
254 template <
typename InputIterator>
259 template <
typename InputIterator>
264 template <
typename InputIterator>
269 template <
typename InputIterator>
274 template <
typename InputIterator>
288 template <
typename InputIterator>
293 template <
typename InputIterator>
298 template <
typename InputIterator>
303 template <
typename InputIterator>
308 template <
typename InputIterator>
313 template <
typename InputIterator>
318 template <
typename InputIterator>
323 template <
typename InputIterator>
336template <ByteOrder
byte_order>
342 template <
typename InputIterator>
347 template <
typename InputIterator>
356 template <
typename InputIterator>
361 template <
typename InputIterator>
368template <
typename InputIterator, ByteOrder
byte_order>
373template <
typename InputIterator, ByteOrder
byte_order>
378template <
typename InputIterator, ByteOrder
byte_order>
383template <
typename InputIterator, ByteOrder
byte_order>
389template <
typename InputIterator, ByteOrder
byte_order>
394template <
typename InputIterator, ByteOrder
byte_order>
407 template <
typename InputIterator>
431template <
typename InputIterator>
434 if (
in.status() !=
kOk)
return 0;
435 if (
len + 1 <= capacity) {
456template <
typename InputIterator>
459 if (
in.status() !=
kOk)
return "";
464 for (
size_t i = 0;
i <
len; ++
i) {
490 typename std::enable_if<
491 internal::MemoryIteratorTraits<InputIterator>::is_memory,
495 if (
in.status() !=
kOk)
return "";
496 typename InputIterator::PtrType
start =
in.ptr();
500 return roo::string_view((
const char*)
start,
in.ptr() -
start);
constexpr int32_t readS32(InputIterator &in) const
constexpr uint32_t readU32(InputIterator &in) const
constexpr int32_t readS24(InputIterator &in) const
constexpr uint64_t readU64(InputIterator &in) const
constexpr uint32_t readU24(InputIterator &in) const
constexpr int16_t readS16(InputIterator &in) const
constexpr uint16_t readU16(InputIterator &in) const
constexpr int64_t readS64(InputIterator &in) const
constexpr int64_t readS64(InputIterator &in) const
constexpr uint32_t readU24(InputIterator &in) const
constexpr uint16_t readU16(InputIterator &in) const
constexpr uint64_t readU64(InputIterator &in) const
constexpr int32_t readS32(InputIterator &in) const
constexpr uint32_t readU32(InputIterator &in) const
constexpr int16_t readS16(InputIterator &in) const
constexpr int32_t readS24(InputIterator &in) const
constexpr int32_t sign_extend_24(int32_t v)
constexpr uint32_t ReadBeU32(InputIterator &in)
size_t ReadCString(InputIterator &in, char *buf, size_t capacity=SIZE_MAX)
constexpr uint64_t ReadLeU64(InputIterator &in)
constexpr uint16_t ReadBeU16(InputIterator &in)
roo::basic_string_view< CharT, Traits > basic_string_view
constexpr uint32_t ReadLeU24(InputIterator &in)
constexpr int16_t ReadBeS16(InputIterator &in)
constexpr uint16_t ReadU16(InputIterator &in)
size_t ReadByteArray(InputIterator &in, byte *result, size_t count)
constexpr uint32_t ReadBeU24(InputIterator &in)
constexpr uint32_t ReadU32(InputIterator &in)
constexpr uint32_t ReadU24(InputIterator &in)
constexpr int64_t ReadBeS64(InputIterator &in)
constexpr int64_t ReadLeS64(InputIterator &in)
constexpr int32_t ReadBeS24(InputIterator &in)
constexpr int8_t ReadS8(InputIterator &in)
constexpr uint64_t ReadU64(InputIterator &in)
constexpr uint64_t ReadBeU64(InputIterator &in)
roo::string_view ReadStringView(InputIterator &in, size_t max_size=SIZE_MAX)
constexpr uint32_t ReadLeU32(InputIterator &in)
constexpr int32_t ReadBeS32(InputIterator &in)
constexpr int16_t ReadLeS16(InputIterator &in)
constexpr int32_t ReadLeS32(InputIterator &in)
uint64_t ReadVarU64(InputIterator &in)
constexpr int32_t ReadLeS24(InputIterator &in)
constexpr uint8_t ReadU8(InputIterator &in)
constexpr uint16_t ReadLeU16(InputIterator &in)
std::string ReadString(InputIterator &in, size_t max_size=SIZE_MAX)
T read(InputIterator &in, T default_value=T()) const