20#include "cc_tools_qt/ToolsMsgFactory.h"
22#include "comms/util/Tuple.h"
32class TupleMsgFactoryHelper
35 using MessagesListInternal = std::vector<ToolsMessagePtr>;
36 TupleMsgFactoryHelper(MessagesListInternal& msgs) : m_msgs(msgs) {}
38 template <
typename TMsg>
44 MessagesListInternal& msgs()
50 MessagesListInternal& m_msgs;
55template <
typename TAllMessages>
56class ToolsMsgFactoryBase :
public ToolsMsgFactory
59 using AllMessages = TAllMessages;
62 virtual MessagesListInternal createAllMessagesImpl()
override
64 MessagesListInternal result;
65 static_assert(comms::util::IsTuple<TAllMessages>::Value,
"TAllMessages must be std::tuple");
66 result.reserve(std::tuple_size<TAllMessages>::value);
67 comms::util::tupleForEachType<TAllMessages>(details::TupleMsgFactoryHelper(result));