class QPanda::Traversal

Overview

Traversing all the nodes of the linked qprog/qcircuit/control_flow_node. More…

#include <Traversal.h>

class Traversal
{
public:
    // methods

    template <typename T, typename... Args>
    static void traversal(
        std::shared_ptr<AbstractControlFlowNode> control_flow_node,
        T& func_class,
        Args&&... func_args
        );

    template <typename T, typename... Args>
    static void traversal(
        std::shared_ptr<AbstractQuantumCircuit> qcircuit_node,
        bool identify_dagger,
        T& func_class,
        Args&&... func_args
        );

    template <typename T, typename... Args>
    static void traversal(
        std::shared_ptr<AbstractQuantumProgram> qprog_node,
        T& func_class,
        Args&&... func_args
        );

    template <typename T, typename... Args>
    static void traversalByType(
        std::shared_ptr<QNode> node,
        std::shared_ptr<QNode> parent_node,
        T& func_class,
        Args&&... func_args
        );
};

Detailed Documentation

Traversing all the nodes of the linked qprog/qcircuit/control_flow_node.

Methods

template <typename T, typename... Args>
static void traversal(
    std::shared_ptr<AbstractControlFlowNode> control_flow_node,
    T& func_class,
    Args&&... func_args
    )

Traversing qprog control flow circuit.

Parameters:

AbstractControlFlowNode*

Control flow nodes that need to be traversed

TraversalInterface*

The method object needed for traversal

Returns:

void

template <typename T, typename... Args>
static void traversal(
    std::shared_ptr<AbstractQuantumCircuit> qcircuit_node,
    bool identify_dagger,
    T& func_class,
    Args&&... func_args
    )

Traversing qcircuit.

Parameters:

AbstractQuantumCircuit*

QCircuit nodes that need to be traversed

TraversalInterface*

The method object needed for traversal

bool

Whether the quantum circuit needs to be transposed

Returns:

void

template <typename T, typename... Args>
static void traversal(
    std::shared_ptr<AbstractQuantumProgram> qprog_node,
    T& func_class,
    Args&&... func_args
    )

Traversing qprog.

Parameters:

AbstractQuantumProgram*

QProg nodes that need to be traversed

TraversalInterface*

The method object needed for traversal

Returns:

void

template <typename T, typename... Args>
static void traversalByType(
    std::shared_ptr<QNode> node,
    std::shared_ptr<QNode> parent_node,
    T& func_class,
    Args&&... func_args
    )

traversalByType

Parameters:

QNode*

nodes that need to be traversed

parent_node*

nodes that need to be traversed

TraversalInterface*

The method object needed for traversal

Returns:

void