12#ifndef __DICTSELECTIONREADER__
13#define __DICTSELECTIONREADER__
15#include "clang/AST/RecursiveASTVisitor.h"
17#include <llvm/ADT/StringMap.h>
20#include <unordered_set>
22#include <unordered_map>
27 namespace TMetaUtils {
265 const std::string &str =
267 inline bool FirstPass(
const clang::RecordDecl &);
268 inline bool SecondPass(
const clang::RecordDecl &);
279 const std::string &);
281 const clang::CXXRecordDecl &);
287 std::set<const clang::RecordDecl *>
289 std::set<std::string>
291 llvm::StringMap<std::set<std::string> >
293 llvm::StringMap<std::set<std::string> >
296 llvm::StringMap<ClassSelectionRule>
bool fIsFirstPass
Keep trance of the number of passes through the AST.
llvm::StringMap< ClassSelectionRule > fClassNameSelectionRuleMap
Map of the already built sel rules.
bool shouldVisitTemplateInstantiations() const
void ManageFields(const clang::RecordDecl &, const std::string &, ClassSelectionRule &, bool)
Take care of the class fields.
ROOT::TMetaUtils::TNormalizedCtxt & fNormCtxt
The reference to the normalized context.
llvm::StringMap< std::set< std::string > > fNoAutoSelectedClassFieldNames
Collect the autoexcluded classes.
llvm::StringMap< std::set< std::string > > fAutoSelectedClassFieldNames
Collect the autoselected classes.
void ManageBaseClasses(const clang::CXXRecordDecl &, const std::string &, bool &)
Take care of the class bases.
bool VisitRecordDecl(clang::RecordDecl *)
Visit the entities that needs to be selected.
const clang::TemplateArgumentList * GetTmplArgList(const clang::CXXRecordDecl &)
Get the template arguments list if any.
std::set< const clang::RecordDecl * > fSelectedRecordDecls
The pointers of the selected RecordDecls.
std::string PatternifyName(const std::string &className)
Transform instance name in pattern for selection.
std::set< std::string > fSpecialNames
The names of the classes used for the selction syntax.
SelectionRules & fSelectionRules
The selection rules to be filled.
void GetPointeeType(std::string &typeName)
Get name of the pointee type.
unsigned int ExtractTemplateArgValue(const T &, const std::string &)
Extract the value of the template parameter.
bool InSelectionNamespace(const clang::RecordDecl &, const std::string &str="")
Check if in the ROOT::Meta::Selection namespace.
std::unordered_map< std::string, TemplateInfo > fTemplateInfoMap
List template name - properties map.
bool FirstPass(const clang::RecordDecl &)
First pass on the AST.
bool SecondPass(const clang::RecordDecl &)
Second pass on the AST, using the information of the first one.
The class representing the collection of selection rules.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
std::unordered_set< std::string > fUnsplittableMembers
std::unordered_set< std::string > fTransientMembers
TemplateInfo(int argsToKeep)
< Class to store the information about templates upon parsing