22#include "cc_tools_qt/ToolsMsgFactory.h"
24#include "comms/util/Tuple.h"
34class TupleMsgFactoryHelper
37 using MessagesListInternal = std::vector<ToolsMessagePtr>;
38 TupleMsgFactoryHelper(MessagesListInternal& msgs) : m_msgs(msgs) {}
40 template <
typename TMsg>
46 MessagesListInternal& msgs()
52 MessagesListInternal& m_msgs;
57template <
typename TAllMessages>
58class ToolsMsgFactoryBase :
public ToolsMsgFactory
61 using AllMessages = TAllMessages;
64 virtual MessagesListInternal createAllMessagesImpl()
override
66 MessagesListInternal result;
67 static_assert(comms::util::IsTuple<TAllMessages>::Value,
"TAllMessages must be std::tuple");
68 result.reserve(std::tuple_size<TAllMessages>::value);
69 comms::util::tupleForEachType<TAllMessages>(details::TupleMsgFactoryHelper(result));