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