Rename interpretor to interpreter.
[Faustine.git] / interpreter / preprocessor / faust-0.9.47mr3 / compiler / headers / sigvisitor.hh
diff --git a/interpreter/preprocessor/faust-0.9.47mr3/compiler/headers/sigvisitor.hh b/interpreter/preprocessor/faust-0.9.47mr3/compiler/headers/sigvisitor.hh
new file mode 100644 (file)
index 0000000..f72c0c3
--- /dev/null
@@ -0,0 +1,131 @@
+#ifndef __SIGVISITOR__
+#define __SIGVISITOR__
+
+#include "signals.hh"
+
+struct sigvisitor
+{
+       // predefined visit scheme
+       void visit(Tree sig);
+       
+       // Unrecognized signal (default handler)
+       virtual void visitError         (Tree sig);
+       
+       virtual ~sigvisitor() {}
+       
+       //---------------abstract methods---------------
+       // numbers
+       virtual void visitInt           (Tree sig, int i) = 0;
+       virtual void visitReal          (Tree sig, double r) = 0;
+       
+       // audio inputs-outputs
+       virtual void visitInput         (Tree sig, int i) = 0;
+       virtual void visitOutput        (Tree sig, int i, Tree s) = 0;
+       
+       // fixed size delays
+       virtual void visitDelay1        (Tree sig, Tree s) = 0;
+       virtual void visitPrefix        (Tree sig, Tree s1, Tree s2) = 0;
+       virtual void visitFixDelay      (Tree sig, Tree s1, Tree s2) = 0;
+       
+       // numerical operations 
+       virtual void visitBinOp         (Tree sig, int opcode, Tree s1, Tree s2) = 0;
+       virtual void visitIntCast       (Tree sig, Tree s) = 0;
+       virtual void visitFloatCast     (Tree sig, Tree s) = 0;
+       virtual void visitFFun          (Tree sig, Tree ff, Tree ls) = 0;
+    virtual void visitFConst    (Tree sig, Tree type, Tree name, Tree file) = 0;
+    virtual void visitFVar      (Tree sig, Tree type, Tree name, Tree file) = 0;
+       
+       // user interface
+       virtual void visitButton        (Tree sig, Tree label) = 0;
+       virtual void visitCheckbox      (Tree sig, Tree label) = 0;
+       virtual void visitVSlider       (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
+       virtual void visitHSlider       (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
+       virtual void visitNumEntry      (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) = 0;
+       virtual void visitVBargraph     (Tree sig, Tree label, Tree min, Tree max, Tree s1) = 0;
+       virtual void visitHBargraph     (Tree sig, Tree label, Tree min, Tree max, Tree s1) = 0;
+       virtual void visitAttach        (Tree sig, Tree s1, Tree s2) = 0;
+       
+       // recursive
+       virtual void visitRec           (Tree sig, Tree var, Tree body) = 0;
+       virtual void visitRef           (Tree sig, Tree var) = 0; 
+       virtual void visitProj          (Tree sig, int i, Tree s1) = 0;
+       
+       // Tables
+       virtual void visitTable         (Tree sig, Tree id, Tree s1, Tree s2) = 0;
+       virtual void visitWRTbl         (Tree sig, Tree id, Tree s1, Tree s2, Tree s3) = 0;
+       virtual void visitRDTbl         (Tree sig, Tree s1, Tree s2) = 0;  
+       virtual void visitGen           (Tree sig, Tree s1) = 0;
+
+    virtual void visitDocConstantTbl   (Tree sig, Tree s1, Tree s2) = 0;
+    virtual void visitDocWriteTbl              (Tree sig, Tree s1, Tree s2, Tree s3, Tree s4) = 0;
+    virtual void visitDocAccessTbl             (Tree sig, Tree s1, Tree s2) = 0;
+
+       // Selectors
+       virtual void visitSelect2       (Tree sig, Tree sel, Tree s1, Tree s2) = 0; 
+       virtual void visitSelect3       (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) = 0; 
+
+       // Tuples
+       virtual void visitTuple                 (Tree sig, int mod, Tree ls) = 0; 
+       virtual void visitTupleAccess   (Tree sig, Tree ts, Tree idx) = 0; 
+       
+       // List of signals
+       virtual void visitList          (Tree lsig) = 0;
+};
+
+struct fullvisitor : sigvisitor
+{
+       // numbers
+       virtual void visitInt           (Tree sig, int i)                                                               {}
+       virtual void visitReal          (Tree sig, double r)                                                    {}
+       
+       // audio inputs-outputs
+       virtual void visitInput         (Tree sig, int i)                                                               {}
+       virtual void visitOutput        (Tree sig, int i, Tree s)                                               { visit(s);}
+       
+       // fixed size delays
+       virtual void visitDelay1        (Tree sig, Tree s)                                                      { visit(s);}
+       virtual void visitPrefix        (Tree sig, Tree s1, Tree s2)                                    { visit(s1); visit(s2); }
+       virtual void visitFixDelay      (Tree sig, Tree s1, Tree s2)                                    { visit(s1); visit(s2); }
+       
+       // numerical operations 
+       virtual void visitIntCast       (Tree sig, Tree s)                                                              { visit(s);}
+       virtual void visitFloatCast     (Tree sig, Tree s)                                                              { visit(s);}
+       virtual void visitBinOp         (Tree sig, int op, Tree s1, Tree s2)                    { visit(s1); visit(s2); }
+       virtual void visitFFun          (Tree sig, Tree ff, Tree ls)                                    { visit(ls); }
+    virtual void visitFConst    (Tree sig, Tree type, Tree name, Tree file)     {}
+    virtual void visitFVar      (Tree sig, Tree type, Tree name, Tree file)     {}
+       
+       // user interface
+       virtual void visitButton        (Tree sig, Tree label)                                                  {}
+       virtual void visitCheckbox      (Tree sig, Tree label)                                                  {}
+       virtual void visitVSlider       (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
+       virtual void visitHSlider       (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
+       virtual void visitNumEntry      (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
+       virtual void visitVBargraph     (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
+       virtual void visitHBargraph     (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
+       virtual void visitAttach        (Tree sig, Tree s1, Tree s2)                                    { visit(s1); visit(s2); }
+       
+       // recursive
+       virtual void visitRec           (Tree sig, Tree var, Tree body)                                 { visit(body); }
+       virtual void visitRef           (Tree sig, Tree var)                                                    { } 
+       virtual void visitProj          (Tree sig, int i, Tree s)                                               { visit(s); }
+       
+       // Tables
+       virtual void visitTable         (Tree sig, Tree id, Tree s1, Tree s2)                   { visit(s1); visit(s2); }
+       virtual void visitWRTbl         (Tree sig, Tree id, Tree s1, Tree s2, Tree s3)  { visit(s1); visit(s2); visit(s3); }
+       virtual void visitRDTbl         (Tree sig, Tree s1, Tree s2)                                    { visit(s1); visit(s2); }  
+       virtual void visitGen           (Tree sig, Tree s1)                                                     { visit(s1); }
+       
+       // Selectors
+       virtual void visitSelect2       (Tree sig, Tree sel, Tree s1, Tree s2)                  { visit(sel); visit(s1); visit(s2); } 
+       virtual void visitSelect3       (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) { visit(sel); visit(s1); visit(s2); visit(s3); } 
+
+       // Tuples
+       virtual void visitTuple                 (Tree sig, int mod, Tree ls)                            { visit(ls); }
+       virtual void visitTupleAccess   (Tree sig, Tree ts, Tree idx)                           { visit(ts); visit(idx); }
+
+       // List of signals
+       virtual void visitList          (Tree lsig)                                                                     { while (!isNil(lsig)) { visit(hd(lsig)); lsig=tl(lsig); }}
+};
+
+#endif