X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/faust-0.9.47mr3/compiler/signals/sigprint.cpp?ds=sidebyside diff --git a/interpretor/faust-0.9.47mr3/compiler/signals/sigprint.cpp b/interpretor/faust-0.9.47mr3/compiler/signals/sigprint.cpp deleted file mode 100644 index 69e7d00..0000000 --- a/interpretor/faust-0.9.47mr3/compiler/signals/sigprint.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/************************************************************************ - ************************************************************************ - FAUST compiler - Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale - --------------------------------------------------------------------- - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - ************************************************************************ - ************************************************************************/ - - - -#include - -#include "signals.hh" -#include "sigtype.hh" -#include "sigtyperules.hh" - -// imprime le type d'un signal en clair -#if 0 -void printSigType (Tree tp) -{ - Tree t0; - int n, v, c; - - if (isTableType(tp, t0)) { - printf("table-of "); - printSigType(t0); - } else if (isSigType(tp, &n, &v, &c)) { - putchar("NR"[n]); - putchar("KB S"[v]); - putchar("CI X"[c]); - //printf(" {%d,%d,%d} ", n, v, c); - } else { - printf("unknown"); - } -} - -void printSigTypeList (Tree l) -{ - char sep = '('; - - do { - putchar(sep); sep = ','; - printSigType(hd(l)); - l = tl(l); - } while (isList(l)); - - putchar(')'); -} -#endif - -void printSigType (int n, int v, int c) -{ - putchar("NR"[n]); - putchar("KB S"[v]); - putchar("CI X"[c]); -} - -const char* binopname[]= { - "+", "-", "*", "/", "%", - "<<", ">>", - ">", "<", ">=", "<=", "==", "!=", - "&", "|", "^" -}; - -int binopprec[]= { - 2, 2, 3, 3, 3, - 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1 -}; - -void printSignal(Tree sig, FILE* out, int prec) -{ - int i; - double r; - Tree x, y, z, u, le, id; - - if ( isSigInt(sig, &i) ) { fprintf(out, "%d", i); } - else if ( isSigReal(sig, &r) ) { fprintf(out, "%f", r); } - else if ( isSigInput(sig, &i) ) { fprintf(out, "IN%d", i); } - else if ( isSigOutput(sig, &i, x) ) { fprintf(out, "OUT%d := ", i); printSignal(x, out, 0); } - - else if ( isSigBinOp(sig, &i, x, y) ) { - if (prec > binopprec[i]) fputs("(", out); - printSignal(x,out,binopprec[i]); fputs(binopname[i], out); printSignal(y, out, binopprec[i]); - if (prec > binopprec[i]) fputs(")", out); - } - else if ( isSigDelay1(sig, x) ) { fputs("mem(", out); printSignal(x,out,0); fputs(")", out); } - else if ( isSigPrefix(sig, x, y) ) { fputs("prefix(", out); printSignal(x,out,0); fputs(",", out); printSignal(y,out,0); fputs(")", out); } - else if ( isSigAttach(sig, x, y) ) { fputs("attach(", out); printSignal(x,out,0); fputs(",", out); printSignal(y,out,0); fputs(")", out); } - else if ( isSigFixDelay(sig, x, y) ) { - if (prec > 4) fputs("(", out); - printSignal(x,out,4); fputs("@", out); printSignal(y, out, 4); - if (prec > 4) fputs(")", out); - } - - else if ( isProj(sig, &i, x) ) { printSignal(x,out,prec); fprintf(out, "#%d", i); } - else if ( isRef(sig, i) ) { fprintf(out, "$%d", i); } - else if ( isRef(sig, x) ) { print(x, out); } - else if ( isRec(sig, le)) { fputs("\\_.", out); printSignal(le, out, prec); } - else if ( isRec(sig, x, le)) { fputs("\\", out); print(x,out); fputs(".", out); printSignal(le, out, prec); } - - else if ( isSigTable(sig, id, x, y) ) { fputs("table(", out); printSignal(x,out,0); fputc(',', out); printSignal(y,out,0); fputc(')', out); } - 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); } - else if ( isSigRDTbl(sig, x, y) ) { printSignal(x,out,0); fputc('[', out); printSignal(y,out,0); fputc(']', out); } - - else if (isSigDocConstantTbl(sig,x,y)) { fputs("sigDocConstantTbl(", out); printSignal(x,out,0); fputc(',', out); - printSignal(y,out,0); fputc(')', out); } - - else if (isSigDocWriteTbl(sig,x,y,z,u)) { fputs("sigDocWriteTbl(", out); printSignal(x,out,0); fputc(',', out); - printSignal(y,out,0); fputc(',', out); - printSignal(z,out,0); fputc(',', out); - printSignal(u,out,0); fputc(')', out); } - - else if (isSigDocAccessTbl(sig,x,y)) { fputs("sigDocAccessTbl(", out); printSignal(x,out,0); fputc(',', out); - printSignal(y,out,0); fputc(')', out); } - - - else if ( isSigGen(sig, x) ) { printSignal(x,out,prec); } - - else if ( isSigIntCast(sig, x) ) { fputs("int(", out); printSignal(x,out,0); fputs(")", out); } - else if ( isSigFloatCast(sig, x) ) { fputs("float(", out); printSignal(x,out,0); fputs(")", out); } - - else if (isList(sig)) { - char sep = '{'; - do { - fputc(sep, out); - printSignal(hd(sig), out, 0); - sep=','; - sig = tl(sig); - } while (isList(sig)); - fputc('}', out); - } - else - print(sig, out); -}