.. index:: pair: class; QPanda::OriginProgram .. _doxid-class_q_panda_1_1_origin_program: class QPanda::OriginProgram =========================== .. toctree:: :hidden: Overview ~~~~~~~~ Implementation class of :ref:`QProg `. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class OriginProgram: public :ref:`QPanda::QNode`, public :ref:`QPanda::AbstractQuantumProgram` { public: // methods virtual void :ref:`pushBackNode`(std::shared_ptr<:ref:`QNode`> node); virtual :ref:`NodeIter` :ref:`getFirstNodeIter`(); virtual :ref:`NodeIter` :ref:`getLastNodeIter`(); virtual :ref:`NodeIter` :ref:`getEndNodeIter`(); virtual :ref:`NodeIter` :ref:`getHeadNodeIter`(); virtual :ref:`NodeIter` :ref:`insertQNode`(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>); virtual :ref:`NodeIter` :ref:`deleteQNode`(:ref:`NodeIter`&); virtual :ref:`NodeType` :ref:`getNodeType`() const; virtual void :ref:`clear`(); bool :target:`check_insert_node_type`(std::shared_ptr<:ref:`QNode`> node); virtual size_t :ref:`get_max_qubit_addr`(); virtual size_t :ref:`get_used_qubits`(:ref:`QVec`&); virtual size_t :ref:`get_used_cbits`(std::vector<:ref:`ClassicalCondition`>&); virtual size_t :ref:`get_qgate_num`(); virtual std::map<:ref:`Qubit`*, bool> :ref:`get_measure_pos`(); virtual bool :ref:`is_measure_last_pos`(); virtual std::vector`*, :ref:`ClassicalCondition`>> :ref:`get_measure_qubits_cbits`(); }; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // methods virtual :ref:`NodeType` :ref:`getNodeType`() const = 0; virtual :ref:`NodeIter` :ref:`getFirstNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getLastNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getEndNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getHeadNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`insertQNode`(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>) = 0; virtual :ref:`NodeIter` :ref:`deleteQNode`(:ref:`NodeIter`&) = 0; virtual void :ref:`pushBackNode`(std::shared_ptr<:ref:`QNode`>) = 0; virtual void :ref:`clear`() = 0; virtual size_t :ref:`get_max_qubit_addr`() = 0; virtual size_t :ref:`get_used_qubits`(:ref:`QVec`&) = 0; virtual size_t :ref:`get_used_cbits`(std::vector<:ref:`ClassicalCondition`>&) = 0; virtual size_t :ref:`get_qgate_num`() = 0; virtual bool :ref:`is_measure_last_pos`() = 0; virtual std::map<:ref:`Qubit`*, bool> :ref:`get_measure_pos`() = 0; virtual std::vector`*, :ref:`ClassicalCondition`>> :ref:`get_measure_qubits_cbits`() = 0; .. _details-class_q_panda_1_1_origin_program: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Implementation class of :ref:`QProg `. Methods ------- .. index:: pair: function; pushBackNode .. _doxid-class_q_panda_1_1_origin_program_1abbbaf3b4f6b866bc7cdf8f72191a3305: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void pushBackNode(std::shared_ptr<:ref:`QNode`> node) Insert new node at the end of current quantum program node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QNode\* - quantum node .. rubric:: Returns: void .. rubric:: See also: :ref:`QNode ` .. index:: pair: function; getFirstNodeIter .. _doxid-class_q_panda_1_1_origin_program_1ac76dc74aac5d82dced00905b8465e4ce: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getFirstNodeIter() Get the first :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getLastNodeIter .. _doxid-class_q_panda_1_1_origin_program_1a539febf291fd142e10d00ef34fa42705: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getLastNodeIter() Get the last :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getEndNodeIter .. _doxid-class_q_panda_1_1_origin_program_1a3387d72885e4bb19f95e2cedb0f204d9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getEndNodeIter() Get the end :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getHeadNodeIter .. _doxid-class_q_panda_1_1_origin_program_1a4b099fa404b6832a2ec3cc7f4f5ce105: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getHeadNodeIter() Get the head :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; insertQNode .. _doxid-class_q_panda_1_1_origin_program_1aeb2ae2774001036b8e77aa999193aa8e: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` insertQNode(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>) Insert a new :ref:`QNode ` at the location specified by :ref:`NodeIter `. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NodeIter& - specified location * - std::shared_ptr - Inserted :ref:`QNode ` .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; deleteQNode .. _doxid-class_q_panda_1_1_origin_program_1acf553e4d734100f2f6444c9195cddfa7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` deleteQNode(:ref:`NodeIter`&) Delete a :ref:`QNode ` at the location specified by :ref:`NodeIter `. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NodeIter& - specified location .. rubric:: Returns: :ref:`NodeIter ` Deleted :ref:`NodeIter ` .. index:: pair: function; getNodeType .. _doxid-class_q_panda_1_1_origin_program_1aae506f078e9dfd73c88679e323d4f4d7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeType` getNodeType() const Get current node type. .. rubric:: Returns: NodeType current node type .. rubric:: See also: :ref:`NodeType ` .. index:: pair: function; clear .. _doxid-class_q_panda_1_1_origin_program_1ae79ff7fae98c24945d49095394d26e2d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void clear() Clear all node in current quantum program node. .. rubric:: Returns: void .. index:: pair: function; get_max_qubit_addr .. _doxid-class_q_panda_1_1_origin_program_1a53eb0f2d40f051d3ad01c09ebcdce0ee: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_max_qubit_addr() Gets the maximum physical address of used qubits. .. rubric:: Returns: size_t maximum physical address .. index:: pair: function; get_used_qubits .. _doxid-class_q_panda_1_1_origin_program_1a747348ccc8edf978b319fe69c5b94135: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_used_qubits(:ref:`QVec`&) Get the used qubits for current quantum program. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QVec ` - used qubits vector .. rubric:: Returns: size_t .. index:: pair: function; get_used_cbits .. _doxid-class_q_panda_1_1_origin_program_1a6585d6ef5c3cc53819347fb6209b58f6: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_used_cbits(std::vector<:ref:`ClassicalCondition`>&) Get the used classical bits for current quantum program. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QVec ` - used qubits vector .. rubric:: Returns: size_t .. index:: pair: function; get_qgate_num .. _doxid-class_q_panda_1_1_origin_program_1a1163cc37848d8fb0205567d4b5dd3923: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_qgate_num() Get current quantum program qgate number. .. rubric:: Returns: size_t .. index:: pair: function; get_measure_pos .. _doxid-class_q_panda_1_1_origin_program_1aa36793a5104d177c5f1a2c72fe6f46e9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map<:ref:`Qubit`*, bool> get_measure_pos() Get Measure operation position of the program. .. rubric:: Returns: std::map .. index:: pair: function; is_measure_last_pos .. _doxid-class_q_panda_1_1_origin_program_1a215f1b4e46a4799f898c5f52911610e6: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual bool is_measure_last_pos() Measure operation in the last position of the program. .. rubric:: Returns: bool .. index:: pair: function; get_measure_qubits_cbits .. _doxid-class_q_panda_1_1_origin_program_1a1a2a8b67b5fcc7b4a23c096a3a7ae342: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::vector`*, :ref:`ClassicalCondition`>> get_measure_qubits_cbits() Get Measure operation qubits and cbits vector. .. rubric:: Returns: std::vector>