hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Classes | Namespaces | Typedefs | Functions
expr.H File Reference
#include <hobbes/lang/type.H>
#include <hobbes/util/ptr.H>
#include <hobbes/util/array.H>
#include <hobbes/util/lannotation.H>
#include <memory>
#include <iostream>
#include <string>
#include <vector>
Include dependency graph for expr.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  hobbes::Expr
 
class  hobbes::ExprCase< Case >
 
class  hobbes::Primitive
 
struct  hobbes::PrimPtrLT
 
class  hobbes::PrimitiveCase< Case >
 
class  hobbes::Unit
 
class  hobbes::Bool
 
class  hobbes::Char
 
class  hobbes::Byte
 
class  hobbes::Short
 
class  hobbes::Int
 
class  hobbes::Long
 
class  hobbes::Float
 
class  hobbes::Double
 
class  hobbes::Var
 
class  hobbes::Let
 
class  hobbes::LetRec
 
class  hobbes::Fn
 
class  hobbes::App
 
class  hobbes::Assign
 
class  hobbes::MkArray
 
class  hobbes::MkVariant
 
class  hobbes::MkRecord
 
class  hobbes::AIndex
 
class  hobbes::Case
 
struct  hobbes::Case::Binding
 
class  hobbes::Switch
 
struct  hobbes::Switch::Binding
 
class  hobbes::Proj
 
class  hobbes::Assump
 
class  hobbes::Pack
 
class  hobbes::Unpack
 
struct  hobbes::switchConst< T >
 
struct  hobbes::switchExpr< T >
 
struct  hobbes::switchExprC< T >
 
struct  hobbes::switchExprM< T >
 
struct  hobbes::switchExprTyFn
 
struct  hobbes::switchExprTyFnM
 
struct  hobbes::ComprehensionDef
 

Namespaces

 hobbes
 

Typedefs

typedef std::shared_ptr< Expr > hobbes::ExprPtr
 
typedef std::vector< ExprPtr > hobbes::Exprs
 
typedef std::pair< std::string, ExprPtr > hobbes::Definition
 
typedef std::vector< Definition > hobbes::Definitions
 
typedef std::shared_ptr< Primitive > hobbes::PrimitivePtr
 
typedef std::set< PrimitivePtr, PrimPtrLT > hobbes::PrimitiveSet
 
typedef std::map< std::string, ExprPtr > hobbes::VarMapping
 
typedef std::set< std::string > hobbes::VarSet
 
typedef std::vector< ComprehensionDef > hobbes::ComprehensionDefs
 

Functions

std::string hobbes::show (const Expr &e)
 
std::string hobbes::show (const Expr *e)
 
std::string hobbes::show (const ExprPtr &e)
 
std::string hobbes::show (const Definition &d)
 
std::string hobbes::showAnnotated (const Expr &e)
 
std::string hobbes::showAnnotated (const Expr *e)
 
std::string hobbes::showAnnotated (const ExprPtr &e)
 
std::string hobbes::showAnnotated (const Definition &d)
 
ExprPtr hobbes::constant (bool x, const LexicalAnnotation &la)
 
ExprPtr hobbes::constant (uint8_t x, const LexicalAnnotation &la)
 
ExprPtr hobbes::constant (int x, const LexicalAnnotation &la)
 
ExprPtr hobbes::constant (long x, const LexicalAnnotation &la)
 
ExprPtr hobbes::constant (size_t x, const LexicalAnnotation &la)
 
ExprPtr hobbes::var (const std::string &vn, const LexicalAnnotation &la)
 
Exprs hobbes::vars (const std::vector< std::string > &vns, const LexicalAnnotation &la)
 
ExprPtr hobbes::var (const std::string &vn, const QualTypePtr &ty, const LexicalAnnotation &la)
 
ExprPtr hobbes::var (const std::string &vn, const MonoTypePtr &ty, const LexicalAnnotation &la)
 
ExprPtr hobbes::let (const std::string &vn, const ExprPtr &e, const ExprPtr &b, const LexicalAnnotation &la)
 
ExprPtr hobbes::let (const Definitions &bs, const ExprPtr &b, const LexicalAnnotation &la)
 
ExprPtr hobbes::let (const Exprs &es, const ExprPtr &b, const LexicalAnnotation &la)
 
ExprPtr hobbes::mktunit (const LexicalAnnotation &la)
 
ExprPtr hobbes::mkrecord (const MkRecord::FieldDefs &fds, const LexicalAnnotation &la)
 
ExprPtr hobbes::mktuple (const ExprPtr &e, const LexicalAnnotation &la)
 
ExprPtr hobbes::proj (const ExprPtr &rec, const Record *rty, const std::string &field, const LexicalAnnotation &la)
 
ExprPtr hobbes::proj (const ExprPtr &rec, const std::string &field, const LexicalAnnotation &la)
 
ExprPtr hobbes::proj (const ExprPtr &rec, const str::seq &fields, const LexicalAnnotation &la)
 
Case::Bindings hobbes::caseOfBindings ()
 
template<typename ... Cases>
Case::Bindings hobbes::caseOfBindings (const char *ctor, const char *vname, const ExprPtr &e, Cases... cs)
 
template<typename ... Cases>
ExprPtr hobbes::caseOf (const ExprPtr &e, Cases... cs)
 
Constraints hobbes::liftConstraints (const Exprs &es)
 
ExprPtr hobbes::fn (const str::seq &vns, const ExprPtr &b, const LexicalAnnotation &la)
 
