88 Tree sel, s1, s2, s3, s4, ff, id, ls, l, x, y, var, body, type,
name, file;
96 for (
int i=0; i<sig->
arity(); i++) { args.push_back(
O(sig->
branch(i)) ); }
101 else if (
isSigInt(sig, &i))
return 0;
127 else if (
isSigFConst(sig,type,name,file))
return 1;
129 else if (
isSigFVar(sig,type,name,file))
return 2;
147 else if (
isRec(sig, var, body)) exit(1);
149 else if (
isRef(sig, var)) exit(1);
151 else if (
isProj(sig, &i, s1))
return 3;
153 else if (
isSigTable(sig,
id, s1, s2))
return 3;
155 else if (
isSigWRTbl(sig,
id, s1, s2, s3))
return 3;
165 else if (
isSigGen(sig, s1))
return 3;
174 while (
isList(sig)) {
int x =
O(
hd(sig));
if (x > r) r = x; sig =
tl(sig); }
179 fprintf(stderr,
"ERROR infering signal order : unrecognized signal : ");
print(sig, stderr); fprintf(stderr,
"\n");
bool isSigRDTbl(Tree s, Tree &t, Tree &i)
bool isSigHSlider(Tree s)
bool isSigPrefix(Tree t, Tree &t0, Tree &t1)
bool isSigCheckbox(Tree s)
bool isSigFFun(Tree s, Tree &ff, Tree &largs)
bool isSigNumEntry(Tree s)
bool isSigSelect2(Tree t, Tree &selector, Tree &s1, Tree &s2)
int tree2int(Tree t)
if t has a node of type int, return it otherwise error
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
bool isSigInput(Tree t, int *i)
bool isSigFixDelay(Tree t, Tree &t0, Tree &t1)
bool isSigVBargraph(Tree s)
bool isSigSelect3(Tree t, Tree &selector, Tree &s1, Tree &s2, Tree &s3)
bool isSigVSlider(Tree s)
double max(double x, double y)
bool isSigGen(Tree t, Tree &x)
int getSigOrder(Tree sig)
retrieve the order annotation (between 0 and 3) of a signal.
static int infereSigOrder(Tree sig)
Infere the order of a term according to its components.
bool isSigReal(Tree t, double *r)
bool isRef(Tree t, int &level)
is t a de Bruijn recursive reference
bool isSigHBargraph(Tree s)
bool isSigDocConstantTbl(Tree t, Tree &n, Tree &sig)
bool isSigTable(Tree t, Tree &id, Tree &n, Tree &sig)
virtual int infereSigOrder(const vector< int > &args)=0
bool isSigBinOp(Tree s, int *op, Tree &x, Tree &y)
bool isSigAttach(Tree t, Tree &t0, Tree &t1)
bool isSigDocAccessTbl(Tree t, Tree &tbl, Tree &ridx)
bool isSigWRTbl(Tree u, Tree &id, Tree &t, Tree &i, Tree &s)
int arity() const
return the number of branches (subtrees) of a tree
const char * name(Symbol *sym)
Returns the name of a symbol.
bool isSigWaveform(Tree s)
bool isRec(Tree t, Tree &body)
is t a de Bruijn recursive tree
bool isSigInt(Tree t, int *i)
bool isSigDocWriteTbl(Tree t, Tree &n, Tree &sig, Tree &widx, Tree &wsig)
bool isSigDelay1(Tree t, Tree &t0)
bool isSigFloatCast(Tree t)
void setProperty(Tree t, Tree key, Tree val)
void * getUserData(Symbol *sym)
Returns user data.
bool isSigIntCast(Tree t)
Symbol * symbol(const char *str)
Returns (and creates if new) the symbol of name str.
bool isProj(Tree t, int *i, Tree &rgroup)
Tree branch(int i) const
return the ith branch (subtree) of a tree
bool isSigOutput(Tree t, int *i, Tree &t0)
bool getProperty(Tree t, Tree key, Tree &val)
void print(Tree t, FILE *out)