<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>FAUST compiler: sigvisitor.cpp Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> <h1>sigvisitor.cpp</h1><a href="sigvisitor_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include "<a class="code" href="sigvisitor_8hh.html">sigvisitor.hh</a>"</span> <a name="l00002"></a>00002 <span class="preprocessor">#include <iostream></span> <a name="l00003"></a>00003 <span class="preprocessor">#include <assert.h></span> <a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="xtended_8hh.html">xtended.hh</a>"</span> <a name="l00005"></a>00005 <a name="l00006"></a>00006 <a name="l00007"></a>00007 <span class="keyword">using namespace </span>std; <a name="l00008"></a>00008 <a name="l00017"></a><a class="code" href="structsigvisitor.html#a2f6668938985d878fe4991307fe3718a">00017</a> <span class="keywordtype">void</span> <a class="code" href="structsigvisitor.html#a2f6668938985d878fe4991307fe3718a" title="Infere the type of a term according to its surrounding type environment.">sigvisitor::visit</a>(<a class="code" href="classCTree.html" title="A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches...">Tree</a> sig) <a name="l00018"></a>00018 { <a name="l00019"></a>00019 <span class="keywordtype">int</span> i; <a name="l00020"></a>00020 <span class="keywordtype">double</span> r; <a name="l00021"></a>00021 <a class="code" href="classCTree.html" title="A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches...">Tree</a> sel, s1, s2, s3, s4, ff, id, ls, l, var, body, type, <a class="code" href="symbol_8hh.html#a8243134fbbd9d924ebbb3f833922e310" title="Returns the name of a symbol.">name</a>, file, cur, <a class="code" href="interval_8hh.html#a2f8edc4561e9744ed4233b205fa7ec32">min</a>, <a class="code" href="interval_8hh.html#a1c45761573e6cbc97cfacac78d905016">max</a>, step; <a name="l00022"></a>00022 <a name="l00023"></a>00023 assert(sig); <a name="l00024"></a>00024 <a name="l00025"></a>00025 <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a75cc925deac1e031e75ae72271dd5995">isSigInt</a>(sig, &i)) <a class="code" href="structsigvisitor.html#af1de5901bdb9dc41c5063e188370246a">visitInt</a> (sig, i); <a name="l00026"></a>00026 <a name="l00027"></a>00027 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a305497ed8593020624204f9d359743f2">isSigReal</a>(sig, &r)) <a class="code" href="structsigvisitor.html#a09fcb1621a2da69dc665b7e0998e29ea">visitReal</a> (sig, r); <a name="l00028"></a>00028 <a name="l00029"></a>00029 <a name="l00030"></a>00030 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a38254d67a0541d98c6097fd51b22ea45">isSigInput</a>(sig, &i)) <a class="code" href="structsigvisitor.html#ad000c33657655bd669687f491eca1dbc">visitInput</a> (sig, i); <a name="l00031"></a>00031 <a name="l00032"></a>00032 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a1415deb58619ab50a536d7f2ce425f22">isSigOutput</a>(sig, &i, s1)) <a class="code" href="structsigvisitor.html#aebea091a720c5341727e21b468f6f718">visitOutput</a> (sig, i, s1); <a name="l00033"></a>00033 <a name="l00034"></a>00034 <a name="l00035"></a>00035 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a0899d7e2a69a467b0dcf62242397367f">isSigDelay1</a>(sig, s1)) <a class="code" href="structsigvisitor.html#a6de4352d34b8c58a7ed1a39600518c71">visitDelay1</a> (sig, s1); <a name="l00036"></a>00036 <a name="l00037"></a>00037 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a18895c816779682006a84aede438af29">isSigPrefix</a>(sig, s1, s2)) <a class="code" href="structsigvisitor.html#a0787173c6166e71c46f8be96407b1855">visitPrefix</a> (sig, s1, s2); <a name="l00038"></a>00038 <a name="l00039"></a>00039 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#af55cdefee258834b3b8f6c070d4970c9">isSigFixDelay</a>(sig, s1, s2)) <a class="code" href="structsigvisitor.html#a4b58753b4d2dd9865323705200418cbb">visitFixDelay</a> (sig, s1, s2); <a name="l00040"></a>00040 <a name="l00041"></a>00041 <a name="l00042"></a>00042 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a8705584c3c319be54be73dc391d25634">isSigBinOp</a>(sig, &i, s1, s2)) <a class="code" href="structsigvisitor.html#a2c2a102422b453635f70845a8339519f">visitBinOp</a>(sig, i, s1, s2); <a name="l00043"></a>00043 <a name="l00044"></a>00044 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a3ef48f0da2ef5b8e3ee7371a1e4059ae">isSigIntCast</a>(sig, s1)) <a class="code" href="structsigvisitor.html#ac5cf062af0a7686f65ebe0a42ecc4ec4">visitIntCast</a>(sig, s1); <a name="l00045"></a>00045 <a name="l00046"></a>00046 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a52448156d86125bbc8de23d641217de2">isSigFloatCast</a>(sig, s1)) <a class="code" href="structsigvisitor.html#afe594515bd3afecc83a4dde68ca712c2">visitFloatCast</a>(sig, s1); <a name="l00047"></a>00047 <a name="l00048"></a>00048 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a7d60b2c9da70fb0a2edff9593d38c573">isSigFFun</a>(sig, ff, ls)) <a class="code" href="structsigvisitor.html#a9d38c5d1d12d1d95ddbfe7aac3919121">visitFFun</a>(sig,ff,ls); <a name="l00049"></a>00049 <a name="l00050"></a>00050 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a71788aa9ccfc0aa598243fbef2a88f68">isSigFConst</a>(sig,type,name,file)) <a class="code" href="structsigvisitor.html#a3390e696b51c9e90f33ed13291d38173">visitFConst</a>(sig,type,name,file); <a name="l00051"></a>00051 <a name="l00052"></a>00052 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a13d7a7178d98383c309b0e4a45dfc96b">isSigFVar</a>(sig,type,name,file)) <a class="code" href="structsigvisitor.html#a35e1e05102ee485efc6a7b22fcba58db">visitFVar</a>(sig,type,name,file); <a name="l00053"></a>00053 <a name="l00054"></a>00054 <a name="l00055"></a>00055 <span class="comment">//---------------</span> <a name="l00056"></a>00056 <a name="l00057"></a>00057 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a9cb8af593289d910a1f8ec8a9c8d880f">isSigButton</a>(sig, l)) <a class="code" href="structsigvisitor.html#a5393fe86c1b686f17c7256f4a3b89753">visitButton</a>(sig, l); <a name="l00058"></a>00058 <a name="l00059"></a>00059 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a48996c1ce74258d499baae3d267078bc">isSigCheckbox</a>(sig, l)) <a class="code" href="structsigvisitor.html#a645a63b1543818da300b7b2dbaacae6e">visitCheckbox</a>(sig, l); <a name="l00060"></a>00060 <a name="l00061"></a>00061 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aac990f39e6a1d50e8e1de3b6f7701cfe">isSigVSlider</a>(sig, l, cur, min, max, step)) <a class="code" href="structsigvisitor.html#a79f1a0f22dc7982011e1b49535488dd0">visitVSlider</a>(sig, l, cur, min, max, step); <a name="l00062"></a>00062 <a name="l00063"></a>00063 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aaa72c718314a1ba2cee25a95c153e37d">isSigHSlider</a>(sig, l, cur, min, max, step)) <a class="code" href="structsigvisitor.html#a3145a8fd683b1ee1bb8d4ad9aaf51359">visitHSlider</a>(sig, l, cur, min, max, step); <a name="l00064"></a>00064 <a name="l00065"></a>00065 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aa8476971aba67dfc3af7b5d11f974ef3">isSigNumEntry</a>(sig, l, cur, min, max, step)) <a class="code" href="structsigvisitor.html#ad6b8c9cd90be33506b2c660f6c4c4281">visitNumEntry</a>(sig, l, cur, min, max, step); <a name="l00066"></a>00066 <a name="l00067"></a>00067 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a5acf9dd03d1d0032e9486867876f1806">isSigHBargraph</a>(sig, l, min, max, s1)) <a class="code" href="structsigvisitor.html#a6f534505c8ffbe0e265e2f261ba4828d">visitHBargraph</a>(sig, l, min, max, s1); <a name="l00068"></a>00068 <a name="l00069"></a>00069 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a667a345cf4efcba00fce5a06bc1e8299">isSigVBargraph</a>(sig, l, min, max, s1)) <a class="code" href="structsigvisitor.html#aa419fcb5455b7b475d832f0121d1739c">visitVBargraph</a>(sig, l, min, max, s1); <a name="l00070"></a>00070 <a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#ad717966fe25735c5cf799e04338192b4">isSigAttach</a>(sig, s1, s2)) <a class="code" href="structsigvisitor.html#ab2ded0ae050400dc8a39ad3063c9b573">visitAttach</a>(sig, s1, s2); <a name="l00072"></a>00072 <a name="l00073"></a>00073 <a name="l00074"></a>00074 <span class="comment">//------------------------</span> <a name="l00075"></a>00075 <a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="recursive-tree_8cpp.html#a4cb44c6e41e21da830e748dc35f16ba5" title="is t a de Bruijn recursive tree">isRec</a>(sig, var, body)) <a class="code" href="structsigvisitor.html#ae452e6d231ad53d55be479c1ed6e0cf7">visitRec</a>(sig, var, body); <a name="l00077"></a>00077 <a name="l00078"></a>00078 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="recursive-tree_8cpp.html#a3a07093d0e487cc733adab39f6a18e78" title="is t a de Bruijn recursive reference">isRef</a>(sig, var)) <a class="code" href="structsigvisitor.html#a9cdc656655e61e3a1b57364c1419419e">visitRef</a>(sig, var); <a name="l00079"></a>00079 <a name="l00080"></a>00080 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a9b54e9177bb3726e06700649c3e5c05d">isProj</a>(sig, &i, s1)) <a class="code" href="structsigvisitor.html#a8e0729bfaabddd0090496c8cb26b688d">visitProj</a>(sig, i, s1); <a name="l00081"></a>00081 <a name="l00082"></a>00082 <a name="l00083"></a>00083 <span class="comment">//---------------------------- </span> <a name="l00084"></a>00084 <a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aa9b2ad7a65566fbc382d60e315b42740">isSigTable</a>(sig, <span class="keywordtype">id</span>, s1, s2)) <a class="code" href="structsigvisitor.html#aa0ba5afc0e71aaf65d809f28f819345b">visitTable</a>(sig, <span class="keywordtype">id</span>, s1, s2); <a name="l00086"></a>00086 <a name="l00087"></a>00087 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#ab5b22110acbd38b7d4634dc94bcc8d22">isSigWRTbl</a>(sig, <span class="keywordtype">id</span>, s1, s2, s3)) <a class="code" href="structsigvisitor.html#a04769557c2cbdd21bbf9abe8730b2a1f">visitWRTbl</a>(sig, <span class="keywordtype">id</span>, s1, s2, s3); <a name="l00088"></a>00088 <a name="l00089"></a>00089 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a9d9cbd375c200fa4e666de6ffb72dbca">isSigRDTbl</a>(sig, s1, s2)) <a class="code" href="structsigvisitor.html#a67e561b3758930e4bc688f7a2000e6f0">visitRDTbl</a>(sig, s1, s2); <a name="l00090"></a>00090 <a name="l00091"></a>00091 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a771720237ca174a55a6823cc6623d602">isSigGen</a>(sig, s1)) <a class="code" href="structsigvisitor.html#adeea315ec353094d589ca07682282544">visitGen</a>(sig, s1); <a name="l00092"></a>00092 <a name="l00093"></a>00093 <a name="l00094"></a>00094 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a95620993ef284f3e29f20ebcc3b0a08e">isSigDocConstantTbl</a>(sig, s1, s2)) <a class="code" href="structsigvisitor.html#a70d60f48dff24629487b2fb3d68005ef">visitDocConstantTbl</a>(sig, s1, s2); <a name="l00095"></a>00095 <a name="l00096"></a>00096 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a4d843f58a403cb0802c2255489977396">isSigDocWriteTbl</a>(sig,s1,s2,s3,s4)) <a class="code" href="structsigvisitor.html#aff660a94f9a4cb225887b10b0b6523c6">visitDocWriteTbl</a>(sig,s1,s2,s3,s4); <a name="l00097"></a>00097 <a name="l00098"></a>00098 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aec3b01f2f3ae693b4422142a22e4d0af">isSigDocAccessTbl</a>(sig,s1,s2)) <a class="code" href="structsigvisitor.html#a64731dfc49be95de9db01ed1dc85a3e8">visitDocAccessTbl</a>(sig,s1,s2); <a name="l00099"></a>00099 <a name="l00100"></a>00100 <a name="l00101"></a>00101 <span class="comment">//---------------------------- </span> <a name="l00102"></a>00102 <a name="l00103"></a>00103 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a55f14d5c4b5bc07285840f93d380b422">isSigSelect2</a>(sig,sel,s1,s2)) <a class="code" href="structsigvisitor.html#a892e623e80522d797585075dcedd999f">visitSelect2</a>(sig,sel,s1,s2); <a name="l00104"></a>00104 <a name="l00105"></a>00105 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a33cf5ac61f2ad8244394ce1e59914bbc">isSigSelect3</a>(sig,sel,s1,s2,s3)) <a class="code" href="structsigvisitor.html#adeb2c40a7f6738f348b885348bda4818">visitSelect3</a>(sig,sel,s1,s2,s3); <a name="l00106"></a>00106 <a name="l00107"></a>00107 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="list_8hh.html#a8bdd73641276e0c0f999f504348eacc1">isList</a>(sig)) <a class="code" href="structsigvisitor.html#ad6e74a087a0c50fd26cdd39afb277837">visitList</a>(sig); <a name="l00108"></a>00108 <a name="l00109"></a>00109 <a name="l00110"></a>00110 <span class="comment">//---------------------------- </span> <a name="l00111"></a>00111 <a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#aa37973cfd2efa2c2db82019f10913b87">isSigTuple</a>(sig,&i,ls)) <a class="code" href="structsigvisitor.html#adbd303dc6bf1833c9e649a4a522c1a30">visitTuple</a>(sig,i,ls); <a name="l00113"></a>00113 <a name="l00114"></a>00114 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="signals_8cpp.html#a4b67af5515833346e41767d5726f5be4">isSigTupleAccess</a>(sig,s1,s2)) <a class="code" href="structsigvisitor.html#aa5ae3ee839cb14716967eaeb5cdfecd4">visitTupleAccess</a>(sig,s1,s2); <a name="l00115"></a>00115 <a name="l00116"></a>00116 <a name="l00117"></a>00117 <span class="comment">//---------------------------- </span> <a name="l00118"></a>00118 <a name="l00119"></a>00119 <span class="keywordflow">else</span> <a class="code" href="structsigvisitor.html#a7f5fd73dab16b2d8ecbab7b08699c69e">visitError</a>(sig); <a name="l00120"></a>00120 } <a name="l00121"></a>00121 <a name="l00122"></a><a class="code" href="structsigvisitor.html#a7f5fd73dab16b2d8ecbab7b08699c69e">00122</a> <span class="keywordtype">void</span> <a class="code" href="structsigvisitor.html#a7f5fd73dab16b2d8ecbab7b08699c69e">sigvisitor::visitError</a>(<a class="code" href="classCTree.html" title="A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches...">Tree</a> sig) <a name="l00123"></a>00123 { <a name="l00124"></a>00124 cerr << <span class="stringliteral">"ERROR visiting signal"</span> << endl; <a name="l00125"></a>00125 } </pre></div></div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 28 23:59:59 2010 for FAUST compiler by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>