class QPanda::AdjacentQGates¶
Get information about adjacent nodes.
#include <GetAdjacentNodes.h> class AdjacentQGates: public QPanda::TraverseByNodeIter { public: // classes class AbstractTraversalStatueInterface; class FoundAllAdjacentNode; class HaveNotFoundTargetNode; class ToFindBackNode; // construction AdjacentQGates( QProg prog, NodeIter& nodeItr ); // methods virtual void execute( std::shared_ptr<AbstractQGateNode> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumMeasure> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumReset> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractControlFlowNode> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractClassicalProg> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumCircuit> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumProgram> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void traverse_qprog(); void update_front_iter( const NodeIter& itr, const QCircuitParam& cir_param ); void update_back_iter( const NodeIter& itr, const QCircuitParam& cir_param ); GateType get_node_ype(const NodeIter& ter); std::string get_node_type_str(const NodeIter& ter); std::string get_back_node_type_str(); std::string get_front_node_type_str(); bool is_valid_node_type(const NodeIter& itr); bool is_valid_node_type(const NodeType t); const NodeInfo& get_front_node(); const NodeInfo& get_back_node(); void change_traversal_statue(AbstractTraversalStatueInterface* s); static bool is_sub_prog_node(const std::shared_ptr<QNode>& node); static bool is_flow_ctrl_node(const std::shared_ptr<QNode>& node); };
Inherited Members¶
public: // methods virtual void execute( std::shared_ptr<AbstractQGateNode> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractQuantumMeasure> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractQuantumReset> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractControlFlowNode> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractQuantumCircuit> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractQuantumProgram> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractClassicalProg> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args ); virtual void execute( std::shared_ptr<AbstractQGateNode> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumMeasure> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumReset> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractClassicalProg> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractControlFlowNode> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumCircuit> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void execute( std::shared_ptr<AbstractQuantumProgram> cur_node, std::shared_ptr<QNode> parent_node, QCircuitParam& cir_param, NodeIter& cur_node_iter ); virtual void traverse_qprog(QProg prog);