1
0
mirror of https://github.com/apple/foundationdb.git synced 2025-05-22 14:55:03 +08:00

Simplify _Reader constructors

This commit is contained in:
sfc-gh-tclinkenbeard 2020-07-07 16:35:46 -07:00
parent 080a67d76f
commit d3d7ad6de5

@ -568,8 +568,12 @@ public:
check = nullptr; check = nullptr;
} }
_Reader(const char* begin, const char* end) : begin(begin), end(end) {}
_Reader(const char* begin, const char* end, const Arena& arena) : begin(begin), end(end), m_pool(arena) {}
protected: protected:
const char *begin, *end, *check; const char *begin, *end;
const char* check = nullptr;
Arena m_pool; Arena m_pool;
ProtocolVersion m_protocolVersion; ProtocolVersion m_protocolVersion;
}; };
@ -593,11 +597,8 @@ public:
} }
template <class VersionOptions> template <class VersionOptions>
ArenaReader( Arena const& arena, const StringRef& input, VersionOptions vo ) { ArenaReader(Arena const& arena, const StringRef& input, VersionOptions vo)
m_pool = arena; : _Reader(reinterpret_cast<const char*>(input.begin()), reinterpret_cast<const char*>(input.end()), arena) {
check = nullptr;
begin = (const char*)input.begin();
end = begin + input.size();
vo.read(*this); vo.read(*this);
} }
}; };
@ -629,30 +630,23 @@ public:
void assertEnd() { ASSERT(begin == end); } void assertEnd() { ASSERT(begin == end); }
template <class VersionOptions> template <class VersionOptions>
BinaryReader( const void* data, int length, VersionOptions vo ) { BinaryReader(const void* data, int length, VersionOptions vo)
begin = (const char*)data; : _Reader(reinterpret_cast<const char*>(data), reinterpret_cast<const char*>(data) + length) {
end = begin + length;
check = nullptr;
vo.read(*this); vo.read(*this);
if (m_protocolVersion.hasObjectSerializerFlag()) { if (m_protocolVersion.hasObjectSerializerFlag()) {
objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion); objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion);
} }
} }
template <class VersionOptions> template <class VersionOptions>
BinaryReader( const StringRef& s, VersionOptions vo ) { BinaryReader(const StringRef& s, VersionOptions vo)
begin = (const char*)s.begin(); : _Reader(reinterpret_cast<const char*>(s.begin()), reinterpret_cast<const char*>(s.end())) {
end = begin + s.size();
check = nullptr;
vo.read(*this); vo.read(*this);
if (m_protocolVersion.hasObjectSerializerFlag()) { if (m_protocolVersion.hasObjectSerializerFlag()) {
objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion); objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion);
} }
} }
template <class VersionOptions> template <class VersionOptions>
BinaryReader( const std::string& v, VersionOptions vo ) { BinaryReader(const std::string& s, VersionOptions vo) : _Reader(s.c_str(), s.c_str() + s.size()) {
begin = v.c_str();
end = begin + v.size();
check = nullptr;
vo.read(*this); vo.read(*this);
if (m_protocolVersion.hasObjectSerializerFlag()) { if (m_protocolVersion.hasObjectSerializerFlag()) {
objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion); objectReader = std::make_unique<ObjectReader>(reinterpret_cast<const uint8_t*>(begin), m_protocolVersion);