.. index:: pair: class; QPanda::QProgFlattening .. _doxid-class_q_panda_1_1_q_prog_flattening: class QPanda::QProgFlattening ============================= .. toctree:: :hidden: Overview ~~~~~~~~ flatten quantum program and quantum circuit :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QProgFlattening: public :ref:`QPanda::TraversalInterface` { public: // construction :target:`QProgFlattening`(bool is_full_faltten = true); // methods void :target:`flatten_circuit`(:ref:`QCircuit`& src_cir); void :target:`flatten_prog`(:ref:`QProg`& src_prog); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); virtual void :target:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QProg`& prog ); static :ref:`QCircuit` :ref:`prog_flatten_to_cir`(:ref:`QProg`& prog); }; 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 ); .. _details-class_q_panda_1_1_q_prog_flattening: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ flatten quantum program and quantum circuit Methods ------- .. index:: pair: function; prog_flatten_to_cir .. _doxid-group___utilities_1gabf5a4452e825f39dd89cef74b375d8dc: .. ref-code-block:: cpp :class: doxyrest-title-code-block static :ref:`QCircuit` prog_flatten_to_cir(:ref:`QProg`& prog) Flatten :ref:`QProg ` to :ref:`QCircuit `. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QProg& - the target :ref:`QProg ` .. rubric:: Returns: Converted circuit @Note: The input :ref:`QProg ` must be no-nesting, and only :ref:`QGate ` type is supported.