Fabrique

A build language for complex systems

 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Pages
fabrique::ast::Scope Class Reference

A scope is a container for name->value mappings. More...

#include <Scope.h>

Inheritance diagram for fabrique::ast::Scope:
fabrique::Printable fabrique::Uncopyable fabrique::ast::CompoundExpression

Public Types

typedef StringMap< const Type & > SymbolMap
 

Public Member Functions

 Scope (const Scope *parent, const std::string &name, const Type &argumentsType, TypeContext &)
 
 Scope (Scope &&)
 
const SymbolMap & symbols () const
 
const std::string & name () const
 
bool hasArguments () const
 
const Typearguments () const
 
const UniqPtrVec< Value > & values () const
 
bool contains (const Identifier &) const
 
virtual const TypeLookup (const Identifier &) const
 
void Register (const Argument *)
 
void Register (const Parameter *)
 
void Register (const Value &)
 
void Take (Value *)
 
void Take (UniqPtr< Value > &)
 
UniqPtrVec< ValueTakeValues ()
 
virtual void PrettyPrint (Bytestream &, size_t indent) const override
 Print a human-readable representation to an output stream and return that output stream.
 
virtual void Accept (Visitor &) const
 
- Public Member Functions inherited from fabrique::Printable
 Printable (const Printable &)
 
Printableoperator= (const Printable &)
 
virtual std::string str () const
 

Detailed Description

A scope is a container for name->value mappings.

A scope can have a parent scope for recursive name lookups.

Definition at line 65 of file Scope.h.


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