UndefinedNode

Constructs a "don't care" value of a certain type.

The compiler is free to change this node into any constant (i.e. define it), as long as it's value is consistently seen by all of its uses. This notion of 'undefined' comes from Click's thesis.

More...

Members

Functions

opEquals
bool opEquals(const(UndefinedNode) rhs)

Equivalence check.

opIndex
inout(InEdge)* opIndex(InEdge.ID slot)

See Node.opIndex.

toHash
hash_t toHash()

Semantic hash.

Properties

inEdges
InEdgeIterator!Callable inEdges [@property getter]

Provides an iterator over this node's in-edges.

outEdges
OutEdgeIterator!Callable outEdges [@property getter]

Provides an iterator over this node's out-edges.

Static functions

dispose
void dispose(UndefinedNode* self)

Frees all resources allocated by this node and sets it to an uninitialized state.

initialize
err_t initialize(UndefinedNode* self)

Initializes an undefined node.

Variables

value
InEdge value;

The resulting value.

Mixed In Members

From mixin NodeInheritance

opPostMove
void opPostMove(const(This) old)

Post-move adjusts in-edge slots' owner pointer.

Detailed Description

Rationale: Undefined values cannot be produced by ConstantNodes, because the latter are always subject to structural sharing (e.g. every 1 is the same), whereas different undefined nodes can resolve to different values and therefore each needs its own identity.

See Also