FAUST compiler  0.9.9.6b8
Functions
sigprint.hh File Reference
#include "signals.hh"
Include dependency graph for sigprint.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void printSigType (int n, int v, int c)
void printSignal (Tree sig, FILE *out=stdout, int prec=0)

Function Documentation

void printSignal ( Tree  sig,
FILE *  out = stdout,
int  prec = 0 
)

Definition at line 85 of file sigprint.cpp.

{
    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);
}
void printSigType ( int  n,
int  v,
int  c 
)

Definition at line 64 of file sigprint.cpp.

{
    putchar("NR"[n]);
    putchar("KB S"[v]);
    putchar("CI X"[c]);
}