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

#include <class.H>

Inheritance diagram for hobbes::TClass:
Inheritance graph
Collaboration diagram for hobbes::TClass:
Collaboration graph

Public Types

typedef std::map< std::string, MonoTypePtrMembers
 

Public Member Functions

 TClass (const Constraints &reqs, const std::string &tcname, int tvs, const Members &tcmembers, const LexicalAnnotation &)
 
 TClass (const Constraints &reqs, const std::string &tcname, int tvs, const Members &tcmembers, const FunDeps &fundeps, const LexicalAnnotation &)
 
 TClass (const std::string &tcname, int tvs, const Members &tcmembers, const LexicalAnnotation &)
 
 TClass (const std::string &tcname, int tvs, const Members &tcmembers, const FunDeps &fundeps, const LexicalAnnotation &)
 
const std::string & name () const
 
const Constraintsconstraints () const
 
int typeVars () const
 
const Membersmembers () const
 
const FunDepsdeps () const
 
void insert (const TEnvPtr &tenv, const TCInstancePtr &ip, Definitions *ds)
 
void insert (const TCInstanceFnPtr &ifp)
 
TCInstances matches (const TEnvPtr &tenv, const ConstraintPtr &c, MonoTypeUnifier *, Definitions *ds) const
 
TCInstances matches (const TEnvPtr &tenv, const MonoTypes &mts, MonoTypeUnifier *, Definitions *ds) const
 
bool refine (const TEnvPtr &tenv, const ConstraintPtr &cst, MonoTypeUnifier *s, Definitions *ds)
 
