hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
deconstruct.H
Go to the documentation of this file.
1 /*
2  * deconstruct : a single step of "destructuring" a type (maybe a little bit of a hack?)
3  */
4 
5 #ifndef HOBBES_LANG_TYPEPREDS_DECONSTRUCT_HPP_INCLUDED
6 #define HOBBES_LANG_TYPEPREDS_DECONSTRUCT_HPP_INCLUDED
7 
9 #include <string>
10 
11 namespace hobbes {
12 
13 class DeconstructP : public Unqualifier {
14 public:
15  static std::string constraintName();
16 
17  // unqualifier interface
19  bool satisfied(const TEnvPtr&,const ConstraintPtr&,Definitions*) const;
20  bool satisfiable(const TEnvPtr&,const ConstraintPtr&,Definitions*) const;
21  void explain(const TEnvPtr& tenv, const ConstraintPtr& cst, const ExprPtr& e, Definitions* ds, annmsgs* msgs);
22  ExprPtr unqualify(const TEnvPtr&,const ConstraintPtr&,const ExprPtr&,Definitions*) const;
23  PolyTypePtr lookup (const std::string& vn) const;
24  SymSet bindings () const;
25  FunDeps dependencies(const ConstraintPtr&) const;
26 };
27 
28 }
29 
30 #endif
31 
std::shared_ptr< PolyType > PolyTypePtr
Definition: type.H:23
Definition: tyunqualify.H:20
SymSet bindings() const
Definition: deconstruct.C:233
bool refine(const TEnvPtr &, const ConstraintPtr &, MonoTypeUnifier *, Definitions *)
Definition: deconstruct.C:159
Definition: deconstruct.H:13
std::set< std::string > SymSet
Definition: tyunqualify.H:12
Definition: boot.H:7
std::vector< FunDep > FunDeps
Definition: tyunqualify.H:17
bool satisfied(const TEnvPtr &, const ConstraintPtr &, Definitions *) const
Definition: deconstruct.C:181
static std::string constraintName()
Definition: deconstruct.C:7
Definition: typeinf.H:29
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
FunDeps dependencies(const ConstraintPtr &) const
Definition: deconstruct.C:237
std::shared_ptr< TEnv > TEnvPtr
Definition: type.H:80
ExprPtr unqualify(const TEnvPtr &, const ConstraintPtr &, const ExprPtr &, Definitions *) const
Definition: deconstruct.C:225
std::vector< Definition > Definitions
Definition: expr.H:62
std::shared_ptr< Constraint > ConstraintPtr
Definition: type.H:33
bool satisfiable(const TEnvPtr &, const ConstraintPtr &, Definitions *) const
Definition: deconstruct.C:198
PolyTypePtr lookup(const std::string &vn) const
Definition: deconstruct.C:229
std::vector< annmsg > annmsgs
Definition: lannotation.H:58
void explain(const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds, annmsgs *msgs)
Definition: deconstruct.C:210