fixed compilation

This commit is contained in:
Sascha Kühl 2025-02-02 22:13:52 +01:00
parent ded3daceb3
commit 89fb7e8a8d
3 changed files with 13 additions and 8 deletions

View File

@ -21,13 +21,17 @@ public:
utils::result<void, utils::error> attach(const std::string name, const std::string &parent = "") { utils::result<void, utils::error> attach(const std::string name, const std::string &parent = "") {
auto node = schema_node::make_node<Type>(*this, name); auto node = schema_node::make_node<Type>(*this, name);
attach_node(node, parent); auto result = attach_node(node, parent);
if (!result) {
return utils::failure(result.err());
}
return utils::ok<void>(); return utils::ok<void>();
} }
template <typename Type, typename ParentType> template <typename Type, typename ParentType>
utils::result<void, utils::error> attach(const std::string name) { utils::result<void, utils::error> attach(const std::string name) {
// auto node = std::make_unique<schema_node>(*this); auto node = schema_node::make_node<Type>(*this, name);
return utils::ok<void>(); return utils::ok<void>();
} }
@ -47,7 +51,7 @@ private:
utils::result<std::shared_ptr<schema_node>, utils::error> find_parent(const std::string &name) const; utils::result<std::shared_ptr<schema_node>, utils::error> find_parent(const std::string &name) const;
utils::result<std::shared_ptr<schema_node>, utils::error> find_node(const std::string &name) const; utils::result<std::shared_ptr<schema_node>, utils::error> find_node(const std::string &name) const;
utils::result<std::shared_ptr<schema_node>, utils::error> push_back_child(const node_ptr &parent, const node_ptr &child); void push_back_child(const node_ptr &parent, const node_ptr &child);
bool has_node(const std::type_index& index, const std::string &name) const; bool has_node(const std::type_index& index, const std::string &name) const;

View File

@ -14,7 +14,7 @@ class schema_node final {
public: public:
template < typename Type > template < typename Type >
static std::shared_ptr<schema_node> make_node(schema& tree, const std::string& name) { static std::shared_ptr<schema_node> make_node(schema& tree, const std::string& name) {
return std::make_shared<schema_node>(tree, name, static_cast<Type*>(nullptr)); return std::shared_ptr<schema_node>(new schema_node(tree, name, static_cast<Type*>(nullptr)));
} }
schema_node(const schema_node& other) = delete; schema_node(const schema_node& other) = delete;
@ -47,8 +47,8 @@ private:
schema_node(schema& tree, std::string name, Type *obj) schema_node(schema& tree, std::string name, Type *obj)
: schema_(tree) : schema_(tree)
, info_(std::make_unique<object_info<Type>>(*this)) , info_(std::make_unique<object_info<Type>>(*this))
, first_child_(std::make_shared<schema_node>(tree)) , first_child_(std::shared_ptr<schema_node>(new schema_node(tree)))
, last_child_(std::make_shared<schema_node>(tree)) , last_child_(std::shared_ptr<schema_node>(new schema_node(tree)))
, name_(std::move(name)) { , name_(std::move(name)) {
first_child_->next_sibling_ = last_child_; first_child_->next_sibling_ = last_child_;
last_child_->previous_sibling_ = first_child_; last_child_->previous_sibling_ = first_child_;

View File

@ -34,7 +34,7 @@ utils::result<std::shared_ptr<schema_node>, utils::error> schema::attach_node(co
} }
parent_node = *result; parent_node = *result;
result = push_back_child(root_, node); push_back_child(root_, node);
// if (!pk.is_null()) { // if (!pk.is_null()) {
// node->primary_key_ = pk; // node->primary_key_ = pk;
@ -81,7 +81,8 @@ utils::result<std::shared_ptr<schema_node>, utils::error> schema::find_node(cons
} }
return utils::ok(i->second); return utils::ok(i->second);
} }
utils::result<std::shared_ptr<schema_node>, utils::error> schema::push_back_child(const node_ptr &parent, const node_ptr &child) {
void schema::push_back_child(const node_ptr &parent, const node_ptr &child) {
child->parent_ = parent; child->parent_ = parent;
child->previous_sibling_ = parent->last_child_->previous_sibling_; child->previous_sibling_ = parent->last_child_->previous_sibling_;
child->next_sibling_ = parent->last_child_; child->next_sibling_ = parent->last_child_;