collection_resolver progress
This commit is contained in:
@@ -10,7 +10,7 @@ class abstract_type_resolver_factory {
|
||||
public:
|
||||
virtual ~abstract_type_resolver_factory() = default;
|
||||
|
||||
virtual std::shared_ptr<abstract_type_resolver> acquire_object_resolver(const std::type_index &type) = 0;
|
||||
[[nodiscard]] virtual std::shared_ptr<abstract_type_resolver> acquire_object_resolver(const std::type_index &type) const = 0;
|
||||
virtual void register_object_resolver(std::shared_ptr<abstract_type_resolver> &&resolver) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
}
|
||||
|
||||
[[nodiscard]] bool empty() const {
|
||||
return proxy_->items_.empty();
|
||||
return proxy_->items().empty();
|
||||
}
|
||||
|
||||
void reset(std::shared_ptr<collection_proxy<Type>> proxy) {
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
#include <atomic>
|
||||
|
||||
#include "matador/object/object_ptr.hpp"
|
||||
#include "matador/object/collection_resolver.hpp"
|
||||
|
||||
#include "matador/utils/identifier.hpp"
|
||||
@@ -13,14 +12,6 @@
|
||||
namespace matador::object {
|
||||
|
||||
|
||||
// template<typename Type>
|
||||
// class collection_resolver : public abstract_collection_resolver {
|
||||
// public:
|
||||
// collection_resolver() : abstract_collection_resolver(typeid(Type)) {}
|
||||
//
|
||||
// virtual std::shared_ptr<Type> resolve(const utils::identifier& id) = 0;
|
||||
// };
|
||||
|
||||
template<typename Type>
|
||||
class collection_proxy final {
|
||||
public:
|
||||
|
||||
@@ -8,14 +8,14 @@ class abstract_collection_resolver_factory {
|
||||
public:
|
||||
virtual ~abstract_collection_resolver_factory() = default;
|
||||
|
||||
virtual std::shared_ptr<abstract_collection_resolver> acquire_collection_resolver(const std::type_index &root_type, const std::type_index &element_type, const std::string &collection_name) = 0;
|
||||
[[nodiscard]] virtual std::shared_ptr<abstract_collection_resolver> acquire_collection_resolver(const std::type_index &root_type, const std::type_index &element_type, const std::string &collection_name) const = 0;
|
||||
virtual void register_collection_resolver(std::shared_ptr<abstract_collection_resolver> &&resolver) = 0;
|
||||
};
|
||||
|
||||
class collection_resolver_factory : public abstract_collection_resolver_factory {
|
||||
public:
|
||||
template<class Type>
|
||||
std::shared_ptr<collection_resolver<Type>> resolver(const std::type_index &root_type, const std::string &collection_name) {
|
||||
[[nodiscard]] std::shared_ptr<collection_resolver<Type>> resolver(const std::type_index &root_type, const std::string &collection_name) const {
|
||||
const auto res = acquire_collection_resolver(typeid(Type), root_type, collection_name);
|
||||
if (!res) {
|
||||
return std::dynamic_pointer_cast<collection_resolver<Type>>(res);
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
|
||||
#include "matador/object/abstract_type_resolver_factory.hpp"
|
||||
#include "matador/object/object_resolver.hpp"
|
||||
#include "matador/object/collection_resolver_factory.hpp"
|
||||
|
||||
namespace matador::object {
|
||||
class object_resolver_factory : public abstract_type_resolver_factory {
|
||||
public:
|
||||
template<class Type>
|
||||
std::shared_ptr<object_resolver<Type>> resolver() {
|
||||
[[nodiscard]] std::shared_ptr<object_resolver<Type>> resolver() const {
|
||||
const auto res = acquire_object_resolver(std::type_index(typeid(Type)));
|
||||
if (!res) {
|
||||
return std::dynamic_pointer_cast<object_resolver<Type>>(res);
|
||||
|
||||
Reference in New Issue
Block a user