# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_libQasm')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_libQasm')
    _libQasm = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_libQasm', [dirname(__file__)])
        except ImportError:
            import _libQasm
            return _libQasm
        try:
            _mod = imp.load_module('_libQasm', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _libQasm = swig_import_helper()
    del swig_import_helper
else:
    import _libQasm
del _swig_python_version_info

try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0

class SwigPyIterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name)

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _libQasm.delete_SwigPyIterator
    __del__ = lambda self: None

    def value(self):
        return _libQasm.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _libQasm.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _libQasm.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _libQasm.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _libQasm.SwigPyIterator_equal(self, x)

    def copy(self):
        return _libQasm.SwigPyIterator_copy(self)

    def next(self):
        return _libQasm.SwigPyIterator_next(self)

    def __next__(self):
        return _libQasm.SwigPyIterator___next__(self)

    def previous(self):
        return _libQasm.SwigPyIterator_previous(self)

    def advance(self, n):
        return _libQasm.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _libQasm.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _libQasm.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _libQasm.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _libQasm.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _libQasm.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _libQasm.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self
SwigPyIterator_swigregister = _libQasm.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

class ios_base(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, ios_base, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, ios_base, name)

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    erase_event = _libQasm.ios_base_erase_event
    imbue_event = _libQasm.ios_base_imbue_event
    copyfmt_event = _libQasm.ios_base_copyfmt_event

    def register_callback(self, __fn, __index):
        return _libQasm.ios_base_register_callback(self, __fn, __index)

    def flags(self, *args):
        return _libQasm.ios_base_flags(self, *args)

    def setf(self, *args):
        return _libQasm.ios_base_setf(self, *args)

    def unsetf(self, __mask):
        return _libQasm.ios_base_unsetf(self, __mask)

    def precision(self, *args):
        return _libQasm.ios_base_precision(self, *args)

    def width(self, *args):
        return _libQasm.ios_base_width(self, *args)
    if _newclass:
        sync_with_stdio = staticmethod(_libQasm.ios_base_sync_with_stdio)
    else:
        sync_with_stdio = _libQasm.ios_base_sync_with_stdio

    def imbue(self, __loc):
        return _libQasm.ios_base_imbue(self, __loc)

    def getloc(self):
        return _libQasm.ios_base_getloc(self)
    if _newclass:
        xalloc = staticmethod(_libQasm.ios_base_xalloc)
    else:
        xalloc = _libQasm.ios_base_xalloc

    def iword(self, __ix):
        return _libQasm.ios_base_iword(self, __ix)

    def pword(self, __ix):
        return _libQasm.ios_base_pword(self, __ix)
    __swig_destroy__ = _libQasm.delete_ios_base
    __del__ = lambda self: None
ios_base_swigregister = _libQasm.ios_base_swigregister
ios_base_swigregister(ios_base)
cvar = _libQasm.cvar
ios_base.boolalpha = _libQasm.cvar.ios_base_boolalpha
ios_base.dec = _libQasm.cvar.ios_base_dec
ios_base.fixed = _libQasm.cvar.ios_base_fixed
ios_base.hex = _libQasm.cvar.ios_base_hex
ios_base.internal = _libQasm.cvar.ios_base_internal
ios_base.left = _libQasm.cvar.ios_base_left
ios_base.oct = _libQasm.cvar.ios_base_oct
ios_base.right = _libQasm.cvar.ios_base_right
ios_base.scientific = _libQasm.cvar.ios_base_scientific
ios_base.showbase = _libQasm.cvar.ios_base_showbase
ios_base.showpoint = _libQasm.cvar.ios_base_showpoint
ios_base.showpos = _libQasm.cvar.ios_base_showpos
ios_base.skipws = _libQasm.cvar.ios_base_skipws
ios_base.unitbuf = _libQasm.cvar.ios_base_unitbuf
ios_base.uppercase = _libQasm.cvar.ios_base_uppercase
ios_base.adjustfield = _libQasm.cvar.ios_base_adjustfield
ios_base.basefield = _libQasm.cvar.ios_base_basefield
ios_base.floatfield = _libQasm.cvar.ios_base_floatfield
ios_base.badbit = _libQasm.cvar.ios_base_badbit
ios_base.eofbit = _libQasm.cvar.ios_base_eofbit
ios_base.failbit = _libQasm.cvar.ios_base_failbit
ios_base.goodbit = _libQasm.cvar.ios_base_goodbit
ios_base.app = _libQasm.cvar.ios_base_app
ios_base.ate = _libQasm.cvar.ios_base_ate
ios_base.binary = _libQasm.cvar.ios_base_binary
ios_base.ios_base_in = _libQasm.cvar.ios_base_ios_base_in
ios_base.out = _libQasm.cvar.ios_base_out
ios_base.trunc = _libQasm.cvar.ios_base_trunc
ios_base.beg = _libQasm.cvar.ios_base_beg
ios_base.cur = _libQasm.cvar.ios_base_cur
ios_base.end = _libQasm.cvar.ios_base_end

def ios_base_sync_with_stdio(__sync=True):
    return _libQasm.ios_base_sync_with_stdio(__sync)
ios_base_sync_with_stdio = _libQasm.ios_base_sync_with_stdio

def ios_base_xalloc():
    return _libQasm.ios_base_xalloc()
ios_base_xalloc = _libQasm.ios_base_xalloc

class ios(ios_base):
    __swig_setmethods__ = {}
    for _s in [ios_base]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, ios, name, value)
    __swig_getmethods__ = {}
    for _s in [ios_base]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, ios, name)
    __repr__ = _swig_repr

    def rdstate(self):
        return _libQasm.ios_rdstate(self)

    def clear(self, *args):
        return _libQasm.ios_clear(self, *args)

    def setstate(self, __state):
        return _libQasm.ios_setstate(self, __state)

    def good(self):
        return _libQasm.ios_good(self)

    def eof(self):
        return _libQasm.ios_eof(self)

    def fail(self):
        return _libQasm.ios_fail(self)

    def bad(self):
        return _libQasm.ios_bad(self)

    def exceptions(self, *args):
        return _libQasm.ios_exceptions(self, *args)

    def __init__(self, __sb):
        this = _libQasm.new_ios(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_ios
    __del__ = lambda self: None

    def tie(self, *args):
        return _libQasm.ios_tie(self, *args)

    def rdbuf(self, *args):
        return _libQasm.ios_rdbuf(self, *args)

    def copyfmt(self, __rhs):
        return _libQasm.ios_copyfmt(self, __rhs)

    def fill(self, *args):
        return _libQasm.ios_fill(self, *args)

    def imbue(self, __loc):
        return _libQasm.ios_imbue(self, __loc)

    def narrow(self, __c, __dfault):
        return _libQasm.ios_narrow(self, __c, __dfault)

    def widen(self, __c):
        return _libQasm.ios_widen(self, __c)
ios_swigregister = _libQasm.ios_swigregister
ios_swigregister(ios)

class ostream(ios):
    __swig_setmethods__ = {}
    for _s in [ios]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, ostream, name, value)
    __swig_getmethods__ = {}
    for _s in [ios]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, ostream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_ostream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_ostream
    __del__ = lambda self: None

    def __lshift__(self, *args):
        return _libQasm.ostream___lshift__(self, *args)

    def put(self, __c):
        return _libQasm.ostream_put(self, __c)

    def write(self, __s, __n):
        return _libQasm.ostream_write(self, __s, __n)

    def flush(self):
        return _libQasm.ostream_flush(self)

    def tellp(self):
        return _libQasm.ostream_tellp(self)

    def seekp(self, *args):
        return _libQasm.ostream_seekp(self, *args)
ostream_swigregister = _libQasm.ostream_swigregister
ostream_swigregister(ostream)
cin = cvar.cin
cout = cvar.cout
cerr = cvar.cerr
clog = cvar.clog

