diff options
Diffstat (limited to 'staging_vespalib')
17 files changed, 151 insertions, 219 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt index f3afda94fe6..5e21426cacd 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt +++ b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt @@ -9,7 +9,6 @@ vespa_add_library(staging_vespalib_vespalib_objects OBJECT visit.cpp objectpredicate.cpp objectoperation.cpp - fieldbase.cpp nboserializer.cpp serializer.cpp deserializer.cpp diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp index 698900a8e80..1ec2e5d0bfd 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp @@ -1,45 +1,45 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/objects/asciiserializer.h> +#include "asciiserializer.h" #include <vespa/vespalib/stllike/asciistream.h> namespace vespalib { -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, bool value) { +AsciiSerializer &AsciiSerializer::put(bool value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint8_t value) { +AsciiSerializer &AsciiSerializer::put(uint8_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint16_t value) { +AsciiSerializer &AsciiSerializer::put(uint16_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint32_t value) { +AsciiSerializer &AsciiSerializer::put(uint32_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint64_t value) { +AsciiSerializer &AsciiSerializer::put(uint64_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, float value) { +AsciiSerializer &AsciiSerializer::put(float value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, double value) { +AsciiSerializer &AsciiSerializer::put(double value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, stringref value) { +AsciiSerializer &AsciiSerializer::put(stringref value) { _stream << value; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h index 0066c96934e..ee601fb5a9d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h @@ -11,14 +11,14 @@ class asciistream; class AsciiSerializer : public Serializer { public: AsciiSerializer(asciistream &stream) : _stream(stream) { } - AsciiSerializer &put(const IFieldBase &field, bool value) override; - AsciiSerializer &put(const IFieldBase &field, uint8_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint16_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint32_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint64_t value) override; - AsciiSerializer &put(const IFieldBase &field, float value) override; - AsciiSerializer &put(const IFieldBase &field, double value) override; - AsciiSerializer &put(const IFieldBase &field, stringref val) override; + AsciiSerializer &put(bool value) override; + AsciiSerializer &put(uint8_t value) override; + AsciiSerializer &put(uint16_t value) override; + AsciiSerializer &put(uint32_t value) override; + AsciiSerializer &put(uint64_t value) override; + AsciiSerializer &put(float value) override; + AsciiSerializer &put(double value) override; + AsciiSerializer &put(stringref val) override; const asciistream &getStream() const { return _stream; } asciistream &getStream() { return _stream; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp index afa04346bc1..9446f198c87 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp @@ -4,43 +4,42 @@ namespace vespalib { -Deserializer & Deserializer::get(const IFieldBase & field, Identifiable & value) +Deserializer & Deserializer::get(Identifiable & value) { - (void) field; return value.deserializeDirect(*this); } -Deserializer & Deserializer::get(const IFieldBase & field, int8_t & value) +Deserializer & Deserializer::get(int8_t & value) { uint8_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int16_t & value) +Deserializer & Deserializer::get(int16_t & value) { uint16_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int32_t & value) +Deserializer & Deserializer::get(int32_t & value) { uint32_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int64_t & value) +Deserializer & Deserializer::get(int64_t & value) { uint64_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, std::string & value) +Deserializer & Deserializer::get(std::string & value) { string v; - get(field, v); + get(v); value = v; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h index f381fa5ffc6..9ebedac69d5 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h @@ -1,8 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "fieldbase.h" #include <vespa/vespalib/util/array.h> +#include <vespa/vespalib/stllike/string.h> #include <vector> #include <cstdint> @@ -10,51 +10,39 @@ namespace vespalib { class Identifiable; -class Deserializer : virtual SerializerCommon +class Deserializer { public: - virtual ~Deserializer() { } - virtual Deserializer & get(const IFieldBase & field, bool & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint8_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint16_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint32_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint64_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, double & value) = 0; - virtual Deserializer & get(const IFieldBase & field, float & value) = 0; - virtual Deserializer & get(const IFieldBase & field, string & value) = 0; - - virtual Deserializer & get(const IFieldBase & field, Identifiable & value); - virtual Deserializer & get(const IFieldBase & field, int8_t & value); - virtual Deserializer & get(const IFieldBase & field, int16_t & value); - virtual Deserializer & get(const IFieldBase & field, int32_t & value); - virtual Deserializer & get(const IFieldBase & field, int64_t & value); - - uint8_t getBool(const IFieldBase & field) { bool v; get(field, v); return v; } - uint8_t getUInt8(const IFieldBase & field) { uint8_t v; get(field, v); return v; } - int8_t getInt8(const IFieldBase & field) { int8_t v; get(field, v); return v; } - uint16_t getUInt16(const IFieldBase & field) { uint16_t v; get(field, v); return v; } - int16_t getInt16(const IFieldBase & field) { int16_t v; get(field, v); return v; } - uint32_t getUInt32(const IFieldBase & field) { uint32_t v; get(field, v); return v; } - int32_t getInt32(const IFieldBase & field) { int32_t v; get(field, v); return v; } - uint64_t getUInt64(const IFieldBase & field) { uint64_t v; get(field, v); return v; } - int64_t getInt64(const IFieldBase & field) { int64_t v; get(field, v); return v; } - float getFloat(const IFieldBase & field) { float v; get(field, v); return v; } - double getDouble(const IFieldBase & field) { double v; get(field, v); return v; } - string getString(const IFieldBase & field) { string v; get(field, v); return v; } - - Deserializer & get(const IFieldBase & field, std::string & value); - Deserializer & operator >> (bool & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint8_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int8_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint16_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int16_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint32_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int32_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint64_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int64_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (float & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (double & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (string & value) { return get(_unspecifiedField, value); } + virtual ~Deserializer() = default; + virtual Deserializer & get(bool & value) = 0; + virtual Deserializer & get(uint8_t & value) = 0; + virtual Deserializer & get(uint16_t & value) = 0; + virtual Deserializer & get(uint32_t & value) = 0; + virtual Deserializer & get(uint64_t & value) = 0; + virtual Deserializer & get(double & value) = 0; + virtual Deserializer & get(float & value) = 0; + virtual Deserializer & get(string & value) = 0; + + virtual Deserializer & get(Identifiable & value); + virtual Deserializer & get(int8_t & value); + virtual Deserializer & get(int16_t & value); + virtual Deserializer & get(int32_t & value); + virtual Deserializer & get(int64_t & value); + + + Deserializer & get(std::string & value); + Deserializer & operator >> (bool & value) { return get(value); } + Deserializer & operator >> (uint8_t & value) { return get(value); } + Deserializer & operator >> (int8_t & value) { return get(value); } + Deserializer & operator >> (uint16_t & value) { return get(value); } + Deserializer & operator >> (int16_t & value) { return get(value); } + Deserializer & operator >> (uint32_t & value) { return get(value); } + Deserializer & operator >> (int32_t & value) { return get(value); } + Deserializer & operator >> (uint64_t & value) { return get(value); } + Deserializer & operator >> (int64_t & value) { return get(value); } + Deserializer & operator >> (float & value) { return get(value); } + Deserializer & operator >> (double & value) { return get(value); } + Deserializer & operator >> (string & value) { return get(value); } template <typename T> Deserializer & operator >> (vespalib::Array<T> & v); template <typename T> diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp index f59bff929a9..e324a083597 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp @@ -9,7 +9,7 @@ template <typename T> Deserializer & Deserializer::operator >> (vespalib::Array<T> & v) { uint32_t sz; - get(_sizeField, sz); + get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { (*this) >> v[i]; @@ -21,7 +21,7 @@ template <typename T> Deserializer & Deserializer::operator >> (std::vector<T> & v) { uint32_t sz; - get(_sizeField, sz); + get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { (*this) >> v[i]; diff --git a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp b/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp deleted file mode 100644 index a794da8c554..00000000000 --- a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "fieldbase.h" - -namespace vespalib { - -FieldBase SerializerCommon::_unspecifiedField("unspecified"); -FieldBase SerializerCommon::_sizeField("size"); - -} diff --git a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h b/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h deleted file mode 100644 index 2de113f8383..00000000000 --- a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#pragma once - -#include <vespa/vespalib/stllike/string.h> - -namespace vespalib { - -class IFieldBase -{ -public: - virtual ~IFieldBase() = default; - // Overrides must guarantee that returned reference is zero-terminated. - virtual stringref getName() const = 0; -}; - -class FieldBase : public IFieldBase -{ -public: - FieldBase(stringref name) : _name(name) { } - stringref getName() const final override { return _name; } -private: - string _name; -}; - -class SerializerCommon -{ -protected: - static FieldBase _unspecifiedField; - static FieldBase _sizeField; -}; - -} - diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp index 2465d5f9d9b..8040b398c31 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp @@ -94,10 +94,6 @@ Register * _register = nullptr; } Identifiable::ILoader * Identifiable::_classLoader = nullptr; -FieldBase Identifiable::hasObjectField("hasObject"); -FieldBase Identifiable::sizeField("size"); -FieldBase Identifiable::classIdField("classId"); -FieldBase Identifiable::objectField("object"); IMPLEMENT_IDENTIFIABLE(Identifiable, Identifiable); @@ -155,7 +151,7 @@ bool Identifiable::RuntimeClass::inherits(unsigned cid) const Serializer & operator << (Serializer & os, const Identifiable & obj) { - os.put(Identifiable::classIdField, obj.getClass().id()); + os.put(obj.getClass().id()); obj.serialize(os); return os; } @@ -177,7 +173,7 @@ nbostream & operator >> (nbostream & is, Identifiable & obj) Deserializer & operator >> (Deserializer & os, Identifiable & obj) { uint32_t cid(0); - os.get(Identifiable::classIdField, cid); + os.get(cid); if (cid == obj.getClass().id()) { obj.deserialize(os); } else { @@ -193,7 +189,7 @@ Deserializer & operator >> (Deserializer & os, Identifiable & obj) Identifiable::UP Identifiable::create(Deserializer & is) { uint32_t cid(0); - is.get(classIdField, cid); + is.get(cid); UP obj; const Identifiable::RuntimeClass *rtc = Identifiable::classFromId(cid); if (rtc == nullptr) { @@ -277,12 +273,12 @@ Identifiable::selectMembers(const ObjectPredicate &predicate, ObjectOperation &o Serializer & Identifiable::serialize(Serializer & os) const { - return os.put(objectField, *this); + return os.put(*this); } Deserializer & Identifiable::deserialize(Deserializer & is) { - return is.get(objectField, *this); + return is.get(*this); } Serializer & Identifiable::onSerialize(Serializer & os) const diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h index e452c35cabe..cf8415c9513 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h @@ -158,10 +158,6 @@ class Identifiable { }; public: typedef std::unique_ptr<Identifiable> UP; - static FieldBase hasObjectField; - static FieldBase sizeField; - static FieldBase classIdField; - static FieldBase objectField; class ILoader { public: @@ -171,7 +167,7 @@ public: virtual void loadClass(unsigned classId) = 0; virtual void loadClass(const char * className) = 0; }; - struct RuntimeClass final : public IFieldBase { + struct RuntimeClass { public: RuntimeClass(RuntimeInfo * info); ~RuntimeClass(); @@ -186,7 +182,6 @@ public: bool equal(unsigned cid) const { return id() == cid; } int compare(const RuntimeClass& other) const { return (id() - other.id()); } private: - stringref getName() const override { return stringref(_rt->_name); } RuntimeInfo * _rt; }; DECLARE_IDENTIFIABLE_ROOT(Identifiable); diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp index b1c4a128feb..97e1c7be564 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp @@ -23,7 +23,7 @@ namespace vespalib { template <typename T> Serializer & Identifiable::serialize(const T & v, Serializer & os) { uint32_t sz(v.size()); - os.put(sizeField, sz); + os.put(sz); for(size_t i(0); i < sz; i++) { v[i].serialize(os); } @@ -33,7 +33,7 @@ Serializer & Identifiable::serialize(const T & v, Serializer & os) { template <typename T> Deserializer & Identifiable::deserialize(T & v, Deserializer & is) { uint32_t sz(0); - is.get(sizeField, sz); + is.get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { v[i].deserialize(is); @@ -50,7 +50,7 @@ public: IdentifiablePtr & operator = (IdentifiablePtr &&) noexcept = default; IdentifiablePtr(const IdentifiablePtr &) = default; IdentifiablePtr & operator = (const IdentifiablePtr &) = default; - IdentifiablePtr(T * p=NULL) noexcept : CloneablePtr<T>(p) { } + IdentifiablePtr(T * p=nullptr) noexcept : CloneablePtr<T>(p) { } IdentifiablePtr(std::unique_ptr<T> &&rhs) noexcept : CloneablePtr<T>(std::move(rhs)) { @@ -74,15 +74,15 @@ public: bool operator != (const IdentifiablePtr<T> &rhs) const { return (cmp(rhs) != 0); } Serializer & serialize(Serializer & os) const { if (this->get()) { - os.put(Identifiable::hasObjectField, uint8_t(1)) << *this->get(); + os.put(uint8_t(1)) << *this->get(); } else { - os.put(Identifiable::hasObjectField, uint8_t(0)); + os.put(uint8_t(0)); } return os; } Deserializer & deserialize(Deserializer & is) { uint8_t hasObject; - is.get(Identifiable::hasObjectField, hasObject); + is.get(hasObject); if (hasObject) { this->reset(static_cast<T *>(Identifiable::create(is).release())); } @@ -97,7 +97,7 @@ class IdentifiableSharedPtr : public std::shared_ptr<T> { public: IdentifiableSharedPtr(const T &t) : std::shared_ptr<T>(t.clone()) {} - IdentifiableSharedPtr(T * p=NULL) : std::shared_ptr<T>(p) { } + IdentifiableSharedPtr(T * p=nullptr) : std::shared_ptr<T>(p) { } int cmp(const IdentifiableSharedPtr<T> &rhs) const { const T *a = this->get(); const T *b = rhs.get(); @@ -111,15 +111,15 @@ public: } Serializer & serialize(Serializer & os) const { if (this->get()) { - os.put(Identifiable::hasObjectField, uint8_t(1)) << *this->get(); + os.put(uint8_t(1)) << *this->get(); } else { - os.put(Identifiable::hasObjectField, uint8_t(0)); + os.put(uint8_t(0)); } return os; } Deserializer & deserialize(Deserializer & is) { uint8_t hasObject; - is.get(Identifiable::hasObjectField, hasObject); + is.get(hasObject); if (hasObject) { reset(static_cast<T *>(Identifiable::create(is).release())); } diff --git a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp index e2506a5993a..590e9cbfce0 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp @@ -5,16 +5,15 @@ namespace vespalib { IMPLEMENT_IDENTIFIABLE_NS(vespalib, NamedObject, Identifiable); -static FieldBase _G_nameField("name"); Serializer & NamedObject::onSerialize(Serializer & os) const { - return os.put(_G_nameField, _name); + return os.put(_name); } Deserializer & NamedObject::onDeserialize(Deserializer & is) { - return is.get(_G_nameField, _name); + return is.get(_name); } } diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp index e56ca6ca026..2d065038d1d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp @@ -8,83 +8,83 @@ const char * NBOSerializer::peek() const { return _stream.peek(); } -NBOSerializer &NBOSerializer::put(const IFieldBase &, bool value) { +NBOSerializer &NBOSerializer::put(bool value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint8_t value) { +NBOSerializer &NBOSerializer::put(uint8_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint16_t value) { +NBOSerializer &NBOSerializer::put(uint16_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint32_t value) { +NBOSerializer &NBOSerializer::put(uint32_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint64_t value) { +NBOSerializer &NBOSerializer::put(uint64_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, float value) { +NBOSerializer &NBOSerializer::put(float value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, double value) { +NBOSerializer &NBOSerializer::put(double value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, stringref value) { +NBOSerializer &NBOSerializer::put(stringref value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, bool & value) { +NBOSerializer &NBOSerializer::get(bool & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint8_t & value) { +NBOSerializer &NBOSerializer::get(uint8_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint16_t & value) { +NBOSerializer &NBOSerializer::get(uint16_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint32_t & value) { +NBOSerializer &NBOSerializer::get(uint32_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint64_t & value) { +NBOSerializer &NBOSerializer::get(uint64_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, double & value) { +NBOSerializer &NBOSerializer::get(double & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, float & value) { +NBOSerializer &NBOSerializer::get(float & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, string & value) { +NBOSerializer &NBOSerializer::get(string & value) { _stream >> value; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h index ee75710dbfb..a6c19c3e02d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h @@ -11,23 +11,23 @@ class nbostream; class NBOSerializer : public Serializer, public Deserializer { public: NBOSerializer(nbostream &stream) : _stream(stream) { } - NBOSerializer &put(const IFieldBase &field, bool value) override; - NBOSerializer &put(const IFieldBase &field, uint8_t value) override; - NBOSerializer &put(const IFieldBase &field, uint16_t value) override; - NBOSerializer &put(const IFieldBase &field, uint32_t value) override; - NBOSerializer &put(const IFieldBase &field, uint64_t value) override; - NBOSerializer &put(const IFieldBase &field, float value) override; - NBOSerializer &put(const IFieldBase &field, double value) override; - NBOSerializer &put(const IFieldBase &field, stringref val) override; - - NBOSerializer &get(const IFieldBase &field, bool &value) override; - NBOSerializer &get(const IFieldBase &field, uint8_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint16_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint32_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint64_t &value) override; - NBOSerializer &get(const IFieldBase &field, double &value) override; - NBOSerializer &get(const IFieldBase &field, float &value) override; - NBOSerializer &get(const IFieldBase &field, string &value) override; + NBOSerializer &put(bool value) override; + NBOSerializer &put(uint8_t value) override; + NBOSerializer &put(uint16_t value) override; + NBOSerializer &put(uint32_t value) override; + NBOSerializer &put(uint64_t value) override; + NBOSerializer &put(float value) override; + NBOSerializer &put(double value) override; + NBOSerializer &put(stringref val) override; + + NBOSerializer &get(bool &value) override; + NBOSerializer &get(uint8_t &value) override; + NBOSerializer &get(uint16_t &value) override; + NBOSerializer &get(uint32_t &value) override; + NBOSerializer &get(uint64_t &value) override; + NBOSerializer &get(double &value) override; + NBOSerializer &get(float &value) override; + NBOSerializer &get(string &value) override; const char *peek() const; diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp index 746ecd4557d..13543ba60ad 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp @@ -4,15 +4,14 @@ namespace vespalib { -Serializer & Serializer::put(const IFieldBase & field, const Identifiable & value) +Serializer & Serializer::put(const Identifiable & value) { - (void) field; return value.serializeDirect(*this); } -Serializer & Serializer::put(const IFieldBase & field, int8_t value) { return put(field, static_cast< uint8_t>(value)); } -Serializer & Serializer::put(const IFieldBase & field, int16_t value) { return put(field, static_cast<uint16_t>(value)); } -Serializer & Serializer::put(const IFieldBase & field, int32_t value) { return put(field, static_cast<uint32_t>(value)); } -Serializer & Serializer::put(const IFieldBase & field, int64_t value) { return put(field, static_cast<uint64_t>(value)); } +Serializer & Serializer::put(int8_t value) { return put(static_cast< uint8_t>(value)); } +Serializer & Serializer::put(int16_t value) { return put(static_cast<uint16_t>(value)); } +Serializer & Serializer::put(int32_t value) { return put(static_cast<uint32_t>(value)); } +Serializer & Serializer::put(int64_t value) { return put(static_cast<uint64_t>(value)); } } diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.h b/staging_vespalib/src/vespa/vespalib/objects/serializer.h index 0458903e830..6cbedbdcd86 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.h @@ -1,8 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "fieldbase.h" #include <vespa/vespalib/util/array.h> +#include <vespa/vespalib/stllike/string.h> #include <vector> #include <cstdint> @@ -10,37 +10,37 @@ namespace vespalib { class Identifiable; -class Serializer : virtual SerializerCommon +class Serializer { public: - virtual ~Serializer() { } - virtual Serializer & put(const IFieldBase & field, bool value) = 0; - virtual Serializer & put(const IFieldBase & field, uint8_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint16_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint32_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint64_t value) = 0; - virtual Serializer & put(const IFieldBase & field, float value) = 0; - virtual Serializer & put(const IFieldBase & field, double value) = 0; - virtual Serializer & put(const IFieldBase & field, stringref value) = 0; - - virtual Serializer & put(const IFieldBase & field, const Identifiable & value); - virtual Serializer & put(const IFieldBase & field, int8_t value); - virtual Serializer & put(const IFieldBase & field, int16_t value); - virtual Serializer & put(const IFieldBase & field, int32_t value); - virtual Serializer & put(const IFieldBase & field, int64_t value); - - Serializer & operator << (bool value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint8_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int8_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint16_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int16_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint32_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int32_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint64_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int64_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (float value) { return put(_unspecifiedField, value); } - Serializer & operator << (double value) { return put(_unspecifiedField, value); } - Serializer & operator << (stringref value) { return put(_unspecifiedField, value); } + virtual ~Serializer() = default; + virtual Serializer & put(bool value) = 0; + virtual Serializer & put(uint8_t value) = 0; + virtual Serializer & put(uint16_t value) = 0; + virtual Serializer & put(uint32_t value) = 0; + virtual Serializer & put(uint64_t value) = 0; + virtual Serializer & put(float value) = 0; + virtual Serializer & put(double value) = 0; + virtual Serializer & put(stringref value) = 0; + + virtual Serializer & put(const Identifiable & value); + virtual Serializer & put(int8_t value); + virtual Serializer & put(int16_t value); + virtual Serializer & put(int32_t value); + virtual Serializer & put(int64_t value); + + Serializer & operator << (bool value) { return put(value); } + Serializer & operator << (uint8_t value) { return put(value); } + Serializer & operator << (int8_t value) { return put(value); } + Serializer & operator << (uint16_t value) { return put(value); } + Serializer & operator << (int16_t value) { return put(value); } + Serializer & operator << (uint32_t value) { return put(value); } + Serializer & operator << (int32_t value) { return put(value); } + Serializer & operator << (uint64_t value) { return put(value); } + Serializer & operator << (int64_t value) { return put(value); } + Serializer & operator << (float value) { return put(value); } + Serializer & operator << (double value) { return put(value); } + Serializer & operator << (stringref value) { return put(value); } template <typename T> Serializer & operator << (const vespalib::Array<T> & v); template <typename T> diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp index e428be5a348..cc49f758ae6 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp @@ -1,10 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/vespalib/objects/fieldbase.h> #include <vespa/vespalib/util/array.h> #include <vector> -#include <stdint.h> +#include <cstdint> namespace vespalib { @@ -12,7 +11,7 @@ template <typename T> Serializer & Serializer::operator << (const vespalib::Array<T> & v) { uint32_t sz(v.size()); - put(_sizeField, sz); + put(sz); for(size_t i(0); i < sz; i++) { (*this) << v[i]; } @@ -22,7 +21,7 @@ template <typename T> Serializer & Serializer::operator << (const std::vector<T> & v) { uint32_t sz(v.size()); - put(_sizeField, sz); + put(sz); for(size_t i(0); i < sz; i++) { (*this) << v[i]; } |