hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Classes | Namespaces | Macros | Functions
record.C File Reference
#include <hobbes/lang/preds/appendsto/record.H>
#include <hobbes/lang/typeinf.H>
#include <hobbes/lang/preds/class.H>
#include <sstream>
Include dependency graph for record.C:

Classes

struct  hobbes::ATRecordUnqualify
 

Namespaces

 hobbes
 

Macros

#define REF_REC_APPEND   "recordAppend"
 
#define REF_REC_PREFIX   "recordPrefix"
 
#define REF_REC_SUFFIX   "recordSuffix"
 

Functions

bool hobbes::isRecordLike (const MonoTypePtr &mt)
 
const Record::Members & hobbes::recordMembers (const MonoTypePtr &mt)
 
bool hobbes::isTupleLike (const std::string &fname)
 
bool hobbes::isTupleLike (const Record::Members &ms)
 
bool hobbes::isTupleLike (const MkRecord::FieldDefs &fds)
 
Record::Members hobbes::tupleNormalize (const Record::Members &ms)
 
MkRecord::FieldDefs hobbes::tupleNormalize (const MkRecord::FieldDefs &fds)
 
MonoTypePtr hobbes::makeRecordType (const Record::Members &ms)
 
ExprPtr hobbes::makeRecord (const MkRecord::FieldDefs &fds, const LexicalAnnotation &la)
 
void hobbes::failAppendRecordConstraint (const std::string &lhs, const std::string &rhs, const std::string &result)
 
void hobbes::importDefs (const Record::Members &ms, Record::Members *out)
 
MonoTypePtr hobbes::joinedRecord (const MonoTypePtr &lhs, const MonoTypePtr &rhs)
 
QualTypePtr hobbes::joinedRecord (const QualTypePtr &lhs, const QualTypePtr &rhs)
 
bool hobbes::equivalent (const TEnvPtr &tenv, const Record::Member &m0, const Record::Member &m1)
 
MonoTypePtr hobbes::recordSuffix (const TEnvPtr &tenv, const MonoTypePtr &lhs, const MonoTypePtr &result)
 
MonoTypePtr hobbes::recordPrefix (const TEnvPtr &tenv, const MonoTypePtr &rhs, const MonoTypePtr &result)
 
void hobbes::checkSatisfiable (const MonoTypePtr &ty)
 
void hobbes::tryRefine (const TEnvPtr &tenv, const MonoTypePtr &lhs, const MonoTypePtr &rhs, const MonoTypePtr &result, MonoTypeUnifier *s)
 
void hobbes::insertFieldDefs (const MkRecord::FieldDefs &ifds, MkRecord::FieldDefs *out)
 
void hobbes::insertFieldDefs (const MkRecord::FieldDefs &ifds, size_t c, MkRecord::FieldDefs *out)
 
void hobbes::insertFieldDefsSfx (const MkRecord::FieldDefs &ifds, size_t c, MkRecord::FieldDefs *out)
 
void hobbes::insertFieldDefsFromProj (const ExprPtr &rec, const Record *rty, MkRecord::FieldDefs *out)
 
void hobbes::insertFieldDefsFromProj (const ExprPtr &rec, const MonoTypePtr &rty, MkRecord::FieldDefs *out)
 
void hobbes::insertFieldDefsFromProj (const ExprPtr &rec, MkRecord::FieldDefs *out)
 
ExprPtr hobbes::recordAppendExpr (const MkRecord *lhs, const MkRecord *rhs)
 
ExprPtr hobbes::recordAppendExpr (const MkRecord *lhs, const ExprPtr &rhs)
 
ExprPtr hobbes::recordAppendExpr (const ExprPtr &lhs, const MkRecord *rhs)
 
ExprPtr hobbes::recordAppendExpr (const ExprPtr &lhs, const ExprPtr &rhs)
 
ExprPtr hobbes::recordAppendFunction (const MonoTypePtr &lty, const MonoTypePtr &rty, const MonoTypePtr &resty, const LexicalAnnotation &la)
 
ExprPtr hobbes::recordPrefixFunction (const MonoTypePtr &recty, const MonoTypePtr &resty, const LexicalAnnotation &la)
 
ExprPtr hobbes::recordPrefix (const ExprPtr &rec, const MonoTypePtr &resty)
 
ExprPtr hobbes::recordSuffixFunction (const MonoTypePtr &recty, const MonoTypePtr &resty, const LexicalAnnotation &la)
 
ExprPtr hobbes::recordSuffix (const ExprPtr &rec, const MonoTypePtr &resty)
 

Macro Definition Documentation

◆ REF_REC_APPEND

#define REF_REC_APPEND   "recordAppend"

◆ REF_REC_PREFIX

#define REF_REC_PREFIX   "recordPrefix"

◆ REF_REC_SUFFIX

#define REF_REC_SUFFIX   "recordSuffix"