0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor > Class Template Reference

Specialization of clang::ASTFrontendAction More...

Detailed Description

template<typename DiagramModel, typename DiagramConfig, typename DiagramVisitor>
class clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >

Specialization of clang::ASTFrontendAction

This class overrides the BeginSourceFileAction() and CreateASTConsumer() methods to create and setup an appropriate diagram_ast_consumer instance.

Template Parameters
DiagramModelType of diagram_model
DiagramConfigType of diagram_config
TranslationUnitVisitorType of translation_unit_visitor

Definition at line 256 of file generators.h.

#include <generators.h>

Public Member Functions

 diagram_fronted_action (DiagramModel &diagram, const DiagramConfig &config, std::function< void()> progress)
 
std::unique_ptr< clang::ASTConsumer > CreateASTConsumer (clang::CompilerInstance &CI, clang::StringRef) override
 

Protected Member Functions

bool BeginSourceFileAction (clang::CompilerInstance &ci) override
 

Private Attributes

DiagramModel & diagram_
 
const DiagramConfig & config_
 
std::function< void()> progress_
 

Constructor & Destructor Documentation

◆ diagram_fronted_action()

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::diagram_fronted_action ( DiagramModel &  diagram,
const DiagramConfig &  config,
std::function< void()>  progress 
)
inlineexplicit

Definition at line 258 of file generators.h.

260 : diagram_{diagram}
261 , config_{config}
262 , progress_{std::move(progress)}
263 {
264 }

Member Function Documentation

◆ BeginSourceFileAction()

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
bool clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::BeginSourceFileAction ( clang::CompilerInstance &  ci)
inlineoverrideprotected

Definition at line 282 of file generators.h.

283 {
284 LOG_DBG("Visiting source file: {}", getCurrentFile().str());
285
286 // Update progress indicators, if enabled, on each translation
287 // unit
288 if (progress_)
289 progress_();
290
291 if constexpr (std::is_same_v<DiagramModel,
293 auto find_includes_callback =
294 std::make_unique<typename DiagramVisitor::include_visitor>(
295 ci.getSourceManager(), diagram_, config_);
296
297 clang::Preprocessor &pp = ci.getPreprocessor();
298
299 pp.addPPCallbacks(std::move(find_includes_callback));
300 }
301
302 return true;
303 }

◆ CreateASTConsumer()

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
std::unique_ptr< clang::ASTConsumer > clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::CreateASTConsumer ( clang::CompilerInstance &  CI,
clang::StringRef   
)
inlineoverride

Definition at line 266 of file generators.h.

268 {
269 auto ast_consumer = std::make_unique<
270 diagram_ast_consumer<DiagramModel, DiagramConfig, DiagramVisitor>>(
271 CI, diagram_, config_);
272
273 if constexpr (!std::is_same_v<DiagramModel,
275 ast_consumer->visitor().set_tu_path(getCurrentFile().str());
276 }
277
278 return ast_consumer;
279 }

Member Data Documentation

◆ config_

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
const DiagramConfig& clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::config_
private

Definition at line 307 of file generators.h.

◆ diagram_

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
DiagramModel& clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::diagram_
private

Definition at line 306 of file generators.h.

◆ progress_

template<typename DiagramModel , typename DiagramConfig , typename DiagramVisitor >
std::function<void()> clanguml::common::generators::diagram_fronted_action< DiagramModel, DiagramConfig, DiagramVisitor >::progress_
private

Definition at line 308 of file generators.h.


The documentation for this class was generated from the following file: