|
FAUST compiler
0.9.9.6b8
|
A Node is a tagged unions of int, double, symbol and void* used in the implementation of CTrees. More...


Go to the source code of this file.
Classes | |
| class | Node |
| Class Node = (type x (int + double + Sym + void*)) More... | |
Enumerations | |
| enum | { kIntNode, kDoubleNode, kSymNode, kPointerNode } |
| Tags used to define the type of a Node. More... | |
Functions | |
| ostream & | operator<< (ostream &s, const Node &n) |
| bool | isInt (const Node &n) |
| bool | isInt (const Node &n, int *x) |
| bool | isDouble (const Node &n) |
| bool | isDouble (const Node &n, double *x) |
| bool | isZero (const Node &n) |
| bool | isGEZero (const Node &n) |
| bool | isGTZero (const Node &n) |
| bool | isOne (const Node &n) |
| bool | isMinusOne (const Node &n) |
| bool | isNum (const Node &n) |
| bool | isSym (const Node &n) |
| bool | isSym (const Node &n, Sym *x) |
| bool | isPointer (const Node &n) |
| bool | isPointer (const Node &n, void **x) |
| const Node | addNode (const Node &x, const Node &y) |
| const Node | subNode (const Node &x, const Node &y) |
| const Node | mulNode (const Node &x, const Node &y) |
| const Node | divNode (const Node &x, const Node &y) |
| const Node | divExtendedNode (const Node &x, const Node &y) |
| const Node | remNode (const Node &x, const Node &y) |
| const Node | minusNode (const Node &x) |
| const Node | inverseNode (const Node &x) |
| const Node | lshNode (const Node &x, const Node &y) |
| const Node | rshNode (const Node &x, const Node &y) |
| const Node | andNode (const Node &x, const Node &y) |
| const Node | orNode (const Node &x, const Node &y) |
| const Node | xorNode (const Node &x, const Node &y) |
| const Node | gtNode (const Node &x, const Node &y) |
| const Node | ltNode (const Node &x, const Node &y) |
| const Node | geNode (const Node &x, const Node &y) |
| const Node | leNode (const Node &x, const Node &y) |
| const Node | eqNode (const Node &x, const Node &y) |
| const Node | neNode (const Node &x, const Node &y) |
A Node is a tagged unions of int, double, symbol and void* used in the implementation of CTrees.
Nodes are completly described by the node.h file, there is no node.cpp file.
API:
Node(symbol("abcd")); : node with symbol content Node(10); : node with int content Node(3.14159); : node with double content
n->type(); : kIntNode or kDoubleNode or kSymNode
n->getInt(); : int content of n n->getDouble(); : double content of n n->getSym(); : symbol content of n
if (isInt(n, &i)) ... : int i = int content of n if (isDouble(n, &f)) ... : double f = double content of n if (isSym(n, &s)) ... : Sym s = Sym content of n
Definition in file node.hh.
| anonymous enum |
Tags used to define the type of a Node.
Definition at line 64 of file node.hh.
{ kIntNode, kDoubleNode, kSymNode, kPointerNode };
| const Node divExtendedNode | ( | const Node & | x, |
| const Node & | y | ||
| ) | [inline] |
Definition at line 247 of file node.hh.
References isDouble().
Referenced by divExtendedNums().
{ return (isDouble(x)||isDouble(y)) ? Node(double(x)/double(y))
: (double(int(x)/int(y))==double(x)/double(y)) ? Node(int(x)/int(y))
: Node(double(x)/double(y)); }


Definition at line 244 of file node.hh.
References isDouble().
Referenced by divNums(), and inverseNode().


| const Node inverseNode | ( | const Node & | x | ) | [inline] |
Definition at line 260 of file node.hh.
References divNode().
Referenced by inverseNum().
{ return divNode(1.0f, x); }


