|
FAUST compiler
0.9.9.6b8
|
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
1.8.0