30 namespace fable::schema {
44 : impl_(std::move(s).reset_pointer().get()), from_conf_fn_(std::move(deserialize_fn)) {}
47 [[nodiscard]]
operator Box()
const {
return Box{this->
clone()}; }
50 from_conf_fn_ = std::move(deserialize_fn);
55 set_from_conf(std::move(deserialize_fn));
56 return std::move(*
this);
60 [[nodiscard]] std::unique_ptr<Interface>
clone()
const override {
61 return std::make_unique<CustomDeserializer>(*
this);
65 [[nodiscard]]
JsonType type()
const override {
return impl_->type(); }
66 [[nodiscard]] std::string
type_string()
const override {
return impl_->type_string(); }
67 [[nodiscard]]
bool is_required()
const override {
return impl_->is_required(); }
68 [[nodiscard]]
const std::string&
description()
const override {
return impl_->description(); }
69 void set_description(std::string s)
override {
return impl_->set_description(std::move(s)); }
70 [[nodiscard]]
Json usage()
const override {
return impl_->usage(); }
72 bool validate(
const Conf& c, std::optional<SchemaError>& err)
const override {
73 return impl_->validate(c, err);
79 throw Error(
"no deserializer configured");
81 from_conf_fn_(
this, c);
87 throw Error(
"cannot deserialize after reset_ptr is called");
105 std::shared_ptr<schema::Interface> impl_{
nullptr};
106 std::function<void(CustomDeserializer*,
const Conf&)> from_conf_fn_{};
Definition: interface.hpp:297
Definition: custom.hpp:40
const std::string & description() const override
Definition: custom.hpp:68
void from_conf(const Conf &c) override
Definition: custom.hpp:77
virtual Json to_json() const
Definition: interface.hpp:254
void set_description(std::string s) override
Definition: custom.hpp:69
std::string type_string() const override
Definition: custom.hpp:66
bool validate(const Conf &c, std::optional< SchemaError > &err) const override
Definition: custom.hpp:72
Json usage() const override
Definition: custom.hpp:70
void reset_ptr() override
Definition: custom.hpp:84
JsonType type() const override
Definition: custom.hpp:65
std::unique_ptr< Interface > clone() const override
Definition: custom.hpp:60
void to_json(Json &j) const override
Definition: custom.hpp:75
bool is_required() const override
Definition: custom.hpp:67
Json json_schema() const override
Definition: custom.hpp:71
Definition: interface.hpp:67
virtual Json to_json() const
Definition: interface.hpp:254
nlohmann::json Json
Definition: fable_fwd.hpp:35
nlohmann::detail::value_t JsonType
Definition: fable_fwd.hpp:37