Definition at line 137 of file node.hh.
References kDoubleNode, and Node::type().
Referenced by addNode(), MaxPrim::computeSigOutput(), MinPrim::computeSigOutput(), AbsPrim::computeSigOutput(), divExtendedNode(), divNode(), eqNode(), geNode(), gtNode(), isBoxReal(), isNum(), isSigReal(), leNode(), ltNode(), mulNode(), neNode(), print(), sigFloatCast(), sigIntCast(), simplification(), subNode(), tree2double(), tree2float(), and tree2int().
{
return (n.type() == kDoubleNode);
}


Definition at line 142 of file node.hh.
References Node::getDouble(), kDoubleNode, and Node::type().
{
if (n.type() == kDoubleNode) {
*x = n.getDouble();
return true;
} else {
return false;
}
}

Definition at line 160 of file node.hh.
References Node::getDouble(), Node::getInt(), kDoubleNode, kIntNode, and Node::type().
{
return (n.type() == kDoubleNode) && (n.getDouble() >= 0.0)
|| (n.type() == kIntNode) && (n.getInt() >= 0);
}

Definition at line 166 of file node.hh.
References Node::getDouble(), Node::getInt(), kDoubleNode, kIntNode, and Node::type().
{
return (n.type() == kDoubleNode) && (n.getDouble() > 0.0)
|| (n.type() == kIntNode) && (n.getInt() > 0);
}

Definition at line 120 of file node.hh.
References kIntNode, and Node::type().
Referenced by CTree::calcTreeAperture(), AbsPrim::computeSigOutput(), MaxPrim::computeSigOutput(), MinPrim::computeSigOutput(), ensureFloat(), isBoxInt(), isBoxSlot(), isNum(), isProj(), isRef(), isSigBinOp(), isSigInput(), isSigInt(), isSigOutput(), isSigTuple(), print(), sigFloatCast(), sigIntCast(), simplification(), tree2double(), tree2float(), and tree2int().


Definition at line 125 of file node.hh.
References Node::getInt(), kIntNode, and Node::type().

| bool isMinusOne | ( | const Node & | n | ) | [inline] |
Definition at line 178 of file node.hh.
References Node::getDouble(), Node::getInt(), kDoubleNode, kIntNode, and Node::type().
{
return (n.type() == kDoubleNode) && (n.getDouble() == -1.0)
|| (n.type() == kIntNode) && (n.getInt() == -1);
}

Definition at line 172 of file node.hh.
References Node::getDouble(), Node::getInt(), kDoubleNode, kIntNode, and Node::type().
{
return (n.type() == kDoubleNode) && (n.getDouble() == 1.0)
|| (n.type() == kIntNode) && (n.getInt() == 1);
}

Definition at line 210 of file node.hh.
References kPointerNode, and Node::type().
Referenced by isBoxPrim0(), isBoxPrim1(), isBoxPrim2(), isBoxPrim3(), isBoxPrim4(), isBoxPrim5(), print(), and tree2ptr().
{
return (n.type() == kPointerNode);
}


Definition at line 215 of file node.hh.
References Node::getPointer(), kPointerNode, and Node::type().
{
if (n.type() == kPointerNode) {
*x = n.getPointer();
return true;
} else {
return false;
}
}

Definition at line 193 of file node.hh.
References kSymNode, and Node::type().
Referenced by getUserData(), isBefore(), isBoxIdent(), isDocTxt(), normalizeLabel(), print(), and tree2str().


Definition at line 198 of file node.hh.
References Node::getSym(), kSymNode, and Node::type().

Definition at line 154 of file node.hh.
References Node::getDouble(), Node::getInt(), kDoubleNode, kIntNode, and Node::type().
{
return (n.type() == kDoubleNode) && (n.getDouble() == 0.0)
|| (n.type() == kIntNode) && (n.getInt() == 0);
}

Definition at line 257 of file node.hh.
References subNode().
Referenced by minusNum().
{ return subNode(0, x); }


| ostream& operator<< | ( | ostream & | s, |
| const Node & | n | ||
| ) | [inline] |
Definition at line 111 of file node.hh.
References Node::print().
{ return n.print(s); }

Definition at line 238 of file node.hh.
References isDouble().
Referenced by minusNode(), and subNums().


1.8.0