class QPanda::QCircuitGenerator

#include <QCircuitGenerator.h>

class QCircuitGenerator
{
public:
    // typedefs

    typedef std::shared_ptr<QCircuitGenerator::CircuitNode> CircuitNodeRef;
    typedef std::shared_ptr<QCircuitGenerator> Ref;

    // structs

    struct CircuitNode;

    // methods

    void set_param(
        const QVec& qubits,
        const std::vector<double>& angle
        );

    CircuitNodeRef build_cir_node(
        std::string op,
        const std::vector<uint32_t>& target_q,
        const std::vector<std::string>& angle = {},
        const std::vector<uint32_t>& control_q = {},
        bool is_dagger = false
        );

    QCircuit get_cir();
    void append_cir_node(CircuitNodeRef node);

    void append_cir_node(
        std::string op,
        const std::vector<uint32_t>& target_q,
        const std::vector<std::string>& angle = {},
        const std::vector<uint32_t>& control_q = {},
        bool is_dagger = false
        );

    const std::vector<CircuitNodeRef>& get_cir_node_vec() const;
    uint32_t get_circuit_width();
    void set_circuit_width(uint32_t w);
};