|
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 (const builder &)=delete | |
| builder (builder &&)=delete | |
| ~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.