class istream(ios):
    __swig_setmethods__ = {}
    for _s in [ios]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, istream, name, value)
    __swig_getmethods__ = {}
    for _s in [ios]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, istream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_istream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_istream
    __del__ = lambda self: None

    def __rshift__(self, *args):
        return _libQasm.istream___rshift__(self, *args)

    def gcount(self):
        return _libQasm.istream_gcount(self)

    def get(self, *args):
        return _libQasm.istream_get(self, *args)

    def getline(self, *args):
        return _libQasm.istream_getline(self, *args)

    def ignore(self, *args):
        return _libQasm.istream_ignore(self, *args)

    def peek(self):
        return _libQasm.istream_peek(self)

    def read(self, __s, __n):
        return _libQasm.istream_read(self, __s, __n)

    def readsome(self, __s, __n):
        return _libQasm.istream_readsome(self, __s, __n)

    def putback(self, __c):
        return _libQasm.istream_putback(self, __c)

    def unget(self):
        return _libQasm.istream_unget(self)

    def sync(self):
        return _libQasm.istream_sync(self)

    def tellg(self):
        return _libQasm.istream_tellg(self)

    def seekg(self, *args):
        return _libQasm.istream_seekg(self, *args)
istream_swigregister = _libQasm.istream_swigregister
istream_swigregister(istream)

class iostream(istream, ostream):
    __swig_setmethods__ = {}
    for _s in [istream, ostream]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, iostream, name, value)
    __swig_getmethods__ = {}
    for _s in [istream, ostream]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, iostream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_iostream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_iostream
    __del__ = lambda self: None
iostream_swigregister = _libQasm.iostream_swigregister
iostream_swigregister(iostream)

endl_cb_ptr = _libQasm.endl_cb_ptr

def endl(arg1):
    return _libQasm.endl(arg1)
endl = _libQasm.endl
ends_cb_ptr = _libQasm.ends_cb_ptr

def ends(arg1):
    return _libQasm.ends(arg1)
ends = _libQasm.ends
flush_cb_ptr = _libQasm.flush_cb_ptr

def flush(arg1):
    return _libQasm.flush(arg1)
