Skip to content

scram::core::SetNode

Representation of non-terminal nodes in ZBDD. More...

#include <zbdd.h>

Inherits from scram::core::NonTerminal< SetNode >, scram::core::Vertex< T >, scram::core::IntrusivePtrCast< T >, boost::noncopyable

Public Functions

Name
boolminimal() const
voidminimal(bool flag)<br>Sets the indication of a minimized ZBDD.
intmax_set_order() const
voidmax_set_order(int order)<br>Registers the order of the largest set in the ZBDD represented by this vertex.
std::int64_tcount() const
voidcount(std::int64_t number)<br>Stores numerical value for later retrieval.
NonTerminal(int index, int order, int id, const VertexPtr & high, const VertexPtr & low)

Additional inherited members

Public Functions inherited from scram::core::NonTerminal< SetNode >

Name
intindex() const
intorder() const
boolmodule() const
voidmodule(bool flag)<br>Sets this vertex for representation of a module.
boolcoherent() const
voidcoherent(bool flag)<br>Sets the flag for coherent modules.
const VertexPtr &high() const
const VertexPtr &low() const
boolmark() const
voidmark(bool flag)<br>Marks this vertex.

Protected Functions inherited from scram::core::NonTerminal< SetNode >

Name
~NonTerminal() =default

Friends inherited from scram::core::NonTerminal< SetNode >

Name
intget_high_id(const NonTerminal< T > & vertex) <br>Default logic for getting signature high and low ids.
intget_low_id(const NonTerminal< T > & vertex)

Public Functions inherited from scram::core::Vertex< T >

Name
Vertex(int id)
intid() const
boolterminal() const
intuse_count() const
boolunique() const

Protected Functions inherited from scram::core::Vertex< T >

Name
~Vertex()<br>Communicates the destruction via the pointer to the unique table entry if there's any.

Friends inherited from scram::core::Vertex< T >

Name
classWeakIntrusivePtr< T >
voidintrusive_ptr_add_ref(Vertex< T > * ptr) <br>Increases the reference count for new intrusive pointers.
voidintrusive_ptr_release(Vertex< T > * ptr) <br>Decrements the reference count for removed intrusive pointers.

Public Functions inherited from scram::core::IntrusivePtrCast< T >

Name
IntrusivePtr< W >Ptr(const IntrusivePtr< Vertex< T > > & vertex)
W &Ref(const IntrusivePtr< Vertex< T > > & vertex)

Detailed Description

cpp
class scram::core::SetNode;

Representation of non-terminal nodes in ZBDD.

Complement variables are represented with negative indices. The order of the complement is higher than the order of the variable.

Public Functions Documentation

function minimal

cpp
inline bool minimal() const

Return: true if the ZBDD is minimized.

function minimal

cpp
inline void minimal(
    bool flag
)

Sets the indication of a minimized ZBDD.

Parameters:

  • flag A flag for minimized ZBDD.

function max_set_order

cpp
inline int max_set_order() const

Return: The registered order of the largest set in the ZBDD.

function max_set_order

cpp
inline void max_set_order(
    int order
)

Registers the order of the largest set in the ZBDD represented by this vertex.

Parameters:

  • order The order/size of the largest set.

function count

cpp
inline std::int64_t count() const

Return: Whatever count is stored in this node.

function count

cpp
inline void count(
    std::int64_t number
)

Stores numerical value for later retrieval.

Parameters:

  • number A number with a meaning for the caller.

Note: This field is provided for ZBDD processing techniques that use mutually exclusive meta-data about the node in different stages of ZBDD processing. Usually, the data is not needed after the technique is done. In contrast to providing separate fields or using hash tables for each technique metric, this general-purpose field saves space and time.

This can be a helper functionality for counting the number of sets or nodes.

function NonTerminal

cpp
inline NonTerminal(
    int index,
    int order,
    int id,
    const VertexPtr & high,
    const VertexPtr & low
)

Parameters:

  • index Index of this non-terminal vertex.
  • order Specific ordering number for BDD graphs.
  • id Unique identifier of the ROBDD graph. The identifier should not collide with the identifiers (0/1) of terminal nodes.
  • high A vertex for the (1/True/then/left) branch.
  • low A vertex for the (0/False/else/right) branch.

Updated on 2025-11-11 at 16:51:08 +0000