bool satisfied (const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const
 
bool satisfiable (const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const
 
void explain (const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds, annmsgs *msgs)
 
ExprPtr unqualify (const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds) const
 
PolyTypePtr lookup (const std::string &vn) const
 
SymSet bindings () const
 
FunDeps dependencies (const ConstraintPtr &) const
 
MonoTypePtr memberType (const std::string &vn) const
 
void show (std::ostream &) const
 
const TCInstancesinstances () const
 
bool hasGroundInstanceAt (const MonoTypes &) const
 
const TCInstanceFnsinstanceFns () const
 
- Public Member Functions inherited from hobbes::LexicallyAnnotated
 LexicallyAnnotated (const LexicallyAnnotated &)
 
 LexicallyAnnotated (const LexicalAnnotation &)
 
 LexicallyAnnotated (const LexRange &)
 
 LexicallyAnnotated (const Pos &, const Pos &)
 
const LexicalAnnotationla () const
 

Private Types

typedef type_map< TCInstancePtrTCMonoInstDB
 
typedef type_map< TCInstanceFnsTCInstFnDB
 
typedef type_map< bool > TestedInstances
 

Private Member Functions

void candidateTCInstFns (const TEnvPtr &, const MonoTypes &, TCInstanceFns *) const
 
bool refine (const TEnvPtr &tenv, const ConstraintPtr &c, const FunDep &fd, MonoTypeUnifier *s, Definitions *ds) const
 

Private Attributes

std::string tcname
 
int tvs
 
Constraints reqs
 
Members tcmembers
 
FunDeps fundeps
 
TCInstances tcinstances
 
TCMonoInstDB tcinstdb
 
TCInstanceFns tcinstancefns
 
TCInstFnDB tcinstfndb
 
TestedInstances testedInstances
 
TestedInstances satfInstances
 

Friends

class TCInstanceFn
 

Additional Inherited Members

- Static Public Member Functions inherited from hobbes::LexicallyAnnotated
static void pushFileContext (const std::string &)
 
static void pushLiteralContext (const std::string &)
 
static void popContext ()
 
static LexicalAnnotation make (const Pos &, const Pos &)
 

Member Typedef Documentation

◆ Members

typedef std::map<std::string, MonoTypePtr> hobbes::TClass::Members

◆ TCInstFnDB

◆ TCMonoInstDB

◆ TestedInstances

Constructor & Destructor Documentation

◆ TClass() [1/4]

hobbes::TClass::TClass ( const Constraints reqs,
const std::string &  tcname,
int  tvs,
const Members tcmembers,
const LexicalAnnotation la 
)

◆ TClass() [2/4]

hobbes::TClass::TClass ( const Constraints reqs,
const std::string &  tcname,
int  tvs,
const Members tcmembers,
const FunDeps fundeps,
const LexicalAnnotation la 
)

◆ TClass() [3/4]

hobbes::TClass::TClass ( const std::string &  tcname,
int  tvs,
const Members tcmembers,
const LexicalAnnotation la 
)

◆ TClass() [4/4]

hobbes::TClass::TClass ( const std::string &  tcname,
int  tvs,
const Members tcmembers,
const FunDeps fundeps,
const LexicalAnnotation la 
)

Member Function Documentation

◆ bindings()

SymSet hobbes::TClass::bindings ( ) const
virtual

Implements hobbes::Unqualifier.

◆ candidateTCInstFns()

void hobbes::TClass::candidateTCInstFns ( const TEnvPtr tenv,
const MonoTypes mts,
TCInstanceFns x 
) const
private

◆ constraints()

const Constraints & hobbes::TClass::constraints ( ) const

◆ dependencies()

FunDeps hobbes::TClass::dependencies ( const ConstraintPtr ) const
virtual

Implements hobbes::Unqualifier.

◆ deps()

const FunDeps & hobbes::TClass::deps ( ) const

◆ explain()

void hobbes::TClass::explain ( const TEnvPtr tenv,
const ConstraintPtr cst,
const ExprPtr e,
Definitions ds,
annmsgs msgs 
)
virtual

Implements hobbes::Unqualifier.

◆ hasGroundInstanceAt()

bool hobbes::TClass::hasGroundInstanceAt ( const MonoTypes mts) const

◆ insert() [1/2]

void hobbes::TClass::insert ( const TEnvPtr tenv,
const TCInstancePtr ip,
Definitions ds 
)

◆ insert() [2/2]

void hobbes::TClass::insert ( const TCInstanceFnPtr ifp)

◆ instanceFns()

const TCInstanceFns & hobbes::TClass::instanceFns ( ) const

◆ instances()

const TCInstances & hobbes::TClass::instances ( ) const

◆ lookup()

PolyTypePtr hobbes::TClass::lookup ( const std::string &  vn) const
virtual

Implements hobbes::Unqualifier.

◆ matches() [1/2]

TCInstances hobbes::TClass::matches ( const TEnvPtr tenv,
const ConstraintPtr c,
MonoTypeUnifier u,
Definitions ds 
) const

◆ matches() [2/2]

TCInstances hobbes::TClass::matches ( const TEnvPtr tenv,
const MonoTypes mts,
MonoTypeUnifier u,
Definitions ds 
) const

◆ members()

const TClass::Members & hobbes::TClass::members ( ) const

◆ memberType()

MonoTypePtr hobbes::TClass::memberType ( const std::string &  vn) const

◆ name()

const std::string & hobbes::TClass::name ( ) const

◆ refine() [1/2]

bool hobbes::TClass::refine ( const TEnvPtr tenv,
const ConstraintPtr cst,
MonoTypeUnifier s,
Definitions ds 
)
virtual

Implements hobbes::Unqualifier.

◆ refine() [2/2]

bool hobbes::TClass::refine ( const TEnvPtr tenv,
const ConstraintPtr c,
const FunDep fd,
MonoTypeUnifier s,
Definitions ds 
) const
private

◆ satisfiable()

bool hobbes::TClass::satisfiable ( const TEnvPtr tenv,
const ConstraintPtr cst,
Definitions ds 
) const
virtual

Implements hobbes::Unqualifier.

◆ satisfied()

bool hobbes::TClass::satisfied ( const TEnvPtr tenv,
const ConstraintPtr cst,
Definitions ds 
) const
virtual

Implements hobbes::Unqualifier.

◆ show()

void hobbes::TClass::show ( std::ostream &  out) const

◆ typeVars()

int hobbes::TClass::typeVars ( ) const

◆ unqualify()

ExprPtr hobbes::TClass::unqualify ( const TEnvPtr tenv,
const ConstraintPtr cst,
const ExprPtr e,
Definitions ds 
) const
virtual

Implements hobbes::Unqualifier.

Friends And Related Function Documentation

◆ TCInstanceFn

friend class TCInstanceFn
friend

Member Data Documentation

◆ fundeps

FunDeps hobbes::TClass::fundeps
private

◆ reqs

Constraints hobbes::TClass::reqs
private

◆ satfInstances

TestedInstances hobbes::TClass::satfInstances
mutableprivate

◆ tcinstancefns

TCInstanceFns hobbes::TClass::tcinstancefns
private

◆ tcinstances

TCInstances hobbes::TClass::tcinstances
private

◆ tcinstdb

TCMonoInstDB hobbes::TClass::tcinstdb
private

◆ tcinstfndb

TCInstFnDB hobbes::TClass::tcinstfndb
private

◆ tcmembers

Members hobbes::TClass::tcmembers
private

◆ tcname

std::string hobbes::TClass::tcname
private

◆ testedInstances

TestedInstances hobbes::TClass::testedInstances
mutableprivate

◆ tvs

int hobbes::TClass::tvs
private

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