.. index:: pair: class; QPanda::PickUpNodes .. _doxid-class_q_panda_1_1_pick_up_nodes: class QPanda::PickUpNodes ========================= .. toctree:: :hidden: Overview ~~~~~~~~ Pick Up all the Nodes between the two NodeIters. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class PickUpNodes: public :ref:`QPanda::TraverseByNodeIter` { public: // construction :ref:`PickUpNodes`( :ref:`QProg`& output_prog, :ref:`QProg` src_prog, const std::vector<:ref:`NodeType`>& reject_node_types, const :ref:`NodeIter`& node_itr_start, const :ref:`NodeIter`& node_itr_end ); // methods virtual void :target:`traverse_qprog`(); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); void :ref:`setDaggerFlag`(bool b); void :ref:`reverse_dagger_circuit`(); static bool :ref:`check_control_qubits`(:ref:`QGate`& gate); static void :ref:`no_dagger_gate`(:ref:`QGate`& gate); }; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // methods virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`traverse_qprog`(:ref:`QProg` prog); .. _details-class_q_panda_1_1_pick_up_nodes: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Pick Up all the Nodes between the two NodeIters. Construction ------------ .. index:: pair: function; PickUpNodes .. _doxid-class_q_panda_1_1_pick_up_nodes_1ab19d5ec65100e71af105d96146fd1157: .. ref-code-block:: cpp :class: doxyrest-title-code-block PickUpNodes( :ref:`QProg`& output_prog, :ref:`QProg` src_prog, const std::vector<:ref:`NodeType`>& reject_node_types, const :ref:`NodeIter`& node_itr_start, const :ref:`NodeIter`& node_itr_end ) Constructor of :ref:`PickUpNodes `. Methods ------- .. index:: pair: function; setDaggerFlag .. _doxid-class_q_panda_1_1_pick_up_nodes_1a67b85e8bd9365234b24902ac403be857: .. ref-code-block:: cpp :class: doxyrest-title-code-block void setDaggerFlag(bool b) set dagger flag .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - bool - .. index:: pair: function; reverse_dagger_circuit .. _doxid-class_q_panda_1_1_pick_up_nodes_1a341abe0dead8124e77ea4812a5ab9b91: .. ref-code-block:: cpp :class: doxyrest-title-code-block void reverse_dagger_circuit() reverse the dagger circuit .. index:: pair: function; check_control_qubits .. _doxid-class_q_panda_1_1_pick_up_nodes_1a498c266d7f64300252dc97b020932546: .. ref-code-block:: cpp :class: doxyrest-title-code-block static bool check_control_qubits(:ref:`QGate`& gate) check whether the control qubit is same as the target qubit .. rubric:: Returns: bool return true if the control qubit is same as the target qubit, otherwise return false .. index:: pair: function; no_dagger_gate .. _doxid-class_q_panda_1_1_pick_up_nodes_1a9ac6fbd7bf24d2265911dfad17afb9c5: .. ref-code-block:: cpp :class: doxyrest-title-code-block static void no_dagger_gate(:ref:`QGate`& gate) check no dagger gate