#pragma once

#include "data/config/AbstractConfig.h"

namespace inertia
{

struct INERTIA_API GenericConfig
	: AbstractConfig
{
public:
	uint8_t configRevision;

	static unsigned GetLength(uint8_t const* in);
	static unsigned GetHeaderSize();

protected:
	GenericConfig();
	GenericConfig(uint8_t const* in);
	GenericConfig(std::wstring const& argString);

#ifdef WITH_BOOST_PROGRAM_OPTIONS
	static const po::options_description GetOptionDescription();
#endif

	void GetBytes(std::vector<uint8_t>& out) const override;
	const std::wstring ToString() const override;
};

}
