21#include "cc_tools_qt/ToolsMsgFactory.h"
23#include "comms/util/Tuple.h"
33class TupleMsgFactoryHelper
36 using MessagesListInternal = std::vector<ToolsMessagePtr>;
37 TupleMsgFactoryHelper(MessagesListInternal& msgs) : m_msgs(msgs) {}
39 template <
typename TMsg>
45 MessagesListInternal& msgs()
51 MessagesListInternal& m_msgs;
56template <
typename TAllMessages>
57class ToolsMsgFactoryBase :
public ToolsMsgFactory
60 using AllMessages = TAllMessages;
63 virtual MessagesListInternal createAllMessagesImpl()
override
65 MessagesListInternal result;
66 static_assert(comms::util::IsTuple<TAllMessages>::Value,
"TAllMessages must be std::tuple");
67 result.reserve(std::tuple_size<TAllMessages>::value);
68 comms::util::tupleForEachType<TAllMessages>(details::TupleMsgFactoryHelper(result));