diff options
Diffstat (limited to 'staging_vespalib/src/vespa/vespalib/objects/deserializer.h')
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/objects/deserializer.h | 76 |
1 files changed, 32 insertions, 44 deletions
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> |