#ifndef MATADOR_OBJECT_LOADER_HPP #define MATADOR_OBJECT_LOADER_HPP #include "matador/object/abstract_type_resolver.hpp" #include "matador/object/abstract_joined_resolver.hpp" #include namespace matador::utils { class identifier; } namespace matador::object { template class object_resolver : public abstract_type_resolver { public: object_resolver() : abstract_type_resolver(typeid(Type)) {} virtual std::shared_ptr resolve(const utils::identifier& id) = 0; }; template class joined_object_resolver : public abstract_joined_resolver, public object_resolver { public: joined_object_resolver(const std::type_index& root_type, const std::string& join_column) : abstract_joined_resolver(root_type, typeid(Type), join_column) {} std::shared_ptr resolve(const utils::identifier& id) override = 0; }; } #endif //MATADOR_OBJECT_LOADER_HPP