aboutsummaryrefslogtreecommitdiffstats
path: root/src/tuplr.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-16 03:39:22 +0000
committerDavid Robillard <d@drobilla.net>2009-10-16 03:39:22 +0000
commitbf0d7b7add98f976592c9766273ecc84f8b0b6b9 (patch)
tree6e440e3496bdc32b16bad029c0513c13f280bdab /src/tuplr.hpp
parent2f42cbc0483c437632dd810111964600bbdb900c (diff)
downloadresp-bf0d7b7add98f976592c9766273ecc84f8b0b6b9.tar.gz
resp-bf0d7b7add98f976592c9766273ecc84f8b0b6b9.tar.bz2
resp-bf0d7b7add98f976592c9766273ecc84f8b0b6b9.zip
Make ellipses a new kind (AType::DOTS).
git-svn-id: http://svn.drobilla.net/resp/tuplr@238 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'src/tuplr.hpp')
-rw-r--r--src/tuplr.hpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/tuplr.hpp b/src/tuplr.hpp
index 18e8830..9a87c37 100644
--- a/src/tuplr.hpp
+++ b/src/tuplr.hpp
@@ -296,9 +296,10 @@ private:
/// Type Expression, e.g. "Int", "(Fn (Int Int) Float)"
struct AType : public ATuple {
+ enum Kind { VAR, PRIM, EXPR, DOTS };
AType(ASymbol* s) : ATuple(s->loc), kind(PRIM), id(0) { push_back(s); }
AType(Cursor c, unsigned i) : ATuple(c), kind(VAR), id(i) {}
- AType(Cursor c) : ATuple(c), kind(EXPR), id(0) {}
+ AType(Cursor c, Kind k=EXPR) : ATuple(c), kind(k), id(0) {}
AType(Cursor c, AST* ast, va_list args) : ATuple(c, ast, args), kind(EXPR), id(0) {}
AType(const AType& copy) : ATuple(copy), kind(copy.kind), id(copy.id) {}
CVal compile(CEnv& cenv) { return NULL; }
@@ -329,8 +330,8 @@ struct AType : public ATuple {
}
return false; // never reached
}
- enum { VAR, PRIM, EXPR } kind;
- unsigned id;
+ Kind kind;
+ unsigned id;
};
/// Type substitution
@@ -569,10 +570,11 @@ inline ostream& operator<<(ostream& out, const Constraints& c) {
/// Type-Time Environment
struct TEnv : public Env<const ASymbol*, AType*> {
- TEnv(PEnv& p) : penv(p), varID(1),
- Fn(new AType(penv.sym("Fn"))),
- Tup(new AType(penv.sym("Tup"))),
- ellipses(new AType(penv.sym("...")))
+ TEnv(PEnv& p)
+ : penv(p)
+ , varID(1)
+ , Fn(new AType(penv.sym("Fn")))
+ , Tup(new AType(penv.sym("Tup")))
{
Object::pool.addRoot(Fn);
}
@@ -606,7 +608,6 @@ struct TEnv : public Env<const ASymbol*, AType*> {
AType* Fn;
AType* Tup;
- AType* ellipses;
};
Subst unify(const Constraints& c);