Inherited Members
public:
// typedefs
typedef TopologSequence<std::pair<size_t, NodeIter>> layer_iter_seq;
// 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);
virtual void process(const bool on_travel_end) = 0;
virtual void run_traversal(QProg src_prog, const QVec qubits = {});
virtual void do_process(const bool on_travel_end);
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 gates_sink_to_topolog_sequence(OptimizerSink& gate_buf, LayeredTopoSeq& seq, const size_t max_output_layer = MAX_LAYER);
virtual void clean_gate_buf_to_cir(QProg& cir, bool b_clean_all_buf = false);
virtual void clean_gate_buf(bool b_clean_all_buf = false);
virtual void drop_gates(const size_t max_drop_layer);
virtual void seq_to_cir(
layer_iter_seq& tmp_seq,
QProg& prog,
const size_t start_layer_to_cir,
const size_t max_output_layer
);
virtual void seq_to_cir(layer_iter_seq& tmp_seq, QProg& prog);
virtual void add_node_to_seq(layer_iter_seq& tmp_seq, NodeIter node_iter, const size_t layer);