| 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 labelviolates 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 labelandhighare 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 labelandloware 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.