package com.babel17.interpreter.program;
import java.util.*;
public final class Definition {
public static enum MemoizationType {
NO_MEMOIZATION,
WEAK_MEMOIZATION,
STRONG_MEMOIZATION
}
public Definition(MemoizationType memoType, List<CaseExpr> cases) {
this.memoType = memoType;
this.cases = new ArrayList(cases.size());
Collections.copy(this.cases, cases);
body = null;
}
public int numCases() {
return cases.size();
}
public CaseExpr getCase(int i) {
return cases.get(i);
}
public Definition(MemoizationType memoType, Expr body) {
this.memoType = memoType;
this.cases = null;
this.body = body;
}
public boolean takesArg() {
return cases != null;
}
public MemoizationType memoType() { return memoType; }
public Expr body() { return body; }
private MemoizationType memoType;
private List<CaseExpr> cases;
private Expr body;
}