From 12432de30d50c68a55e603c34d0b3a698c31cf22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Wed, 7 Dec 2022 12:47:42 +0100 Subject: [PATCH] Add ability to set semanitc parent of a `cpp_variable` --- include/cppast/cpp_variable.hpp | 14 +++++++------- src/cpp_variable.cpp | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/cppast/cpp_variable.hpp b/include/cppast/cpp_variable.hpp index 7cb105b..b8fdd14 100644 --- a/include/cppast/cpp_variable.hpp +++ b/include/cppast/cpp_variable.hpp @@ -27,16 +27,16 @@ public: static std::unique_ptr build(const cpp_entity_index& idx, cpp_entity_id id, std::string name, std::unique_ptr type, std::unique_ptr def, - cpp_storage_class_specifiers spec, - bool is_constexpr); + cpp_storage_class_specifiers spec, bool is_constexpr, + type_safe::optional semantic_parent + = {}); /// \returns A newly created variable that is a declaration. /// A declaration will not be registered and it does not have the default value. - static std::unique_ptr build_declaration(cpp_entity_id definition_id, - std::string name, - std::unique_ptr type, - cpp_storage_class_specifiers spec, - bool is_constexpr); + static std::unique_ptr build_declaration( + cpp_entity_id definition_id, std::string name, std::unique_ptr type, + cpp_storage_class_specifiers spec, bool is_constexpr, + type_safe::optional semantic_parent = {}); /// \returns The [cppast::cpp_storage_specifiers]() on that variable. cpp_storage_class_specifiers storage_class() const noexcept diff --git a/src/cpp_variable.cpp b/src/cpp_variable.cpp index 0dad088..5632e0f 100644 --- a/src/cpp_variable.cpp +++ b/src/cpp_variable.cpp @@ -12,26 +12,26 @@ cpp_entity_kind cpp_variable::kind() noexcept return cpp_entity_kind::variable_t; } -std::unique_ptr cpp_variable::build(const cpp_entity_index& idx, cpp_entity_id id, - std::string name, std::unique_ptr type, - std::unique_ptr def, - cpp_storage_class_specifiers spec, - bool is_constexpr) +std::unique_ptr cpp_variable::build( + const cpp_entity_index& idx, cpp_entity_id id, std::string name, std::unique_ptr type, + std::unique_ptr def, cpp_storage_class_specifiers spec, bool is_constexpr, + type_safe::optional semantic_parent) { auto result = std::unique_ptr( new cpp_variable(std::move(name), std::move(type), std::move(def), spec, is_constexpr)); + result->set_semantic_parent(std::move(semantic_parent)); idx.register_definition(std::move(id), type_safe::cref(*result)); return result; } -std::unique_ptr cpp_variable::build_declaration(cpp_entity_id definition_id, - std::string name, - std::unique_ptr type, - cpp_storage_class_specifiers spec, - bool is_constexpr) +std::unique_ptr cpp_variable::build_declaration( + cpp_entity_id definition_id, std::string name, std::unique_ptr type, + cpp_storage_class_specifiers spec, bool is_constexpr, + type_safe::optional semantic_parent) { auto result = std::unique_ptr( new cpp_variable(std::move(name), std::move(type), nullptr, spec, is_constexpr)); + result->set_semantic_parent(std::move(semantic_parent)); result->mark_declaration(definition_id); return result; }