| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #pragma once
- #include <cstdint>
- #include <map>
- #include <optional>
- #include <string_view>
- #include <jvalidate/detail/array_iterator.h>
- #include <jvalidate/detail/object_iterator.h>
- #include <jvalidate/enum.h>
- #include <jvalidate/forward.h>
- namespace jvalidate::adapter {
- class Adapter {
- public:
- virtual ~Adapter() = default;
- virtual Type type() const = 0;
- virtual std::unique_ptr<Const const> freeze() const = 0;
- virtual bool as_boolean() const = 0;
- virtual int64_t as_integer() const = 0;
- virtual double as_number() const = 0;
- virtual std::string as_string() const = 0;
- virtual bool apply_array(AdapterCallback const & cb) const = 0;
- virtual bool apply_object(ObjectAdapterCallback const & cb) const = 0;
- };
- class Const {
- public:
- virtual ~Const() = default;
- virtual bool apply(AdapterCallback const & cb) const = 0;
- };
- }
- namespace jvalidate::adapter::detail {
- template <typename JSON> class GenericConst final : public Const {
- public:
- explicit GenericConst(JSON const & value) : value_(value) {}
- bool apply(AdapterCallback const & cb) const {
- return cb(typename AdapterTraits<JSON>::ConstAdapter(value_));
- }
- private:
- JSON value_;
- };
- }
|