class QPanda::OriginProgram

Overview

Implementation class of QProg. More…

#include <QProgram.h>

class OriginProgram:
    public QPanda::QNode,
    public QPanda::AbstractQuantumProgram
{
public:
    // methods

    virtual void pushBackNode(std::shared_ptr<QNode> node);
    virtual NodeIter getFirstNodeIter();
    virtual NodeIter getLastNodeIter();
    virtual NodeIter getEndNodeIter();
    virtual NodeIter getHeadNodeIter();
    virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>);
    virtual NodeIter deleteQNode(NodeIter&);
    virtual NodeType getNodeType() const;
    virtual void clear();
    bool check_insert_node_type(std::shared_ptr<QNode> node);
    virtual size_t get_max_qubit_addr();
    virtual size_t get_used_qubits(QVec&);
    virtual size_t get_used_cbits(std::vector<ClassicalCondition>&);
    virtual size_t get_qgate_num();
    virtual std::map<Qubit*, bool> get_measure_pos();
    virtual bool is_measure_last_pos();
    virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits();
};

Inherited Members

public:
    // methods

    virtual NodeType getNodeType() const = 0;
    virtual NodeIter getFirstNodeIter() = 0;
    virtual NodeIter getLastNodeIter() = 0;
    virtual NodeIter getEndNodeIter() = 0;
    virtual NodeIter getHeadNodeIter() = 0;
    virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>) = 0;
    virtual NodeIter deleteQNode(NodeIter&) = 0;
    virtual void pushBackNode(std::shared_ptr<QNode>) = 0;
    virtual void clear() = 0;
    virtual size_t get_max_qubit_addr() = 0;
    virtual size_t get_used_qubits(QVec&) = 0;
    virtual size_t get_used_cbits(std::vector<ClassicalCondition>&) = 0;
    virtual size_t get_qgate_num() = 0;
    virtual bool is_measure_last_pos() = 0;
    virtual std::map<Qubit*, bool> get_measure_pos() = 0;
    virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits() = 0;

Detailed Documentation

Implementation class of QProg.

Methods

virtual void pushBackNode(std::shared_ptr<QNode> node)

Insert new node at the end of current quantum program node.

Parameters:

QNode*

quantum node

Returns:

void

See also:

QNode

virtual NodeIter getFirstNodeIter()

Get the first NodeIter.

Returns:

NodeIter

virtual NodeIter getLastNodeIter()

Get the last NodeIter.

Returns:

NodeIter

virtual NodeIter getEndNodeIter()

Get the end NodeIter.

Returns:

NodeIter

virtual NodeIter getHeadNodeIter()

Get the head NodeIter.

Returns:

NodeIter

virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>)

Insert a new QNode at the location specified by NodeIter.

Parameters:

NodeIter&

specified location

std::shared_ptr<QNode>

Inserted QNode

Returns:

NodeIter

virtual NodeIter deleteQNode(NodeIter&)

Delete a QNode at the location specified by NodeIter.

Parameters:

NodeIter&

specified location

Returns:

NodeIter Deleted NodeIter

virtual NodeType getNodeType() const

Get current node type.

Returns:

NodeType current node type

See also:

NodeType

virtual void clear()

Clear all node in current quantum program node.

Returns:

void

virtual size_t get_max_qubit_addr()

Gets the maximum physical address of used qubits.

Returns:

size_t maximum physical address

virtual size_t get_used_qubits(QVec&)

Get the used qubits for current quantum program.

Parameters:

QVec

used qubits vector

Returns:

size_t

virtual size_t get_used_cbits(std::vector<ClassicalCondition>&)

Get the used classical bits for current quantum program.

Parameters:

QVec

used qubits vector

Returns:

size_t

virtual size_t get_qgate_num()

Get current quantum program qgate number.

Returns:

size_t

virtual std::map<Qubit*, bool> get_measure_pos()

Get Measure operation position of the program.

Returns:

std::map<Qubit*, bool>

virtual bool is_measure_last_pos()

Measure operation in the last position of the program.

Returns:

bool

virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits()

Get Measure operation qubits and cbits vector.

Returns:

std::vector<std::pair<Qubit*, ClassicalCondition>>