00001 #ifndef __SIGVISITOR__
00002 #define __SIGVISITOR__
00003
00004 #include "signals.hh"
00005
00006 struct sigvisitor
00007 {
00008
00009 void visit(Tree sig);
00010
00011
00012 virtual void visitError (Tree sig);
00013
00014 virtual ~sigvisitor() {}
00015
00016
00017
00018 virtual void visitInt (Tree sig, int i) = 0;
00019 virtual void visitReal (Tree sig, float r) = 0;
00020
00021
00022 virtual void visitInput (Tree sig, int i) = 0;
00023 virtual void visitOutput (Tree sig, int i, Tree s) = 0;
00024
00025
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
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
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
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
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
00060 virtual void visitSelect2 (Tree sig, Tree sel, Tree s1, Tree s2) = 0;
00061 virtual void visitSelect3 (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) = 0;
00062
00063
00064 virtual void visitTuple (Tree sig, int mod, Tree ls) = 0;
00065 virtual void visitTupleAccess (Tree sig, Tree ts, Tree idx) = 0;
00066
00067
00068 virtual void visitList (Tree lsig) = 0;
00069 };
00070
00071 struct fullvisitor : sigvisitor
00072 {
00073
00074 virtual void visitInt (Tree sig, int i) {}
00075 virtual void visitReal (Tree sig, float r) {}
00076
00077
00078 virtual void visitInput (Tree sig, int i) {}
00079 virtual void visitOutput (Tree sig, int i, Tree s) { visit(s);}
00080
00081
00082 virtual void visitDelay1 (Tree sig, Tree s) { visit(s);}
00083 virtual void visitPrefix (Tree sig, Tree s1, Tree s2) { visit(s1); visit(s2); }
00084 virtual void visitFixDelay (Tree sig, Tree s1, Tree s2) { visit(s1); visit(s2); }
00085
00086
00087 virtual void visitIntCast (Tree sig, Tree s) { visit(s);}
00088 virtual void visitFloatCast (Tree sig, Tree s) { visit(s);}
00089 virtual void visitBinOp (Tree sig, int op, Tree s1, Tree s2) { visit(s1); visit(s2); }
00090 virtual void visitFFun (Tree sig, Tree ff, Tree ls) { visit(ls); }
00091 virtual void visitFConst (Tree sig, Tree type, Tree name, Tree file) {}
00092 virtual void visitFVar (Tree sig, Tree type, Tree name, Tree file) {}
00093
00094
00095 virtual void visitButton (Tree sig, Tree label) {}
00096 virtual void visitCheckbox (Tree sig, Tree label) {}
00097 virtual void visitVSlider (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00098 virtual void visitHSlider (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00099 virtual void visitNumEntry (Tree sig, Tree label, Tree cur, Tree min, Tree max, Tree step) {}
00100 virtual void visitVBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
00101 virtual void visitHBargraph (Tree sig, Tree label, Tree min, Tree max, Tree s) { visit(s);}
00102 virtual void visitAttach (Tree sig, Tree s1, Tree s2) { visit(s1); visit(s2); }
00103
00104
00105 virtual void visitRec (Tree sig, Tree var, Tree body) { visit(body); }
00106 virtual void visitRef (Tree sig, Tree var) { }
00107 virtual void visitProj (Tree sig, int i, Tree s) { visit(s); }
00108
00109
00110 virtual void visitTable (Tree sig, Tree id, Tree s1, Tree s2) { visit(s1); visit(s2); }
00111 virtual void visitWRTbl (Tree sig, Tree id, Tree s1, Tree s2, Tree s3) { visit(s1); visit(s2); visit(s3); }
00112 virtual void visitRDTbl (Tree sig, Tree s1, Tree s2) { visit(s1); visit(s2); }
00113 virtual void visitGen (Tree sig, Tree s1) { visit(s1); }
00114
00115
00116 virtual void visitSelect2 (Tree sig, Tree sel, Tree s1, Tree s2) { visit(sel); visit(s1); visit(s2); }
00117 virtual void visitSelect3 (Tree sig, Tree sel, Tree s1, Tree s2, Tree s3) { visit(sel); visit(s1); visit(s2); visit(s3); }
00118
00119
00120 virtual void visitTuple (Tree sig, int mod, Tree ls) { visit(ls); }
00121 virtual void visitTupleAccess (Tree sig, Tree ts, Tree idx) { visit(ts); visit(idx); }
00122
00123
00124 virtual void visitList (Tree lsig) { while (!isNil(lsig)) { visit(hd(lsig)); lsig=tl(lsig); }}
00125 };
00126
00127 #endif