ExprPtr hobbes::fn (const std::string &vn, const ExprPtr &b, const LexicalAnnotation &la)
 
ExprPtr hobbes::fncall (const ExprPtr &f, const Exprs &args, const LexicalAnnotation &la)
 
ExprPtr hobbes::fncall (const ExprPtr &f, const ExprPtr &a, const LexicalAnnotation &la)
 
ExprPtr hobbes::closcall (const ExprPtr &c, const Exprs &args, const LexicalAnnotation &la)
 
ExprPtr hobbes::etaLift (const std::string &opname, const MonoTypePtr &oty, const LexicalAnnotation &la)
 
Expr * hobbes::mkarray (const std::vector< unsigned char > &v, const LexicalAnnotation &la)
 
Expr * hobbes::mkarray (const std::string &v, const LexicalAnnotation &la)
 
ExprPtr hobbes::switchE (const ExprPtr &e, const Switch::Bindings &bs, const ExprPtr &def, const LexicalAnnotation &la)
 
ExprPtr hobbes::assume (const ExprPtr &e, const QualTypePtr &t, const LexicalAnnotation &la)
 
ExprPtr hobbes::assume (const ExprPtr &e, const MonoTypePtr &t, const LexicalAnnotation &la)
 
ExprPtr hobbes::justE (const ExprPtr &e, const LexicalAnnotation &la)
 
ExprPtr hobbes::nothingE (const LexicalAnnotation &la)
 
ExprPtr hobbes::nothingE (const MonoTypePtr &jt, const LexicalAnnotation &la)
 
ExprPtr hobbes::assign (const ExprPtr &lhs, const ExprPtr &rhs, const LexicalAnnotation &la)
 
Exprs hobbes::exprs (const MkRecord::FieldDefs &ms)
 
Exprs hobbes::exprs (const Case::Bindings &bs)
 
ExprPtr hobbes::substitute (const VarMapping &vm, const ExprPtr &e, bool *mapped=0)
 
ExprPtr hobbes::substitute (const MonoTypeSubst &s, const ExprPtr &e)
 
template<typename T >
hobbes::switchOf (const PrimitivePtr &p, const switchConst< T > &f)
 
bool hobbes::isConst (const ExprPtr &)
 
template<typename T , typename F >
hobbes::switchOfF (const Expr &e, F f)
 
template<typename T >
hobbes::switchOf (const Expr &e, const switchExpr< T > &f)
 
template<typename T >
hobbes::switchOf (const ExprPtr &e, const switchExpr< T > &f)
 
template<typename T >
hobbes::switchOf (const ExprPtr &e, const switchExprM< T > &f)
 
template<typename T >
std::vector< T > hobbes::switchOf (const Exprs &es, const switchExpr< T > &f)
 
template<typename T >
std::vector< T > hobbes::switchOf (const Exprs &es, const switchExprM< T > &f)
 
template<typename K , typename T >
std::vector< std::pair< K, T > > hobbes::switchOf (const std::vector< std::pair< K, ExprPtr > > &kes, const switchExpr< T > &f)
 
template<typename K , typename T >
std::vector< std::pair< K, T > > hobbes::switchOf (const std::vector< std::pair< K, ExprPtr > > &kes, const switchExprM< T > &f)
 
Case::Bindings hobbes::switchOf (const Case::Bindings &bs, const switchExpr< ExprPtr > &f)
 
const MonoTypePtr & hobbes::requireMonotype (const ExprPtr &)
 
MonoTypes hobbes::requireMonotype (const Exprs &)
 
ExprPtr hobbes::liftTypesAsAssumptions (const ExprPtr &e)
 
ExprPtr hobbes::stripExplicitAssumptions (const ExprPtr &)
 
const ExprPtr & hobbes::stripAssumpHead (const ExprPtr &)
 
VarSet hobbes::freeVars (const ExprPtr &)
 
VarSet hobbes::freeVars (const Expr &)
 
NameSet hobbes::tvarNames (const ExprPtr &)
 
ExprPtr hobbes::desugarComprehension (const ExprPtr &ex, const ComprehensionDefs &cdefs, const LexicalAnnotation &la)
 
ExprPtr hobbes::mkFormatExpr (const std::string &fmt, const LexicalAnnotation &)
 
PrimitivePtr hobbes::mkTimespanPrim (const str::seq &, const LexicalAnnotation &)
 
ExprPtr hobbes::mkTimespanExpr (const str::seq &, const LexicalAnnotation &)
 
PrimitivePtr hobbes::mkTimePrim (const std::string &, const LexicalAnnotation &)
 
ExprPtr hobbes::mkTimeExpr (const std::string &, const LexicalAnnotation &)
 
ExprPtr hobbes::mkDateTimeExpr (const std::string &, const LexicalAnnotation &)
 
PrimitivePtr hobbes::mkDateTimePrim (const std::string &, const LexicalAnnotation &)
 
void hobbes::encode (const PrimitivePtr &, std::ostream &)
 
void hobbes::decode (PrimitivePtr *, std::istream &)
 
void hobbes::encode (const ExprPtr &, std::ostream &)
 
void hobbes::decode (ExprPtr *, std::istream &)
 
void hobbes::encode (const ExprPtr &, std::vector< uint8_t > *)
 
void hobbes::decode (const std::vector< uint8_t > &, ExprPtr *)
 
bool hobbes::hasSingularType (const ExprPtr &)
 
int hobbes::tgenSize (const ExprPtr &)