29#include <clang/AST/RecursiveASTVisitor.h>
30#include <clang/Basic/SourceManager.h>
69 :
public clang::RecursiveASTVisitor<translation_unit_visitor>,
105 clang::ClassTemplateDecl *class_template_declaration);
108 clang::ClassTemplateSpecializationDecl *cls);
130 void add_class(std::unique_ptr<class_> &&c);
137 void add_enum(std::unique_ptr<enum_> &&e);
147 std::unique_ptr<common::model::template_element> element)
override;
149 std::unique_ptr<class_>
create_element(
const clang::NamedDecl *decl)
const;
153 const std::string &full_name,
eid_t templated_decl_id);
162 std::unique_ptr<clanguml::class_diagram::model::class_>
171 std::unique_ptr<clanguml::class_diagram::model::class_>
179 std::unique_ptr<clanguml::class_diagram::model::concept_>
222 std::unique_ptr<clanguml::class_diagram::model::class_>
224 clang::ClassTemplateSpecializationDecl *cls);
232 const clang::ClassTemplateSpecializationDecl *cls,
class_ &c);
251 const class_ &c,
const std::string &method_name,
278 void process_field(
const clang::FieldDecl &field_declaration,
292 const std::set<std::string> &template_parameter_names = {});
312 found_relationships_t & ,
330 const found_relationships_t &relationships,
331 bool break_on_first_aggregation =
false);
343 clang::RecordDecl *cls,
class_ &c,
const namespace_ &ns);
395 const clang::ConceptSpecializationExpr *concept_specialization);
407 const clang::ConceptSpecializationExpr *concept_specialization,
408 const clang::ConceptDecl *cpt,
409 std::vector<std::string> &constrained_template_params,
410 size_t argument_index, std::string &type_name)
const;
436 std::map<eid_t, std::unique_ptr<clanguml::class_diagram::model::class_>>
442 std::optional<size_t> >>