#ifndef ProtoGenWrapper_DResponseParameter_H
#define ProtoGenWrapper_DResponseParameter_H

#include <string>
#include <list>

#include "MySerializable.h"

namespace ProtoGenWrapper
{
	class DParameter;
	class DDbDiagTroubleCode;
	class DError;
	struct DResponseParameterData;
	
	class DResponseParameter : public MySerializable
	{
	public:
		DResponseParameter();
		virtual ~DResponseParameter();
		DResponseParameter(const std::string& data);
		DResponseParameter(const DResponseParameter& other);
		DResponseParameter(DResponseParameter&& other) noexcept;
		DResponseParameter& operator=(const DResponseParameter& other);
		DResponseParameter& operator=(DResponseParameter&& other) noexcept;
		
		void SetParent(const DParameter& parent);
		const DParameter& GetParent() const;
		void SetError(const DError& error);
		const DError& GetError() const;
		void SetDecimalPlaces(int decimalPlaces);
		int GetDecimalPlaces() const;
		void SetRadix(int radix);
		int GetRadix() const;
		void SetUnit(const std::string& unit);
		std::string GetUnit() const;
		void SetDbDtc(const DDbDiagTroubleCode& dbdtc);
		const DDbDiagTroubleCode& GetDbDtc() const;
		
		void Serialize(std::string* bytes) const override;
		void Deserialize(const std::string& bytes) override;

	protected:
		DResponseParameterData* _data = nullptr;
	};

	typedef std::list<DResponseParameter> DResponseParameterList;
}
#endif