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 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
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
00068 virtual void visitTuple (Tree sig, int mod, Tree ls) = 0;
00069 virtual void visitTupleAccess (Tree sig, Tree ts, Tree idx) = 0;
00070
00071
00072 virtual void visitList (Tree lsig) = 0;
00073 };
00074
00075 struct fullvisitor : sigvisitor
00076 {
00077
00078 virtual void visitInt (Tree sig, int i) {}
00079 virtual void visitReal (Tree sig, float r) {}
00080
00081
00082 virtual void visitInput (Tree sig, int i) {}
00083 virtual void visitOutput (Tree sig, int i, Tree s) { visit(s);}
00084
00085
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
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
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
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
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
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
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
00128 virtual void visitList (Tree lsig) { while (!isNil(lsig)) { visit(hd(lsig)); lsig=tl(lsig); }}
00129 };
00130
00131 #endif