FLANG
Classes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Fortran::semantics::DirectiveStructureChecker< D, C, PC, ClauseEnumSize > Class Template Reference
Inheritance diagram for Fortran::semantics::DirectiveStructureChecker< D, C, PC, ClauseEnumSize >:
Fortran::semantics::BaseChecker

Classes

struct  DirectiveContext
 

Protected Types

using ClauseMapTy = std::multimap< C, const PC * >
 

Protected Member Functions

 DirectiveStructureChecker (SemanticsContext &context, const std::unordered_map< D, DirectiveClauses< C, ClauseEnumSize > > &directiveClausesMap)
 
void SetLoopIv (Symbol *symbol)
 
DirectiveContextGetContext ()
 
DirectiveContextGetContextParent ()
 
void SetContextClause (const PC &clause)
 
void ResetPartialContext (const parser::CharBlock &source)
 
void SetContextDirectiveSource (const parser::CharBlock &directive)
 
void SetContextDirectiveEnum (D dir)
 
void SetContextAllowed (const common::EnumSet< C, ClauseEnumSize > &allowed)
 
void SetContextAllowedOnce (const common::EnumSet< C, ClauseEnumSize > &allowedOnce)
 
void SetContextAllowedExclusive (const common::EnumSet< C, ClauseEnumSize > &allowedExclusive)
 
void SetContextRequired (const common::EnumSet< C, ClauseEnumSize > &required)
 
void SetContextClauseInfo (C type)
 
void AddClauseToCrtContext (C type)
 
void AddClauseToCrtGroupInContext (C type)
 
void ResetCrtGroup ()
 
const PC * FindClause (C type)
 
const PC * FindClause (DirectiveContext &context, C type)
 
const PC * FindClauseParent (C type)
 
llvm::iterator_range< typename ClauseMapTy::iterator > FindClauses (C type)
 
DirectiveContextGetEnclosingDirContext ()
 
void PushContext (const parser::CharBlock &source, D dir)
 
DirectiveContextGetEnclosingContextWithDir (D dir)
 
bool CurrentDirectiveIsNested ()
 
void SetClauseSets (D dir)
 
void PushContextAndClauseSets (const parser::CharBlock &source, D dir)
 
void SayNotMatching (const parser::CharBlock &, const parser::CharBlock &)
 
template<typename B >
void CheckMatching (const B &beginDir, const B &endDir)
 
void CheckNoBranching (const parser::Block &block, D directive, const parser::CharBlock &directiveSource)
 
void CheckOnlyAllowedAfter (C clause, common::EnumSet< C, ClauseEnumSize > set)
 
void CheckRequireAtLeastOneOf (bool warnInsteadOfError=false)
 
bool CheckAllowed (C clause, bool warnInsteadOfError=false)
 
void CheckAllowedOncePerGroup (C clause, C separator)
 
void CheckMutuallyExclusivePerGroup (C clause, C separator, common::EnumSet< C, ClauseEnumSize > set)
 
void CheckAtLeastOneClause ()
 
void CheckNotAllowedIfClause (C clause, common::EnumSet< C, ClauseEnumSize > set)
 
std::string ContextDirectiveAsFortran ()
 
void RequiresConstantPositiveParameter (const C &clause, const parser::ScalarIntConstantExpr &i)
 
void RequiresPositiveParameter (const C &clause, const parser::ScalarIntExpr &i, llvm::StringRef paramName="parameter")
 
void OptionalConstantPositiveParameter (const C &clause, const std::optional< parser::ScalarIntConstantExpr > &o)
 
virtual llvm::StringRef getClauseName (C clause)
 
virtual llvm::StringRef getDirectiveName (D directive)
 
std::string ClauseSetToString (const common::EnumSet< C, ClauseEnumSize > set)
 

Protected Attributes

SemanticsContextcontext_
 
std::vector< DirectiveContextdirContext_
 
std::unordered_map< D, DirectiveClauses< C, ClauseEnumSize > > directiveClausesMap_
 

Additional Inherited Members

- Public Member Functions inherited from Fortran::semantics::BaseChecker
template<typename N >
void Enter (const N &)
 
template<typename N >
void Leave (const N &)
 

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