40 }
else if (isSigType(tp, &n, &v, &c)) {
50 void printSigTypeList (
Tree l)
55 putchar(sep); sep =
',';
72 "+",
"-",
"*",
"/",
"%",
74 ">",
"<",
">=",
"<=",
"==",
"!=",
89 Tree x, y, z, u, le, id;
91 if (
isSigInt(sig, &i) ) { fprintf(out,
"%d", i); }
92 else if (
isSigReal(sig, &r) ) { fprintf(out,
"%f", r); }
93 else if (
isSigInput(sig, &i) ) { fprintf(out,
"IN%d", i); }
97 if (prec > binopprec[i]) fputs(
"(", out);
99 if (prec > binopprec[i]) fputs(
")", out);
102 else if (
isSigPrefix(sig, x, y) ) { fputs(
"prefix(", out);
printSignal(x,out,0); fputs(
",", out);
printSignal(y,out,0); fputs(
")", out); }
103 else if (
isSigAttach(sig, x, y) ) { fputs(
"attach(", out);
printSignal(x,out,0); fputs(
",", out);
printSignal(y,out,0); fputs(
")", out); }
105 if (prec > 4) fputs(
"(", out);
107 if (prec > 4) fputs(
")", out);
110 else if (
isProj(sig, &i, x) ) {
printSignal(x,out,prec); fprintf(out,
"#%d", i); }
111 else if (
isRef(sig, i) ) { fprintf(out,
"$%d", i); }
113 else if (
isRec(sig, le)) { fputs(
"\\_.", out);
printSignal(le, out, prec); }
114 else if (
isRec(sig, x, le)) { fputs(
"\\", out);
print(x,out); fputs(
".", out);
printSignal(le, out, prec); }
116 else if (
isSigTable(sig,
id, x, y) ) { fputs(
"table(", out);
printSignal(x,out,0); fputc(
',', out);
printSignal(y,out,0); fputc(
')', out); }
117 else if (
isSigWRTbl(sig,
id, x, y, z) ){
printSignal(x,out,0); fputc(
'[',out);
printSignal(y,out,0); fputs(
"] := (", out);
printSignal(z,out,0); fputc(
')', out); }
bool isSigRDTbl(Tree s, Tree &t, Tree &i)
bool isSigPrefix(Tree t, Tree &t0, Tree &t1)
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)
void printSigType(int n, int v, int c)
bool isSigGen(Tree t, Tree &x)
bool isSigReal(Tree t, double *r)
bool isRef(Tree t, int &level)
is t a de Bruijn recursive reference
bool isSigDocConstantTbl(Tree t, Tree &n, Tree &sig)
bool isSigTable(Tree t, Tree &id, Tree &n, Tree &sig)
void printSignal(Tree sig, FILE *out, int prec)
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)
TableType * isTableType(AudioType *t)
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)
bool isSigIntCast(Tree t)
bool isProj(Tree t, int *i, Tree &rgroup)
API to the typing system of signals.
bool isSigOutput(Tree t, int *i, Tree &t0)
void print(Tree t, FILE *out)