/*
* Copyright (C) 2020 Embedded AMS B.V. - All Rights Reserved
*
* This file is part of Embedded Proto.
*
* Embedded Proto is open source software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, version 3 of the license.
*
* Embedded Proto is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Embedded Proto. If not, see .
*
* For commercial and closed source application please visit:
* .
*
* Embedded AMS B.V.
* Info:
* info at EmbeddedProto dot com
*
* Postal address:
* Johan Huizingalaan 763a
* 1066 VH, Amsterdam
* the Netherlands
*/
// This file is generated. Please do not edit!
#ifndef _AMESSAGE_H_
#define _AMESSAGE_H_
#include
#include
#include
#include
#include
#include
#include
#include
#include
// Include external proto definitions
class AMessage final: public ::EmbeddedProto::MessageInterface
{
public:
AMessage() :
a_(0),
b_(0)
{
};
~AMessage() override = default;
enum class id
{
NOT_SET = 0,
A = 1,
B = 2
};
AMessage& operator=(const AMessage& rhs)
{
set_a(rhs.get_a());
set_b(rhs.get_b());
return *this;
}
inline void clear_a() { a_.clear(); }
inline void set_a(const EmbeddedProto::int32& value) { a_ = value; }
inline void set_a(const EmbeddedProto::int32&& value) { a_ = value; }
inline EmbeddedProto::int32& mutable_a() { return a_; }
inline const EmbeddedProto::int32& get_a() const { return a_; }
inline EmbeddedProto::int32::FIELD_TYPE a() const { return a_.get(); }
inline void clear_b() { b_.clear(); }
inline void set_b(const EmbeddedProto::int32& value) { b_ = value; }
inline void set_b(const EmbeddedProto::int32&& value) { b_ = value; }
inline EmbeddedProto::int32& mutable_b() { return b_; }
inline const EmbeddedProto::int32& get_b() const { return b_; }
inline EmbeddedProto::int32::FIELD_TYPE b() const { return b_.get(); }
::EmbeddedProto::Error serialize(::EmbeddedProto::WriteBufferInterface& buffer) const final
{
::EmbeddedProto::Error return_value = ::EmbeddedProto::Error::NO_ERRORS;
if((0 != a_.get()) && (::EmbeddedProto::Error::NO_ERRORS == return_value))
{
return_value = a_.serialize_with_id(static_cast(id::A), buffer);
}
if((0 != b_.get()) && (::EmbeddedProto::Error::NO_ERRORS == return_value))
{
return_value = b_.serialize_with_id(static_cast(id::B), buffer);
}
return return_value;
};
::EmbeddedProto::Error deserialize(::EmbeddedProto::ReadBufferInterface& buffer) final
{
::EmbeddedProto::Error return_value = ::EmbeddedProto::Error::NO_ERRORS;
::EmbeddedProto::WireFormatter::WireType wire_type;
uint32_t id_number = 0;
::EmbeddedProto::Error tag_value = ::EmbeddedProto::WireFormatter::DeserializeTag(buffer, wire_type, id_number);
while((::EmbeddedProto::Error::NO_ERRORS == return_value) && (::EmbeddedProto::Error::NO_ERRORS == tag_value))
{
switch(id_number)
{
case static_cast(id::A):
{
if(::EmbeddedProto::WireFormatter::WireType::VARINT == wire_type)
{
return_value = a_.deserialize(buffer);
}
else
{
// Wire type does not match field.
return_value = ::EmbeddedProto::Error::INVALID_WIRETYPE;
}
break;
}
case static_cast(id::B):
{
if(::EmbeddedProto::WireFormatter::WireType::VARINT == wire_type)
{
return_value = b_.deserialize(buffer);
}
else
{
// Wire type does not match field.
return_value = ::EmbeddedProto::Error::INVALID_WIRETYPE;
}
break;
}
default:
break;
}
if(::EmbeddedProto::Error::NO_ERRORS == return_value)
{
// Read the next tag.
tag_value = ::EmbeddedProto::WireFormatter::DeserializeTag(buffer, wire_type, id_number);
}
}
// When an error was detect while reading the tag but no other errors where found, set it in the return value.
if((::EmbeddedProto::Error::NO_ERRORS == return_value)
&& (::EmbeddedProto::Error::NO_ERRORS != tag_value)
&& (::EmbeddedProto::Error::END_OF_BUFFER != tag_value)) // The end of the buffer is not an array in this case.
{
return_value = tag_value;
}
return return_value;
};
void clear() final
{
clear_a();
clear_b();
}
private:
EmbeddedProto::int32 a_;
EmbeddedProto::int32 b_;
};
#endif // _AMESSAGE_H_