20#include "cc_tools_qt/details/ToolsFieldBase.h"
21#include "cc_tools_qt/field/ToolsBundleField.h"
23#include "comms/field/Bundle.h"
36template <
typename TField>
37class ToolsBundleFieldImpl :
public ToolsFieldBase<cc_tools_qt::field::ToolsBundleField, TField>
39 using Base = ToolsFieldBase<cc_tools_qt::field::ToolsBundleField, TField>;
42 static_assert(comms::field::isBundle<Field>(),
"Must be of Bundle field type");
45 using Ptr =
typename Base::Ptr;
46 using ActPtr =
typename Base::ActPtr;
48 explicit ToolsBundleFieldImpl(Field& fieldRef)
53 ToolsBundleFieldImpl(
const ToolsBundleFieldImpl&) =
default;
54 ToolsBundleFieldImpl(ToolsBundleFieldImpl&&) =
default;
55 virtual ~ToolsBundleFieldImpl() noexcept = default;
57 ToolsBundleFieldImpl& operator=(const ToolsBundleFieldImpl&) = delete;
60 virtual Ptr cloneImpl()
override
62 return ActPtr(
new ToolsBundleFieldImpl(Base::field()));
65 virtual bool isHiddenSerializationImpl()
const override
71template <
typename TField>
72auto makeBundleField(TField& field)
74 return std::make_unique<ToolsBundleFieldImpl<TField>>(field);