00001 #include "sigvisitor.hh"
00002 #include <iostream>
00003 #include <assert.h>
00004 #include "xtended.hh"
00005
00006
00007 using namespace std;
00008
00017 void sigvisitor::visit(Tree sig)
00018 {
00019 int i;
00020 float r;
00021 Tree sel, s1, s2, s3, ff, id, ls, l, var, body, type, name, file, cur, min, max, step;
00022
00023 assert(sig);
00024
00025 if (isSigInt(sig, &i)) visitInt (sig, i);
00026
00027 else if (isSigReal(sig, &r)) visitReal (sig, r);
00028
00029
00030 else if (isSigInput(sig, &i)) visitInput (sig, i);
00031
00032 else if (isSigOutput(sig, &i, s1)) visitOutput (sig, i, s1);
00033
00034
00035 else if (isSigDelay1(sig, s1)) visitDelay1 (sig, s1);
00036
00037 else if (isSigPrefix(sig, s1, s2)) visitPrefix (sig, s1, s2);
00038
00039 else if (isSigFixDelay(sig, s1, s2)) visitFixDelay (sig, s1, s2);
00040
00041
00042 else if (isSigBinOp(sig, &i, s1, s2)) visitBinOp(sig, i, s1, s2);
00043
00044 else if (isSigIntCast(sig, s1)) visitIntCast(sig, s1);
00045
00046 else if (isSigFloatCast(sig, s1)) visitFloatCast(sig, s1);
00047
00048 else if (isSigFFun(sig, ff, ls)) visitFFun(sig,ff,ls);
00049
00050 else if (isSigFConst(sig,type,name,file)) visitFConst(sig,type,name,file);
00051
00052 else if (isSigFVar(sig,type,name,file)) visitFVar(sig,type,name,file);
00053
00054
00055
00056
00057 else if (isSigButton(sig, l)) visitButton(sig, l);
00058
00059 else if (isSigCheckbox(sig, l)) visitCheckbox(sig, l);
00060
00061 else if (isSigVSlider(sig, l, cur, min, max, step)) visitVSlider(sig, l, cur, min, max, step);
00062
00063 else if (isSigHSlider(sig, l, cur, min, max, step)) visitHSlider(sig, l, cur, min, max, step);
00064
00065 else if (isSigNumEntry(sig, l, cur, min, max, step)) visitNumEntry(sig, l, cur, min, max, step);
00066
00067 else if (isSigHBargraph(sig, l, min, max, s1)) visitHBargraph(sig, l, min, max, s1);
00068
00069 else if (isSigVBargraph(sig, l, min, max, s1)) visitVBargraph(sig, l, min, max, s1);
00070
00071 else if (isSigAttach(sig, s1, s2)) visitAttach(sig, s1, s2);
00072
00073
00074
00075
00076 else if (isRec(sig, var, body)) visitRec(sig, var, body);
00077
00078 else if (isRef(sig, var)) visitRef(sig, var);
00079
00080 else if (isProj(sig, &i, s1)) visitProj(sig, i, s1);
00081
00082
00083
00084
00085 else if (isSigTable(sig, id, s1, s2)) visitTable(sig, id, s1, s2);
00086
00087 else if (isSigWRTbl(sig, id, s1, s2, s3)) visitWRTbl(sig, id, s1, s2, s3);
00088
00089 else if (isSigRDTbl(sig, s1, s2)) visitRDTbl(sig, s1, s2);
00090
00091 else if (isSigGen(sig, s1)) visitGen(sig, s1);
00092
00093
00094
00095
00096 else if (isSigSelect2(sig,sel,s1,s2)) visitSelect2(sig,sel,s1,s2);
00097
00098 else if (isSigSelect3(sig,sel,s1,s2,s3)) visitSelect3(sig,sel,s1,s2,s3);
00099
00100 else if (isList(sig)) visitList(sig);
00101
00102
00103
00104
00105 else if (isSigTuple(sig,&i,ls)) visitTuple(sig,i,ls);
00106
00107 else if (isSigTupleAccess(sig,s1,s2)) visitTupleAccess(sig,s1,s2);
00108
00109
00110
00111
00112 else visitError(sig);
00113 }
00114
00115 void sigvisitor::visitError(Tree sig)
00116 {
00117 cerr << "ERROR visiting signal" << endl;
00118 }