class QPanda::QNodeDeepCopy

Overview

Deep copy interface for classess based on QNode. More…

#include <QNodeDeepCopy.h>

class QNodeDeepCopy: public QPanda::TraversalInterface
{
public:
    // methods

    std::shared_ptr<QNode> executeQNode(std::shared_ptr<QNode> node);
    QGate copy_node(std::shared_ptr<AbstractQGateNode>);
    QProg copy_node(std::shared_ptr<AbstractQuantumProgram>);
    QMeasure copy_node(std::shared_ptr<AbstractQuantumMeasure>);
    QReset copy_node(std::shared_ptr<AbstractQuantumReset>);
    QCircuit copy_node(std::shared_ptr<AbstractQuantumCircuit>);
    std::shared_ptr<AbstractControlFlowNode> copy_node(std::shared_ptr<AbstractControlFlowNode>);
    ClassicalProg copy_node(std::shared_ptr<AbstractClassicalProg>);

    void execute(
        std::shared_ptr<AbstractQGateNode>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractClassicalProg>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractQuantumCircuit>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractQuantumMeasure>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractQuantumReset>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractControlFlowNode>,
        std::shared_ptr<QNode>
        );

    void execute(
        std::shared_ptr<AbstractQuantumProgram>,
        std::shared_ptr<QNode>
        );
};

Inherited Members

public:
    // methods

    virtual void execute(
        std::shared_ptr<AbstractQGateNode> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractQuantumMeasure> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractQuantumReset> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractControlFlowNode> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractQuantumCircuit> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractQuantumProgram> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

    virtual void execute(
        std::shared_ptr<AbstractClassicalProg> cur_node,
        std::shared_ptr<QNode> parent_node,
        Args&&... func_args
        );

Detailed Documentation

Deep copy interface for classess based on QNode.

Methods

std::shared_ptr<QNode> executeQNode(std::shared_ptr<QNode> node)

Execute QNode Node.

Parameters:

QNode*

Returns:

std::shared_ptr<QPanda::QNode> new Node

QGate copy_node(std::shared_ptr<AbstractQGateNode>)

Execute Quantum Gate Node.

Parameters:

AbstractQGateNode*

Quantum Gate Node

Returns:

std::shared_ptr<QPanda::QNode> new QNode

QProg copy_node(std::shared_ptr<AbstractQuantumProgram>)

Execute Quantum QProg Node.

Parameters:

AbstractQuantumProgram*

Quantum QProg Node

Returns:

std::shared_ptr<QPanda::QNode> new Node

QMeasure copy_node(std::shared_ptr<AbstractQuantumMeasure>)

Execute Quantum Measure Node.

Parameters:

AbstractQuantumMeasure*

Quantum Measure Node

Returns:

std::shared_ptr<QPanda::QNode> new Node

QReset copy_node(std::shared_ptr<AbstractQuantumReset>)

Execute Quantum Reset Node.

Parameters:

AbstractQuantumReset*

Quantum Reset Node

Returns:

std::shared_ptr<QPanda::QNode> new Node

QCircuit copy_node(std::shared_ptr<AbstractQuantumCircuit>)

Execute Quantum Circuit Node.

Parameters:

AbstractQuantumCircuit*

Quantum Circuit Node

Returns:

std::shared_ptr<QPanda::QNode> new Node

std::shared_ptr<AbstractControlFlowNode> copy_node(std::shared_ptr<AbstractControlFlowNode>)

Execute ControlFlow Node.

Parameters:

AbstractControlFlowNode*

ControlFlow Node

Returns:

std::shared_ptr<QPanda::QNode> new Node

ClassicalProg copy_node(std::shared_ptr<AbstractClassicalProg>)

Execute ClassicalProg Node.

Parameters:

AbstractClassicalProg*

ClassicalProg Node

Returns:

std::shared_ptr<QPanda::QNode> new Node