Skip to content

scram::core::NonTerminal

Representation of non-terminal vertices in BDD graphs. More...

#include <bdd.h>

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

Public Functions

Name
NonTerminal(int index, int order, int id, const VertexPtr & high, const VertexPtr & low)
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

Name
~NonTerminal() =default

Friends

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)

Additional inherited members

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
template <class T >
class scram::core::NonTerminal;

Representation of non-terminal vertices in BDD graphs.

Template Parameters:

  • T The type of the main functional BDD vertex.

This class is a base class for various BDD-specific vertices. however, as Vertex, NonTerminal is not polymorphic.

Public Functions Documentation

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.

function index

cpp
inline int index() const

Return: The index of this vertex.

function order

cpp
inline int order() const

Return: The order of the vertex.

function module

cpp
inline bool module() const

Return: true if this vertex represents a module gate.

function module

cpp
inline void module(
    bool flag
)

Sets this vertex for representation of a module.

function coherent

cpp
inline bool coherent() const

Return: true if the vertex represents a coherent module.

function coherent

cpp
inline void coherent(
    bool flag
)

Sets the flag for coherent modules.

Parameters:

  • flag true for coherent modules.

function high

cpp
inline const VertexPtr & high() const

Return: (1/True/then/left) branch if-then-else vertex.

function low

cpp
inline const VertexPtr & low() const

Return: (0/False/else/right) branch vertex.

function mark

cpp
inline bool mark() const

Return: The mark of this vertex.

function mark

cpp
inline void mark(
    bool flag
)

Marks this vertex.

Parameters:

  • flag A flag with the meaning for the user of marks.

Protected Functions Documentation

function ~NonTerminal

cpp
~NonTerminal() =default

Friends

friend get_high_id

cpp
friend int get_high_id(
    const NonTerminal< T > & vertex
);

Default logic for getting signature high and low ids.

Parameters:

  • vertex Non-terminal vertex.

Return: Numbers that can be used to uniquely identify the arg vertex.

friend get_low_id

cpp
friend int get_low_id(
    const NonTerminal< T > & vertex
);

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