22#include "cc_tools_qt/details/ToolsFieldBase.h"
23#include "cc_tools_qt/field/ToolsOptionalField.h"
34template <
typename TField>
35class ToolsOptionalFieldImpl :
public ToolsFieldBase<cc_tools_qt::field::ToolsOptionalField, TField>
37 using Base = ToolsFieldBase<cc_tools_qt::field::ToolsOptionalField, TField>;
40 using Mode =
typename Base::Mode;
41 using Ptr =
typename Base::Ptr;
42 using ActPtr =
typename Base::ActPtr;
45 explicit ToolsOptionalFieldImpl(Field& fieldRef)
51 virtual Mode getModeImpl()
const override
53 return Base::field().getMode();
56 virtual void setModeImpl(Mode mode)
override
58 Base::field().setMode(mode);
61 virtual Ptr cloneImpl()
override
63 return ActPtr(
new ToolsOptionalFieldImpl<TField>(Base::field()));
67template <
typename TField>
68auto makeOptionalField(TField& field)
70 return std::make_unique<ToolsOptionalFieldImpl<TField>>(field);