.. index:: pair: class; QPanda::JudgeTwoNodeIterIsSwappable .. _doxid-class_q_panda_1_1_judge_two_node_iter_is_swappable: class QPanda::JudgeTwoNodeIterIsSwappable ========================================= .. toctree:: :hidden: struct_QPanda_JudgeTwoNodeIterIsSwappable_NodeInCircuitInfo.rst class_QPanda_JudgeTwoNodeIterIsSwappable_AbstractJudgeStatueInterface.rst class_QPanda_JudgeTwoNodeIterIsSwappable_CanNotBeExchange.rst class_QPanda_JudgeTwoNodeIterIsSwappable_CoubleBeExchange.rst class_QPanda_JudgeTwoNodeIterIsSwappable_OnFoundAllNodes.rst class_QPanda_JudgeTwoNodeIterIsSwappable_OnInitStatue.rst class_QPanda_JudgeTwoNodeIterIsSwappable_OnJudgeMatrix.rst class_QPanda_JudgeTwoNodeIterIsSwappable_OnPickUpNode.rst Overview ~~~~~~~~ Judge two node is swappable. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class JudgeTwoNodeIterIsSwappable: public :ref:`QPanda::TraverseByNodeIter` { public: // structs struct :ref:`NodeInCircuitInfo`; // classes class :ref:`AbstractJudgeStatueInterface`; class :ref:`CanNotBeExchange`; class :ref:`CoubleBeExchange`; class :ref:`OnFoundAllNodes`; class :ref:`OnInitStatue`; class :ref:`OnJudgeMatrix`; class :ref:`OnPickUpNode`; // construction :ref:`JudgeTwoNodeIterIsSwappable`(:ref:`QProg` prog, :ref:`NodeIter`& nodeItr_1, :ref:`NodeIter`& nodeItr_2); // methods 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 ); bool :ref:`get_result`(); virtual void :ref:`traverse_qprog`(); bool :ref:`judge_node_type`(); }; 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_judge_two_node_iter_is_swappable: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Judge two node is swappable. Construction ------------ .. index:: pair: function; JudgeTwoNodeIterIsSwappable .. _doxid-class_q_panda_1_1_judge_two_node_iter_is_swappable_1a541e11f5ad59758919fdd8ff285983d3: .. ref-code-block:: cpp :class: doxyrest-title-code-block JudgeTwoNodeIterIsSwappable(:ref:`QProg` prog, :ref:`NodeIter`& nodeItr_1, :ref:`NodeIter`& nodeItr_2) Constructor of :ref:`JudgeTwoNodeIterIsSwappable `. Methods ------- .. index:: pair: function; get_result .. _doxid-class_q_panda_1_1_judge_two_node_iter_is_swappable_1a1893f3ac9aafcd0365bc53f295436f3c: .. ref-code-block:: cpp :class: doxyrest-title-code-block bool get_result() get final judge result .. rubric:: Returns: bool .. index:: pair: function; traverse_qprog .. _doxid-class_q_panda_1_1_judge_two_node_iter_is_swappable_1aa4a16728faeea9bffc647a55209e4bd1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void traverse_qprog() start traverse a quantum prog .. index:: pair: function; judge_node_type .. _doxid-class_q_panda_1_1_judge_two_node_iter_is_swappable_1a54d42c0436d969f2e19d86ad773fd91b: .. ref-code-block:: cpp :class: doxyrest-title-code-block bool judge_node_type() judge the input two node type .. rubric:: Returns: if any input node is unswappable type, return false, else return true.