Adiar 2.1.0
An External Memory Decision Diagram Library
|
A builder for decision diagrams. More...
#include <adiar/builder.h>
Public Member Functions | |
builder () noexcept | |
Constructor. | |
~builder () noexcept | |
Destructor. | |
builder_ptr< Policy > | add_node (typename Policy::label_type label, const builder_ptr< Policy > &low, const builder_ptr< Policy > &high) |
Add an internal node with a given label and its two children. | |
builder_ptr< Policy > | add_node (const typename Policy::label_type label, const bool low, const builder_ptr< Policy > &high) |
Add an internal node with a given label and its two children. | |
builder_ptr< Policy > | add_node (const typename Policy::label_type label, const builder_ptr< Policy > &low, const bool high) |
Add an internal node with a given label and its two children. | |
builder_ptr< Policy > | add_node (const typename Policy::label_type label, const bool low, const bool high) |
Add an internal node with a given label and its two children. | |
builder_ptr< Policy > | add_node (bool terminal_value) |
Add a terminal node with a given value. | |
Policy::dd_type | build () |
Builds the decision diagram with the added nodes. This also clears the builder. | |
void | clear () noexcept |
Clear builder of all its current content, discarding all nodes and invalidating any pointers to them. | |
A builder for decision diagrams.
Nodes should be added bottom-up. Each added node returns a builder_ptr so that it can be used as a child for other nodes.
Policy | Logic related to the specific type of decision diagram to construct. |
|
inline |
Add a terminal node with a given value.
terminal_value | Value of the constant function to create. |
|
inline |
Add an internal node with a given label and its two children.
label | The variable label for the node to create. |
low | Terminal value for when when the variable with the given label evaluates to false . |
high | Terminal value for when the variable with the given label evaluates to true . |
invalid_argument | If label violates the bottom-up ordering (see add_node). |
|
inline |
Add an internal node with a given label and its two children.
label | The variable label for the node to create. |
low | Terminal value for when the variable with the given label evaluates to false . |
high | Pointer for when the variable with the given label evaluates to true . |
invalid_argument | If label and high are illegal (see add_node). |
|
inline |
Add an internal node with a given label and its two children.
label | The variable label for the node to create. |
low | Pointer for when when the variable with the given label evaluates to false . |
high | Terminal value for when the variable with the given label evaluates to true . |
invalid_argument | If label and low are illegal (see add_node). |
|
inline |
Add an internal node with a given label and its two children.
label | The variable label for the node to create. |
low | Pointer for when the variable with the given label evaluates to false . |
high | Pointer for when the variable with the given label evaluates to true . |
invalid_argument | If a node is malformed or not added in bottom-up order. |
invalid_argument | If pointers stem from another builder. |
|
inline |
Builds the decision diagram with the added nodes. This also clears the builder.
domain_error | If add_node has not been called |
domain_error | If there are more than one root in the diagram. |
add_node
to create a non-empty and singly-rooted decision diagram.builder_ptr
created by this object will be invalidated and cannot be used anymore.
|
inlinenoexcept |
Clear builder of all its current content, discarding all nodes and invalidating any pointers to them.