flush = _libQasm.flush
class vectori(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectori, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectori, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectori_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectori___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectori___bool__(self)

    def __len__(self):
        return _libQasm.vectori___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectori___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectori___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectori___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectori___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectori___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectori___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectori_pop(self)

    def append(self, x):
        return _libQasm.vectori_append(self, x)

    def empty(self):
        return _libQasm.vectori_empty(self)

    def size(self):
        return _libQasm.vectori_size(self)

    def swap(self, v):
        return _libQasm.vectori_swap(self, v)

    def begin(self):
        return _libQasm.vectori_begin(self)

    def end(self):
        return _libQasm.vectori_end(self)

    def rbegin(self):
        return _libQasm.vectori_rbegin(self)

    def rend(self):
        return _libQasm.vectori_rend(self)

    def clear(self):
        return _libQasm.vectori_clear(self)

    def get_allocator(self):
        return _libQasm.vectori_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectori_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectori_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectori(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectori_push_back(self, x)

    def front(self):
        return _libQasm.vectori_front(self)

    def back(self):
        return _libQasm.vectori_back(self)

    def assign(self, n, x):
        return _libQasm.vectori_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectori_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectori_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectori_reserve(self, n)

    def capacity(self):
        return _libQasm.vectori_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectori
    __del__ = lambda self: None
vectori_swigregister = _libQasm.vectori_swigregister
vectori_swigregister(vectori)

class vectorui(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectorui, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectorui, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectorui_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectorui___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectorui___bool__(self)

    def __len__(self):
        return _libQasm.vectorui___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectorui___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectorui___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectorui___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectorui___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectorui___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectorui___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectorui_pop(self)

    def append(self, x):
        return _libQasm.vectorui_append(self, x)

    def empty(self):
        return _libQasm.vectorui_empty(self)

    def size(self):
        return _libQasm.vectorui_size(self)

    def swap(self, v):
        return _libQasm.vectorui_swap(self, v)

    def begin(self):
        return _libQasm.vectorui_begin(self)

    def end(self):
        return _libQasm.vectorui_end(self)

    def rbegin(self):
        return _libQasm.vectorui_rbegin(self)

    def rend(self):
        return _libQasm.vectorui_rend(self)

    def clear(self):
        return _libQasm.vectorui_clear(self)

    def get_allocator(self):
        return _libQasm.vectorui_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectorui_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectorui_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectorui(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectorui_push_back(self, x)

    def front(self):
        return _libQasm.vectorui_front(self)

    def back(self):
        return _libQasm.vectorui_back(self)

    def assign(self, n, x):
        return _libQasm.vectorui_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectorui_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectorui_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectorui_reserve(self, n)

    def capacity(self):
        return _libQasm.vectorui_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectorui
    __del__ = lambda self: None
vectorui_swigregister = _libQasm.vectorui_swigregister
vectorui_swigregister(vectorui)

class vectorf(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectorf, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectorf, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectorf_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectorf___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectorf___bool__(self)

    def __len__(self):
        return _libQasm.vectorf___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectorf___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectorf___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectorf___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectorf___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectorf___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectorf___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectorf_pop(self)

    def append(self, x):
        return _libQasm.vectorf_append(self, x)

    def empty(self):
        return _libQasm.vectorf_empty(self)

    def size(self):
        return _libQasm.vectorf_size(self)

    def swap(self, v):
        return _libQasm.vectorf_swap(self, v)

    def begin(self):
        return _libQasm.vectorf_begin(self)

    def end(self):
        return _libQasm.vectorf_end(self)

    def rbegin(self):
        return _libQasm.vectorf_rbegin(self)

    def rend(self):
        return _libQasm.vectorf_rend(self)

    def clear(self):
        return _libQasm.vectorf_clear(self)

    def get_allocator(self):
        return _libQasm.vectorf_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectorf_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectorf_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectorf(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectorf_push_back(self, x)

    def front(self):
        return _libQasm.vectorf_front(self)

    def back(self):
        return _libQasm.vectorf_back(self)

    def assign(self, n, x):
        return _libQasm.vectorf_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectorf_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectorf_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectorf_reserve(self, n)

    def capacity(self):
        return _libQasm.vectorf_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectorf
    __del__ = lambda self: None
vectorf_swigregister = _libQasm.vectorf_swigregister
vectorf_swigregister(vectorf)

class vectord(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectord, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectord, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectord_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectord___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectord___bool__(self)

    def __len__(self):
        return _libQasm.vectord___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectord___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectord___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectord___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectord___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectord___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectord___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectord_pop(self)

    def append(self, x):
        return _libQasm.vectord_append(self, x)

    def empty(self):
        return _libQasm.vectord_empty(self)

    def size(self):
        return _libQasm.vectord_size(self)

    def swap(self, v):
        return _libQasm.vectord_swap(self, v)

    def begin(self):
        return _libQasm.vectord_begin(self)

    def end(self):
        return _libQasm.vectord_end(self)

    def rbegin(self):
        return _libQasm.vectord_rbegin(self)

    def rend(self):
        return _libQasm.vectord_rend(self)

    def clear(self):
        return _libQasm.vectord_clear(self)

    def get_allocator(self):
        return _libQasm.vectord_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectord_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectord_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectord(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectord_push_back(self, x)

    def front(self):
        return _libQasm.vectord_front(self)

    def back(self):
        return _libQasm.vectord_back(self)

    def assign(self, n, x):
        return _libQasm.vectord_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectord_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectord_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectord_reserve(self, n)

    def capacity(self):
        return _libQasm.vectord_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectord
    __del__ = lambda self: None
vectord_swigregister = _libQasm.vectord_swigregister
vectord_swigregister(vectord)

class NumericalIdentifiers(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, NumericalIdentifiers, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, NumericalIdentifiers, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_NumericalIdentifiers()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def addToVector(self, *args):
        return _libQasm.NumericalIdentifiers_addToVector(self, *args)

    def getIndices(self):
        return _libQasm.NumericalIdentifiers_getIndices(self)

    def removeDuplicates(self):
        return _libQasm.NumericalIdentifiers_removeDuplicates(self)

    def clear(self):
        return _libQasm.NumericalIdentifiers_clear(self)

    def printMembers(self):
        return _libQasm.NumericalIdentifiers_printMembers(self)
    __swig_destroy__ = _libQasm.delete_NumericalIdentifiers
    __del__ = lambda self: None
NumericalIdentifiers_swigregister = _libQasm.NumericalIdentifiers_swigregister
NumericalIdentifiers_swigregister(NumericalIdentifiers)

class Qubits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Qubits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Qubits, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Qubits(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def setSelectedQubits(self, indices):
        return _libQasm.Qubits_setSelectedQubits(self, indices)

    def getSelectedQubits(self):
        return _libQasm.Qubits_getSelectedQubits(self)

    def printMembers(self):
        return _libQasm.Qubits_printMembers(self)
    __swig_destroy__ = _libQasm.delete_Qubits
    __del__ = lambda self: None
Qubits_swigregister = _libQasm.Qubits_swigregister
Qubits_swigregister(Qubits)

class Bits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Bits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Bits, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Bits(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def setSelectedBits(self, indices):
        return _libQasm.Bits_setSelectedBits(self, indices)

    def getSelectedBits(self):
        return _libQasm.Bits_getSelectedBits(self)

    def printMembers(self):
        return _libQasm.Bits_printMembers(self)
    __swig_destroy__ = _libQasm.delete_Bits
    __del__ = lambda self: None
Bits_swigregister = _libQasm.Bits_swigregister
Bits_swigregister(Bits)

class Operation(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Operation, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Operation, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Operation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def getType(self):
        return _libQasm.Operation_getType(self)

    def getStateFilename(self):
        return _libQasm.Operation_getStateFilename(self)

    def getQubitsInvolved(self, *args):
        return _libQasm.Operation_getQubitsInvolved(self, *args)

    def getRotationAngle(self):
        return _libQasm.Operation_getRotationAngle(self)

    def getMeasureParityQubitsAndAxis(self):
        return _libQasm.Operation_getMeasureParityQubitsAndAxis(self)

    def getTwoQubitPairs(self):
        return _libQasm.Operation_getTwoQubitPairs(self)

    def getToffoliQubitPairs(self):
        return _libQasm.Operation_getToffoliQubitPairs(self)

    def isBitControlled(self):
        return _libQasm.Operation_isBitControlled(self)

    def allQubitsBits(self):
        return _libQasm.Operation_allQubitsBits(self)

    def setControlBits(self, control_bits):
        return _libQasm.Operation_setControlBits(self, control_bits)

    def getControlBits(self):
        return _libQasm.Operation_getControlBits(self)

    def getDisplayBits(self):
        return _libQasm.Operation_getDisplayBits(self)

    def getWaitTime(self):
        return _libQasm.Operation_getWaitTime(self)

    def setUMatrixElements(self, input):
        return _libQasm.Operation_setUMatrixElements(self, input)

    def getUMatrixElements(self):
        return _libQasm.Operation_getUMatrixElements(self)

    def printOperation(self):
        return _libQasm.Operation_printOperation(self)
    __swig_destroy__ = _libQasm.delete_Operation
    __del__ = lambda self: None
Operation_swigregister = _libQasm.Operation_swigregister
Operation_swigregister(Operation)

class OperationsCluster(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, OperationsCluster, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, OperationsCluster, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_OperationsCluster(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def lastOperation(self):
        return _libQasm.OperationsCluster_lastOperation(self)

    def addOperation(self, valid_op):
        return _libQasm.OperationsCluster_addOperation(self, valid_op)

    def addParallelOperation(self, valid_op):
        return _libQasm.OperationsCluster_addParallelOperation(self, valid_op)

    def isParallel(self):
        return _libQasm.OperationsCluster_isParallel(self)

    def getOperations(self):
        return _libQasm.OperationsCluster_getOperations(self)

    def setLineNumber(self, linenumber):
        return _libQasm.OperationsCluster_setLineNumber(self, linenumber)

    def getLineNumber(self):
        return _libQasm.OperationsCluster_getLineNumber(self)

    def printOperations(self):
        return _libQasm.OperationsCluster_printOperations(self)
    __swig_destroy__ = _libQasm.delete_OperationsCluster
    __del__ = lambda self: None
OperationsCluster_swigregister = _libQasm.OperationsCluster_swigregister
OperationsCluster_swigregister(OperationsCluster)

class SubCircuit(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SubCircuit, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SubCircuit, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_SubCircuit(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def numberIterations(self, *args):
        return _libQasm.SubCircuit_numberIterations(self, *args)

    def getLineNumber(self):
        return _libQasm.SubCircuit_getLineNumber(self)

    def rankSubCircuit(self):
        return _libQasm.SubCircuit_rankSubCircuit(self)

    def nameSubCircuit(self):
        return _libQasm.SubCircuit_nameSubCircuit(self)

    def addOperationsCluster(self, opclus):
        return _libQasm.SubCircuit_addOperationsCluster(self, opclus)

    def lastOperationsCluster(self):
        return _libQasm.SubCircuit_lastOperationsCluster(self)

    def getOperationsCluster(self):
        return _libQasm.SubCircuit_getOperationsCluster(self)

    def printMembers(self):
        return _libQasm.SubCircuit_printMembers(self)
    __swig_destroy__ = _libQasm.delete_SubCircuit
    __del__ = lambda self: None
SubCircuit_swigregister = _libQasm.SubCircuit_swigregister
SubCircuit_swigregister(SubCircuit)

class SubCircuits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SubCircuits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SubCircuits, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_SubCircuits()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def addSubCircuit(self, subcircuit):
        return _libQasm.SubCircuits_addSubCircuit(self, subcircuit)

    def numberOfSubCircuits(self):
        return _libQasm.SubCircuits_numberOfSubCircuits(self)

    def lastSubCircuit(self):
        return _libQasm.SubCircuits_lastSubCircuit(self)

    def getAllSubCircuits(self):
        return _libQasm.SubCircuits_getAllSubCircuits(self)

    def clearSubCircuits(self):
        return _libQasm.SubCircuits_clearSubCircuits(self)
    __swig_destroy__ = _libQasm.delete_SubCircuits
    __del__ = lambda self: None
SubCircuits_swigregister = _libQasm.SubCircuits_swigregister
SubCircuits_swigregister(SubCircuits)

class QasmRepresentation(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, QasmRepresentation, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, QasmRepresentation, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_QasmRepresentation()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def qubitRegister(self, participating_number):
        return _libQasm.QasmRepresentation_qubitRegister(self, participating_number)

    def numQubits(self):
        return _libQasm.QasmRepresentation_numQubits(self)

    def versionNumber(self, *args):
        return _libQasm.QasmRepresentation_versionNumber(self, *args)

    def getSubCircuits(self):
        return _libQasm.QasmRepresentation_getSubCircuits(self)

    def addMappings(self, name_key, indices, isQubit):
        return _libQasm.QasmRepresentation_addMappings(self, name_key, indices, isQubit)

    def getMappedIndices(self, name_key, isQubit, linenumber):
        return _libQasm.QasmRepresentation_getMappedIndices(self, name_key, isQubit, linenumber)

    def setErrorModel(self, error_model_type, error_model_num_params):
        return _libQasm.QasmRepresentation_setErrorModel(self, error_model_type, error_model_num_params)

    def getErrorModelType(self):
        return _libQasm.QasmRepresentation_getErrorModelType(self)

    def getErrorModelParameters(self):
        return _libQasm.QasmRepresentation_getErrorModelParameters(self)

    def printMappings(self):
        return _libQasm.QasmRepresentation_printMappings(self)

    def printErrorModel(self):
        return _libQasm.QasmRepresentation_printErrorModel(self)
    __swig_destroy__ = _libQasm.delete_QasmRepresentation
    __del__ = lambda self: None
QasmRepresentation_swigregister = _libQasm.QasmRepresentation_swigregister
QasmRepresentation_swigregister(QasmRepresentation)

class libQasm(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, libQasm, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, libQasm, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_libQasm()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def parse_string(self, qasm_str):
        return _libQasm.libQasm_parse_string(self, qasm_str)

    def parse_file(self, qasm_file_path):
        return _libQasm.libQasm_parse_file(self, qasm_file_path)

    def getParseResult(self):
        return _libQasm.libQasm_getParseResult(self)

    def getQasmRepresentation(self):
        return _libQasm.libQasm_getQasmRepresentation(self)
    __swig_destroy__ = _libQasm.delete_libQasm
    __del__ = lambda self: None
libQasm_swigregister = _libQasm.libQasm_swigregister
libQasm_swigregister(libQasm)

class subcircuit_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, subcircuit_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, subcircuit_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.subcircuit_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.subcircuit_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.subcircuit_vector___bool__(self)

    def __len__(self):
        return _libQasm.subcircuit_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.subcircuit_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.subcircuit_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.subcircuit_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.subcircuit_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.subcircuit_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.subcircuit_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.subcircuit_vector_pop(self)

    def append(self, x):
        return _libQasm.subcircuit_vector_append(self, x)

    def empty(self):
        return _libQasm.subcircuit_vector_empty(self)

    def size(self):
        return _libQasm.subcircuit_vector_size(self)

    def swap(self, v):
        return _libQasm.subcircuit_vector_swap(self, v)

    def begin(self):
        return _libQasm.subcircuit_vector_begin(self)

    def end(self):
        return _libQasm.subcircuit_vector_end(self)

    def rbegin(self):
        return _libQasm.subcircuit_vector_rbegin(self)

    def rend(self):
        return _libQasm.subcircuit_vector_rend(self)

    def clear(self):
        return _libQasm.subcircuit_vector_clear(self)

    def get_allocator(self):
        return _libQasm.subcircuit_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.subcircuit_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.subcircuit_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_subcircuit_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.subcircuit_vector_push_back(self, x)

    def front(self):
        return _libQasm.subcircuit_vector_front(self)

    def back(self):
        return _libQasm.subcircuit_vector_back(self)

    def assign(self, n, x):
        return _libQasm.subcircuit_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.subcircuit_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.subcircuit_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.subcircuit_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.subcircuit_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_subcircuit_vector
    __del__ = lambda self: None
subcircuit_vector_swigregister = _libQasm.subcircuit_vector_swigregister
subcircuit_vector_swigregister(subcircuit_vector)

class operationscluster_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, operationscluster_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, operationscluster_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.operationscluster_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.operationscluster_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.operationscluster_vector___bool__(self)

    def __len__(self):
        return _libQasm.operationscluster_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.operationscluster_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.operationscluster_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.operationscluster_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.operationscluster_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.operationscluster_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.operationscluster_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.operationscluster_vector_pop(self)

    def append(self, x):
        return _libQasm.operationscluster_vector_append(self, x)

    def empty(self):
        return _libQasm.operationscluster_vector_empty(self)

    def size(self):
        return _libQasm.operationscluster_vector_size(self)

    def swap(self, v):
        return _libQasm.operationscluster_vector_swap(self, v)

    def begin(self):
        return _libQasm.operationscluster_vector_begin(self)

    def end(self):
        return _libQasm.operationscluster_vector_end(self)

    def rbegin(self):
        return _libQasm.operationscluster_vector_rbegin(self)

    def rend(self):
        return _libQasm.operationscluster_vector_rend(self)

    def clear(self):
        return _libQasm.operationscluster_vector_clear(self)

    def get_allocator(self):
        return _libQasm.operationscluster_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.operationscluster_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.operationscluster_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_operationscluster_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.operationscluster_vector_push_back(self, x)

    def front(self):
        return _libQasm.operationscluster_vector_front(self)

    def back(self):
        return _libQasm.operationscluster_vector_back(self)

    def assign(self, n, x):
        return _libQasm.operationscluster_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.operationscluster_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.operationscluster_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.operationscluster_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.operationscluster_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_operationscluster_vector
    __del__ = lambda self: None
operationscluster_vector_swigregister = _libQasm.operationscluster_vector_swigregister
operationscluster_vector_swigregister(operationscluster_vector)

class operation_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, operation_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, operation_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.operation_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.operation_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.operation_vector___bool__(self)

    def __len__(self):
        return _libQasm.operation_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.operation_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.operation_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.operation_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.operation_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.operation_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.operation_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.operation_vector_pop(self)

    def append(self, x):
        return _libQasm.operation_vector_append(self, x)

    def empty(self):
        return _libQasm.operation_vector_empty(self)

    def size(self):
        return _libQasm.operation_vector_size(self)

    def swap(self, v):
        return _libQasm.operation_vector_swap(self, v)

    def begin(self):
        return _libQasm.operation_vector_begin(self)

    def end(self):
        return _libQasm.operation_vector_end(self)

    def rbegin(self):
        return _libQasm.operation_vector_rbegin(self)

    def rend(self):
        return _libQasm.operation_vector_rend(self)

    def clear(self):
        return _libQasm.operation_vector_clear(self)

    def get_allocator(self):
        return _libQasm.operation_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.operation_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.operation_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_operation_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.operation_vector_push_back(self, x)

    def front(self):
        return _libQasm.operation_vector_front(self)

    def back(self):
        return _libQasm.operation_vector_back(self)

    def assign(self, n, x):
        return _libQasm.operation_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.operation_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.operation_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.operation_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.operation_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_operation_vector
    __del__ = lambda self: None
operation_vector_swigregister = _libQasm.operation_vector_swigregister
operation_vector_swigregister(operation_vector)

class twoqubitgatequbits_pair(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, twoqubitgatequbits_pair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, twoqubitgatequbits_pair, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_twoqubitgatequbits_pair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_setmethods__["first"] = _libQasm.twoqubitgatequbits_pair_first_set
    __swig_getmethods__["first"] = _libQasm.twoqubitgatequbits_pair_first_get
    if _newclass:
        first = _swig_property(_libQasm.twoqubitgatequbits_pair_first_get, _libQasm.twoqubitgatequbits_pair_first_set)
    __swig_setmethods__["second"] = _libQasm.twoqubitgatequbits_pair_second_set
    __swig_getmethods__["second"] = _libQasm.twoqubitgatequbits_pair_second_get
    if _newclass:
        second = _swig_property(_libQasm.twoqubitgatequbits_pair_second_get, _libQasm.twoqubitgatequbits_pair_second_set)
    def __len__(self):
        return 2
    def __repr__(self):
        return str((self.first, self.second))
    def __getitem__(self, index): 
        if not (index % 2):
            return self.first
        else:
            return self.second
    def __setitem__(self, index, val):
        if not (index % 2):
            self.first = val
        else:
            self.second = val
    __swig_destroy__ = _libQasm.delete_twoqubitgatequbits_pair
    __del__ = lambda self: None
twoqubitgatequbits_pair_swigregister = _libQasm.twoqubitgatequbits_pair_swigregister
twoqubitgatequbits_pair_swigregister(twoqubitgatequbits_pair)

class toffoliqubits_pair(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, toffoliqubits_pair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, toffoliqubits_pair, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_toffoliqubits_pair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_setmethods__["first"] = _libQasm.toffoliqubits_pair_first_set
    __swig_getmethods__["first"] = _libQasm.toffoliqubits_pair_first_get
    if _newclass:
        first = _swig_property(_libQasm.toffoliqubits_pair_first_get, _libQasm.toffoliqubits_pair_first_set)
    __swig_setmethods__["second"] = _libQasm.toffoliqubits_pair_second_set
    __swig_getmethods__["second"] = _libQasm.toffoliqubits_pair_second_get
    if _newclass:
        second = _swig_property(_libQasm.toffoliqubits_pair_second_get, _libQasm.toffoliqubits_pair_second_set)
    def __len__(self):
        return 2
    def __repr__(self):
        return str((self.first, self.second))
    def __getitem__(self, index): 
        if not (index % 2):
            return self.first
        else:
            return self.second
    def __setitem__(self, index, val):
        if not (index % 2):
            self.first = val
        else:
            self.second = val
    __swig_destroy__ = _libQasm.delete_toffoliqubits_pair
    __del__ = lambda self: None
toffoliqubits_pair_swigregister = _libQasm.toffoliqubits_pair_swigregister
toffoliqubits_pair_swigregister(toffoliqubits_pair)

# This file is compatible with both classic and new-style classes.



# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_libQasm')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_libQasm')
    _libQasm = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_libQasm', [dirname(__file__)])
        except ImportError:
            import _libQasm
            return _libQasm
        try:
            _mod = imp.load_module('_libQasm', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _libQasm = swig_import_helper()
    del swig_import_helper
else:
    import _libQasm
del _swig_python_version_info

try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0

class SwigPyIterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name)

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _libQasm.delete_SwigPyIterator
    __del__ = lambda self: None

    def value(self):
        return _libQasm.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _libQasm.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _libQasm.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _libQasm.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _libQasm.SwigPyIterator_equal(self, x)

    def copy(self):
        return _libQasm.SwigPyIterator_copy(self)

    def next(self):
        return _libQasm.SwigPyIterator_next(self)

    def __next__(self):
        return _libQasm.SwigPyIterator___next__(self)

    def previous(self):
        return _libQasm.SwigPyIterator_previous(self)

    def advance(self, n):
        return _libQasm.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _libQasm.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _libQasm.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _libQasm.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _libQasm.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _libQasm.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _libQasm.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self
SwigPyIterator_swigregister = _libQasm.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

class ios_base(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, ios_base, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, ios_base, name)

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    erase_event = _libQasm.ios_base_erase_event
    imbue_event = _libQasm.ios_base_imbue_event
    copyfmt_event = _libQasm.ios_base_copyfmt_event

    def register_callback(self, __fn, __index):
        return _libQasm.ios_base_register_callback(self, __fn, __index)

    def flags(self, *args):
        return _libQasm.ios_base_flags(self, *args)

    def setf(self, *args):
        return _libQasm.ios_base_setf(self, *args)

    def unsetf(self, __mask):
        return _libQasm.ios_base_unsetf(self, __mask)

    def precision(self, *args):
        return _libQasm.ios_base_precision(self, *args)

    def width(self, *args):
        return _libQasm.ios_base_width(self, *args)
    if _newclass:
        sync_with_stdio = staticmethod(_libQasm.ios_base_sync_with_stdio)
    else:
        sync_with_stdio = _libQasm.ios_base_sync_with_stdio

    def imbue(self, __loc):
        return _libQasm.ios_base_imbue(self, __loc)

    def getloc(self):
        return _libQasm.ios_base_getloc(self)
    if _newclass:
        xalloc = staticmethod(_libQasm.ios_base_xalloc)
    else:
        xalloc = _libQasm.ios_base_xalloc

    def iword(self, __ix):
        return _libQasm.ios_base_iword(self, __ix)

    def pword(self, __ix):
        return _libQasm.ios_base_pword(self, __ix)
    __swig_destroy__ = _libQasm.delete_ios_base
    __del__ = lambda self: None
ios_base_swigregister = _libQasm.ios_base_swigregister
ios_base_swigregister(ios_base)
cvar = _libQasm.cvar
ios_base.boolalpha = _libQasm.cvar.ios_base_boolalpha
ios_base.dec = _libQasm.cvar.ios_base_dec
ios_base.fixed = _libQasm.cvar.ios_base_fixed
ios_base.hex = _libQasm.cvar.ios_base_hex
ios_base.internal = _libQasm.cvar.ios_base_internal
ios_base.left = _libQasm.cvar.ios_base_left
ios_base.oct = _libQasm.cvar.ios_base_oct
ios_base.right = _libQasm.cvar.ios_base_right
ios_base.scientific = _libQasm.cvar.ios_base_scientific
ios_base.showbase = _libQasm.cvar.ios_base_showbase
ios_base.showpoint = _libQasm.cvar.ios_base_showpoint
ios_base.showpos = _libQasm.cvar.ios_base_showpos
ios_base.skipws = _libQasm.cvar.ios_base_skipws
ios_base.unitbuf = _libQasm.cvar.ios_base_unitbuf
ios_base.uppercase = _libQasm.cvar.ios_base_uppercase
ios_base.adjustfield = _libQasm.cvar.ios_base_adjustfield
ios_base.basefield = _libQasm.cvar.ios_base_basefield
ios_base.floatfield = _libQasm.cvar.ios_base_floatfield
ios_base.badbit = _libQasm.cvar.ios_base_badbit
ios_base.eofbit = _libQasm.cvar.ios_base_eofbit
ios_base.failbit = _libQasm.cvar.ios_base_failbit
ios_base.goodbit = _libQasm.cvar.ios_base_goodbit
ios_base.app = _libQasm.cvar.ios_base_app
ios_base.ate = _libQasm.cvar.ios_base_ate
ios_base.binary = _libQasm.cvar.ios_base_binary
ios_base.ios_base_in = _libQasm.cvar.ios_base_ios_base_in
ios_base.out = _libQasm.cvar.ios_base_out
ios_base.trunc = _libQasm.cvar.ios_base_trunc
ios_base.beg = _libQasm.cvar.ios_base_beg
ios_base.cur = _libQasm.cvar.ios_base_cur
ios_base.end = _libQasm.cvar.ios_base_end

def ios_base_sync_with_stdio(__sync=True):
    return _libQasm.ios_base_sync_with_stdio(__sync)
ios_base_sync_with_stdio = _libQasm.ios_base_sync_with_stdio

def ios_base_xalloc():
    return _libQasm.ios_base_xalloc()
ios_base_xalloc = _libQasm.ios_base_xalloc

class ios(ios_base):
    __swig_setmethods__ = {}
    for _s in [ios_base]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, ios, name, value)
    __swig_getmethods__ = {}
    for _s in [ios_base]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, ios, name)
    __repr__ = _swig_repr

    def rdstate(self):
        return _libQasm.ios_rdstate(self)

    def clear(self, *args):
        return _libQasm.ios_clear(self, *args)

    def setstate(self, __state):
        return _libQasm.ios_setstate(self, __state)

    def good(self):
        return _libQasm.ios_good(self)

    def eof(self):
        return _libQasm.ios_eof(self)

    def fail(self):
        return _libQasm.ios_fail(self)

    def bad(self):
        return _libQasm.ios_bad(self)

    def exceptions(self, *args):
        return _libQasm.ios_exceptions(self, *args)

    def __init__(self, __sb):
        this = _libQasm.new_ios(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_ios
    __del__ = lambda self: None

    def tie(self, *args):
        return _libQasm.ios_tie(self, *args)

    def rdbuf(self, *args):
        return _libQasm.ios_rdbuf(self, *args)

    def copyfmt(self, __rhs):
        return _libQasm.ios_copyfmt(self, __rhs)

    def fill(self, *args):
        return _libQasm.ios_fill(self, *args)

    def imbue(self, __loc):
        return _libQasm.ios_imbue(self, __loc)

    def narrow(self, __c, __dfault):
        return _libQasm.ios_narrow(self, __c, __dfault)

    def widen(self, __c):
        return _libQasm.ios_widen(self, __c)
ios_swigregister = _libQasm.ios_swigregister
ios_swigregister(ios)

class ostream(ios):
    __swig_setmethods__ = {}
    for _s in [ios]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, ostream, name, value)
    __swig_getmethods__ = {}
    for _s in [ios]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, ostream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_ostream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_ostream
    __del__ = lambda self: None

    def __lshift__(self, *args):
        return _libQasm.ostream___lshift__(self, *args)

    def put(self, __c):
        return _libQasm.ostream_put(self, __c)

    def write(self, __s, __n):
        return _libQasm.ostream_write(self, __s, __n)

    def flush(self):
        return _libQasm.ostream_flush(self)

    def tellp(self):
        return _libQasm.ostream_tellp(self)

    def seekp(self, *args):
        return _libQasm.ostream_seekp(self, *args)
ostream_swigregister = _libQasm.ostream_swigregister
ostream_swigregister(ostream)
cin = cvar.cin
cout = cvar.cout
cerr = cvar.cerr
clog = cvar.clog

class istream(ios):
    __swig_setmethods__ = {}
    for _s in [ios]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, istream, name, value)
    __swig_getmethods__ = {}
    for _s in [ios]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, istream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_istream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_istream
    __del__ = lambda self: None

    def __rshift__(self, *args):
        return _libQasm.istream___rshift__(self, *args)

    def gcount(self):
        return _libQasm.istream_gcount(self)

    def get(self, *args):
        return _libQasm.istream_get(self, *args)

    def getline(self, *args):
        return _libQasm.istream_getline(self, *args)

    def ignore(self, *args):
        return _libQasm.istream_ignore(self, *args)

    def peek(self):
        return _libQasm.istream_peek(self)

    def read(self, __s, __n):
        return _libQasm.istream_read(self, __s, __n)

    def readsome(self, __s, __n):
        return _libQasm.istream_readsome(self, __s, __n)

    def putback(self, __c):
        return _libQasm.istream_putback(self, __c)

    def unget(self):
        return _libQasm.istream_unget(self)

    def sync(self):
        return _libQasm.istream_sync(self)

    def tellg(self):
        return _libQasm.istream_tellg(self)

    def seekg(self, *args):
        return _libQasm.istream_seekg(self, *args)
istream_swigregister = _libQasm.istream_swigregister
istream_swigregister(istream)

class iostream(istream, ostream):
    __swig_setmethods__ = {}
    for _s in [istream, ostream]:
        __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, iostream, name, value)
    __swig_getmethods__ = {}
    for _s in [istream, ostream]:
        __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {}))
    __getattr__ = lambda self, name: _swig_getattr(self, iostream, name)
    __repr__ = _swig_repr

    def __init__(self, __sb):
        this = _libQasm.new_iostream(__sb)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _libQasm.delete_iostream
    __del__ = lambda self: None
iostream_swigregister = _libQasm.iostream_swigregister
iostream_swigregister(iostream)

endl_cb_ptr = _libQasm.endl_cb_ptr

def endl(arg1):
    return _libQasm.endl(arg1)
endl = _libQasm.endl
ends_cb_ptr = _libQasm.ends_cb_ptr

def ends(arg1):
    return _libQasm.ends(arg1)
ends = _libQasm.ends
flush_cb_ptr = _libQasm.flush_cb_ptr

def flush(arg1):
    return _libQasm.flush(arg1)
flush = _libQasm.flush
class vectori(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectori, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectori, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectori_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectori___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectori___bool__(self)

    def __len__(self):
        return _libQasm.vectori___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectori___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectori___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectori___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectori___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectori___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectori___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectori_pop(self)

    def append(self, x):
        return _libQasm.vectori_append(self, x)

    def empty(self):
        return _libQasm.vectori_empty(self)

    def size(self):
        return _libQasm.vectori_size(self)

    def swap(self, v):
        return _libQasm.vectori_swap(self, v)

    def begin(self):
        return _libQasm.vectori_begin(self)

    def end(self):
        return _libQasm.vectori_end(self)

    def rbegin(self):
        return _libQasm.vectori_rbegin(self)

    def rend(self):
        return _libQasm.vectori_rend(self)

    def clear(self):
        return _libQasm.vectori_clear(self)

    def get_allocator(self):
        return _libQasm.vectori_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectori_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectori_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectori(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectori_push_back(self, x)

    def front(self):
        return _libQasm.vectori_front(self)

    def back(self):
        return _libQasm.vectori_back(self)

    def assign(self, n, x):
        return _libQasm.vectori_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectori_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectori_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectori_reserve(self, n)

    def capacity(self):
        return _libQasm.vectori_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectori
    __del__ = lambda self: None
vectori_swigregister = _libQasm.vectori_swigregister
vectori_swigregister(vectori)

class vectorui(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectorui, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectorui, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectorui_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectorui___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectorui___bool__(self)

    def __len__(self):
        return _libQasm.vectorui___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectorui___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectorui___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectorui___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectorui___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectorui___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectorui___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectorui_pop(self)

    def append(self, x):
        return _libQasm.vectorui_append(self, x)

    def empty(self):
        return _libQasm.vectorui_empty(self)

    def size(self):
        return _libQasm.vectorui_size(self)

    def swap(self, v):
        return _libQasm.vectorui_swap(self, v)

    def begin(self):
        return _libQasm.vectorui_begin(self)

    def end(self):
        return _libQasm.vectorui_end(self)

    def rbegin(self):
        return _libQasm.vectorui_rbegin(self)

    def rend(self):
        return _libQasm.vectorui_rend(self)

    def clear(self):
        return _libQasm.vectorui_clear(self)

    def get_allocator(self):
        return _libQasm.vectorui_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectorui_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectorui_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectorui(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectorui_push_back(self, x)

    def front(self):
        return _libQasm.vectorui_front(self)

    def back(self):
        return _libQasm.vectorui_back(self)

    def assign(self, n, x):
        return _libQasm.vectorui_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectorui_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectorui_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectorui_reserve(self, n)

    def capacity(self):
        return _libQasm.vectorui_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectorui
    __del__ = lambda self: None
vectorui_swigregister = _libQasm.vectorui_swigregister
vectorui_swigregister(vectorui)

class vectorf(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectorf, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectorf, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectorf_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectorf___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectorf___bool__(self)

    def __len__(self):
        return _libQasm.vectorf___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectorf___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectorf___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectorf___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectorf___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectorf___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectorf___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectorf_pop(self)

    def append(self, x):
        return _libQasm.vectorf_append(self, x)

    def empty(self):
        return _libQasm.vectorf_empty(self)

    def size(self):
        return _libQasm.vectorf_size(self)

    def swap(self, v):
        return _libQasm.vectorf_swap(self, v)

    def begin(self):
        return _libQasm.vectorf_begin(self)

    def end(self):
        return _libQasm.vectorf_end(self)

    def rbegin(self):
        return _libQasm.vectorf_rbegin(self)

    def rend(self):
        return _libQasm.vectorf_rend(self)

    def clear(self):
        return _libQasm.vectorf_clear(self)

    def get_allocator(self):
        return _libQasm.vectorf_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectorf_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectorf_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectorf(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectorf_push_back(self, x)

    def front(self):
        return _libQasm.vectorf_front(self)

    def back(self):
        return _libQasm.vectorf_back(self)

    def assign(self, n, x):
        return _libQasm.vectorf_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectorf_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectorf_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectorf_reserve(self, n)

    def capacity(self):
        return _libQasm.vectorf_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectorf
    __del__ = lambda self: None
vectorf_swigregister = _libQasm.vectorf_swigregister
vectorf_swigregister(vectorf)

class vectord(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, vectord, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, vectord, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.vectord_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.vectord___nonzero__(self)

    def __bool__(self):
        return _libQasm.vectord___bool__(self)

    def __len__(self):
        return _libQasm.vectord___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.vectord___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.vectord___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.vectord___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.vectord___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.vectord___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.vectord___setitem__(self, *args)

    def pop(self):
        return _libQasm.vectord_pop(self)

    def append(self, x):
        return _libQasm.vectord_append(self, x)

    def empty(self):
        return _libQasm.vectord_empty(self)

    def size(self):
        return _libQasm.vectord_size(self)

    def swap(self, v):
        return _libQasm.vectord_swap(self, v)

    def begin(self):
        return _libQasm.vectord_begin(self)

    def end(self):
        return _libQasm.vectord_end(self)

    def rbegin(self):
        return _libQasm.vectord_rbegin(self)

    def rend(self):
        return _libQasm.vectord_rend(self)

    def clear(self):
        return _libQasm.vectord_clear(self)

    def get_allocator(self):
        return _libQasm.vectord_get_allocator(self)

    def pop_back(self):
        return _libQasm.vectord_pop_back(self)

    def erase(self, *args):
        return _libQasm.vectord_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_vectord(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.vectord_push_back(self, x)

    def front(self):
        return _libQasm.vectord_front(self)

    def back(self):
        return _libQasm.vectord_back(self)

    def assign(self, n, x):
        return _libQasm.vectord_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.vectord_resize(self, *args)

    def insert(self, *args):
        return _libQasm.vectord_insert(self, *args)

    def reserve(self, n):
        return _libQasm.vectord_reserve(self, n)

    def capacity(self):
        return _libQasm.vectord_capacity(self)
    __swig_destroy__ = _libQasm.delete_vectord
    __del__ = lambda self: None
vectord_swigregister = _libQasm.vectord_swigregister
vectord_swigregister(vectord)

class NumericalIdentifiers(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, NumericalIdentifiers, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, NumericalIdentifiers, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_NumericalIdentifiers()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def addToVector(self, *args):
        return _libQasm.NumericalIdentifiers_addToVector(self, *args)

    def getIndices(self):
        return _libQasm.NumericalIdentifiers_getIndices(self)

    def removeDuplicates(self):
        return _libQasm.NumericalIdentifiers_removeDuplicates(self)

    def clear(self):
        return _libQasm.NumericalIdentifiers_clear(self)

    def printMembers(self):
        return _libQasm.NumericalIdentifiers_printMembers(self)
    __swig_destroy__ = _libQasm.delete_NumericalIdentifiers
    __del__ = lambda self: None
NumericalIdentifiers_swigregister = _libQasm.NumericalIdentifiers_swigregister
NumericalIdentifiers_swigregister(NumericalIdentifiers)

class Qubits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Qubits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Qubits, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Qubits(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def setSelectedQubits(self, indices):
        return _libQasm.Qubits_setSelectedQubits(self, indices)

    def getSelectedQubits(self):
        return _libQasm.Qubits_getSelectedQubits(self)

    def printMembers(self):
        return _libQasm.Qubits_printMembers(self)
    __swig_destroy__ = _libQasm.delete_Qubits
    __del__ = lambda self: None
Qubits_swigregister = _libQasm.Qubits_swigregister
Qubits_swigregister(Qubits)

class Bits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Bits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Bits, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Bits(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def setSelectedBits(self, indices):
        return _libQasm.Bits_setSelectedBits(self, indices)

    def getSelectedBits(self):
        return _libQasm.Bits_getSelectedBits(self)

    def printMembers(self):
        return _libQasm.Bits_printMembers(self)
    __swig_destroy__ = _libQasm.delete_Bits
    __del__ = lambda self: None
Bits_swigregister = _libQasm.Bits_swigregister
Bits_swigregister(Bits)

class Operation(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Operation, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Operation, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_Operation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def getType(self):
        return _libQasm.Operation_getType(self)

    def getStateFilename(self):
        return _libQasm.Operation_getStateFilename(self)

    def getQubitsInvolved(self, *args):
        return _libQasm.Operation_getQubitsInvolved(self, *args)

    def getRotationAngle(self):
        return _libQasm.Operation_getRotationAngle(self)

    def getMeasureParityQubitsAndAxis(self):
        return _libQasm.Operation_getMeasureParityQubitsAndAxis(self)

    def getTwoQubitPairs(self):
        return _libQasm.Operation_getTwoQubitPairs(self)

    def getToffoliQubitPairs(self):
        return _libQasm.Operation_getToffoliQubitPairs(self)

    def isBitControlled(self):
        return _libQasm.Operation_isBitControlled(self)

    def allQubitsBits(self):
        return _libQasm.Operation_allQubitsBits(self)

    def setControlBits(self, control_bits):
        return _libQasm.Operation_setControlBits(self, control_bits)

    def getControlBits(self):
        return _libQasm.Operation_getControlBits(self)

    def getDisplayBits(self):
        return _libQasm.Operation_getDisplayBits(self)

    def getWaitTime(self):
        return _libQasm.Operation_getWaitTime(self)

    def setUMatrixElements(self, input):
        return _libQasm.Operation_setUMatrixElements(self, input)

    def getUMatrixElements(self):
        return _libQasm.Operation_getUMatrixElements(self)

    def printOperation(self):
        return _libQasm.Operation_printOperation(self)
    __swig_destroy__ = _libQasm.delete_Operation
    __del__ = lambda self: None
Operation_swigregister = _libQasm.Operation_swigregister
Operation_swigregister(Operation)

class OperationsCluster(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, OperationsCluster, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, OperationsCluster, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_OperationsCluster(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def lastOperation(self):
        return _libQasm.OperationsCluster_lastOperation(self)

    def addOperation(self, valid_op):
        return _libQasm.OperationsCluster_addOperation(self, valid_op)

    def addParallelOperation(self, valid_op):
        return _libQasm.OperationsCluster_addParallelOperation(self, valid_op)

    def isParallel(self):
        return _libQasm.OperationsCluster_isParallel(self)

    def getOperations(self):
        return _libQasm.OperationsCluster_getOperations(self)

    def setLineNumber(self, linenumber):
        return _libQasm.OperationsCluster_setLineNumber(self, linenumber)

    def getLineNumber(self):
        return _libQasm.OperationsCluster_getLineNumber(self)

    def printOperations(self):
        return _libQasm.OperationsCluster_printOperations(self)
    __swig_destroy__ = _libQasm.delete_OperationsCluster
    __del__ = lambda self: None
OperationsCluster_swigregister = _libQasm.OperationsCluster_swigregister
OperationsCluster_swigregister(OperationsCluster)

class SubCircuit(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SubCircuit, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SubCircuit, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_SubCircuit(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def numberIterations(self, *args):
        return _libQasm.SubCircuit_numberIterations(self, *args)

    def getLineNumber(self):
        return _libQasm.SubCircuit_getLineNumber(self)

    def rankSubCircuit(self):
        return _libQasm.SubCircuit_rankSubCircuit(self)

    def nameSubCircuit(self):
        return _libQasm.SubCircuit_nameSubCircuit(self)

    def addOperationsCluster(self, opclus):
        return _libQasm.SubCircuit_addOperationsCluster(self, opclus)

    def lastOperationsCluster(self):
        return _libQasm.SubCircuit_lastOperationsCluster(self)

    def getOperationsCluster(self):
        return _libQasm.SubCircuit_getOperationsCluster(self)

    def printMembers(self):
        return _libQasm.SubCircuit_printMembers(self)
    __swig_destroy__ = _libQasm.delete_SubCircuit
    __del__ = lambda self: None
SubCircuit_swigregister = _libQasm.SubCircuit_swigregister
SubCircuit_swigregister(SubCircuit)

class SubCircuits(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SubCircuits, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SubCircuits, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_SubCircuits()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def addSubCircuit(self, subcircuit):
        return _libQasm.SubCircuits_addSubCircuit(self, subcircuit)

    def numberOfSubCircuits(self):
        return _libQasm.SubCircuits_numberOfSubCircuits(self)

    def lastSubCircuit(self):
        return _libQasm.SubCircuits_lastSubCircuit(self)

    def getAllSubCircuits(self):
        return _libQasm.SubCircuits_getAllSubCircuits(self)

    def clearSubCircuits(self):
        return _libQasm.SubCircuits_clearSubCircuits(self)
    __swig_destroy__ = _libQasm.delete_SubCircuits
    __del__ = lambda self: None
SubCircuits_swigregister = _libQasm.SubCircuits_swigregister
SubCircuits_swigregister(SubCircuits)

class QasmRepresentation(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, QasmRepresentation, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, QasmRepresentation, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_QasmRepresentation()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def qubitRegister(self, participating_number):
        return _libQasm.QasmRepresentation_qubitRegister(self, participating_number)

    def numQubits(self):
        return _libQasm.QasmRepresentation_numQubits(self)

    def versionNumber(self, *args):
        return _libQasm.QasmRepresentation_versionNumber(self, *args)

    def getSubCircuits(self):
        return _libQasm.QasmRepresentation_getSubCircuits(self)

    def addMappings(self, name_key, indices, isQubit):
        return _libQasm.QasmRepresentation_addMappings(self, name_key, indices, isQubit)

    def getMappedIndices(self, name_key, isQubit, linenumber):
        return _libQasm.QasmRepresentation_getMappedIndices(self, name_key, isQubit, linenumber)

    def setErrorModel(self, error_model_type, error_model_num_params):
        return _libQasm.QasmRepresentation_setErrorModel(self, error_model_type, error_model_num_params)

    def getErrorModelType(self):
        return _libQasm.QasmRepresentation_getErrorModelType(self)

    def getErrorModelParameters(self):
        return _libQasm.QasmRepresentation_getErrorModelParameters(self)

    def printMappings(self):
        return _libQasm.QasmRepresentation_printMappings(self)

    def printErrorModel(self):
        return _libQasm.QasmRepresentation_printErrorModel(self)
    __swig_destroy__ = _libQasm.delete_QasmRepresentation
    __del__ = lambda self: None
QasmRepresentation_swigregister = _libQasm.QasmRepresentation_swigregister
QasmRepresentation_swigregister(QasmRepresentation)

class libQasm(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, libQasm, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, libQasm, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _libQasm.new_libQasm()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def parse_string(self, qasm_str):
        return _libQasm.libQasm_parse_string(self, qasm_str)

    def parse_file(self, qasm_file_path):
        return _libQasm.libQasm_parse_file(self, qasm_file_path)

    def getParseResult(self):
        return _libQasm.libQasm_getParseResult(self)

    def getQasmRepresentation(self):
        return _libQasm.libQasm_getQasmRepresentation(self)
    __swig_destroy__ = _libQasm.delete_libQasm
    __del__ = lambda self: None
libQasm_swigregister = _libQasm.libQasm_swigregister
libQasm_swigregister(libQasm)

class subcircuit_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, subcircuit_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, subcircuit_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.subcircuit_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.subcircuit_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.subcircuit_vector___bool__(self)

    def __len__(self):
        return _libQasm.subcircuit_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.subcircuit_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.subcircuit_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.subcircuit_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.subcircuit_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.subcircuit_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.subcircuit_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.subcircuit_vector_pop(self)

    def append(self, x):
        return _libQasm.subcircuit_vector_append(self, x)

    def empty(self):
        return _libQasm.subcircuit_vector_empty(self)

    def size(self):
        return _libQasm.subcircuit_vector_size(self)

    def swap(self, v):
        return _libQasm.subcircuit_vector_swap(self, v)

    def begin(self):
        return _libQasm.subcircuit_vector_begin(self)

    def end(self):
        return _libQasm.subcircuit_vector_end(self)

    def rbegin(self):
        return _libQasm.subcircuit_vector_rbegin(self)

    def rend(self):
        return _libQasm.subcircuit_vector_rend(self)

    def clear(self):
        return _libQasm.subcircuit_vector_clear(self)

    def get_allocator(self):
        return _libQasm.subcircuit_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.subcircuit_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.subcircuit_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_subcircuit_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.subcircuit_vector_push_back(self, x)

    def front(self):
        return _libQasm.subcircuit_vector_front(self)

    def back(self):
        return _libQasm.subcircuit_vector_back(self)

    def assign(self, n, x):
        return _libQasm.subcircuit_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.subcircuit_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.subcircuit_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.subcircuit_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.subcircuit_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_subcircuit_vector
    __del__ = lambda self: None
subcircuit_vector_swigregister = _libQasm.subcircuit_vector_swigregister
subcircuit_vector_swigregister(subcircuit_vector)

class operationscluster_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, operationscluster_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, operationscluster_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.operationscluster_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.operationscluster_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.operationscluster_vector___bool__(self)

    def __len__(self):
        return _libQasm.operationscluster_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.operationscluster_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.operationscluster_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.operationscluster_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.operationscluster_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.operationscluster_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.operationscluster_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.operationscluster_vector_pop(self)

    def append(self, x):
        return _libQasm.operationscluster_vector_append(self, x)

    def empty(self):
        return _libQasm.operationscluster_vector_empty(self)

    def size(self):
        return _libQasm.operationscluster_vector_size(self)

    def swap(self, v):
        return _libQasm.operationscluster_vector_swap(self, v)

    def begin(self):
        return _libQasm.operationscluster_vector_begin(self)

    def end(self):
        return _libQasm.operationscluster_vector_end(self)

    def rbegin(self):
        return _libQasm.operationscluster_vector_rbegin(self)

    def rend(self):
        return _libQasm.operationscluster_vector_rend(self)

    def clear(self):
        return _libQasm.operationscluster_vector_clear(self)

    def get_allocator(self):
        return _libQasm.operationscluster_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.operationscluster_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.operationscluster_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_operationscluster_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.operationscluster_vector_push_back(self, x)

    def front(self):
        return _libQasm.operationscluster_vector_front(self)

    def back(self):
        return _libQasm.operationscluster_vector_back(self)

    def assign(self, n, x):
        return _libQasm.operationscluster_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.operationscluster_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.operationscluster_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.operationscluster_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.operationscluster_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_operationscluster_vector
    __del__ = lambda self: None
operationscluster_vector_swigregister = _libQasm.operationscluster_vector_swigregister
operationscluster_vector_swigregister(operationscluster_vector)

class operation_vector(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, operation_vector, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, operation_vector, name)
    __repr__ = _swig_repr

    def iterator(self):
        return _libQasm.operation_vector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _libQasm.operation_vector___nonzero__(self)

    def __bool__(self):
        return _libQasm.operation_vector___bool__(self)

    def __len__(self):
        return _libQasm.operation_vector___len__(self)

    def __getslice__(self, i, j):
        return _libQasm.operation_vector___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _libQasm.operation_vector___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _libQasm.operation_vector___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _libQasm.operation_vector___delitem__(self, *args)

    def __getitem__(self, *args):
        return _libQasm.operation_vector___getitem__(self, *args)

    def __setitem__(self, *args):
        return _libQasm.operation_vector___setitem__(self, *args)

    def pop(self):
        return _libQasm.operation_vector_pop(self)

    def append(self, x):
        return _libQasm.operation_vector_append(self, x)

    def empty(self):
        return _libQasm.operation_vector_empty(self)

    def size(self):
        return _libQasm.operation_vector_size(self)

    def swap(self, v):
        return _libQasm.operation_vector_swap(self, v)

    def begin(self):
        return _libQasm.operation_vector_begin(self)

    def end(self):
        return _libQasm.operation_vector_end(self)

    def rbegin(self):
        return _libQasm.operation_vector_rbegin(self)

    def rend(self):
        return _libQasm.operation_vector_rend(self)

    def clear(self):
        return _libQasm.operation_vector_clear(self)

    def get_allocator(self):
        return _libQasm.operation_vector_get_allocator(self)

    def pop_back(self):
        return _libQasm.operation_vector_pop_back(self)

    def erase(self, *args):
        return _libQasm.operation_vector_erase(self, *args)

    def __init__(self, *args):
        this = _libQasm.new_operation_vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x):
        return _libQasm.operation_vector_push_back(self, x)

    def front(self):
        return _libQasm.operation_vector_front(self)

    def back(self):
        return _libQasm.operation_vector_back(self)

    def assign(self, n, x):
        return _libQasm.operation_vector_assign(self, n, x)

    def resize(self, *args):
        return _libQasm.operation_vector_resize(self, *args)

    def insert(self, *args):
        return _libQasm.operation_vector_insert(self, *args)

    def reserve(self, n):
        return _libQasm.operation_vector_reserve(self, n)

    def capacity(self):
        return _libQasm.operation_vector_capacity(self)
    __swig_destroy__ = _libQasm.delete_operation_vector
    __del__ = lambda self: None
operation_vector_swigregister = _libQasm.operation_vector_swigregister
operation_vector_swigregister(operation_vector)

class twoqubitgatequbits_pair(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, twoqubitgatequbits_pair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, twoqubitgatequbits_pair, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_twoqubitgatequbits_pair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_setmethods__["first"] = _libQasm.twoqubitgatequbits_pair_first_set
    __swig_getmethods__["first"] = _libQasm.twoqubitgatequbits_pair_first_get
    if _newclass:
        first = _swig_property(_libQasm.twoqubitgatequbits_pair_first_get, _libQasm.twoqubitgatequbits_pair_first_set)
    __swig_setmethods__["second"] = _libQasm.twoqubitgatequbits_pair_second_set
    __swig_getmethods__["second"] = _libQasm.twoqubitgatequbits_pair_second_get
    if _newclass:
        second = _swig_property(_libQasm.twoqubitgatequbits_pair_second_get, _libQasm.twoqubitgatequbits_pair_second_set)
    def __len__(self):
        return 2
    def __repr__(self):
        return str((self.first, self.second))
    def __getitem__(self, index): 
        if not (index % 2):
            return self.first
        else:
            return self.second
    def __setitem__(self, index, val):
        if not (index % 2):
            self.first = val
        else:
            self.second = val
    __swig_destroy__ = _libQasm.delete_twoqubitgatequbits_pair
    __del__ = lambda self: None
twoqubitgatequbits_pair_swigregister = _libQasm.twoqubitgatequbits_pair_swigregister
twoqubitgatequbits_pair_swigregister(twoqubitgatequbits_pair)

class toffoliqubits_pair(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, toffoliqubits_pair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, toffoliqubits_pair, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _libQasm.new_toffoliqubits_pair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_setmethods__["first"] = _libQasm.toffoliqubits_pair_first_set
    __swig_getmethods__["first"] = _libQasm.toffoliqubits_pair_first_get
    if _newclass:
        first = _swig_property(_libQasm.toffoliqubits_pair_first_get, _libQasm.toffoliqubits_pair_first_set)
    __swig_setmethods__["second"] = _libQasm.toffoliqubits_pair_second_set
    __swig_getmethods__["second"] = _libQasm.toffoliqubits_pair_second_get
    if _newclass:
        second = _swig_property(_libQasm.toffoliqubits_pair_second_get, _libQasm.toffoliqubits_pair_second_set)
    def __len__(self):
        return 2
    def __repr__(self):
        return str((self.first, self.second))
    def __getitem__(self, index): 
        if not (index % 2):
            return self.first
        else:
            return self.second
    def __setitem__(self, index, val):
        if not (index % 2):
            self.first = val
        else:
            self.second = val
    __swig_destroy__ = _libQasm.delete_toffoliqubits_pair
    __del__ = lambda self: None
toffoliqubits_pair_swigregister = _libQasm.toffoliqubits_pair_swigregister
toffoliqubits_pair_swigregister(toffoliqubits_pair)

# This file is compatible with both classic and new-style classes.



# This file was automatically generated by SWIG (http://www.swig.org). # Version 3.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. # Python < 2.2 doesn't have 'property'. # This file is compatible with both classic and new-style classes.