FLANG
Public Types | Public Member Functions | Friends | List of all members
Fortran::semantics::Scope Class Reference

Public Types

using size_type = mapType::size_type
 
using iterator = mapType::iterator
 
using const_iterator = mapType::const_iterator
 

Public Member Functions

 ENUM_CLASS (Kind, Global, IntrinsicModules, Module, MainProgram, Subprogram, BlockData, DerivedType, BlockConstruct, Forall, OtherConstruct, OpenACCConstruct, ImpliedDos, OtherClause) using ImportKind
 
 Scope (SemanticsContext &context)
 
 Scope (Scope &parent, Kind kind, Symbol *symbol, SemanticsContext &context)
 
 Scope (const Scope &)=delete
 
bool operator== (const Scope &that) const
 
bool operator!= (const Scope &that) const
 
Scopeparent ()
 
const Scopeparent () const
 
Kind kind () const
 
bool IsGlobal () const
 
bool IsIntrinsicModules () const
 
bool IsTopLevel () const
 
bool IsModule () const
 
bool IsSubmodule () const
 
bool IsDerivedType () const
 
bool IsStmtFunction () const
 
bool IsParameterizedDerivedType () const
 
bool IsParameterizedDerivedTypeInstantiation () const
 
bool IsDerivedTypeWithKindParameter () const
 Does this derived type have at least one kind parameter ?
 
bool IsDerivedTypeWithLengthParameter () const
 Does this derived type have at least one length parameter ?
 
Symbolsymbol ()
 
const Symbolsymbol () const
 
SemanticsContextcontext () const
 
const SymbolGetSymbol () const
 
const ScopeGetDerivedTypeParent () const
 
const ScopeGetDerivedTypeBase () const
 
std::optional< SourceNameGetName () const
 
bool Contains (const Scope &) const
 
ScopeMakeScope (Kind kind, Symbol *symbol=nullptr)
 Make a scope nested in this one.
 
SemanticsContextGetMutableSemanticsContext () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
SymbolVector GetSymbols () const
 
MutableSymbolVector GetSymbols ()
 
iterator find (const SourceName &name)
 
const_iterator find (const SourceName &name) const
 
size_type erase (const SourceName &)
 
bool empty () const
 
SymbolFindSymbol (const SourceName &) const
 
SymbolFindComponent (SourceName) const
 
std::pair< iterator, bool > try_emplace (const SourceName &name, Attrs attrs=Attrs())
 Make a Symbol with unknown details.
 
template<typename D >
common::IfNoLvalue< std::pair< iterator, bool >, D > try_emplace (const SourceName &name, D &&details)
 Make a Symbol with provided details.
 
template<typename D >
common::IfNoLvalue< std::pair< iterator, bool >, D > try_emplace (const SourceName &name, Attrs attrs, D &&details)
 Make a Symbol with attrs and details.
 
SymbolCopySymbol (const Symbol &)
 
std::list< EquivalenceSet > & equivalenceSets ()
 
const std::list< EquivalenceSet > & equivalenceSets () const
 
void add_equivalenceSet (EquivalenceSet &&)
 
const mapType & crayPointers () const
 
void add_crayPointer (const SourceName &, Symbol &)
 
mapType & commonBlocks ()
 
const mapType & commonBlocks () const
 
SymbolMakeCommonBlock (const SourceName &)
 
SymbolFindCommonBlock (const SourceName &) const
 
template<typename D >
common::IfNoLvalue< Symbol &, D > MakeSymbol (const SourceName &name, Attrs attrs, D &&details)
 Make a Symbol but don't add it to the scope.
 
std::list< Scope > & children ()
 
const std::list< Scope > & children () const
 
ScopeFindSubmodule (const SourceName &) const
 
bool AddSubmodule (const SourceName &, Scope &)
 
const DeclTypeSpecFindType (const DeclTypeSpec &) const
 
const DeclTypeSpecMakeNumericType (TypeCategory, KindExpr &&kind)
 
const DeclTypeSpecMakeLogicalType (KindExpr &&kind)
 
const DeclTypeSpecMakeCharacterType (ParamValue &&length, KindExpr &&kind=KindExpr{0})
 
DeclTypeSpecMakeDerivedType (DeclTypeSpec::Category, DerivedTypeSpec &&)
 
const DeclTypeSpecMakeTypeStarType ()
 
const DeclTypeSpecMakeClassStarType ()
 
const DeclTypeSpecGetType (const SomeExpr &)
 
std::size_t size () const
 
void set_size (std::size_t size)
 
std::optional< std::size_t > alignment () const
 
void SetAlignment (std::size_t n)
 
ImportKind GetImportKind () const
 
std::set< SourceNameimportNames () const
 
bool CanImport (const SourceName &) const
 
std::optional< parser::MessageFixedTextSetImportKind (ImportKind)
 
void add_importName (const SourceName &)
 
const DerivedTypeSpecderivedTypeSpec () const
 
DerivedTypeSpecderivedTypeSpec ()
 
void set_derivedTypeSpec (DerivedTypeSpec &spec)
 
parser::Message::Reference instantiationContext () const
 
void set_instantiationContext (parser::Message::Reference &&mref)
 
bool hasSAVE () const
 
void set_hasSAVE (bool yes=true)
 
const parser::CharBlocksourceRange () const
 
void AddSourceRange (parser::CharBlock)
 
const DeclTypeSpecFindInstantiatedDerivedType (const DerivedTypeSpec &, DeclTypeSpec::Category=DeclTypeSpec::TypeDerived) const
 
bool IsModuleFile () const
 
void InstantiateDerivedTypes ()
 
const SymbolruntimeDerivedTypeDescription () const
 
void set_runtimeDerivedTypeDescription (const Symbol &symbol)
 

Friends

llvm::raw_ostream & operator<< (llvm::raw_ostream &, const Scope &)
 

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