namespace QGATE_SPACE

QGATE namespace.

namespace QGATE_SPACE {

// classes

class AbstractAngleParameter;
class AbstractSingleAngleParameter;
class BARRIER;
class CNOT;
class CPHASE;
class CU;
class CZ;

template <typename T, typename ... Targs>
class DynamicCreator;

class ECHO;
class H;
class I;
class ISWAP;
class ISWAPTheta;
class OracularGate;
class QDoubleGate;

template <typename ... Targs>
class QGateFactory;

class QuantumGate;
class RPhi;
class RX;
class RY;
class RZ;
class S;
class SQISWAP;
class SWAP;
class T;
class U1;
class U2;
class U3;
class U4;
class X;
class X1;
class Y;
class Y1;
class Z;
class Z1;

// global functions

template <typename ... Targs>
QuantumGate* create_quantum_gate(
    const std::string& type_name,
    Targs&&... args
    );

} // namespace QGATE_SPACE