hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
slookup.H
Go to the documentation of this file.
1 // eliminate (A.x :: T) constraints by trying to compile slookup(A) :: (SLookup typeof(A) value(x) T) => T
2 
3 #ifndef HOBBES_LANG_TYPEPREDS_HASFIELD_SLOOKUP_HPP_INCLUDED
4 #define HOBBES_LANG_TYPEPREDS_HASFIELD_SLOOKUP_HPP_INCLUDED
5 
7 
8 namespace hobbes {
9 
11  bool satisfied(const TEnvPtr& tenv, const HasField&, Definitions*) const;
12  bool satisfiable(const TEnvPtr& tenv, const HasField&, Definitions*) const;
13  bool refine(const TEnvPtr& tenv, const HasField&, MonoTypeUnifier* s, Definitions*);
14  ExprPtr unqualify(const TEnvPtr&, const ConstraintPtr&, const ExprPtr&, Definitions*) const;
15  std::string name() const;
16 };
17 
18 }
19 
20 #endif
21 
ExprPtr unqualify(const TEnvPtr &, const ConstraintPtr &, const ExprPtr &, Definitions *) const
Definition: slookup.C:140
Definition: slookup.H:10
bool satisfied(const TEnvPtr &tenv, const HasField &, Definitions *) const
Definition: slookup.C:73
Definition: hasfield.H:33
Definition: boot.H:7
std::string name() const
Definition: slookup.C:144
Definition: typeinf.H:29
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
std::shared_ptr< TEnv > TEnvPtr
Definition: type.H:80
std::vector< Definition > Definitions
Definition: expr.H:62
bool satisfiable(const TEnvPtr &tenv, const HasField &, Definitions *) const
Definition: slookup.C:87
Definition: hasfield.H:15
std::shared_ptr< Constraint > ConstraintPtr
Definition: type.H:33
bool refine(const TEnvPtr &tenv, const HasField &, MonoTypeUnifier *s, Definitions *)
Definition: slookup.C:96