object generating progress

This commit is contained in:
Sascha Kühl
2025-12-01 16:14:13 +01:00
parent 19b7044773
commit 422df82b7c
10 changed files with 242 additions and 33 deletions
+21 -20
View File
@@ -1,10 +1,10 @@
#ifndef MATADOR_OBJECT_GENERATOR_HPP
#define MATADOR_OBJECT_GENERATOR_HPP
#ifndef MATADOR_OBJECT_HPP
#define MATADOR_OBJECT_HPP
#include "matador/object/attribute.hpp"
#include "matador/object/attribute_generator.hpp"
// #include "matador/object/attribute_generator.hpp"
#include "matador/object/constraint.hpp"
#include "matador/object/constraints_generator.hpp"
// #include "matador/object/constraints_generator.hpp"
#include "matador/utils/identifier.hpp"
@@ -16,21 +16,21 @@ class object {
public:
explicit object(std::string name, std::string alias = "");
template<typename Type>
static std::unique_ptr<object> generate(const repository& repo, std::string name, std::string alias = "") {
auto obj = std::make_unique<object>(std::move(name), std::move(alias));
obj->attributes_ = std::move(attribute_generator::generate<Type>(repo, *obj));
obj->constraints_ = std::move(constraints_generator::generate<Type>(repo, *obj));
return obj;
}
template<typename Type>
static std::unique_ptr<object> generate(const repository& repo, std::string name, std::string alias = "") {
auto obj = std::make_unique<object>(std::move(name), std::move(alias));
obj->attributes_ = std::move(attribute_generator::generate<Type>(repo, *obj));
obj->constraints_ = std::move(constraints_generator::generate<Type>(repo, *obj));
return obj;
}
// template<typename Type>
// static std::unique_ptr<object> generate(const repository& repo, std::string name, std::string alias = "") {
// auto obj = std::make_unique<object>(std::move(name), std::move(alias));
// obj->attributes_ = std::move(attribute_generator::generate<Type>(repo, *obj));
// obj->constraints_ = std::move(constraints_generator::generate<Type>(repo, *obj));
// return obj;
// }
//
// template<typename Type>
// static std::unique_ptr<object> generate(const std::unique_ptr<Type>& ptr, const repository& repo, std::string name, std::string alias = "") {
// auto obj = std::make_unique<object>(std::move(name), std::move(alias));
// obj->attributes_ = std::move(attribute_generator::generate(*ptr, repo, *obj));
// obj->constraints_ = std::move(constraints_generator::generate(*ptr, repo, *obj));
// return obj;
// }
static const attribute& create_attribute(std::string name, object& obj);
@@ -57,6 +57,7 @@ public:
private:
friend class constraints_generator;
friend class attribute_generator;
friend class object_generator;
std::string name_;
std::string alias_;
@@ -67,4 +68,4 @@ private:
std::vector<class constraint> constraints_;
};
}
#endif //MATADOR_OBJECT_GENERATOR_HPP
#endif //MATADOR_OBJECT_HPP