polybori::CApplyNodeFacade< DiagramType, NodePtr > Class Template Reference

This template class defines a facade as a C++ interface for applying C-style functions to C-style structs, which represent decision diagrams. It is used to wrapp functions calls to raw pointers of the nodes and the context to an C++-style object. More...

`#include <CApplyNodeFacade.h>`

## Public Types

Template arguments
typedef DiagramType | diagram_type
typedef NodePtr | node_ptr

## Public Member Functions

Logical operations
bool | operator== (const diagram_type &rhs) const
| Equality. More...
bool | operator!= (const diagram_type &rhs) const
| Nonequality. More...

## Protected Member Functions

void | checkSameManager (const diagram_type &other) const
| Test, whether both operands. More...
diagram_type | diagram (node_ptr node) const
| Get diagram of the same context. More...
Apply C-style procedures to nodes
template<class MgrType >
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr)) const
| Unary function. More...
template<class MgrType >
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, node_ptr), const diagram_type &rhs) const
| Binary function (two diagrams) More...
template<class MgrType >
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, node_ptr, node_ptr), const diagram_type &first, const diagram_type &second) const
| Ternary function (three diagrams) More...
template<class MgrType , class Type >
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, Type), Type value) const
| Binary functions with non-diagram right-hand side. More...
template<class MgrType , class ResultType >
ResultType | apply (ResultType(*func)(MgrType, node_ptr)) const
| Unary functions with non-diagram result value. More...

## Detailed Description

### template<class DiagramType, class NodePtr>
class polybori::CApplyNodeFacade< DiagramType, NodePtr >

This template class defines a facade as a C++ interface for applying C-style functions to C-style structs, which represent decision diagrams. It is used to wrapp functions calls to raw pointers of the nodes and the context to an C++-style object.

Attention
  We assume that the `DiagramType` owns member functions `ring()`, `getNode()` and `getManager()`.

Note
  This template class is a facade and hence it is intented for internal use only, e.g. as a base class for BooleSet.

## Member Typedef Documentation

template<class DiagramType, class NodePtr>

typedef DiagramType polybori::CApplyNodeFacade< DiagramType, NodePtr >::diagram_type

template<class DiagramType, class NodePtr>

typedef NodePtr polybori::CApplyNodeFacade< DiagramType, NodePtr >::node_ptr

## Member Function Documentation

template<class DiagramType, class NodePtr>
template<class MgrType >

diagram_type polybori::CApplyNodeFacade< DiagramType, NodePtr >::apply | ( | node_ptr(*)(MgrType, node_ptr) | func | ) | const

inline protected

Unary function.

template<class DiagramType, class NodePtr>
template<class MgrType >

diagram_type polybori::CApplyNodeFacade< DiagramType, NodePtr >::apply | ( | node_ptr(*)(MgrType, node_ptr, node_ptr) | func,
|  | const diagram_type & | rhs
| ) |  | const

inline protected

Binary function (two diagrams)

template<class DiagramType, class NodePtr>
template<class MgrType >

diagram_type polybori::CApplyNodeFacade< DiagramType, NodePtr >::apply | ( | node_ptr(*)(MgrType, node_ptr, node_ptr, node_ptr) | func,
|  | const diagram_type & | first,
|  | const diagram_type & | second
| ) |  | const

inline protected

Ternary function (three diagrams)

template<class DiagramType, class NodePtr>
template<class MgrType , class Type >

diagram_type polybori::CApplyNodeFacade< DiagramType, NodePtr >::apply | ( | node_ptr(*)(MgrType, node_ptr, Type) | func,
|  | Type | value
| ) |  | const

inline protected

Binary functions with non-diagram right-hand side.

template<class DiagramType, class NodePtr>
template<class MgrType , class ResultType >

ResultType polybori::CApplyNodeFacade< DiagramType, NodePtr >::apply | ( | ResultType(*)(MgrType, node_ptr) | func | ) | const

inline protected

Unary functions with non-diagram result value.

template<class DiagramType, class NodePtr>

void polybori::CApplyNodeFacade< DiagramType, NodePtr >::checkSameManager | ( | const diagram_type & | other | ) | const

inline protected

Test, whether both operands.

template<class DiagramType, class NodePtr>

diagram_type polybori::CApplyNodeFacade< DiagramType, NodePtr >::diagram | ( | node_ptr | node | ) | const

inline protected

Get diagram of the same context.

template<class DiagramType, class NodePtr>

bool polybori::CApplyNodeFacade< DiagramType, NodePtr >::operator!= | ( | const diagram_type & | rhs | ) | const

inline

Nonequality.

template<class DiagramType, class NodePtr>

bool polybori::CApplyNodeFacade< DiagramType, NodePtr >::operator== | ( | const diagram_type & | rhs | ) | const

inline

Equality.

The documentation for this class was generated from the following file:

- CApplyNodeFacade.h