2828#include " circuit/quantumregister.hpp"
2929#include " circuit/library/standard_gates/standard_gates.hpp"
3030#include " circuit/circuitinstruction.hpp"
31+ #include " transpiler/target.hpp"
3132
3233#include < complex>
3334#include " qiskit.h"
@@ -60,6 +61,7 @@ class QuantumCircuit {
6061 std::vector<ClassicalRegister> cregs_;
6162
6263 std::shared_ptr<rust_circuit> rust_circuit_ = nullptr ;
64+ std::shared_ptr<transpiler::Target> target_ = nullptr ;
6365
6466 std::shared_ptr<ControlFlowOp> pending_control_flow_op_ = nullptr ;
6567public:
@@ -96,11 +98,23 @@ class QuantumCircuit {
9698
9799 // / @brief Return number of qubits
98100 // / @return number of qubits
99- uint_t num_qubits (void ) const { return num_qubits_; }
101+ uint_t num_qubits (void ) const
102+ {
103+ if (target_) {
104+ return target_->num_qubits ();
105+ }
106+ return num_qubits_;
107+ }
100108
101109 // / @brief Return number of classical bits
102110 // / @return number of classical bits
103- uint_t num_clbits (void ) const { return num_clbits_; }
111+ uint_t num_clbits (void ) const
112+ {
113+ if (target_) {
114+ return target_->num_qubits ();
115+ }
116+ return num_clbits_;
117+ }
104118
105119 std::shared_ptr<rust_circuit> get_rust_circuit (const bool update = true )
106120 {
@@ -117,6 +131,11 @@ class QuantumCircuit {
117131 // / @param circ smart pointer to RUst circuit
118132 void from_rust_circuit (std::shared_ptr<rust_circuit> circ);
119133
134+ // / @brief set target to this circuit
135+ // / @param target smart pointer to target
136+ // / @details target is set for transpiled circuit
137+ void set_target (std::shared_ptr<transpiler::Target> target);
138+
120139 // / @brief set global phase
121140 // / @param phase global phase value
122141 void global_phase (const double phase);
0 commit comments