.. index:: pair: class; QPanda::TraversalInterface .. _doxid-class_q_panda_1_1_traversal_interface: template class QPanda::TraversalInterface ========================================= .. toctree:: :hidden: Overview ~~~~~~~~ All objects that want to use the class :ref:`Traversal ` need to integrate this class. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include template class TraversalInterface { 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 ); }; // direct descendants class :ref:`CancelControlQubitVector`; class :ref:`DecomposeControlSingleQGateIntoMetadataDoubleQGate`; class :ref:`DecomposeControlUnitarySingleQGate`; class :ref:`DecomposeDoubleQGate`; class :ref:`DecomposeMultipleControlQGate`; class :ref:`DecomposeUnitarySingleQGateIntoMetadataSingleQGate`; class :ref:`DeleteUnitQNode`; class :ref:`MergeSingleGate`; class :ref:`MPSQVM`; class :ref:`NoiseSimulator`; class :ref:`PartialAmplitudeQVM`; class :ref:`QCodarMatch`; class :ref:`QGateCompare`; class :ref:`QGateCounter`; class :ref:`QNodeDeepCopy`; class :ref:`QProgFlattening`; class :ref:`QProgStored`; class :ref:`QProgToOriginIR`; class :ref:`QProgToQCircuit`; class :ref:`QProgToQGate`; class :ref:`QProgToQMeasure`; class :ref:`QProgToQuil`; class :ref:`SingleAmplitudeQVM`; class :ref:`TopologyMatch`; class :ref:`TraverseByNodeIter`; .. _details-class_q_panda_1_1_traversal_interface: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ All objects that want to use the class :ref:`Traversal ` need to integrate this class. Methods ------- .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1adb53e4c20d48a0efd6e377680d7f0988: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal qgatenode. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractQGateNode\* - quantum gate * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1aed584073b781c9a5c6441b08b14afc3d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal measure node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractQuantumMeasure\* - measure node * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1aadbf69a810033196de1790d3f362ef7a: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal reset node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractQuantumReset\* - reset node * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1aab65fda71b8e1f719bc4b7bdd70a10e7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal control flow node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractControlFlowNode\* - control flow node * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1ab452f71d25eb3354d46346694ff82db7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal qcircuit. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractQuantumCircuit\* - quantum circuit * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1a4e97902dc8b42d5f5f50d790d11f1517: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal qprog. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractQuantumProgram\* - quantum prog * - QNode\* - parent Node .. rubric:: Returns: void .. index:: pair: function; execute .. _doxid-class_q_panda_1_1_traversal_interface_1aa311fe1c6abc46d84d90d6f412be063a: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void execute( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ) Execution traversal qprog. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - AbstractClassicalProg\* - classical prog * - QNode\* - parent Node .. rubric:: Returns: void