21#include "cc_tools_qt/details/ToolsFieldBase.h"
22#include "cc_tools_qt/field/ToolsBitfieldField.h"
29#include "comms/field/Bitfield.h"
37template <
typename TField>
38class ToolsBitfieldFieldImpl :
public ToolsFieldBase<cc_tools_qt::field::ToolsBitfieldField, TField>
40 using Base = ToolsFieldBase<cc_tools_qt::field::ToolsBitfieldField, TField>;
43 static_assert(comms::field::isBitfield<Field>(),
"Must be of Bitfield field type");
46 using Ptr =
typename Base::Ptr;
47 using ActPtr =
typename Base::ActPtr;
49 explicit ToolsBitfieldFieldImpl(Field& fieldRef)
54 ToolsBitfieldFieldImpl(
const ToolsBitfieldFieldImpl&) =
default;
55 ToolsBitfieldFieldImpl(ToolsBitfieldFieldImpl&&) =
default;
56 virtual ~ToolsBitfieldFieldImpl() noexcept = default;
58 ToolsBitfieldFieldImpl& operator=(const ToolsBitfieldFieldImpl&) = delete;
61 virtual Ptr cloneImpl()
override
63 return ActPtr(
new ToolsBitfieldFieldImpl<TField>(Base::field()));
66 virtual void membersUpdatedImpl()
override
68 auto& mems = Base::getMembers();
69 for (
auto& m : mems) {
71 m->forceHiddenSerialization();
77template <
typename TField>
78auto makeBitfieldField(TField& field)
80 return std::make_unique<ToolsBitfieldFieldImpl<TField>>(field);