signals.cpp File Reference

#include "signals.hh"
Include dependency graph for signals.cpp:

Go to the source code of this file.

Functions

Tree sigInt (int i)
 Signals.
bool isSigInt (Tree t, int *i)
Tree sigReal (double r)
bool isSigReal (Tree t, double *r)
Tree sigInput (int i)
bool isSigInput (Tree t, int *i)
Tree sigOutput (int i, Tree t0)
bool isSigOutput (Tree t, int *i, Tree &t0)
Tree sigDelay0 (Tree t0)
Tree sigDelay1 (Tree t0)
bool isSigDelay1 (Tree t, Tree &t0)
Tree sigFixDelay (Tree t0, Tree t1)
bool isSigFixDelay (Tree t, Tree &t0, Tree &t1)
Tree sigPrefix (Tree t0, Tree t1)
bool isSigPrefix (Tree t, Tree &t0, Tree &t1)
Tree sigIota (Tree t0)
bool isSigIota (Tree t, Tree &t0)
Tree sigRDTbl (Tree t, Tree i)
bool isSigRDTbl (Tree s, Tree &t, Tree &i)
Tree sigWRTbl (Tree id, Tree t, Tree i, Tree s)
bool isSigWRTbl (Tree u, Tree &id, Tree &t, Tree &i, Tree &s)
Tree sigTable (Tree id, Tree n, Tree sig)
bool isSigTable (Tree t, Tree &id, Tree &n, Tree &sig)
Tree sigGen (Tree s)
bool isSigGen (Tree t, Tree &x)
bool isSigGen (Tree t)
Tree sigDocConstantTbl (Tree n, Tree sig)
bool isSigDocConstantTbl (Tree t, Tree &n, Tree &sig)
Tree sigDocWriteTbl (Tree n, Tree sig, Tree widx, Tree wsig)
bool isSigDocWriteTbl (Tree t, Tree &n, Tree &sig, Tree &widx, Tree &wsig)
Tree sigDocAccessTbl (Tree tbl, Tree ridx)
bool isSigDocAccessTbl (Tree t, Tree &tbl, Tree &ridx)
Tree sigSelect2 (Tree selector, Tree s1, Tree s2)
bool isSigSelect2 (Tree t, Tree &selector, Tree &s1, Tree &s2)
Tree sigSelect3 (Tree selector, Tree s1, Tree s2, Tree s3)
bool isSigSelect3 (Tree t, Tree &selector, Tree &s1, Tree &s2, Tree &s3)
Tree sigBinOp (int op, Tree x, Tree y)
bool isSigBinOp (Tree s, int *op, Tree &x, Tree &y)
Tree sigFFun (Tree ff, Tree largs)
bool isSigFFun (Tree s, Tree &ff, Tree &largs)
Tree sigFConst (Tree type, Tree name, Tree file)
bool isSigFConst (Tree s)
bool isSigFConst (Tree s, Tree &type, Tree &name, Tree &file)
Tree sigFVar (Tree type, Tree name, Tree file)
bool isSigFVar (Tree s)
bool isSigFVar (Tree s, Tree &type, Tree &name, Tree &file)
Tree sigProj (int i, Tree rgroup)
bool isProj (Tree t, int *i, Tree &rgroup)
Tree sigIntCast (Tree t)
Tree sigFloatCast (Tree t)
bool isSigIntCast (Tree t)
bool isSigIntCast (Tree t, Tree &x)
bool isSigFloatCast (Tree t)
bool isSigFloatCast (Tree t, Tree &x)
Tree sigButton (Tree lbl)
bool isSigButton (Tree s)
bool isSigButton (Tree s, Tree &lbl)
Tree sigCheckbox (Tree lbl)
bool isSigCheckbox (Tree s)
bool isSigCheckbox (Tree s, Tree &lbl)
Tree sigHSlider (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isSigHSlider (Tree s)
bool isSigHSlider (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree sigVSlider (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isSigVSlider (Tree s)
bool isSigVSlider (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree sigNumEntry (Tree lbl, Tree cur, Tree min, Tree max, Tree step)
bool isSigNumEntry (Tree s)
bool isSigNumEntry (Tree s, Tree &lbl, Tree &cur, Tree &min, Tree &max, Tree &step)
Tree sigHBargraph (Tree lbl, Tree min, Tree max, Tree x)
bool isSigHBargraph (Tree s)
bool isSigHBargraph (Tree s, Tree &lbl, Tree &min, Tree &max, Tree &x)
Tree sigVBargraph (Tree lbl, Tree min, Tree max, Tree x)
bool isSigVBargraph (Tree s)
bool isSigVBargraph (Tree s, Tree &lbl, Tree &min, Tree &max, Tree &x)
Tree sigAttach (Tree t0, Tree t1)
bool isSigAttach (Tree t, Tree &t0, Tree &t1)
Tree addNums (Tree a, Tree b)
Tree subNums (Tree a, Tree b)
Tree mulNums (Tree a, Tree b)
Tree divNums (Tree a, Tree b)
Tree divExtendedNums (Tree a, Tree b)
Tree minusNum (Tree a)
Tree inverseNum (Tree a)
bool isSigAdd (Tree a, Tree &x, Tree &y)
bool isSigMul (Tree a, Tree &x, Tree &y)
bool isSigSub (Tree a, Tree &x, Tree &y)
bool isSigDiv (Tree a, Tree &x, Tree &y)
Tree sigTuple (int mode, Tree ls)
bool isSigTuple (Tree s, int *mode, Tree &ls)
Tree sigTupleAccess (Tree ts, Tree idx)
bool isSigTupleAccess (Tree s, Tree &ts, Tree &idx)
Tree sigCartesianProd (Tree s1, Tree s2)
bool verySimple (Tree exp)
 Test if exp is very simple that is it can't be considered a real component.

Variables

Sym SIGINPUT = symbol ("sigInput")
Sym SIGOUTPUT = symbol ("sigOutput")
Sym SIGDELAY1 = symbol ("sigDelay1")
Sym SIGFIXDELAY = symbol ("sigFixDelay")
Sym SIGPREFIX = symbol ("sigPrefix")
Sym SIGIOTA = symbol ("sigIota")
Sym SIGRDTBL = symbol ("SigRDTbl")
Sym SIGWRTBL = symbol ("SigWRTbl")
Sym SIGTABLE = symbol ("SigTable")
Sym SIGGEN = symbol ("SigGen")
Sym SIGDOCONSTANTTBL = symbol ("SigDocConstantTbl")
Sym SIGDOCWRITETBL = symbol ("SigDocWriteTbl")
Sym SIGDOCACCESSTBL = symbol ("SigDocAccessTbl")
Sym SIGSELECT2 = symbol ("SigSelect2")
Sym SIGSELECT3 = symbol ("SigSelect3")
Sym SIGBINOP = symbol ("SigBinOp")
Sym SIGFFUN = symbol ("SigFFun")
Sym SIGFCONST = symbol ("SigFConst")
Sym SIGFVAR = symbol ("SigFVar")
Sym SIGPROJ = symbol ("SigProj")
Sym SIGINTCAST = symbol ("sigIntCast")
Sym SIGFLOATCAST = symbol ("sigFloatCast")
Sym SIGBUTTON = symbol ("SigButton")
Sym SIGCHECKBOX = symbol ("SigCheckbox")
Sym SIGHSLIDER = symbol ("SigHSlider")
Sym SIGVSLIDER = symbol ("SigVSlider")
Sym SIGNUMENTRY = symbol ("SigNumEntry")
Sym SIGHBARGRAPH = symbol ("SigHBargraph")
Sym SIGVBARGRAPH = symbol ("SigVBargraph")
Sym SIGATTACH = symbol ("sigAttach")
Sym SIGTUPLE = symbol ("SigTuple")
Sym SIGTUPLEACCESS = symbol ("SigTupleAccess")

Function Documentation

Tree addNums ( Tree  a,
Tree  b 
)

Definition at line 290 of file signals.cpp.

References addNode(), CTree::node(), and tree().

Referenced by mterm::operator+=(), and simplifyingAdd().

00291 {
00292     Tree r = tree(addNode(a->node(),b->node()));
00293     //cerr.flags(ios::showpoint); cerr << "addNums " << *a << "+" << *b << " -> " << *r << endl;
00294     return r;
00295 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree divExtendedNums ( Tree  a,
Tree  b 
)

Definition at line 318 of file signals.cpp.

References divExtendedNode(), CTree::node(), and tree().

Referenced by mterm::operator/=().

00319 {
00320     Tree r = tree(divExtendedNode(a->node(),b->node()));
00321     //cerr.flags(ios::showpoint); cerr << "divExtendeNums " << *a << "/" << *b << " -> " << *r << endl;
00322     return r;
00323 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree divNums ( Tree  a,
Tree  b 
)

Definition at line 311 of file signals.cpp.

References divNode(), CTree::node(), and tree().

00312 {
00313     Tree r = tree(divNode(a->node(),b->node()));
00314     //cerr.flags(ios::showpoint); cerr << "divNums " << *a << "/" << *b << " -> " << *r << endl;
00315     return r;
00316 }

Here is the call graph for this function:

Tree inverseNum ( Tree  a  ) 

Definition at line 332 of file signals.cpp.

References inverseNode(), CTree::node(), and tree().

00333 {
00334     Tree r = tree(inverseNode(a->node()));
00335     //cerr.flags(ios::showpoint); cerr << "inverseNum " << *a << " -> " << *r << endl;
00336     return r;
00337 }

Here is the call graph for this function:

bool isProj ( Tree  t,
int *  i,
Tree rgroup 
)

Definition at line 151 of file signals.cpp.

References isInt(), isTree(), and CTree::node().

Referenced by VectorCompiler::CS(), DocCompiler::generateCode(), VectorCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), VectorCompiler::needSeparateLoop(), normalizeFixedDelayTerm(), ppsig::print(), printSignal(), and sigvisitor::visit().

00151 { Tree x; return isTree(t, SIGPROJ, x, rgroup) && isInt(x->node(), i);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigAdd ( Tree  a,
Tree x,
Tree y 
)

Definition at line 339 of file signals.cpp.

References isSigBinOp(), and kAdd.

00340 {
00341     int op;
00342     return isSigBinOp(a, &op, x, y) && (op == kAdd);
00343 }

Here is the call graph for this function:

bool isSigAttach ( Tree  t,
Tree t0,
Tree t1 
)

Definition at line 286 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00286 { return isTree(t, SIGATTACH, t0, t1);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigBinOp ( Tree  s,
int *  op,
Tree x,
Tree y 
)

Definition at line 126 of file signals.cpp.

References isInt(), isTree(), and CTree::node().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), isSigAdd(), isSigDiv(), isSigMul(), isSigSub(), mterm::operator*=(), aterm::operator+=(), aterm::operator-=(), mterm::operator/=(), ppsig::print(), printSignal(), simplification(), and sigvisitor::visit().

00126 { Tree t; return isTree(s, SIGBINOP, t, x, y) && isInt(t->node(),op); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigButton ( Tree  s,
Tree lbl 
)

Definition at line 200 of file signals.cpp.

References isTree().

00200 { return isTree(s, SIGBUTTON, lbl);             }

Here is the call graph for this function:

bool isSigButton ( Tree  s  ) 

Definition at line 199 of file signals.cpp.

References isTree().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), and sigvisitor::visit().

00199 { Tree lbl; return isTree(s, SIGBUTTON, lbl);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigCheckbox ( Tree  s,
Tree lbl 
)

Definition at line 206 of file signals.cpp.

References isTree().

00206 { return isTree(s, SIGCHECKBOX, lbl);               }

Here is the call graph for this function:

bool isSigCheckbox ( Tree  s  ) 

Definition at line 205 of file signals.cpp.

References isTree().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), and sigvisitor::visit().

00205 { Tree lbl; return isTree(s, SIGCHECKBOX, lbl); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigDelay1 ( Tree  t,
Tree t0 
)

Definition at line 58 of file signals.cpp.

References isTree().

Referenced by getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), simplification(), and sigvisitor::visit().

00058 { return isTree(t, SIGDELAY1, t0);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigDiv ( Tree  a,
Tree x,
Tree y 
)

Definition at line 357 of file signals.cpp.

References isSigBinOp(), and kDiv.

Referenced by normalizeFixedDelayTerm().

00358 {
00359     int op;
00360     return isSigBinOp(a, &op, x, y) && (op == kDiv);
00361 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigDocAccessTbl ( Tree  t,
Tree tbl,
Tree ridx 
)

Definition at line 107 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00107 { return isTree(t, SIGDOCACCESSTBL, tbl, ridx);     }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigDocConstantTbl ( Tree  t,
Tree n,
Tree sig 
)

Definition at line 99 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00099 { return isTree(t, SIGDOCONSTANTTBL, n, sig);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigDocWriteTbl ( Tree  t,
Tree n,
Tree sig,
Tree widx,
Tree wsig 
)

Definition at line 103 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00103 { return isTree(t, SIGDOCWRITETBL, n, sig, widx, wsig);     }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigFConst ( Tree  s,
Tree type,
Tree name,
Tree file 
)

Definition at line 139 of file signals.cpp.

References isTree().

00139 { return isTree(s, SIGFCONST,type, name, file);     }

Here is the call graph for this function:

bool isSigFConst ( Tree  s  ) 

Definition at line 138 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), verySimple(), and sigvisitor::visit().

00138 { Tree t,n,f; return isTree(s, SIGFCONST, t, n, f); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigFFun ( Tree  s,
Tree ff,
Tree largs 
)

Definition at line 133 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00133 { return isTree(s, SIGFFUN, ff, largs);     }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigFixDelay ( Tree  t,
Tree t0,
Tree t1 
)

Definition at line 62 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), OccMarkup::incOcc(), infereSigOrder(), infereSigType(), VectorCompiler::needSeparateLoop(), normalizeFixedDelayTerm(), ppsig::print(), printSignal(), setSigNickname(), simplification(), and sigvisitor::visit().

00062 { return isTree(t, SIGFIXDELAY, t0, t1);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigFloatCast ( Tree  t,
Tree x 
)

Definition at line 188 of file signals.cpp.

References isTree().

00188 { return isTree(t, SIGFLOATCAST, x);        }

Here is the call graph for this function:

bool isSigFloatCast ( Tree  t  ) 

Definition at line 187 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), sigFloatCast(), simplification(), and sigvisitor::visit().

00187 { Tree x; return isTree(t, SIGFLOATCAST, x);}

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigFVar ( Tree  s,
Tree type,
Tree name,
Tree file 
)

Definition at line 145 of file signals.cpp.

References isTree().

00145 { return isTree(s, SIGFVAR, type, name, file);      }

Here is the call graph for this function:

bool isSigFVar ( Tree  s  ) 

Definition at line 144 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00144 { Tree t,n,f; return isTree(s, SIGFVAR, t, n, f);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigGen ( Tree  t  ) 

Definition at line 92 of file signals.cpp.

References CTree::node().

00092 { return t->node()== Node(SIGGEN);  }

Here is the call graph for this function:

bool isSigGen ( Tree  t,
Tree x 
)
bool isSigHBargraph ( Tree  s,
Tree lbl,
Tree min,
Tree max,
Tree x 
)

Definition at line 275 of file signals.cpp.

References isTree().

00275 { return isTree(s, SIGHBARGRAPH, lbl, min, max, x); }

Here is the call graph for this function:

bool isSigHBargraph ( Tree  s  ) 

Definition at line 274 of file signals.cpp.

References isTree(), max(), and min().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00274 { Tree lbl, min, max, x; return isTree(s, SIGHBARGRAPH, lbl, min, max, x);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigHSlider ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 214 of file signals.cpp.

References isTree(), and nth().

00215 {
00216     Tree params;
00217     if (isTree(s, SIGHSLIDER, lbl, params)) {
00218         cur = nth(params, 0);
00219         min = nth(params, 1);
00220         max = nth(params, 2);
00221         step= nth(params, 3);
00222         return true;
00223     } else {
00224         return false;
00225     }
00226 }

Here is the call graph for this function:

bool isSigHSlider ( Tree  s  ) 

Definition at line 212 of file signals.cpp.

References isTree().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), and sigvisitor::visit().

00212 { Tree lbl, params; return isTree(s, SIGHSLIDER, lbl, params);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigInput ( Tree  t,
int *  i 
)

Definition at line 48 of file signals.cpp.

References isInt(), isTree(), and CTree::node().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), printSignal(), sigFloatCast(), verySimple(), and sigvisitor::visit().

00048 { Tree x; return isTree(t, SIGINPUT, x) && isInt(x->node(),i);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigInt ( Tree  t,
int *  i 
)
bool isSigIntCast ( Tree  t,
Tree x 
)

Definition at line 185 of file signals.cpp.

References isTree().

00185 { return isTree(t, SIGINTCAST, x);          }

Here is the call graph for this function:

bool isSigIntCast ( Tree  t  ) 

Definition at line 184 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), sigIntCast(), simplification(), and sigvisitor::visit().

00184 { Tree x; return isTree(t, SIGINTCAST, x);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigIota ( Tree  t,
Tree t0 
)

Definition at line 70 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), and ppsig::print().

00070 { return isTree(t, SIGIOTA, t0);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigMul ( Tree  a,
Tree x,
Tree y 
)

Definition at line 345 of file signals.cpp.

References isSigBinOp(), and kMul.

Referenced by normalizeFixedDelayTerm().

00346 {
00347     int op;
00348     return isSigBinOp(a, &op, x, y) && (op == kMul);
00349 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigNumEntry ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 254 of file signals.cpp.

References isTree(), and nth().

00255 {
00256     Tree params;
00257     if (isTree(s, SIGNUMENTRY, lbl, params)) {
00258         cur = nth(params, 0);
00259         min = nth(params, 1);
00260         max = nth(params, 2);
00261         step= nth(params, 3);
00262         return true;
00263     } else {
00264         return false;
00265     }
00266 }

Here is the call graph for this function:

bool isSigNumEntry ( Tree  s  ) 

Definition at line 252 of file signals.cpp.

References isTree().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), and sigvisitor::visit().

00252 { Tree lbl, params; return isTree(s, SIGNUMENTRY, lbl, params); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigOutput ( Tree  t,
int *  i,
Tree t0 
)

Definition at line 52 of file signals.cpp.

References isInt(), isTree(), and CTree::node().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00052 { Tree x; return isTree(t, SIGOUTPUT, x, t0) && isInt(x->node(),i);     }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigPrefix ( Tree  t,
Tree t0,
Tree t1 
)

Definition at line 66 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), OccMarkup::incOcc(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00066 { return isTree(t, SIGPREFIX, t0, t1);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigRDTbl ( Tree  s,
Tree t,
Tree i 
)

Definition at line 77 of file signals.cpp.

References isTree().

Referenced by docTableConverter(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), printSignal(), and sigvisitor::visit().

00077 { return isTree(s, SIGRDTBL, t, i);     }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigReal ( Tree  t,
double *  r 
)

Definition at line 44 of file signals.cpp.

References isDouble(), and CTree::node().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), isBoxNumeric(), isVerySimpleFormula(), ppsig::print(), printSignal(), replaceBoxNumeric(), verySimple(), and sigvisitor::visit().

00044 { return isDouble(t->node(), r);    }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigSelect2 ( Tree  t,
Tree selector,
Tree s1,
Tree s2 
)

Definition at line 116 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00116 { return isTree(t, SIGSELECT2, selector, s1, s2); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigSelect3 ( Tree  t,
Tree selector,
Tree s1,
Tree s2,
Tree s3 
)

Definition at line 119 of file signals.cpp.

References isTree().

Referenced by DocCompiler::generateCode(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00119 { return isTree(t, SIGSELECT3, selector, s1, s2, s3); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigSub ( Tree  a,
Tree x,
Tree y 
)

Definition at line 351 of file signals.cpp.

References isSigBinOp(), and kSub.

00352 {
00353     int op;
00354     return isSigBinOp(a, &op, x, y) && (op == kSub);
00355 }

Here is the call graph for this function:

bool isSigTable ( Tree  t,
Tree id,
Tree n,
Tree sig 
)

Definition at line 85 of file signals.cpp.

References isTree().

Referenced by computePrivatisation(), docTableConverter(), ScalarCompiler::generateCode(), ScalarCompiler::generateRDTbl(), getSubSignals(), infereSigOrder(), infereSigType(), labelize(), ppsig::print(), printSignal(), and sigvisitor::visit().

00085 { return isTree(t, SIGTABLE, id, n, sig);   }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigTuple ( Tree  s,
int *  mode,
Tree ls 
)

Definition at line 375 of file signals.cpp.

References isInt(), isTree(), and CTree::node().

Referenced by sigCartesianProd(), and sigvisitor::visit().

00375 { Tree m; return isTree(s, SIGTUPLE, m, ls) && isInt(m->node(), mode); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigTupleAccess ( Tree  s,
Tree ts,
Tree idx 
)

Definition at line 380 of file signals.cpp.

References isTree().

Referenced by sigvisitor::visit().

00380 { return isTree(s, SIGTUPLEACCESS, ts, idx); }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigVBargraph ( Tree  s,
Tree lbl,
Tree min,
Tree max,
Tree x 
)

Definition at line 281 of file signals.cpp.

References isTree().

00281 { return isTree(s, SIGVBARGRAPH, lbl, min, max, x); }

Here is the call graph for this function:

bool isSigVBargraph ( Tree  s  ) 

Definition at line 280 of file signals.cpp.

References isTree(), max(), and min().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), ppsig::print(), and sigvisitor::visit().

00280 { Tree lbl, min, max, x; return isTree(s, SIGVBARGRAPH, lbl, min, max, x);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigVSlider ( Tree  s,
Tree lbl,
Tree cur,
Tree min,
Tree max,
Tree step 
)

Definition at line 234 of file signals.cpp.

References isTree(), and nth().

00235 {
00236     Tree params;
00237     if (isTree(s, SIGVSLIDER, lbl, params)) {
00238         cur = nth(params, 0);
00239         min = nth(params, 1);
00240         max = nth(params, 2);
00241         step= nth(params, 3);
00242         return true;
00243     } else {
00244         return false;
00245     }
00246 }

Here is the call graph for this function:

bool isSigVSlider ( Tree  s  ) 

Definition at line 232 of file signals.cpp.

References isTree().

Referenced by Description::addWidget(), DocCompiler::generateCode(), ScalarCompiler::generateCode(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), getSubSignals(), infereSigOrder(), infereSigType(), isVerySimpleFormula(), ppsig::print(), and sigvisitor::visit().

00232 { Tree lbl, params; return isTree(s, SIGVSLIDER, lbl, params);  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isSigWRTbl ( Tree  u,
Tree id,
Tree t,
Tree i,
Tree s 
)

Definition at line 81 of file signals.cpp.

References isTree().

Referenced by computePrivatisation(), docTableConverter(), ScalarCompiler::generateCode(), getSubSignals(), infereSigOrder(), infereSigType(), labelize(), ppsig::print(), printSignal(), and sigvisitor::visit().

00081 { return isTree(u, SIGWRTBL, id, t, i, s);  }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree minusNum ( Tree  a  ) 

Definition at line 325 of file signals.cpp.

References minusNode(), CTree::node(), and tree().

Referenced by mterm::normalizedTree(), and mterm::operator-=().

00326 {
00327     Tree r = tree(minusNode(a->node()));
00328     //cerr.flags(ios::showpoint); cerr << "minusNum " << *a << " -> " << *r << endl;
00329     return r;
00330 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree mulNums ( Tree  a,
Tree  b 
)

Definition at line 304 of file signals.cpp.

References mulNode(), CTree::node(), and tree().

Referenced by mterm::operator*=().

00305 {
00306     Tree r = tree(mulNode(a->node(),b->node()));
00307     //cerr.flags(ios::showpoint); cerr << "mulNums " << *a << "*" << *b << " -> " << *r << endl;
00308     return r;
00309 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigAttach ( Tree  t0,
Tree  t1 
)

Definition at line 285 of file signals.cpp.

References tree().

Referenced by prim2name(), and yyparse().

00285 { return tree(SIGATTACH, t0, t1);       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigBinOp ( int  op,
Tree  x,
Tree  y 
)

Definition at line 125 of file signals.cpp.

References tree().

Referenced by sigAdd(), sigAND(), sigDiv(), sigEQ(), sigGE(), sigGT(), sigLE(), sigLeftShift(), sigLT(), sigMul(), sigNE(), sigOR(), sigRem(), sigRightShift(), sigSub(), and sigXOR().

00125 { return tree(SIGBINOP, tree(op), x, y); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigButton ( Tree  lbl  ) 

Definition at line 198 of file signals.cpp.

References tree().

Referenced by propagate().

00198 { return tree(SIGBUTTON, lbl);                  }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigCartesianProd ( Tree  s1,
Tree  s2 
)

Definition at line 383 of file signals.cpp.

References concat(), isSigTuple(), list1(), and sigTuple().

00384 {
00385     Tree    l1, l2;
00386     int     m1, m2;
00387 
00388     if (isSigTuple(s1, &m1, l1) && (m1 == 0)) {
00389         // nothing to do
00390     } else {
00391         l1 = list1(s1);
00392     }
00393 
00394     if (isSigTuple(s2, &m2, l2) && (m2 == 0)) {
00395         // nothing to do
00396     } else {
00397         l2 = list1(s2);
00398     }
00399 
00400 
00401     return sigTuple(0, concat(l1,l2));
00402 }

Here is the call graph for this function:

Tree sigCheckbox ( Tree  lbl  ) 

Definition at line 204 of file signals.cpp.

References tree().

Referenced by propagate().

00204 { return tree(SIGCHECKBOX, lbl);                    }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigDelay0 ( Tree  t0  ) 

Definition at line 55 of file signals.cpp.

References sigFixDelay(), and sigInt().

Referenced by makeSigProjList().

00055 { return sigFixDelay(t0, sigInt(0));}

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigDelay1 ( Tree  t0  ) 

Definition at line 57 of file signals.cpp.

References tree().

Referenced by makeMemSigProjList(), prim1name(), and yyparse().

00057 { return tree(SIGDELAY1, t0);       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigDocAccessTbl ( Tree  tbl,
Tree  ridx 
)

Definition at line 106 of file signals.cpp.

References tree().

Referenced by docTableConverter().

00106 { return tree(SIGDOCACCESSTBL, tbl, ridx);      }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigDocConstantTbl ( Tree  n,
Tree  sig 
)

Definition at line 98 of file signals.cpp.

References tree().

Referenced by docTableConverter().

00098 { return tree(SIGDOCONSTANTTBL, n, sig);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigDocWriteTbl ( Tree  n,
Tree  sig,
Tree  widx,
Tree  wsig 
)

Definition at line 102 of file signals.cpp.

References tree().

Referenced by docTableConverter().

00102 { return tree(SIGDOCWRITETBL, n, sig, widx, wsig);      }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigFConst ( Tree  type,
Tree  name,
Tree  file 
)

Definition at line 137 of file signals.cpp.

References tree().

Referenced by propagate().

00137 { return tree(SIGFCONST, type, name, file);         }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigFFun ( Tree  ff,
Tree  largs 
)

Definition at line 132 of file signals.cpp.

References tree().

Referenced by propagate().

00132 { return tree(SIGFFUN, ff, largs);          }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigFixDelay ( Tree  t0,
Tree  t1 
)

Definition at line 61 of file signals.cpp.

References sigIntCast(), and tree().

Referenced by normalizeFixedDelayTerm(), prim2name(), sigDelay0(), and yyparse().

00061 { return tree(SIGFIXDELAY, t0, sigIntCast(t1));         }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigFloatCast ( Tree  t  ) 

Definition at line 170 of file signals.cpp.

References isDouble(), isInt(), isSigFloatCast(), isSigInput(), CTree::node(), and tree().

Referenced by prim1name(), and yyparse().

00171 { 
00172     Node n = t->node();
00173     
00174     int i;      if (isInt(n, &i))           return tree(double(i)); 
00175     double x;   if (isDouble(n, &x))        return t;
00176                 if (isSigFloatCast(t))      return t;
00177                 if (isSigInput(t, &i))      return t;
00178      
00179     return tree(SIGFLOATCAST, t);   
00180 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigFVar ( Tree  type,
Tree  name,
Tree  file 
)

Definition at line 143 of file signals.cpp.

References tree().

Referenced by propagate().

00143 { return tree(SIGFVAR, type, name, file);           }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigGen ( Tree  s  ) 

Definition at line 90 of file signals.cpp.

References tree().

Referenced by sigReadOnlyTable(), and sigWriteReadTable().

00090 { return tree(SIGGEN, s);       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigHBargraph ( Tree  lbl,
Tree  min,
Tree  max,
Tree  x 
)

Definition at line 273 of file signals.cpp.

References tree().

Referenced by propagate().

00273 { return tree(SIGHBARGRAPH, lbl, min, max, x);      }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigHSlider ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 210 of file signals.cpp.

References list4(), and tree().

Referenced by propagate().

00211                                             { return tree(SIGHSLIDER, lbl, list4(cur,min,max,step));        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigInput ( int  i  ) 

Definition at line 47 of file signals.cpp.

References tree().

Referenced by makeSigInputList(), and propagate().

00047 { return tree(SIGINPUT, tree(i));   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigInt ( int  i  ) 

Signals.

Signals Block-diagrams are converted into signal expressions via symbolic propagation.

Definition at line 40 of file signals.cpp.

References tree().

Referenced by mix(), propagate(), and sigDelay0().

00040 { return tree(i);                   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigIntCast ( Tree  t  ) 

Definition at line 159 of file signals.cpp.

References isDouble(), isInt(), isSigIntCast(), CTree::node(), and tree().

Referenced by prim1name(), sigFixDelay(), sigSelect2(), sigSelect3(), and yyparse().

00160 { 
00161     Node n = t->node();
00162     
00163     int i;      if (isInt(n, &i))           return t; 
00164     double x;   if (isDouble(n, &x))        return tree(int(x));
00165                 if (isSigIntCast(t))        return t;
00166      
00167     return tree(SIGINTCAST, t);   
00168 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigIota ( Tree  t0  ) 

Definition at line 69 of file signals.cpp.

References tree().

00069 { return tree(SIGIOTA, t0);         }

Here is the call graph for this function:

Tree sigNumEntry ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 250 of file signals.cpp.

References list4(), and tree().

Referenced by propagate().

00251                                             { return tree(SIGNUMENTRY, lbl, list4(cur,min,max,step));       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigOutput ( int  i,
Tree  t0 
)

Definition at line 51 of file signals.cpp.

References tree().

00051 { return tree(SIGOUTPUT, tree(i), t0);  }

Here is the call graph for this function:

Tree sigPrefix ( Tree  t0,
Tree  t1 
)

Definition at line 65 of file signals.cpp.

References tree().

Referenced by applyList(), prim2name(), and yyparse().

00065 { return tree(SIGPREFIX, t0, t1);       }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigProj ( int  i,
Tree  rgroup 
)

Definition at line 150 of file signals.cpp.

References tree().

Referenced by DocCompiler::generateRec(), ScalarCompiler::generateRec(), makeMemSigProjList(), and makeSigProjList().

00150 { return tree(SIGPROJ, tree(i), rgroup);    }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigRDTbl ( Tree  t,
Tree  i 
)

Definition at line 76 of file signals.cpp.

References tree().

Referenced by sigReadOnlyTable(), and sigWriteReadTable().

00076 { return tree(SIGRDTBL, t, i);  }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigReal ( double  r  ) 

Definition at line 43 of file signals.cpp.

References tree().

Referenced by propagate().

00043 { return tree(r);                   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigSelect2 ( Tree  selector,
Tree  s1,
Tree  s2 
)

Definition at line 115 of file signals.cpp.

References sigIntCast(), and tree().

Referenced by prim3name(), and yyparse().

00115 { return tree(SIGSELECT2, sigIntCast(selector), s1, s2); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigSelect3 ( Tree  selector,
Tree  s1,
Tree  s2,
Tree  s3 
)

Definition at line 118 of file signals.cpp.

References sigIntCast(), and tree().

Referenced by prim4name(), and yyparse().

00118 { return tree(SIGSELECT3, sigIntCast(selector), s1, s2, s3); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigTable ( Tree  id,
Tree  n,
Tree  sig 
)

Definition at line 84 of file signals.cpp.

References tree().

Referenced by labelize(), sigReadOnlyTable(), and sigWriteReadTable().

00084 { return tree(SIGTABLE, id, n, sig);        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigTuple ( int  mode,
Tree  ls 
)

Definition at line 374 of file signals.cpp.

References tree().

Referenced by sigCartesianProd().

00374 { return tree(SIGTUPLE, tree(mode), ls); }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigTupleAccess ( Tree  ts,
Tree  idx 
)

Definition at line 379 of file signals.cpp.

References tree().

00379 { return tree(SIGTUPLEACCESS, ts, idx); }

Here is the call graph for this function:

Tree sigVBargraph ( Tree  lbl,
Tree  min,
Tree  max,
Tree  x 
)

Definition at line 279 of file signals.cpp.

References tree().

Referenced by propagate().

00279 { return tree(SIGVBARGRAPH, lbl, min, max, x);      }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigVSlider ( Tree  lbl,
Tree  cur,
Tree  min,
Tree  max,
Tree  step 
)

Definition at line 230 of file signals.cpp.

References list4(), and tree().

Referenced by propagate().

00231                                             { return tree(SIGVSLIDER, lbl, list4(cur,min,max,step));        }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree sigWRTbl ( Tree  id,
Tree  t,
Tree  i,
Tree  s 
)

Definition at line 80 of file signals.cpp.

References tree().

Referenced by computePrivatisation(), labelize(), and sigWriteReadTable().

00080 { return tree(SIGWRTBL, id, t, i, s);   }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree subNums ( Tree  a,
Tree  b 
)

Definition at line 297 of file signals.cpp.

References CTree::node(), subNode(), and tree().

Referenced by mterm::operator-=().

00298 {
00299     Tree r = tree(subNode(a->node(),b->node()));
00300     //cerr.flags(ios::showpoint); cerr << "subNums " << *a << "-" << *b << " -> " << *r << endl;
00301     return r;
00302 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool verySimple ( Tree  exp  ) 

Test if exp is very simple that is it can't be considered a real component.

Parameters:
exp the signal we want to test
Returns:
true if it a very simple signal

Definition at line 412 of file signals.cpp.

References isSigFConst(), isSigInput(), isSigInt(), isSigReal(), and name().

Referenced by VectorCompiler::generateCacheCode(), VectorCompiler::generateDelayVec(), and VectorCompiler::needSeparateLoop().

00413 {
00414     int     i;
00415     double  r;
00416     Tree    type, name, file;
00417     
00418     return  isSigInt(exp, &i) 
00419             ||  isSigReal(exp, &r)
00420             ||  isSigInput(exp, &i)
00421             ||  isSigFConst(exp, type, name, file);
00422 }

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Sym SIGATTACH = symbol ("sigAttach")

Definition at line 284 of file signals.cpp.

Sym SIGBINOP = symbol ("SigBinOp")

Definition at line 124 of file signals.cpp.

Sym SIGBUTTON = symbol ("SigButton")

Definition at line 197 of file signals.cpp.

Sym SIGCHECKBOX = symbol ("SigCheckbox")

Definition at line 203 of file signals.cpp.

Sym SIGDELAY1 = symbol ("sigDelay1")

Definition at line 54 of file signals.cpp.

Sym SIGDOCACCESSTBL = symbol ("SigDocAccessTbl")

Definition at line 105 of file signals.cpp.

Sym SIGDOCONSTANTTBL = symbol ("SigDocConstantTbl")

Definition at line 97 of file signals.cpp.

Sym SIGDOCWRITETBL = symbol ("SigDocWriteTbl")

Definition at line 101 of file signals.cpp.

Sym SIGFCONST = symbol ("SigFConst")

Definition at line 136 of file signals.cpp.

Sym SIGFFUN = symbol ("SigFFun")

Definition at line 131 of file signals.cpp.

Sym SIGFIXDELAY = symbol ("sigFixDelay")

Definition at line 60 of file signals.cpp.

Sym SIGFLOATCAST = symbol ("sigFloatCast")

Definition at line 157 of file signals.cpp.

Sym SIGFVAR = symbol ("SigFVar")

Definition at line 142 of file signals.cpp.

Sym SIGGEN = symbol ("SigGen")

Definition at line 89 of file signals.cpp.

Sym SIGHBARGRAPH = symbol ("SigHBargraph")

Definition at line 272 of file signals.cpp.

Sym SIGHSLIDER = symbol ("SigHSlider")

Definition at line 209 of file signals.cpp.

Sym SIGINPUT = symbol ("sigInput")

Definition at line 46 of file signals.cpp.

Sym SIGINTCAST = symbol ("sigIntCast")

Definition at line 156 of file signals.cpp.

Sym SIGIOTA = symbol ("sigIota")

Definition at line 68 of file signals.cpp.

Sym SIGNUMENTRY = symbol ("SigNumEntry")

Definition at line 249 of file signals.cpp.

Sym SIGOUTPUT = symbol ("sigOutput")

Definition at line 50 of file signals.cpp.

Sym SIGPREFIX = symbol ("sigPrefix")

Definition at line 64 of file signals.cpp.

Sym SIGPROJ = symbol ("SigProj")

Definition at line 149 of file signals.cpp.

Sym SIGRDTBL = symbol ("SigRDTbl")

Definition at line 75 of file signals.cpp.

Sym SIGSELECT2 = symbol ("SigSelect2")

Definition at line 112 of file signals.cpp.

Sym SIGSELECT3 = symbol ("SigSelect3")

Definition at line 113 of file signals.cpp.

Sym SIGTABLE = symbol ("SigTable")

Definition at line 83 of file signals.cpp.

Sym SIGTUPLE = symbol ("SigTuple")

Definition at line 369 of file signals.cpp.

Sym SIGTUPLEACCESS = symbol ("SigTupleAccess")

Definition at line 370 of file signals.cpp.

Sym SIGVBARGRAPH = symbol ("SigVBargraph")

Definition at line 278 of file signals.cpp.

Sym SIGVSLIDER = symbol ("SigVSlider")

Definition at line 229 of file signals.cpp.

Sym SIGWRTBL = symbol ("SigWRTbl")

Definition at line 79 of file signals.cpp.

Generated on Thu Apr 29 00:00:12 2010 for FAUST compiler by  doxygen 1.6.3