.. index:: pair: class; QPanda::ProcessOnTraversing .. _doxid-class_q_panda_1_1_process_on_traversing: class QPanda::ProcessOnTraversing ================================= .. toctree:: :hidden: Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class ProcessOnTraversing: protected :ref:`QPanda::TraverseByNodeIter` { public: // typedefs typedef :ref:`TopologSequence``>> :target:`layer_iter_seq`; // methods virtual void :target:`process`(const bool on_travel_end) = 0; virtual void :target:`run_traversal`( :ref:`QProg` src_prog, const :ref:`QVec` qubits = {} ); virtual void :target:`do_process`(const bool on_travel_end); 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 ); virtual void :target:`gates_sink_to_topolog_sequence`( :ref:`OptimizerSink`& gate_buf, :ref:`LayeredTopoSeq`& seq, const size_t max_output_layer = :ref:`MAX_LAYER` ); virtual void :ref:`clean_gate_buf_to_cir`(:ref:`QProg`& cir, bool b_clean_all_buf = false); virtual void :target:`clean_gate_buf`(bool b_clean_all_buf = false); virtual void :target:`drop_gates`(const size_t max_drop_layer); virtual void :target:`seq_to_cir`( :ref:`layer_iter_seq`& tmp_seq, :ref:`QProg`& prog, const size_t start_layer_to_cir, const size_t max_output_layer ); virtual void :target:`seq_to_cir`( :ref:`layer_iter_seq`& tmp_seq, :ref:`QProg`& prog ); virtual void :target:`add_node_to_seq`( :ref:`layer_iter_seq`& tmp_seq, :ref:`NodeIter` node_iter, const size_t layer ); }; // direct descendants class :ref:`QCircuitOPtimizer`; 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_process_on_traversing: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Methods ------- .. index:: pair: function; clean_gate_buf_to_cir .. _doxid-group___utilities_1ga99094e26f15c8f0ab168a8e3de78c058: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void clean_gate_buf_to_cir(:ref:`QProg`& cir, bool b_clean_all_buf = false) pop gate buf to circuit .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QProg ` - & the output prog * - bool - whether output all the gate node in gate buf .. rubric:: Returns: