2 #ifndef HOBBES_LANG_TYPEPREDS_CLASS_HPP_INCLUDED 3 #define HOBBES_LANG_TYPEPREDS_CLASS_HPP_INCLUDED 34 typedef std::map<std::string, MonoTypePtr>
Members;
41 const std::string&
name()
const;
49 void insert(
const TCInstanceFnPtr& ifp);
70 void show(std::ostream&)
const;
111 size_t arity()
const;
113 const MemberMapping& memberMapping()
const;
114 bool hasMapping(
const std::string& oname)
const;
115 const ExprPtr& memberMapping(
const std::string& oname)
const;
124 void show(std::ostream&)
const;
135 size_t arity()
const;
154 void show(std::ostream&)
const;
157 typedef std::pair<Constraints, MonoTypes>
IFnDef;
186 std::string
show(
const TClassPtr&);
187 std::string
show(
const TCInstancePtr&);
188 std::string
show(
const TCInstanceFnPtr&);
std::vector< TCInstancePtr > TCInstances
Definition: class.H:26
std::shared_ptr< PolyType > PolyTypePtr
Definition: type.H:23
std::shared_ptr< TCInstanceFn > TCInstanceFnPtr
Definition: class.H:28
Definition: tyunqualify.H:20
Types types(const Constants &cs)
Definition: llvm.H:357
const FunDeps & deps() const
Definition: class.C:87
SymSet bindings() const
Definition: class.C:349
std::shared_ptr< TCInstance > TCInstancePtr
Definition: class.H:24
std::shared_ptr< Expr > ExprPtr
Definition: class.H:107
void explain(const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds, annmsgs *msgs)
Definition: class.C:258
FunDeps mergeFundeps(const FunDeps &lhs, const FunDeps &rhs)
Definition: class.C:17
TCInstances tcinstances
Definition: class.H:86
const TCInstances & instances() const
Definition: class.C:394
std::map< std::string, MonoTypePtr > Members
Definition: class.H:34
void show(std::ostream &) const
Definition: class.C:368
MemberMapping mmap
Definition: class.H:162
void candidateTCInstFns(const TEnvPtr &, const MonoTypes &, TCInstanceFns *) const
Definition: class.C:126
TClass(const Constraints &reqs, const std::string &tcname, int tvs, const Members &tcmembers, const LexicalAnnotation &)
Definition: class.C:62
const TCInstanceFns & instanceFns() const
Definition: class.C:402
Constraints reqs
Definition: class.H:83
std::map< std::string, ExprPtr > MemberMapping
Definition: class.H:21
bool satisfied(const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const
Definition: class.C:212
void apply(const transition_lookahead &tl, parserdef *p)
Definition: lalr.C:564
ExprPtr unqualify(const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds) const
Definition: class.C:321
std::set< std::string > SymSet
Definition: tyunqualify.H:12
TCInstFnDB tcinstfndb
Definition: class.H:89
FunDeps fundeps
Definition: class.H:85
int tvs
Definition: class.H:82
void insert(const TEnvPtr &tenv, const TCInstancePtr &ip, Definitions *ds)
Definition: class.C:91
std::string tcname
Definition: class.H:160
std::vector< FunDep > FunDeps
Definition: tyunqualify.H:17
PolyTypePtr lookup(const std::string &vn) const
Definition: class.C:331
size_t order
Definition: class.H:165
std::string tcname
Definition: class.H:126
MonoType::ptr MonoTypePtr
Definition: type.H:71
ExprPtr unqualifyClass(const TEnvPtr &, const std::string &, const MonoTypes &, const ExprPtr &, Definitions *)
Definition: class.C:791
TestedInstances satfInstances
Definition: class.H:100
FunDeps inferFundeps(const TEnvPtr &tenv, const Constraints &cs)
Definition: class.C:43
const Members & members() const
Definition: class.C:83
std::vector< TCInstanceFnPtr > TCInstanceFns
Definition: class.H:30
FunDeps dependencies(const ConstraintPtr &) const
Definition: class.C:357
bool hasGroundInstanceAt(const MonoTypes &) const
Definition: class.C:398
MemberMapping mmap
Definition: class.H:128
std::pair< Constraints, MonoTypes > IFnDef
Definition: class.H:157
Constraints reqs
Definition: class.H:161
std::vector< ConstraintPtr > Constraints
Definition: type.H:35
void deserializeGroundClasses(const TEnvPtr &, std::istream &, Definitions *)
Definition: class.C:870
void serializeGroundClasses(const TEnvPtr &, std::ostream &)
Definition: class.C:853
TCMonoInstDB tcinstdb
Definition: class.H:87
bool isClassSatisfiable(const TEnvPtr &, const std::string &, const MonoTypes &, Definitions *)
Definition: class.C:787
bool isClassMember(const TEnvPtr &tenv, const std::string &memberName)
Definition: class.C:802
Members tcmembers
Definition: class.H:84
MonoTypePtr memberType(const std::string &vn) const
Definition: class.C:340
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
Constraints expandHiddenTCs(const TEnvPtr &, const Constraints &)
Definition: class.C:752
type_map< TCInstancePtr > TCMonoInstDB
Definition: class.H:78
void definePrivateClass(const TEnvPtr &tenv, const std::string &memberName, const ExprPtr &expr)
Definition: class.C:722
Definition: lannotation.H:36
std::map< std::string, TClassPtr > TClassEnv
Definition: class.H:103
std::shared_ptr< TEnv > TEnvPtr
Definition: type.H:80
int typeVars() const
Definition: class.C:79
Definition: lannotation.H:22
bool isClassSatisfied(const TEnvPtr &, const std::string &, const MonoTypes &, Definitions *)
Definition: class.C:783
std::string tcname
Definition: class.H:81
#define out
Definition: netio.H:19
std::pair< VarIDs, int > FunDep
Definition: tyunqualify.H:16
std::vector< Definition > Definitions
Definition: expr.H:62
const std::string & name() const
Definition: class.C:71
type_map< TCInstanceFns > TCInstFnDB
Definition: class.H:79
TCInstanceFns tcinstancefns
Definition: class.H:88
std::shared_ptr< Constraint > ConstraintPtr
Definition: type.H:33
MonoTypes itys
Definition: class.H:127
friend class TCInstanceFn
Definition: class.H:76
TestedInstances testedInstances
Definition: class.H:97
const Constraints & constraints() const
Definition: class.C:75
TCInstances matches(const TEnvPtr &tenv, const ConstraintPtr &c, MonoTypeUnifier *, Definitions *ds) const
Definition: class.C:122
std::shared_ptr< TClass > TClassPtr
Definition: class.H:102
bool satisfiable(const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const
Definition: class.C:224
std::vector< MonoTypePtr > MonoTypes
Definition: type.H:72
bool refine(const TEnvPtr &tenv, const ConstraintPtr &cst, MonoTypeUnifier *s, Definitions *ds)
Definition: class.C:170
MonoTypes itys
Definition: class.H:164
type_map< bool > TestedInstances
Definition: class.H:96
std::map< TVName, MonoTypePtr > MonoTypeSubst
Definition: type.H:143
std::vector< annmsg > annmsgs
Definition: lannotation.H:58