20#include "cc_tools_qt/details/ToolsFieldBase.h"
21#include "cc_tools_qt/field/ToolsOptionalField.h"
32template <
typename TField>
33class ToolsOptionalFieldImpl :
public ToolsFieldBase<cc_tools_qt::field::ToolsOptionalField, TField>
35 using Base = ToolsFieldBase<cc_tools_qt::field::ToolsOptionalField, TField>;
38 using Mode =
typename Base::Mode;
39 using Ptr =
typename Base::Ptr;
40 using ActPtr =
typename Base::ActPtr;
43 explicit ToolsOptionalFieldImpl(Field& fieldRef)
49 virtual Mode getModeImpl()
const override
51 return Base::field().getMode();
54 virtual void setModeImpl(Mode mode)
override
56 Base::field().setMode(mode);
59 virtual Ptr cloneImpl()
override
61 return ActPtr(
new ToolsOptionalFieldImpl<TField>(Base::field()));
65template <
typename TField>
66auto makeOptionalField(TField& field)
68 return std::make_unique<ToolsOptionalFieldImpl<TField>>(field);