FAUST compiler  0.9.9.6b8
sigvisitor.hh
Go to the documentation of this file.
00001 #ifndef __SIGVISITOR__
00002 #define __SIGVISITOR__
00003 
00004 #include "signals.hh"
00005 
00006 struct sigvisitor
00007 {
00008     // predefined visit scheme
00009     void visit(Tree sig);
00010     
00011     // Unrecognized signal (default handler)
00012     virtual void visitError     (Tree sig);
00013     
00014     virtual ~sigvisitor() {}
00015     
00016     //---------------abstract methods---------------
00017     // numbers
00018     virtual void visitInt       (Tree sig, int i) = 0;
00019     virtual void visitReal      (Tree sig, double r) = 0;
00020     
00021     // audio inputs-outputs
00022     virtual void visitInput     (Tree sig, int i) = 0;
00023     virtual void visitOutput    (Tree sig, int i, Tree s) = 0;
00024     
00025     // fixed size delays
00026     virtual void visitDelay1    (Tree sig, Tree s) = 0;
00027     virtual void visitPrefix    (Tree sig, Tree s1, Tree s2) = 0;
00028     virtual void visitFixDelay  (Tree sig, Tree s1, Tree s2) = 0;
00029     
00030     // numerical operations 
00031     virtual void visitBinOp     (Tree sig, int opcode, Tree s1, Tree s2) = 0;
00032     virtual void visitIntCast   (Tree sig, Tree s) = 0;
00033     virtual void visitFloatCast (Tree sig, Tree s) = 0;
00034     virtual void visitFFun      (Tree sig, Tree ff, Tree ls) = 0;
00035     virtual void visitFConst    (Tree sig, Tree type, Tree name, Tree file) = 0;
00036     virtual void visitFVar      (Tree sig, Tree type, Tree name, Tree file) = 0;
00037     
00038     // user interface
00039     virtual void visitButton    (Tree sig, Tree label) = 0;
00040     virtual void visitCheckbox  (Tree sig, Tree label) = 0;
00041     virtual void visitVSlider   (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
00042     virtual void visitHSlider   (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
00043     virtual void visitNumEntry  (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
00044     virtual void visitVBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s1) = 0;
00045     virtual void visitHBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s1) = 0;
00046     virtual void visitAttach    (Tree sig, Tree s1, Tree s2) = 0;
00047     
00048     // recursive
00049     virtual void visitRec       (Tree sig, Tree var, Tree body) = 0;
00050     virtual void visitRef       (Tree sig, Tree var) = 0; 
00051     virtual void visitProj      (Tree sig, int i, Tree s1) = 0;
00052     
00053     // Tables
00054     virtual void visitTable     (Tree sig, Tree id, Tree s1, Tree s2) = 0;
00055     virtual void visitWRTbl     (Tree sig, Tree id, Tree s1, Tree s2, Tree s3) = 0;
00056     virtual void visitRDTbl     (Tree sig, Tree s1, Tree s2) = 0;  
00057     virtual void visitGen       (Tree sig, Tree s1) = 0;
00058 
00059     virtual void visitDocConstantTbl    (Tree sig, Tree s1, Tree s2) = 0;
00060     virtual void visitDocWriteTbl       (Tree sig, Tree s1, Tree s2, Tree s3, Tree s4) = 0;
00061     virtual void visitDocAccessTbl      (Tree sig, Tree s1, Tree s2) = 0;
00062 
00063     // Selectors
00064     virtual void visitSelect2   (Tree sig, Tree sel, Tree s1, Tree s2) = 0; 
00065     virtual void visitSelect3   (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) = 0; 
00066 
00067     // Tuples
00068     virtual void visitTuple         (Tree sig, int mod, Tree ls) = 0; 
00069     virtual void visitTupleAccess   (Tree sig, Tree ts, Tree idx) = 0; 
00070     
00071     // List of signals
00072     virtual void visitList      (Tree lsig) = 0;
00073 };
00074 
00075 struct fullvisitor : sigvisitor
00076 {
00077     // numbers
00078     virtual void visitInt       (Tree sig, int i)                               {}
00079     virtual void visitReal      (Tree sig, double r)                            {}
00080     
00081     // audio inputs-outputs
00082     virtual void visitInput     (Tree sig, int i)                               {}
00083     virtual void visitOutput    (Tree sig, int i, Tree s)                       { visit(s);}
00084     
00085     // fixed size delays
00086     virtual void visitDelay1    (Tree sig, Tree s)                              { visit(s);}
00087     virtual void visitPrefix    (Tree sig, Tree s1, Tree s2)                    { visit(s1); visit(s2); }
00088     virtual void visitFixDelay  (Tree sig, Tree s1, Tree s2)                    { visit(s1); visit(s2); }
00089     
00090     // numerical operations 
00091     virtual void visitIntCast   (Tree sig, Tree s)                              { visit(s);}
00092     virtual void visitFloatCast (Tree sig, Tree s)                              { visit(s);}
00093     virtual void visitBinOp     (Tree sig, int op, Tree s1, Tree s2)            { visit(s1); visit(s2); }
00094     virtual void visitFFun      (Tree sig, Tree ff, Tree ls)                    { visit(ls); }
00095     virtual void visitFConst    (Tree sig, Tree type, Tree name, Tree file)     {}
00096     virtual void visitFVar      (Tree sig, Tree type, Tree name, Tree file)     {}
00097     
00098     // user interface
00099     virtual void visitButton    (Tree sig, Tree label)                          {}
00100     virtual void visitCheckbox  (Tree sig, Tree label)                          {}
00101     virtual void visitVSlider   (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00102     virtual void visitHSlider   (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00103     virtual void visitNumEntry  (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00104     virtual void visitVBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
00105     virtual void visitHBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
00106     virtual void visitAttach    (Tree sig, Tree s1, Tree s2)                    { visit(s1); visit(s2); }
00107     
00108     // recursive
00109     virtual void visitRec       (Tree sig, Tree var, Tree body)                 { visit(body); }
00110     virtual void visitRef       (Tree sig, Tree var)                            { } 
00111     virtual void visitProj      (Tree sig, int i, Tree s)                       { visit(s); }
00112     
00113     // Tables
00114     virtual void visitTable     (Tree sig, Tree id, Tree s1, Tree s2)           { visit(s1); visit(s2); }
00115     virtual void visitWRTbl     (Tree sig, Tree id, Tree s1, Tree s2, Tree s3)  { visit(s1); visit(s2); visit(s3); }
00116     virtual void visitRDTbl     (Tree sig, Tree s1, Tree s2)                    { visit(s1); visit(s2); }  
00117     virtual void visitGen       (Tree sig, Tree s1)                             { visit(s1); }
00118     
00119     // Selectors
00120     virtual void visitSelect2   (Tree sig, Tree sel, Tree s1, Tree s2)          { visit(sel); visit(s1); visit(s2); } 
00121     virtual void visitSelect3   (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) { visit(sel); visit(s1); visit(s2); visit(s3); } 
00122 
00123     // Tuples
00124     virtual void visitTuple         (Tree sig, int mod, Tree ls)                { visit(ls); }
00125     virtual void visitTupleAccess   (Tree sig, Tree ts, Tree idx)               { visit(ts); visit(idx); }
00126 
00127     // List of signals
00128     virtual void visitList      (Tree lsig)                                     { while (!isNil(lsig)) { visit(hd(lsig)); lsig=tl(lsig); }}
00129 };
00130 
00131 #endif