Files
Simple-Protocol-Lib/include/sp/protocol/MessageFactory.h
Persson-dev 03d799e064 Add generic IO (#3)
Reviewed-on: #3
Co-authored-by: Persson-dev <sim16.prib@gmail.com>
Co-committed-by: Persson-dev <sim16.prib@gmail.com>
2025-02-26 09:29:31 +00:00

32 lines
585 B
C++

#pragma once
#include <array>
#include <functional>
#include <iostream>
#include <memory>
#include <sp/protocol/message/ArrayFillerImpl.h>
namespace sp {
template <typename TBase, typename TTMessages>
class MessageFactory {
public:
using IdType = typename TBase::MsgIdType;
MessageFactory() : m_Factory(details::ArrayFiller<TBase, TTMessages>::ArrayCreate()) {}
std::unique_ptr<TBase> CreateMessage(IdType id) const {
if (id >= m_Factory.size())
return nullptr;
return m_Factory.at(id)();
}
private:
details::ArrayType<TBase> m_Factory;
};
} // namespace sp