hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
hobbes::TEnv Class Reference

#include <type.H>

Collaboration diagram for hobbes::TEnv:
Collaboration graph

Public Types

typedef std::map< std::string, PolyTypePtrPolyTypeEnv
 
typedef std::map< std::string, UnqualifierPtrUnqualifiers
 

Public Member Functions

 TEnv (const TEnvPtr &parent)
 
 TEnv ()
 
bool hasBinding (const std::string &vname) const
 
bool hasImmediateBinding (const std::string &vname) const
 
void bind (const std::string &vname, const PolyTypePtr &)
 
void bind (const std::string &vname, const QualTypePtr &)
 
void bind (const std::string &vname, const MonoTypePtr &)
 
void unbind (const std::string &vname)
 
PolyTypePtr lookup (const std::string &vname) const
 
void bind (const std::string &predName, const UnqualifierPtr &uq)
 
UnqualifierPtr lookupUnqualifier (const std::string &predName) const
 
UnqualifierPtr lookupUnqualifier (const ConstraintPtr &cst) const
 
const TEnvPtrparentTypeEnv () const
 
TEnvroot ()
 
PolyTypeEnv typeEnvTable () const
 
str::set boundVariables () const
 
const Unqualifiersunqualifiers () const
 
void alias (const std::string &, const MonoTypePtr &)
 
MonoTypePtr unalias (const std::string &) const
 
bool isOpaqueTypeAlias (const std::string &) const
 

Private Types

typedef std::map< std::string, MonoTypePtrTypeAliases
 

Private Attributes

TEnvPtr parent
 
UnqualifierSetPtr unquals
 
PolyTypeEnv ptenv
 
TypeAliases typeAliases
 

Member Typedef Documentation

◆ PolyTypeEnv

typedef std::map<std::string, PolyTypePtr> hobbes::TEnv::PolyTypeEnv

◆ TypeAliases

typedef std::map<std::string, MonoTypePtr> hobbes::TEnv::TypeAliases
private

◆ Unqualifiers

typedef std::map<std::string, UnqualifierPtr> hobbes::TEnv::Unqualifiers

Constructor & Destructor Documentation

◆ TEnv() [1/2]

hobbes::TEnv::TEnv ( const TEnvPtr parent)

◆ TEnv() [2/2]

hobbes::TEnv::TEnv ( )

Member Function Documentation

◆ alias()

void hobbes::TEnv::alias ( const std::string &  tn,
const MonoTypePtr t 
)

◆ bind() [1/4]

void hobbes::TEnv::bind ( const std::string &  vname,
const PolyTypePtr pt 
)

◆ bind() [2/4]

void hobbes::TEnv::bind ( const std::string &  vname,
const QualTypePtr t 
)

◆ bind() [3/4]

void hobbes::TEnv::bind ( const std::string &  vname,
const MonoTypePtr t 
)

◆ bind() [4/4]

void hobbes::TEnv::bind ( const std::string &  predName,
const UnqualifierPtr uq 
)

◆ boundVariables()

SymSet hobbes::TEnv::boundVariables ( ) const

◆ hasBinding()

bool hobbes::TEnv::hasBinding ( const std::string &  vname) const

◆ hasImmediateBinding()

bool hobbes::TEnv::hasImmediateBinding ( const std::string &  vname) const

◆ isOpaqueTypeAlias()

bool hobbes::TEnv::isOpaqueTypeAlias ( const std::string &  tn) const

◆ lookup()

PolyTypePtr hobbes::TEnv::lookup ( const std::string &  vname) const

◆ lookupUnqualifier() [1/2]

UnqualifierPtr hobbes::TEnv::lookupUnqualifier ( const std::string &  predName) const

◆ lookupUnqualifier() [2/2]

UnqualifierPtr hobbes::TEnv::lookupUnqualifier ( const ConstraintPtr cst) const

◆ parentTypeEnv()

const TEnvPtr & hobbes::TEnv::parentTypeEnv ( ) const

◆ root()

TEnv * hobbes::TEnv::root ( )

◆ typeEnvTable()

TEnv::PolyTypeEnv hobbes::TEnv::typeEnvTable ( ) const

◆ unalias()

MonoTypePtr hobbes::TEnv::unalias ( const std::string &  tn) const

◆ unbind()

void hobbes::TEnv::unbind ( const std::string &  vname)

◆ unqualifiers()

const TEnv::Unqualifiers & hobbes::TEnv::unqualifiers ( ) const

Member Data Documentation

◆ parent

TEnvPtr hobbes::TEnv::parent
private

◆ ptenv

PolyTypeEnv hobbes::TEnv::ptenv
private

◆ typeAliases

TypeAliases hobbes::TEnv::typeAliases
private

◆ unquals

UnqualifierSetPtr hobbes::TEnv::unquals
private

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