template class QPanda::TraversalInterface¶
Overview¶
All objects that want to use the class Traversal need to integrate this class. More…
#include <Traversal.h> template <typename... Args> class TraversalInterface { 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 ); }; // direct descendants class CancelControlQubitVector; class DecomposeControlSingleQGateIntoMetadataDoubleQGate; class DecomposeControlUnitarySingleQGate; class DecomposeDoubleQGate; class DecomposeMultipleControlQGate; class DecomposeUnitarySingleQGateIntoMetadataSingleQGate; class DeleteUnitQNode; class MergeSingleGate; class MPSQVM; class NoiseSimulator; class PartialAmplitudeQVM; class QCodarMatch; class QGateCompare; class QGateCounter; class QNodeDeepCopy; class QProgFlattening; class QProgStored; class QProgToOriginIR; class QProgToQCircuit; class QProgToQGate; class QProgToQMeasure; class QProgToQuil; class SingleAmplitudeQVM; class TopologyMatch; class TraverseByNodeIter;
Detailed Documentation¶
All objects that want to use the class Traversal need to integrate this class.
Methods¶
virtual void execute( std::shared_ptr<AbstractQGateNode> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal qgatenode.
Parameters:
AbstractQGateNode* |
quantum gate |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractQuantumMeasure> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal measure node.
Parameters:
AbstractQuantumMeasure* |
measure node |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractQuantumReset> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal reset node.
Parameters:
AbstractQuantumReset* |
reset node |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractControlFlowNode> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal control flow node.
Parameters:
AbstractControlFlowNode* |
control flow node |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractQuantumCircuit> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal qcircuit.
Parameters:
AbstractQuantumCircuit* |
quantum circuit |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractQuantumProgram> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal qprog.
Parameters:
AbstractQuantumProgram* |
quantum prog |
QNode* |
parent Node |
Returns:
void
virtual void execute( std::shared_ptr<AbstractClassicalProg> cur_node, std::shared_ptr<QNode> parent_node, Args&&... func_args )
Execution traversal qprog.
Parameters:
AbstractClassicalProg* |
classical prog |
QNode* |
parent Node |
Returns:
void