22#include "cc_tools_qt/details/ToolsFieldBase.h"
23#include "cc_tools_qt/field/ToolsBitfieldField.h"
30#include "comms/field/Bitfield.h"
38template <
typename TField>
39class ToolsBitfieldFieldImpl :
public ToolsFieldBase<cc_tools_qt::field::ToolsBitfieldField, TField>
41 using Base = ToolsFieldBase<cc_tools_qt::field::ToolsBitfieldField, TField>;
44 static_assert(comms::field::isBitfield<Field>(),
"Must be of Bitfield field type");
47 using Ptr =
typename Base::Ptr;
48 using ActPtr =
typename Base::ActPtr;
50 explicit ToolsBitfieldFieldImpl(Field& fieldRef)
55 ToolsBitfieldFieldImpl(
const ToolsBitfieldFieldImpl&) =
default;
56 ToolsBitfieldFieldImpl(ToolsBitfieldFieldImpl&&) =
default;
57 virtual ~ToolsBitfieldFieldImpl() noexcept = default;
59 ToolsBitfieldFieldImpl& operator=(const ToolsBitfieldFieldImpl&) = delete;
62 virtual Ptr cloneImpl()
override
64 return ActPtr(
new ToolsBitfieldFieldImpl<TField>(Base::field()));
67 virtual void membersUpdatedImpl()
override
69 auto& mems = Base::getMembers();
70 for (
auto& m : mems) {
72 m->forceHiddenSerialization();
78template <
typename TField>
79auto makeBitfieldField(TField& field)
81 return std::make_unique<ToolsBitfieldFieldImpl<TField>>(field);