# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.8
#
# 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
if 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('_RNA', [dirname(__file__)])
        except ImportError:
            import _RNA
            return _RNA
        if fp is not None:
            try:
                _mod = imp.load_module('_RNA', fp, pathname, description)
            finally:
                fp.close()
            return _mod
    _RNA = swig_import_helper()
    del swig_import_helper
else:
    import _RNA
del version_info
try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.


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):
        object.__setattr__(self, 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_nondynamic(self, class_type, name, static=1):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    if (not static):
        return object.__getattr__(self, name)
    else:
        raise AttributeError(name)

def _swig_getattr(self, class_type, name):
    return _swig_getattr_nondynamic(self, class_type, name, 0)


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

try:
    _object = object
    _newclass = 1
except AttributeError:
    class _object:
        pass
    _newclass = 0



def _swig_setattr_nondynamic_method(set):
    def set_attr(self, name, value):
        if (name == "thisown"):
            return self.this.own(value)
        if hasattr(self, name) or (name == "this"):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add attributes to %s" % self)
    return set_attr



def new_intP(nelements: 'size_t') -> "int *":
    return _RNA.new_intP(nelements)
new_intP = _RNA.new_intP

def delete_intP(ary: 'int *') -> "void":
    return _RNA.delete_intP(ary)
delete_intP = _RNA.delete_intP

def intP_getitem(ary: 'int *', index: 'size_t') -> "int":
    return _RNA.intP_getitem(ary, index)
intP_getitem = _RNA.intP_getitem

def intP_setitem(ary: 'int *', index: 'size_t', value: 'int') -> "void":
    return _RNA.intP_setitem(ary, index, value)
intP_setitem = _RNA.intP_setitem
class intArray(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, nelements: 'size_t'):
        this = _RNA.new_intArray(nelements)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_intArray
    __del__ = lambda self: None

    def __getitem__(self, index: 'size_t') -> "int":
        return _RNA.intArray___getitem__(self, index)

    def __setitem__(self, index: 'size_t', value: 'int') -> "void":
        return _RNA.intArray___setitem__(self, index, value)

    def cast(self) -> "int *":
        return _RNA.intArray_cast(self)
    frompointer = staticmethod(_RNA.intArray_frompointer)
intArray_swigregister = _RNA.intArray_swigregister
intArray_swigregister(intArray)

def intArray_frompointer(t: 'int *') -> "intArray *":
    return _RNA.intArray_frompointer(t)
intArray_frompointer = _RNA.intArray_frompointer


def new_floatP(nelements: 'size_t') -> "float *":
    return _RNA.new_floatP(nelements)
new_floatP = _RNA.new_floatP

def delete_floatP(ary: 'float *') -> "void":
    return _RNA.delete_floatP(ary)
delete_floatP = _RNA.delete_floatP

def floatP_getitem(ary: 'float *', index: 'size_t') -> "float":
    return _RNA.floatP_getitem(ary, index)
floatP_getitem = _RNA.floatP_getitem

def floatP_setitem(ary: 'float *', index: 'size_t', value: 'float') -> "void":
    return _RNA.floatP_setitem(ary, index, value)
floatP_setitem = _RNA.floatP_setitem
class floatArray(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, nelements: 'size_t'):
        this = _RNA.new_floatArray(nelements)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_floatArray
    __del__ = lambda self: None

    def __getitem__(self, index: 'size_t') -> "float":
        return _RNA.floatArray___getitem__(self, index)

    def __setitem__(self, index: 'size_t', value: 'float') -> "void":
        return _RNA.floatArray___setitem__(self, index, value)

    def cast(self) -> "float *":
        return _RNA.floatArray_cast(self)
    frompointer = staticmethod(_RNA.floatArray_frompointer)
floatArray_swigregister = _RNA.floatArray_swigregister
floatArray_swigregister(floatArray)

def floatArray_frompointer(t: 'float *') -> "floatArray *":
    return _RNA.floatArray_frompointer(t)
floatArray_frompointer = _RNA.floatArray_frompointer


def new_doubleP(nelements: 'size_t') -> "double *":
    return _RNA.new_doubleP(nelements)
new_doubleP = _RNA.new_doubleP

def delete_doubleP(ary: 'double *') -> "void":
    return _RNA.delete_doubleP(ary)
delete_doubleP = _RNA.delete_doubleP

def doubleP_getitem(ary: 'double *', index: 'size_t') -> "double":
    return _RNA.doubleP_getitem(ary, index)
doubleP_getitem = _RNA.doubleP_getitem

def doubleP_setitem(ary: 'double *', index: 'size_t', value: 'double') -> "void":
    return _RNA.doubleP_setitem(ary, index, value)
doubleP_setitem = _RNA.doubleP_setitem
class doubleArray(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, nelements: 'size_t'):
        this = _RNA.new_doubleArray(nelements)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_doubleArray
    __del__ = lambda self: None

    def __getitem__(self, index: 'size_t') -> "double":
        return _RNA.doubleArray___getitem__(self, index)

    def __setitem__(self, index: 'size_t', value: 'double') -> "void":
        return _RNA.doubleArray___setitem__(self, index, value)

    def cast(self) -> "double *":
        return _RNA.doubleArray_cast(self)
    frompointer = staticmethod(_RNA.doubleArray_frompointer)
doubleArray_swigregister = _RNA.doubleArray_swigregister
doubleArray_swigregister(doubleArray)

def doubleArray_frompointer(t: 'double *') -> "doubleArray *":
    return _RNA.doubleArray_frompointer(t)
doubleArray_frompointer = _RNA.doubleArray_frompointer


def new_ushortP(nelements: 'size_t') -> "unsigned short *":
    return _RNA.new_ushortP(nelements)
new_ushortP = _RNA.new_ushortP

def delete_ushortP(ary: 'unsigned short *') -> "void":
    return _RNA.delete_ushortP(ary)
delete_ushortP = _RNA.delete_ushortP

def ushortP_getitem(ary: 'unsigned short *', index: 'size_t') -> "unsigned short":
    return _RNA.ushortP_getitem(ary, index)
ushortP_getitem = _RNA.ushortP_getitem

def ushortP_setitem(ary: 'unsigned short *', index: 'size_t', value: 'unsigned short') -> "void":
    return _RNA.ushortP_setitem(ary, index, value)
ushortP_setitem = _RNA.ushortP_setitem

def new_shortP(nelements: 'size_t') -> "short *":
    return _RNA.new_shortP(nelements)
new_shortP = _RNA.new_shortP

def delete_shortP(ary: 'short *') -> "void":
    return _RNA.delete_shortP(ary)
delete_shortP = _RNA.delete_shortP

def shortP_getitem(ary: 'short *', index: 'size_t') -> "short":
    return _RNA.shortP_getitem(ary, index)
shortP_getitem = _RNA.shortP_getitem

def shortP_setitem(ary: 'short *', index: 'size_t', value: 'short') -> "void":
    return _RNA.shortP_setitem(ary, index, value)
shortP_setitem = _RNA.shortP_setitem

def cdata(ptr: 'void *', nelements: 'size_t'=1) -> "SWIGCDATA":
    return _RNA.cdata(ptr, nelements)
cdata = _RNA.cdata

def memmove(data: 'void *', indata: 'void const *') -> "void":
    return _RNA.memmove(data, indata)
memmove = _RNA.memmove

__version__ = '2.2.9'

class SwigPyIterator(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')

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

    def value(self) -> "PyObject *":
        return _RNA.SwigPyIterator_value(self)

    def incr(self, n: 'size_t'=1) -> "swig::SwigPyIterator *":
        return _RNA.SwigPyIterator_incr(self, n)

    def decr(self, n: 'size_t'=1) -> "swig::SwigPyIterator *":
        return _RNA.SwigPyIterator_decr(self, n)

    def distance(self, x: 'SwigPyIterator') -> "ptrdiff_t":
        return _RNA.SwigPyIterator_distance(self, x)

    def equal(self, x: 'SwigPyIterator') -> "bool":
        return _RNA.SwigPyIterator_equal(self, x)

    def copy(self) -> "swig::SwigPyIterator *":
        return _RNA.SwigPyIterator_copy(self)

    def next(self) -> "PyObject *":
        return _RNA.SwigPyIterator_next(self)

    def __next__(self) -> "PyObject *":
        return _RNA.SwigPyIterator___next__(self)

    def previous(self) -> "PyObject *":
        return _RNA.SwigPyIterator_previous(self)

    def advance(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator *":
        return _RNA.SwigPyIterator_advance(self, n)

    def __eq__(self, x: 'SwigPyIterator') -> "bool":
        return _RNA.SwigPyIterator___eq__(self, x)

    def __ne__(self, x: 'SwigPyIterator') -> "bool":
        return _RNA.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator &":
        return _RNA.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator &":
        return _RNA.SwigPyIterator___isub__(self, n)

    def __add__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator *":
        return _RNA.SwigPyIterator___add__(self, n)

    def __sub__(self, *args) -> "ptrdiff_t":
        return _RNA.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self
SwigPyIterator_swigregister = _RNA.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

class DoublePair(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _RNA.new_DoublePair(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    first = _swig_property(_RNA.DoublePair_first_get, _RNA.DoublePair_first_set)
    second = _swig_property(_RNA.DoublePair_second_get, _RNA.DoublePair_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__ = _RNA.delete_DoublePair
    __del__ = lambda self: None
DoublePair_swigregister = _RNA.DoublePair_swigregister
DoublePair_swigregister(DoublePair)

class IntVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.IntVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.IntVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.IntVector___bool__(self)

    def __len__(self) -> "std::vector< int >::size_type":
        return _RNA.IntVector___len__(self)

    def __getslice__(self, i: 'std::vector< int >::difference_type', j: 'std::vector< int >::difference_type') -> "std::vector< int,std::allocator< int > > *":
        return _RNA.IntVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.IntVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< int >::difference_type', j: 'std::vector< int >::difference_type') -> "void":
        return _RNA.IntVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.IntVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< int >::value_type const &":
        return _RNA.IntVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.IntVector___setitem__(self, *args)

    def pop(self) -> "std::vector< int >::value_type":
        return _RNA.IntVector_pop(self)

    def append(self, x: 'std::vector< int >::value_type const &') -> "void":
        return _RNA.IntVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.IntVector_empty(self)

    def size(self) -> "std::vector< int >::size_type":
        return _RNA.IntVector_size(self)

    def swap(self, v: 'IntVector') -> "void":
        return _RNA.IntVector_swap(self, v)

    def begin(self) -> "std::vector< int >::iterator":
        return _RNA.IntVector_begin(self)

    def end(self) -> "std::vector< int >::iterator":
        return _RNA.IntVector_end(self)

    def rbegin(self) -> "std::vector< int >::reverse_iterator":
        return _RNA.IntVector_rbegin(self)

    def rend(self) -> "std::vector< int >::reverse_iterator":
        return _RNA.IntVector_rend(self)

    def clear(self) -> "void":
        return _RNA.IntVector_clear(self)

    def get_allocator(self) -> "std::vector< int >::allocator_type":
        return _RNA.IntVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.IntVector_pop_back(self)

    def erase(self, *args) -> "std::vector< int >::iterator":
        return _RNA.IntVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_IntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'std::vector< int >::value_type const &') -> "void":
        return _RNA.IntVector_push_back(self, x)

    def front(self) -> "std::vector< int >::value_type const &":
        return _RNA.IntVector_front(self)

    def back(self) -> "std::vector< int >::value_type const &":
        return _RNA.IntVector_back(self)

    def assign(self, n: 'std::vector< int >::size_type', x: 'std::vector< int >::value_type const &') -> "void":
        return _RNA.IntVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.IntVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.IntVector_insert(self, *args)

    def reserve(self, n: 'std::vector< int >::size_type') -> "void":
        return _RNA.IntVector_reserve(self, n)

    def capacity(self) -> "std::vector< int >::size_type":
        return _RNA.IntVector_capacity(self)
    __swig_destroy__ = _RNA.delete_IntVector
    __del__ = lambda self: None
IntVector_swigregister = _RNA.IntVector_swigregister
IntVector_swigregister(IntVector)

class DoubleVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.DoubleVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.DoubleVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.DoubleVector___bool__(self)

    def __len__(self) -> "std::vector< double >::size_type":
        return _RNA.DoubleVector___len__(self)

    def __getslice__(self, i: 'std::vector< double >::difference_type', j: 'std::vector< double >::difference_type') -> "std::vector< double,std::allocator< double > > *":
        return _RNA.DoubleVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.DoubleVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< double >::difference_type', j: 'std::vector< double >::difference_type') -> "void":
        return _RNA.DoubleVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.DoubleVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< double >::value_type const &":
        return _RNA.DoubleVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.DoubleVector___setitem__(self, *args)

    def pop(self) -> "std::vector< double >::value_type":
        return _RNA.DoubleVector_pop(self)

    def append(self, x: 'std::vector< double >::value_type const &') -> "void":
        return _RNA.DoubleVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.DoubleVector_empty(self)

    def size(self) -> "std::vector< double >::size_type":
        return _RNA.DoubleVector_size(self)

    def swap(self, v: 'DoubleVector') -> "void":
        return _RNA.DoubleVector_swap(self, v)

    def begin(self) -> "std::vector< double >::iterator":
        return _RNA.DoubleVector_begin(self)

    def end(self) -> "std::vector< double >::iterator":
        return _RNA.DoubleVector_end(self)

    def rbegin(self) -> "std::vector< double >::reverse_iterator":
        return _RNA.DoubleVector_rbegin(self)

    def rend(self) -> "std::vector< double >::reverse_iterator":
        return _RNA.DoubleVector_rend(self)

    def clear(self) -> "void":
        return _RNA.DoubleVector_clear(self)

    def get_allocator(self) -> "std::vector< double >::allocator_type":
        return _RNA.DoubleVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.DoubleVector_pop_back(self)

    def erase(self, *args) -> "std::vector< double >::iterator":
        return _RNA.DoubleVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_DoubleVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'std::vector< double >::value_type const &') -> "void":
        return _RNA.DoubleVector_push_back(self, x)

    def front(self) -> "std::vector< double >::value_type const &":
        return _RNA.DoubleVector_front(self)

    def back(self) -> "std::vector< double >::value_type const &":
        return _RNA.DoubleVector_back(self)

    def assign(self, n: 'std::vector< double >::size_type', x: 'std::vector< double >::value_type const &') -> "void":
        return _RNA.DoubleVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.DoubleVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.DoubleVector_insert(self, *args)

    def reserve(self, n: 'std::vector< double >::size_type') -> "void":
        return _RNA.DoubleVector_reserve(self, n)

    def capacity(self) -> "std::vector< double >::size_type":
        return _RNA.DoubleVector_capacity(self)
    __swig_destroy__ = _RNA.delete_DoubleVector
    __del__ = lambda self: None
DoubleVector_swigregister = _RNA.DoubleVector_swigregister
DoubleVector_swigregister(DoubleVector)

class StringVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.StringVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.StringVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.StringVector___bool__(self)

    def __len__(self) -> "std::vector< std::string >::size_type":
        return _RNA.StringVector___len__(self)

    def __getslice__(self, i: 'std::vector< std::string >::difference_type', j: 'std::vector< std::string >::difference_type') -> "std::vector< std::string,std::allocator< std::string > > *":
        return _RNA.StringVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.StringVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< std::string >::difference_type', j: 'std::vector< std::string >::difference_type') -> "void":
        return _RNA.StringVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.StringVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::string >::value_type const &":
        return _RNA.StringVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.StringVector___setitem__(self, *args)

    def pop(self) -> "std::vector< std::string >::value_type":
        return _RNA.StringVector_pop(self)

    def append(self, x: 'std::vector< std::string >::value_type const &') -> "void":
        return _RNA.StringVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.StringVector_empty(self)

    def size(self) -> "std::vector< std::string >::size_type":
        return _RNA.StringVector_size(self)

    def swap(self, v: 'StringVector') -> "void":
        return _RNA.StringVector_swap(self, v)

    def begin(self) -> "std::vector< std::string >::iterator":
        return _RNA.StringVector_begin(self)

    def end(self) -> "std::vector< std::string >::iterator":
        return _RNA.StringVector_end(self)

    def rbegin(self) -> "std::vector< std::string >::reverse_iterator":
        return _RNA.StringVector_rbegin(self)

    def rend(self) -> "std::vector< std::string >::reverse_iterator":
        return _RNA.StringVector_rend(self)

    def clear(self) -> "void":
        return _RNA.StringVector_clear(self)

    def get_allocator(self) -> "std::vector< std::string >::allocator_type":
        return _RNA.StringVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.StringVector_pop_back(self)

    def erase(self, *args) -> "std::vector< std::string >::iterator":
        return _RNA.StringVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_StringVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'std::vector< std::string >::value_type const &') -> "void":
        return _RNA.StringVector_push_back(self, x)

    def front(self) -> "std::vector< std::string >::value_type const &":
        return _RNA.StringVector_front(self)

    def back(self) -> "std::vector< std::string >::value_type const &":
        return _RNA.StringVector_back(self)

    def assign(self, n: 'std::vector< std::string >::size_type', x: 'std::vector< std::string >::value_type const &') -> "void":
        return _RNA.StringVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.StringVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.StringVector_insert(self, *args)

    def reserve(self, n: 'std::vector< std::string >::size_type') -> "void":
        return _RNA.StringVector_reserve(self, n)

    def capacity(self) -> "std::vector< std::string >::size_type":
        return _RNA.StringVector_capacity(self)
    __swig_destroy__ = _RNA.delete_StringVector
    __del__ = lambda self: None
StringVector_swigregister = _RNA.StringVector_swigregister
StringVector_swigregister(StringVector)

class ConstCharVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.ConstCharVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.ConstCharVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.ConstCharVector___bool__(self)

    def __len__(self) -> "std::vector< char const * >::size_type":
        return _RNA.ConstCharVector___len__(self)

    def __getslice__(self, i: 'std::vector< char const * >::difference_type', j: 'std::vector< char const * >::difference_type') -> "std::vector< char const *,std::allocator< char const * > > *":
        return _RNA.ConstCharVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.ConstCharVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< char const * >::difference_type', j: 'std::vector< char const * >::difference_type') -> "void":
        return _RNA.ConstCharVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.ConstCharVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< char const * >::value_type":
        return _RNA.ConstCharVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.ConstCharVector___setitem__(self, *args)

    def pop(self) -> "std::vector< char const * >::value_type":
        return _RNA.ConstCharVector_pop(self)

    def append(self, x: 'std::vector< char const * >::value_type') -> "void":
        return _RNA.ConstCharVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.ConstCharVector_empty(self)

    def size(self) -> "std::vector< char const * >::size_type":
        return _RNA.ConstCharVector_size(self)

    def swap(self, v: 'ConstCharVector') -> "void":
        return _RNA.ConstCharVector_swap(self, v)

    def begin(self) -> "std::vector< char const * >::iterator":
        return _RNA.ConstCharVector_begin(self)

    def end(self) -> "std::vector< char const * >::iterator":
        return _RNA.ConstCharVector_end(self)

    def rbegin(self) -> "std::vector< char const * >::reverse_iterator":
        return _RNA.ConstCharVector_rbegin(self)

    def rend(self) -> "std::vector< char const * >::reverse_iterator":
        return _RNA.ConstCharVector_rend(self)

    def clear(self) -> "void":
        return _RNA.ConstCharVector_clear(self)

    def get_allocator(self) -> "std::vector< char const * >::allocator_type":
        return _RNA.ConstCharVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.ConstCharVector_pop_back(self)

    def erase(self, *args) -> "std::vector< char const * >::iterator":
        return _RNA.ConstCharVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_ConstCharVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'std::vector< char const * >::value_type') -> "void":
        return _RNA.ConstCharVector_push_back(self, x)

    def front(self) -> "std::vector< char const * >::value_type":
        return _RNA.ConstCharVector_front(self)

    def back(self) -> "std::vector< char const * >::value_type":
        return _RNA.ConstCharVector_back(self)

    def assign(self, n: 'std::vector< char const * >::size_type', x: 'std::vector< char const * >::value_type') -> "void":
        return _RNA.ConstCharVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.ConstCharVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.ConstCharVector_insert(self, *args)

    def reserve(self, n: 'std::vector< char const * >::size_type') -> "void":
        return _RNA.ConstCharVector_reserve(self, n)

    def capacity(self) -> "std::vector< char const * >::size_type":
        return _RNA.ConstCharVector_capacity(self)
    __swig_destroy__ = _RNA.delete_ConstCharVector
    __del__ = lambda self: None
ConstCharVector_swigregister = _RNA.ConstCharVector_swigregister
ConstCharVector_swigregister(ConstCharVector)

class SOLUTIONVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.SOLUTIONVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.SOLUTIONVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.SOLUTIONVector___bool__(self)

    def __len__(self) -> "std::vector< SOLUTION >::size_type":
        return _RNA.SOLUTIONVector___len__(self)

    def __getslice__(self, i: 'std::vector< SOLUTION >::difference_type', j: 'std::vector< SOLUTION >::difference_type') -> "std::vector< SOLUTION,std::allocator< SOLUTION > > *":
        return _RNA.SOLUTIONVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.SOLUTIONVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< SOLUTION >::difference_type', j: 'std::vector< SOLUTION >::difference_type') -> "void":
        return _RNA.SOLUTIONVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.SOLUTIONVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< SOLUTION >::value_type const &":
        return _RNA.SOLUTIONVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.SOLUTIONVector___setitem__(self, *args)

    def pop(self) -> "std::vector< SOLUTION >::value_type":
        return _RNA.SOLUTIONVector_pop(self)

    def append(self, x: 'SOLUTION') -> "void":
        return _RNA.SOLUTIONVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.SOLUTIONVector_empty(self)

    def size(self) -> "std::vector< SOLUTION >::size_type":
        return _RNA.SOLUTIONVector_size(self)

    def swap(self, v: 'SOLUTIONVector') -> "void":
        return _RNA.SOLUTIONVector_swap(self, v)

    def begin(self) -> "std::vector< SOLUTION >::iterator":
        return _RNA.SOLUTIONVector_begin(self)

    def end(self) -> "std::vector< SOLUTION >::iterator":
        return _RNA.SOLUTIONVector_end(self)

    def rbegin(self) -> "std::vector< SOLUTION >::reverse_iterator":
        return _RNA.SOLUTIONVector_rbegin(self)

    def rend(self) -> "std::vector< SOLUTION >::reverse_iterator":
        return _RNA.SOLUTIONVector_rend(self)

    def clear(self) -> "void":
        return _RNA.SOLUTIONVector_clear(self)

    def get_allocator(self) -> "std::vector< SOLUTION >::allocator_type":
        return _RNA.SOLUTIONVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.SOLUTIONVector_pop_back(self)

    def erase(self, *args) -> "std::vector< SOLUTION >::iterator":
        return _RNA.SOLUTIONVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_SOLUTIONVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'SOLUTION') -> "void":
        return _RNA.SOLUTIONVector_push_back(self, x)

    def front(self) -> "std::vector< SOLUTION >::value_type const &":
        return _RNA.SOLUTIONVector_front(self)

    def back(self) -> "std::vector< SOLUTION >::value_type const &":
        return _RNA.SOLUTIONVector_back(self)

    def assign(self, n: 'std::vector< SOLUTION >::size_type', x: 'SOLUTION') -> "void":
        return _RNA.SOLUTIONVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.SOLUTIONVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.SOLUTIONVector_insert(self, *args)

    def reserve(self, n: 'std::vector< SOLUTION >::size_type') -> "void":
        return _RNA.SOLUTIONVector_reserve(self, n)

    def capacity(self) -> "std::vector< SOLUTION >::size_type":
        return _RNA.SOLUTIONVector_capacity(self)
    __swig_destroy__ = _RNA.delete_SOLUTIONVector
    __del__ = lambda self: None
SOLUTIONVector_swigregister = _RNA.SOLUTIONVector_swigregister
SOLUTIONVector_swigregister(SOLUTIONVector)

class CoordinateVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.CoordinateVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.CoordinateVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.CoordinateVector___bool__(self)

    def __len__(self) -> "std::vector< COORDINATE >::size_type":
        return _RNA.CoordinateVector___len__(self)

    def __getslice__(self, i: 'std::vector< COORDINATE >::difference_type', j: 'std::vector< COORDINATE >::difference_type') -> "std::vector< COORDINATE,std::allocator< COORDINATE > > *":
        return _RNA.CoordinateVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.CoordinateVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< COORDINATE >::difference_type', j: 'std::vector< COORDINATE >::difference_type') -> "void":
        return _RNA.CoordinateVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.CoordinateVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< COORDINATE >::value_type const &":
        return _RNA.CoordinateVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.CoordinateVector___setitem__(self, *args)

    def pop(self) -> "std::vector< COORDINATE >::value_type":
        return _RNA.CoordinateVector_pop(self)

    def append(self, x: 'COORDINATE') -> "void":
        return _RNA.CoordinateVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.CoordinateVector_empty(self)

    def size(self) -> "std::vector< COORDINATE >::size_type":
        return _RNA.CoordinateVector_size(self)

    def swap(self, v: 'CoordinateVector') -> "void":
        return _RNA.CoordinateVector_swap(self, v)

    def begin(self) -> "std::vector< COORDINATE >::iterator":
        return _RNA.CoordinateVector_begin(self)

    def end(self) -> "std::vector< COORDINATE >::iterator":
        return _RNA.CoordinateVector_end(self)

    def rbegin(self) -> "std::vector< COORDINATE >::reverse_iterator":
        return _RNA.CoordinateVector_rbegin(self)

    def rend(self) -> "std::vector< COORDINATE >::reverse_iterator":
        return _RNA.CoordinateVector_rend(self)

    def clear(self) -> "void":
        return _RNA.CoordinateVector_clear(self)

    def get_allocator(self) -> "std::vector< COORDINATE >::allocator_type":
        return _RNA.CoordinateVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.CoordinateVector_pop_back(self)

    def erase(self, *args) -> "std::vector< COORDINATE >::iterator":
        return _RNA.CoordinateVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_CoordinateVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'COORDINATE') -> "void":
        return _RNA.CoordinateVector_push_back(self, x)

    def front(self) -> "std::vector< COORDINATE >::value_type const &":
        return _RNA.CoordinateVector_front(self)

    def back(self) -> "std::vector< COORDINATE >::value_type const &":
        return _RNA.CoordinateVector_back(self)

    def assign(self, n: 'std::vector< COORDINATE >::size_type', x: 'COORDINATE') -> "void":
        return _RNA.CoordinateVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.CoordinateVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.CoordinateVector_insert(self, *args)

    def reserve(self, n: 'std::vector< COORDINATE >::size_type') -> "void":
        return _RNA.CoordinateVector_reserve(self, n)

    def capacity(self) -> "std::vector< COORDINATE >::size_type":
        return _RNA.CoordinateVector_capacity(self)
    __swig_destroy__ = _RNA.delete_CoordinateVector
    __del__ = lambda self: None
CoordinateVector_swigregister = _RNA.CoordinateVector_swigregister
CoordinateVector_swigregister(CoordinateVector)

class DoubleDoubleVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.DoubleDoubleVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.DoubleDoubleVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.DoubleDoubleVector___bool__(self)

    def __len__(self) -> "std::vector< std::vector< double > >::size_type":
        return _RNA.DoubleDoubleVector___len__(self)

    def __getslice__(self, i: 'std::vector< std::vector< double > >::difference_type', j: 'std::vector< std::vector< double > >::difference_type') -> "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > > *":
        return _RNA.DoubleDoubleVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.DoubleDoubleVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< std::vector< double > >::difference_type', j: 'std::vector< std::vector< double > >::difference_type') -> "void":
        return _RNA.DoubleDoubleVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.DoubleDoubleVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::vector< double > >::value_type const &":
        return _RNA.DoubleDoubleVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.DoubleDoubleVector___setitem__(self, *args)

    def pop(self) -> "std::vector< std::vector< double > >::value_type":
        return _RNA.DoubleDoubleVector_pop(self)

    def append(self, x: 'DoubleVector') -> "void":
        return _RNA.DoubleDoubleVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.DoubleDoubleVector_empty(self)

    def size(self) -> "std::vector< std::vector< double > >::size_type":
        return _RNA.DoubleDoubleVector_size(self)

    def swap(self, v: 'DoubleDoubleVector') -> "void":
        return _RNA.DoubleDoubleVector_swap(self, v)

    def begin(self) -> "std::vector< std::vector< double > >::iterator":
        return _RNA.DoubleDoubleVector_begin(self)

    def end(self) -> "std::vector< std::vector< double > >::iterator":
        return _RNA.DoubleDoubleVector_end(self)

    def rbegin(self) -> "std::vector< std::vector< double > >::reverse_iterator":
        return _RNA.DoubleDoubleVector_rbegin(self)

    def rend(self) -> "std::vector< std::vector< double > >::reverse_iterator":
        return _RNA.DoubleDoubleVector_rend(self)

    def clear(self) -> "void":
        return _RNA.DoubleDoubleVector_clear(self)

    def get_allocator(self) -> "std::vector< std::vector< double > >::allocator_type":
        return _RNA.DoubleDoubleVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.DoubleDoubleVector_pop_back(self)

    def erase(self, *args) -> "std::vector< std::vector< double > >::iterator":
        return _RNA.DoubleDoubleVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_DoubleDoubleVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'DoubleVector') -> "void":
        return _RNA.DoubleDoubleVector_push_back(self, x)

    def front(self) -> "std::vector< std::vector< double > >::value_type const &":
        return _RNA.DoubleDoubleVector_front(self)

    def back(self) -> "std::vector< std::vector< double > >::value_type const &":
        return _RNA.DoubleDoubleVector_back(self)

    def assign(self, n: 'std::vector< std::vector< double > >::size_type', x: 'DoubleVector') -> "void":
        return _RNA.DoubleDoubleVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.DoubleDoubleVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.DoubleDoubleVector_insert(self, *args)

    def reserve(self, n: 'std::vector< std::vector< double > >::size_type') -> "void":
        return _RNA.DoubleDoubleVector_reserve(self, n)

    def capacity(self) -> "std::vector< std::vector< double > >::size_type":
        return _RNA.DoubleDoubleVector_capacity(self)
    __swig_destroy__ = _RNA.delete_DoubleDoubleVector
    __del__ = lambda self: None
DoubleDoubleVector_swigregister = _RNA.DoubleDoubleVector_swigregister
DoubleDoubleVector_swigregister(DoubleDoubleVector)

class IntIntVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.IntIntVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.IntIntVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.IntIntVector___bool__(self)

    def __len__(self) -> "std::vector< std::vector< int > >::size_type":
        return _RNA.IntIntVector___len__(self)

    def __getslice__(self, i: 'std::vector< std::vector< int > >::difference_type', j: 'std::vector< std::vector< int > >::difference_type') -> "std::vector< std::vector< int,std::allocator< int > >,std::allocator< std::vector< int,std::allocator< int > > > > *":
        return _RNA.IntIntVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.IntIntVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< std::vector< int > >::difference_type', j: 'std::vector< std::vector< int > >::difference_type') -> "void":
        return _RNA.IntIntVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.IntIntVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::vector< int > >::value_type const &":
        return _RNA.IntIntVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.IntIntVector___setitem__(self, *args)

    def pop(self) -> "std::vector< std::vector< int > >::value_type":
        return _RNA.IntIntVector_pop(self)

    def append(self, x: 'IntVector') -> "void":
        return _RNA.IntIntVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.IntIntVector_empty(self)

    def size(self) -> "std::vector< std::vector< int > >::size_type":
        return _RNA.IntIntVector_size(self)

    def swap(self, v: 'IntIntVector') -> "void":
        return _RNA.IntIntVector_swap(self, v)

    def begin(self) -> "std::vector< std::vector< int > >::iterator":
        return _RNA.IntIntVector_begin(self)

    def end(self) -> "std::vector< std::vector< int > >::iterator":
        return _RNA.IntIntVector_end(self)

    def rbegin(self) -> "std::vector< std::vector< int > >::reverse_iterator":
        return _RNA.IntIntVector_rbegin(self)

    def rend(self) -> "std::vector< std::vector< int > >::reverse_iterator":
        return _RNA.IntIntVector_rend(self)

    def clear(self) -> "void":
        return _RNA.IntIntVector_clear(self)

    def get_allocator(self) -> "std::vector< std::vector< int > >::allocator_type":
        return _RNA.IntIntVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.IntIntVector_pop_back(self)

    def erase(self, *args) -> "std::vector< std::vector< int > >::iterator":
        return _RNA.IntIntVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_IntIntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'IntVector') -> "void":
        return _RNA.IntIntVector_push_back(self, x)

    def front(self) -> "std::vector< std::vector< int > >::value_type const &":
        return _RNA.IntIntVector_front(self)

    def back(self) -> "std::vector< std::vector< int > >::value_type const &":
        return _RNA.IntIntVector_back(self)

    def assign(self, n: 'std::vector< std::vector< int > >::size_type', x: 'IntVector') -> "void":
        return _RNA.IntIntVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.IntIntVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.IntIntVector_insert(self, *args)

    def reserve(self, n: 'std::vector< std::vector< int > >::size_type') -> "void":
        return _RNA.IntIntVector_reserve(self, n)

    def capacity(self) -> "std::vector< std::vector< int > >::size_type":
        return _RNA.IntIntVector_capacity(self)
    __swig_destroy__ = _RNA.delete_IntIntVector
    __del__ = lambda self: None
IntIntVector_swigregister = _RNA.IntIntVector_swigregister
IntIntVector_swigregister(IntIntVector)

class param(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    model_details = _swig_property(_RNA.param_model_details_get, _RNA.param_model_details_set)

    def __init__(self, *args):
        this = _RNA.new_param(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def get_temperature(self) -> "double":
        return _RNA.param_get_temperature(self)
    __swig_destroy__ = _RNA.delete_param
    __del__ = lambda self: None
param_swigregister = _RNA.param_swigregister
param_swigregister(param)

class exp_param(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    kT = _swig_property(_RNA.exp_param_kT_get, _RNA.exp_param_kT_set)
    model_details = _swig_property(_RNA.exp_param_model_details_get, _RNA.exp_param_model_details_set)

    def __init__(self, *args):
        this = _RNA.new_exp_param(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def get_temperature(self) -> "double":
        return _RNA.exp_param_get_temperature(self)
    __swig_destroy__ = _RNA.delete_exp_param
    __del__ = lambda self: None
exp_param_swigregister = _RNA.exp_param_swigregister
exp_param_swigregister(exp_param)


_RNA.UNKNOWN_swigconstant(_RNA)
UNKNOWN = _RNA.UNKNOWN

_RNA.QUIT_swigconstant(_RNA)
QUIT = _RNA.QUIT

_RNA.S_swigconstant(_RNA)
S = _RNA.S

_RNA.S_H_swigconstant(_RNA)
S_H = _RNA.S_H

_RNA.HP_swigconstant(_RNA)
HP = _RNA.HP

_RNA.HP_H_swigconstant(_RNA)
HP_H = _RNA.HP_H

_RNA.B_swigconstant(_RNA)
B = _RNA.B

_RNA.B_H_swigconstant(_RNA)
B_H = _RNA.B_H

_RNA.IL_swigconstant(_RNA)
IL = _RNA.IL

_RNA.IL_H_swigconstant(_RNA)
IL_H = _RNA.IL_H

_RNA.MMH_swigconstant(_RNA)
MMH = _RNA.MMH

_RNA.MMH_H_swigconstant(_RNA)
MMH_H = _RNA.MMH_H

_RNA.MMI_swigconstant(_RNA)
MMI = _RNA.MMI

_RNA.MMI_H_swigconstant(_RNA)
MMI_H = _RNA.MMI_H

_RNA.MMI1N_swigconstant(_RNA)
MMI1N = _RNA.MMI1N

_RNA.MMI1N_H_swigconstant(_RNA)
MMI1N_H = _RNA.MMI1N_H

_RNA.MMI23_swigconstant(_RNA)
MMI23 = _RNA.MMI23

_RNA.MMI23_H_swigconstant(_RNA)
MMI23_H = _RNA.MMI23_H

_RNA.MMM_swigconstant(_RNA)
MMM = _RNA.MMM

_RNA.MMM_H_swigconstant(_RNA)
MMM_H = _RNA.MMM_H

_RNA.MME_swigconstant(_RNA)
MME = _RNA.MME

_RNA.MME_H_swigconstant(_RNA)
MME_H = _RNA.MME_H

_RNA.D5_swigconstant(_RNA)
D5 = _RNA.D5

_RNA.D5_H_swigconstant(_RNA)
D5_H = _RNA.D5_H

_RNA.D3_swigconstant(_RNA)
D3 = _RNA.D3

_RNA.D3_H_swigconstant(_RNA)
D3_H = _RNA.D3_H

_RNA.INT11_swigconstant(_RNA)
INT11 = _RNA.INT11

_RNA.INT11_H_swigconstant(_RNA)
INT11_H = _RNA.INT11_H

_RNA.INT21_swigconstant(_RNA)
INT21 = _RNA.INT21

_RNA.INT21_H_swigconstant(_RNA)
INT21_H = _RNA.INT21_H

_RNA.INT22_swigconstant(_RNA)
INT22 = _RNA.INT22

_RNA.INT22_H_swigconstant(_RNA)
INT22_H = _RNA.INT22_H

_RNA.ML_swigconstant(_RNA)
ML = _RNA.ML

_RNA.TL_swigconstant(_RNA)
TL = _RNA.TL

_RNA.TRI_swigconstant(_RNA)
TRI = _RNA.TRI

_RNA.HEX_swigconstant(_RNA)
HEX = _RNA.HEX

_RNA.NIN_swigconstant(_RNA)
NIN = _RNA.NIN

_RNA.MISC_swigconstant(_RNA)
MISC = _RNA.MISC

def read_parameter_file(fname: 'char const []') -> "void":
    return _RNA.read_parameter_file(fname)
read_parameter_file = _RNA.read_parameter_file

def write_parameter_file(fname: 'char const []') -> "void":
    return _RNA.write_parameter_file(fname)
write_parameter_file = _RNA.write_parameter_file

def gettype(ident: 'char const *') -> "enum parset":
    return _RNA.gettype(ident)
gettype = _RNA.gettype

def settype(s: 'enum parset') -> "char *":
    return _RNA.settype(s)
settype = _RNA.settype

_RNA.GASCONST_swigconstant(_RNA)
GASCONST = _RNA.GASCONST

_RNA.K0_swigconstant(_RNA)
K0 = _RNA.K0

_RNA.INF_swigconstant(_RNA)
INF = _RNA.INF

_RNA.EMAX_swigconstant(_RNA)
EMAX = _RNA.EMAX

_RNA.FORBIDDEN_swigconstant(_RNA)
FORBIDDEN = _RNA.FORBIDDEN

_RNA.BONUS_swigconstant(_RNA)
BONUS = _RNA.BONUS

_RNA.NBPAIRS_swigconstant(_RNA)
NBPAIRS = _RNA.NBPAIRS

_RNA.TURN_swigconstant(_RNA)
TURN = _RNA.TURN

_RNA.MAXLOOP_swigconstant(_RNA)
MAXLOOP = _RNA.MAXLOOP

_RNA.UNIT_swigconstant(_RNA)
UNIT = _RNA.UNIT

_RNA.MINPSCORE_swigconstant(_RNA)
MINPSCORE = _RNA.MINPSCORE
class md(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    temperature = _swig_property(_RNA.md_temperature_get, _RNA.md_temperature_set)
    dangles = _swig_property(_RNA.md_dangles_get, _RNA.md_dangles_set)
    noLP = _swig_property(_RNA.md_noLP_get, _RNA.md_noLP_set)
    noGU = _swig_property(_RNA.md_noGU_get, _RNA.md_noGU_set)
    noGUclosure = _swig_property(_RNA.md_noGUclosure_get, _RNA.md_noGUclosure_set)
    special_hp = _swig_property(_RNA.md_special_hp_get, _RNA.md_special_hp_set)
    max_bp_span = _swig_property(_RNA.md_max_bp_span_get, _RNA.md_max_bp_span_set)

    def __init__(self, *args):
        this = _RNA.new_md(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def reset(self) -> "void":
        return _RNA.md_reset(self)

    def set_from_globals(self) -> "void":
        return _RNA.md_set_from_globals(self)

    def option_string(self) -> "char *":
        return _RNA.md_option_string(self)
    __swig_destroy__ = _RNA.delete_md
    __del__ = lambda self: None
md_swigregister = _RNA.md_swigregister
md_swigregister(md)


_RNA.NBASES_swigconstant(_RNA)
NBASES = _RNA.NBASES

_RNA.MAXALPHA_swigconstant(_RNA)
MAXALPHA = _RNA.MAXALPHA

def fc_add_pycallback(vc: 'fold_compound', PyFunc: 'PyObject *') -> "void":
    return _RNA.fc_add_pycallback(vc, PyFunc)
fc_add_pycallback = _RNA.fc_add_pycallback

def fc_add_pydata(vc: 'fold_compound', data: 'PyObject *', PyFuncOrNone: 'PyObject *') -> "void":
    return _RNA.fc_add_pydata(vc, data, PyFuncOrNone)
fc_add_pydata = _RNA.fc_add_pydata

def sc_add_f_pycallback(vc: 'fold_compound', PyFunc: 'PyObject *') -> "void":
    return _RNA.sc_add_f_pycallback(vc, PyFunc)
sc_add_f_pycallback = _RNA.sc_add_f_pycallback

def sc_add_bt_pycallback(vc: 'fold_compound', PyFunc: 'PyObject *') -> "void":
    return _RNA.sc_add_bt_pycallback(vc, PyFunc)
sc_add_bt_pycallback = _RNA.sc_add_bt_pycallback

def sc_add_exp_f_pycallback(vc: 'fold_compound', PyFunc: 'PyObject *') -> "void":
    return _RNA.sc_add_exp_f_pycallback(vc, PyFunc)
sc_add_exp_f_pycallback = _RNA.sc_add_exp_f_pycallback

def sc_add_pydata(vc: 'fold_compound', data: 'PyObject *', PyFuncOrNone: 'PyObject *') -> "void":
    return _RNA.sc_add_pydata(vc, data, PyFuncOrNone)
sc_add_pydata = _RNA.sc_add_pydata
class fold_compound(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def add_auxdata(self, *args) -> "void":
        return _RNA.fold_compound_add_auxdata(self, *args)

    def add_callback(self, PyFunc: 'PyObject *') -> "void":
        return _RNA.fold_compound_add_callback(self, PyFunc)

    def sc_add_data(self, *args) -> "void":
        return _RNA.fold_compound_sc_add_data(self, *args)

    def sc_add_f(self, PyFunc: 'PyObject *') -> "void":
        return _RNA.fold_compound_sc_add_f(self, PyFunc)

    def sc_add_bt(self, PyFunc: 'PyObject *') -> "void":
        return _RNA.fold_compound_sc_add_bt(self, PyFunc)

    def sc_add_exp_f(self, PyFunc: 'PyObject *') -> "void":
        return _RNA.fold_compound_sc_add_exp_f(self, PyFunc)

    def __init__(self, *args):
        this = _RNA.new_fold_compound(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_fold_compound
    __del__ = lambda self: None

    def type(self) -> "vrna_fc_type_e":
        return _RNA.fold_compound_type(self)

    def length(self) -> "unsigned int":
        return _RNA.fold_compound_length(self)

    def centroid(self) -> "char *":
        return _RNA.fold_compound_centroid(self)

    def E_hp_loop(self, i: 'int', j: 'int') -> "int":
        return _RNA.fold_compound_E_hp_loop(self, i, j)

    def E_ext_hp_loop(self, i: 'int', j: 'int') -> "int":
        return _RNA.fold_compound_E_ext_hp_loop(self, i, j)

    def exp_E_hp_loop(self, i: 'int', j: 'int') -> "FLT_OR_DBL":
        return _RNA.fold_compound_exp_E_hp_loop(self, i, j)

    def E_int_loop(self, i: 'int', j: 'int') -> "int":
        return _RNA.fold_compound_E_int_loop(self, i, j)

    def exp_E_int_loop(self, i: 'int', j: 'int') -> "FLT_OR_DBL":
        return _RNA.fold_compound_exp_E_int_loop(self, i, j)

    def E_stack(self, i: 'int', j: 'int') -> "int":
        return _RNA.fold_compound_E_stack(self, i, j)

    def constraints_add(self, constraint: 'char const *', options: 'unsigned int'=1) -> "void":
        return _RNA.fold_compound_constraints_add(self, constraint, options)

    def hc_init(self) -> "void":
        return _RNA.fold_compound_hc_init(self)

    def hc_add_up(self, *args) -> "void":
        return _RNA.fold_compound_hc_add_up(self, *args)

    def hc_add_bp_nonspecific(self, *args) -> "void":
        return _RNA.fold_compound_hc_add_bp_nonspecific(self, *args)

    def hc_add_bp(self, *args) -> "void":
        return _RNA.fold_compound_hc_add_bp(self, *args)

    def hc_add_from_db(self, *args) -> "int":
        return _RNA.fold_compound_hc_add_from_db(self, *args)

    def sc_remove(self) -> "void":
        return _RNA.fold_compound_sc_remove(self)

    def sc_init(self) -> "void":
        return _RNA.fold_compound_sc_init(self)

    def sc_add_bp(self, constraints: 'DoubleDoubleVector', options: 'unsigned int'=0) -> "void":
        return _RNA.fold_compound_sc_add_bp(self, constraints, options)

    def sc_add_up(self, constraints: 'DoubleVector', options: 'unsigned int'=0) -> "void":
        return _RNA.fold_compound_sc_add_up(self, constraints, options)

    def sc_add_SHAPE_deigan(self, reactivities: 'DoubleVector', m: 'double', b: 'double', options: 'unsigned int'=0) -> "int":
        return _RNA.fold_compound_sc_add_SHAPE_deigan(self, reactivities, m, b, options)

    def sc_add_SHAPE_deigan_ali(self, shape_files: 'StringVector', shape_file_association: 'IntVector', m: 'double', b: 'double', options: 'unsigned int'=0) -> "int":
        return _RNA.fold_compound_sc_add_SHAPE_deigan_ali(self, shape_files, shape_file_association, m, b, options)

    def sc_add_SHAPE_zarringhalam(self, reactivities: 'DoubleVector', b: 'double', default_value: 'double', shape_conversion: 'char const *', options: 'unsigned int'=0) -> "int":
        return _RNA.fold_compound_sc_add_SHAPE_zarringhalam(self, reactivities, b, default_value, shape_conversion, options)

    def sc_add_hi_motif(self, seq: 'char const *', structure: 'char const *', energy: 'FLT_OR_DBL', options: 'unsigned int'=0) -> "int":
        return _RNA.fold_compound_sc_add_hi_motif(self, seq, structure, energy, options)

    def eval_structure(self, structure: 'char const *') -> "float":
        return _RNA.fold_compound_eval_structure(self, structure)

    def eval_structure_pt(self, pt: 'IntVector') -> "int":
        return _RNA.fold_compound_eval_structure_pt(self, pt)

    def eval_structure_verbose(self, structure: 'char *', file: 'FILE *') -> "float":
        return _RNA.fold_compound_eval_structure_verbose(self, structure, file)

    def eval_structure_pt_verbose(self, pt: 'IntVector', file: 'FILE *') -> "int":
        return _RNA.fold_compound_eval_structure_pt_verbose(self, pt, file)

    def eval_covar_structure(self, structure: 'char *') -> "float":
        return _RNA.fold_compound_eval_covar_structure(self, structure)

    def eval_loop_pt(self, i: 'int', pt: 'IntVector') -> "int":
        return _RNA.fold_compound_eval_loop_pt(self, i, pt)

    def eval_move(self, structure: 'char const *', m1: 'int', m2: 'int') -> "float":
        return _RNA.fold_compound_eval_move(self, structure, m1, m2)

    def eval_move_pt(self, pt: 'IntVector', m1: 'int', m2: 'int') -> "int":
        return _RNA.fold_compound_eval_move_pt(self, pt, m1, m2)

    def mfe(self) -> "char *":
        return _RNA.fold_compound_mfe(self)

    def mfe_dimer(self) -> "char *":
        return _RNA.fold_compound_mfe_dimer(self)

    def mfe_window(self, file: 'FILE *'=None) -> "float":
        return _RNA.fold_compound_mfe_window(self, file)

    def pf(self) -> "char *":
        return _RNA.fold_compound_pf(self)

    def mean_bp_distance(self) -> "double":
        return _RNA.fold_compound_mean_bp_distance(self)

    def pf_dimer(self) -> "char *":
        return _RNA.fold_compound_pf_dimer(self)

    def bpp(self) -> "std::vector< std::vector< double,std::allocator< double > >,std::allocator< std::vector< double,std::allocator< double > > > >":
        return _RNA.fold_compound_bpp(self)
fold_compound_swigregister = _RNA.fold_compound_swigregister
fold_compound_swigregister(fold_compound)
cvar = _RNA.cvar


_RNA.STATUS_MFE_PRE_swigconstant(_RNA)
STATUS_MFE_PRE = _RNA.STATUS_MFE_PRE

_RNA.STATUS_MFE_POST_swigconstant(_RNA)
STATUS_MFE_POST = _RNA.STATUS_MFE_POST

_RNA.STATUS_PF_PRE_swigconstant(_RNA)
STATUS_PF_PRE = _RNA.STATUS_PF_PRE

_RNA.STATUS_PF_POST_swigconstant(_RNA)
STATUS_PF_POST = _RNA.STATUS_PF_POST

_RNA.OPTION_DEFAULT_swigconstant(_RNA)
OPTION_DEFAULT = _RNA.OPTION_DEFAULT

_RNA.OPTION_MFE_swigconstant(_RNA)
OPTION_MFE = _RNA.OPTION_MFE

_RNA.OPTION_PF_swigconstant(_RNA)
OPTION_PF = _RNA.OPTION_PF

_RNA.OPTION_HYBRID_swigconstant(_RNA)
OPTION_HYBRID = _RNA.OPTION_HYBRID

_RNA.OPTION_EVAL_ONLY_swigconstant(_RNA)
OPTION_EVAL_ONLY = _RNA.OPTION_EVAL_ONLY

_RNA.OPTION_WINDOW_swigconstant(_RNA)
OPTION_WINDOW = _RNA.OPTION_WINDOW
class basepair(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    i = _swig_property(_RNA.basepair_i_get, _RNA.basepair_i_set)
    j = _swig_property(_RNA.basepair_j_get, _RNA.basepair_j_set)

    def __init__(self):
        this = _RNA.new_basepair()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_basepair
    __del__ = lambda self: None
basepair_swigregister = _RNA.basepair_swigregister
basepair_swigregister(basepair)

class duplexT(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    i = _swig_property(_RNA.duplexT_i_get, _RNA.duplexT_i_set)
    j = _swig_property(_RNA.duplexT_j_get, _RNA.duplexT_j_set)
    end = _swig_property(_RNA.duplexT_end_get, _RNA.duplexT_end_set)
    structure = _swig_property(_RNA.duplexT_structure_get, _RNA.duplexT_structure_set)
    energy = _swig_property(_RNA.duplexT_energy_get, _RNA.duplexT_energy_set)
    energy_backtrack = _swig_property(_RNA.duplexT_energy_backtrack_get, _RNA.duplexT_energy_backtrack_set)
    opening_backtrack_x = _swig_property(_RNA.duplexT_opening_backtrack_x_get, _RNA.duplexT_opening_backtrack_x_set)
    opening_backtrack_y = _swig_property(_RNA.duplexT_opening_backtrack_y_get, _RNA.duplexT_opening_backtrack_y_set)
    offset = _swig_property(_RNA.duplexT_offset_get, _RNA.duplexT_offset_set)
    dG1 = _swig_property(_RNA.duplexT_dG1_get, _RNA.duplexT_dG1_set)
    dG2 = _swig_property(_RNA.duplexT_dG2_get, _RNA.duplexT_dG2_set)
    ddG = _swig_property(_RNA.duplexT_ddG_get, _RNA.duplexT_ddG_set)
    tb = _swig_property(_RNA.duplexT_tb_get, _RNA.duplexT_tb_set)
    te = _swig_property(_RNA.duplexT_te_get, _RNA.duplexT_te_set)
    qb = _swig_property(_RNA.duplexT_qb_get, _RNA.duplexT_qb_set)
    qe = _swig_property(_RNA.duplexT_qe_get, _RNA.duplexT_qe_set)

    def __init__(self):
        this = _RNA.new_duplexT()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_duplexT
    __del__ = lambda self: None
duplexT_swigregister = _RNA.duplexT_swigregister
duplexT_swigregister(duplexT)

class folden(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr
    k = _swig_property(_RNA.folden_k_get, _RNA.folden_k_set)
    energy = _swig_property(_RNA.folden_energy_get, _RNA.folden_energy_set)
    next = _swig_property(_RNA.folden_next_get, _RNA.folden_next_set)
    __swig_destroy__ = _RNA.delete_folden
    __del__ = lambda self: None
folden_swigregister = _RNA.folden_swigregister
folden_swigregister(folden)


_RNA.VRNA_VC_TYPE_SINGLE_swigconstant(_RNA)
VRNA_VC_TYPE_SINGLE = _RNA.VRNA_VC_TYPE_SINGLE

_RNA.VRNA_VC_TYPE_ALIGNMENT_swigconstant(_RNA)
VRNA_VC_TYPE_ALIGNMENT = _RNA.VRNA_VC_TYPE_ALIGNMENT

def hamming(s1: 'char const *', s2: 'char const *') -> "int":
    return _RNA.hamming(s1, s2)
hamming = _RNA.hamming

def hamming_bound(s1: 'char const *', s2: 'char const *', n: 'int') -> "int":
    return _RNA.hamming_bound(s1, s2, n)
hamming_bound = _RNA.hamming_bound

def encode_seq(sequence: 'char *') -> "short *":
    return _RNA.encode_seq(sequence)
encode_seq = _RNA.encode_seq

_RNA.FILENAME_MAX_LENGTH_swigconstant(_RNA)
FILENAME_MAX_LENGTH = _RNA.FILENAME_MAX_LENGTH

_RNA.FILENAME_ID_LENGTH_swigconstant(_RNA)
FILENAME_ID_LENGTH = _RNA.FILENAME_ID_LENGTH

def random_string(l: 'int', symbols: 'char const []') -> "char *":
    return _RNA.random_string(l, symbols)
random_string = _RNA.random_string

def hamming_distance(s1: 'char const *', s2: 'char const *') -> "int":
    return _RNA.hamming_distance(s1, s2)
hamming_distance = _RNA.hamming_distance

def hamming_distance_bound(s1: 'char const *', s2: 'char const *', n: 'int') -> "int":
    return _RNA.hamming_distance_bound(s1, s2, n)
hamming_distance_bound = _RNA.hamming_distance_bound

def pack_structure(s: 'char const *') -> "char *":
    return _RNA.pack_structure(s)
pack_structure = _RNA.pack_structure

def unpack_structure(packed: 'char const *') -> "char *":
    return _RNA.unpack_structure(packed)
unpack_structure = _RNA.unpack_structure

def make_loop_index(structure: 'char const *') -> "short *":
    return _RNA.make_loop_index(structure)
make_loop_index = _RNA.make_loop_index

def ptable(str: 'std::string') -> "std::vector< int,std::allocator< int > >":
    return _RNA.ptable(str)
ptable = _RNA.ptable

def ptable_pk(str: 'std::string') -> "std::vector< int,std::allocator< int > >":
    return _RNA.ptable_pk(str)
ptable_pk = _RNA.ptable_pk

def db_from_ptable(pt: 'IntVector') -> "char *":
    return _RNA.db_from_ptable(pt)
db_from_ptable = _RNA.db_from_ptable

def bp_distance(str1: 'char const *', str2: 'char const *') -> "int":
    return _RNA.bp_distance(str1, str2)
bp_distance = _RNA.bp_distance
class PlistVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.PlistVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.PlistVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.PlistVector___bool__(self)

    def __len__(self) -> "std::vector< vrna_plist_s >::size_type":
        return _RNA.PlistVector___len__(self)

    def __getslice__(self, i: 'std::vector< vrna_plist_s >::difference_type', j: 'std::vector< vrna_plist_s >::difference_type') -> "std::vector< vrna_plist_s,std::allocator< vrna_plist_s > > *":
        return _RNA.PlistVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.PlistVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< vrna_plist_s >::difference_type', j: 'std::vector< vrna_plist_s >::difference_type') -> "void":
        return _RNA.PlistVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.PlistVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< vrna_plist_s >::value_type const &":
        return _RNA.PlistVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.PlistVector___setitem__(self, *args)

    def pop(self) -> "std::vector< vrna_plist_s >::value_type":
        return _RNA.PlistVector_pop(self)

    def append(self, x: 'std::vector< vrna_plist_s >::value_type const &') -> "void":
        return _RNA.PlistVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.PlistVector_empty(self)

    def size(self) -> "std::vector< vrna_plist_s >::size_type":
        return _RNA.PlistVector_size(self)

    def swap(self, v: 'PlistVector') -> "void":
        return _RNA.PlistVector_swap(self, v)

    def begin(self) -> "std::vector< vrna_plist_s >::iterator":
        return _RNA.PlistVector_begin(self)

    def end(self) -> "std::vector< vrna_plist_s >::iterator":
        return _RNA.PlistVector_end(self)

    def rbegin(self) -> "std::vector< vrna_plist_s >::reverse_iterator":
        return _RNA.PlistVector_rbegin(self)

    def rend(self) -> "std::vector< vrna_plist_s >::reverse_iterator":
        return _RNA.PlistVector_rend(self)

    def clear(self) -> "void":
        return _RNA.PlistVector_clear(self)

    def get_allocator(self) -> "std::vector< vrna_plist_s >::allocator_type":
        return _RNA.PlistVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.PlistVector_pop_back(self)

    def erase(self, *args) -> "std::vector< vrna_plist_s >::iterator":
        return _RNA.PlistVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_PlistVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'std::vector< vrna_plist_s >::value_type const &') -> "void":
        return _RNA.PlistVector_push_back(self, x)

    def front(self) -> "std::vector< vrna_plist_s >::value_type const &":
        return _RNA.PlistVector_front(self)

    def back(self) -> "std::vector< vrna_plist_s >::value_type const &":
        return _RNA.PlistVector_back(self)

    def assign(self, n: 'std::vector< vrna_plist_s >::size_type', x: 'std::vector< vrna_plist_s >::value_type const &') -> "void":
        return _RNA.PlistVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.PlistVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.PlistVector_insert(self, *args)

    def reserve(self, n: 'std::vector< vrna_plist_s >::size_type') -> "void":
        return _RNA.PlistVector_reserve(self, n)

    def capacity(self) -> "std::vector< vrna_plist_s >::size_type":
        return _RNA.PlistVector_capacity(self)
    __swig_destroy__ = _RNA.delete_PlistVector
    __del__ = lambda self: None
PlistVector_swigregister = _RNA.PlistVector_swigregister
PlistVector_swigregister(PlistVector)


def plist(structure: 'std::string', pr: 'float') -> "std::vector< vrna_plist_t,std::allocator< vrna_plist_t > >":
    return _RNA.plist(structure, pr)
plist = _RNA.plist

def db_pack(struc: 'char const *') -> "char *":
    return _RNA.db_pack(struc)
db_pack = _RNA.db_pack

def db_unpack(packed: 'char const *') -> "char *":
    return _RNA.db_unpack(packed)
db_unpack = _RNA.db_unpack

def consensus(AS: 'char const **') -> "char *":
    return _RNA.consensus(AS)
consensus = _RNA.consensus

def consens_mis(AS: 'char const **') -> "char *":
    return _RNA.consens_mis(AS)
consens_mis = _RNA.consens_mis

def move_standard(seq: 'char *', struc: 'char *', type: 'enum MOVE_TYPE', verbosity_level: 'int', shifts: 'int', noLP: 'int') -> "int *":
    return _RNA.move_standard(seq, struc, type, verbosity_level, shifts, noLP)
move_standard = _RNA.move_standard
class struct_en(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    energy = _swig_property(_RNA.struct_en_energy_get, _RNA.struct_en_energy_set)
    structure = _swig_property(_RNA.struct_en_structure_get, _RNA.struct_en_structure_set)

    def __init__(self):
        this = _RNA.new_struct_en()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_struct_en
    __del__ = lambda self: None
struct_en_swigregister = _RNA.struct_en_swigregister
struct_en_swigregister(struct_en)


def print_stren(out: 'FILE *', str: 'struct_en') -> "void":
    return _RNA.print_stren(out, str)
print_stren = _RNA.print_stren

def print_str(out: 'FILE *', str: 'short *') -> "void":
    return _RNA.print_str(out, str)
print_str = _RNA.print_str

def copy_arr(dest: 'short *', src: 'short *') -> "void":
    return _RNA.copy_arr(dest, src)
copy_arr = _RNA.copy_arr

def allocopy(src: 'short *') -> "short *":
    return _RNA.allocopy(src)
allocopy = _RNA.allocopy

_RNA.GRADIENT_swigconstant(_RNA)
GRADIENT = _RNA.GRADIENT

_RNA.FIRST_swigconstant(_RNA)
FIRST = _RNA.FIRST

_RNA.ADAPTIVE_swigconstant(_RNA)
ADAPTIVE = _RNA.ADAPTIVE

def move_gradient(seq: 'char *', ptable: 'short *', s: 'short *', s1: 'short *', verbosity_level: 'int', shifts: 'int', noLP: 'int') -> "int":
    return _RNA.move_gradient(seq, ptable, s, s1, verbosity_level, shifts, noLP)
move_gradient = _RNA.move_gradient

def move_first(seq: 'char *', ptable: 'short *', s: 'short *', s1: 'short *', verbosity_level: 'int', shifts: 'int', noLP: 'int') -> "int":
    return _RNA.move_first(seq, ptable, s, s1, verbosity_level, shifts, noLP)
move_first = _RNA.move_first

def move_adaptive(seq: 'char *', ptable: 'short *', s: 'short *', s1: 'short *', verbosity_level: 'int') -> "int":
    return _RNA.move_adaptive(seq, ptable, s, s1, verbosity_level)
move_adaptive = _RNA.move_adaptive

def browse_neighs_pt(seq: 'char *', ptable: 'short *', s: 'short *', s1: 'short *', verbosity_level: 'int', shifts: 'int', noLP: 'int', funct: 'int (*)(struct_en *,struct_en *)') -> "int":
    return _RNA.browse_neighs_pt(seq, ptable, s, s1, verbosity_level, shifts, noLP, funct)
browse_neighs_pt = _RNA.browse_neighs_pt

def browse_neighs(seq: 'char *', struc: 'char *', verbosity_level: 'int', shifts: 'int', noLP: 'int', funct: 'int (*)(struct_en *,struct_en *)') -> "int":
    return _RNA.browse_neighs(seq, struc, verbosity_level, shifts, noLP, funct)
browse_neighs = _RNA.browse_neighs

def get_xy_coordinates(structure: 'char const *') -> "COORDINATE *":
    return _RNA.get_xy_coordinates(structure)
get_xy_coordinates = _RNA.get_xy_coordinates

def simple_circplot_coordinates(arg1: 'std::string') -> "std::vector< COORDINATE,std::allocator< COORDINATE > >":
    return _RNA.simple_circplot_coordinates(arg1)
simple_circplot_coordinates = _RNA.simple_circplot_coordinates

def naview_xy_coordinates(arg1: 'std::string') -> "std::vector< COORDINATE,std::allocator< COORDINATE > >":
    return _RNA.naview_xy_coordinates(arg1)
naview_xy_coordinates = _RNA.naview_xy_coordinates

_RNA.PI_swigconstant(_RNA)
PI = _RNA.PI

_RNA.PIHALF_swigconstant(_RNA)
PIHALF = _RNA.PIHALF
class COORDINATE(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def get(self, i: 'int') -> "COORDINATE *":
        return _RNA.COORDINATE_get(self, i)
    X = _swig_property(_RNA.COORDINATE_X_get, _RNA.COORDINATE_X_set)
    Y = _swig_property(_RNA.COORDINATE_Y_get, _RNA.COORDINATE_Y_set)

    def __init__(self):
        this = _RNA.new_COORDINATE()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _RNA.delete_COORDINATE
    __del__ = lambda self: None
COORDINATE_swigregister = _RNA.COORDINATE_swigregister
COORDINATE_swigregister(COORDINATE)


def simple_xy_coordinates(*args) -> "int":
    return _RNA.simple_xy_coordinates(*args)
simple_xy_coordinates = _RNA.simple_xy_coordinates

def PS_rna_plot_snoop_a(string: 'char *', structure: 'char *', ssfile: 'char *', relative_access: 'int *', seqs: 'char const *[]') -> "int":
    return _RNA.PS_rna_plot_snoop_a(string, structure, ssfile, relative_access, seqs)
PS_rna_plot_snoop_a = _RNA.PS_rna_plot_snoop_a

def gmlRNA(string: 'char *', structure: 'char *', ssfile: 'char *', option: 'char') -> "int":
    return _RNA.gmlRNA(string, structure, ssfile, option)
gmlRNA = _RNA.gmlRNA

def ssv_rna_plot(string: 'char *', structure: 'char *', ssfile: 'char *') -> "int":
    return _RNA.ssv_rna_plot(string, structure, ssfile)
ssv_rna_plot = _RNA.ssv_rna_plot

def svg_rna_plot(string: 'char *', structure: 'char *', ssfile: 'char *') -> "int":
    return _RNA.svg_rna_plot(string, structure, ssfile)
svg_rna_plot = _RNA.svg_rna_plot

def xrna_plot(string: 'char *', structure: 'char *', ssfile: 'char *') -> "int":
    return _RNA.xrna_plot(string, structure, ssfile)
xrna_plot = _RNA.xrna_plot

def PS_rna_plot(string: 'char *', structure: 'char *', file: 'char *') -> "int":
    return _RNA.PS_rna_plot(string, structure, file)
PS_rna_plot = _RNA.PS_rna_plot

def PS_rna_plot_a(string: 'char *', structure: 'char *', file: 'char *', pre: 'char *', post: 'char *') -> "int":
    return _RNA.PS_rna_plot_a(string, structure, file, pre, post)
PS_rna_plot_a = _RNA.PS_rna_plot_a

def PS_rna_plot_a_gquad(string: 'char *', structure: 'char *', ssfile: 'char *', pre: 'char *', post: 'char *') -> "int":
    return _RNA.PS_rna_plot_a_gquad(string, structure, ssfile, pre, post)
PS_rna_plot_a_gquad = _RNA.PS_rna_plot_a_gquad

def PS_color_aln(structure: 'char const *', filename: 'char const *', seqs: 'char const *[]', names: 'char const *[]') -> "int":
    return _RNA.PS_color_aln(structure, filename, seqs, names)
PS_color_aln = _RNA.PS_color_aln

def aliPS_color_aln(structure: 'char const *', filename: 'char const *', seqs: 'char const *[]', names: 'char const *[]') -> "int":
    return _RNA.aliPS_color_aln(structure, filename, seqs, names)
aliPS_color_aln = _RNA.aliPS_color_aln

def PS_color_dot_plot(string: 'char *', pi: 'cpair *', filename: 'char *') -> "int":
    return _RNA.PS_color_dot_plot(string, pi, filename)
PS_color_dot_plot = _RNA.PS_color_dot_plot

def PS_color_dot_plot_turn(seq: 'char *', pi: 'cpair *', filename: 'char *', winSize: 'int') -> "int":
    return _RNA.PS_color_dot_plot_turn(seq, pi, filename, winSize)
PS_color_dot_plot_turn = _RNA.PS_color_dot_plot_turn

def PS_dot_plot_list(seq: 'char *', filename: 'char *', pl: 'plist *', mf: 'plist *', comment: 'char *') -> "int":
    return _RNA.PS_dot_plot_list(seq, filename, pl, mf, comment)
PS_dot_plot_list = _RNA.PS_dot_plot_list

def PS_dot_plot_turn(seq: 'char *', pl: 'plist *', filename: 'char *', winSize: 'int') -> "int":
    return _RNA.PS_dot_plot_turn(seq, pl, filename, winSize)
PS_dot_plot_turn = _RNA.PS_dot_plot_turn

def PS_dot_plot(string: 'char *', file: 'char *') -> "int":
    return _RNA.PS_dot_plot(string, file)
PS_dot_plot = _RNA.PS_dot_plot

_RNA.DECOMP_PAIR_HP_swigconstant(_RNA)
DECOMP_PAIR_HP = _RNA.DECOMP_PAIR_HP

_RNA.DECOMP_PAIR_IL_swigconstant(_RNA)
DECOMP_PAIR_IL = _RNA.DECOMP_PAIR_IL

_RNA.DECOMP_PAIR_ML_swigconstant(_RNA)
DECOMP_PAIR_ML = _RNA.DECOMP_PAIR_ML

_RNA.DECOMP_ML_ML_ML_swigconstant(_RNA)
DECOMP_ML_ML_ML = _RNA.DECOMP_ML_ML_ML

_RNA.DECOMP_ML_STEM_swigconstant(_RNA)
DECOMP_ML_STEM = _RNA.DECOMP_ML_STEM

_RNA.DECOMP_ML_ML_swigconstant(_RNA)
DECOMP_ML_ML = _RNA.DECOMP_ML_ML

_RNA.DECOMP_ML_UP_swigconstant(_RNA)
DECOMP_ML_UP = _RNA.DECOMP_ML_UP

_RNA.DECOMP_ML_ML_STEM_swigconstant(_RNA)
DECOMP_ML_ML_STEM = _RNA.DECOMP_ML_ML_STEM

_RNA.DECOMP_ML_COAXIAL_swigconstant(_RNA)
DECOMP_ML_COAXIAL = _RNA.DECOMP_ML_COAXIAL

_RNA.DECOMP_EXT_EXT_swigconstant(_RNA)
DECOMP_EXT_EXT = _RNA.DECOMP_EXT_EXT

_RNA.DECOMP_EXT_UP_swigconstant(_RNA)
DECOMP_EXT_UP = _RNA.DECOMP_EXT_UP

_RNA.DECOMP_EXT_STEM_swigconstant(_RNA)
DECOMP_EXT_STEM = _RNA.DECOMP_EXT_STEM

_RNA.DECOMP_EXT_EXT_EXT_swigconstant(_RNA)
DECOMP_EXT_EXT_EXT = _RNA.DECOMP_EXT_EXT_EXT

_RNA.DECOMP_EXT_STEM_EXT_swigconstant(_RNA)
DECOMP_EXT_STEM_EXT = _RNA.DECOMP_EXT_STEM_EXT

_RNA.DECOMP_EXT_STEM_OUTSIDE_swigconstant(_RNA)
DECOMP_EXT_STEM_OUTSIDE = _RNA.DECOMP_EXT_STEM_OUTSIDE

_RNA.DECOMP_EXT_EXT_STEM_swigconstant(_RNA)
DECOMP_EXT_EXT_STEM = _RNA.DECOMP_EXT_EXT_STEM

_RNA.DECOMP_EXT_EXT_STEM1_swigconstant(_RNA)
DECOMP_EXT_EXT_STEM1 = _RNA.DECOMP_EXT_EXT_STEM1

_RNA.CONSTRAINT_DB_swigconstant(_RNA)
CONSTRAINT_DB = _RNA.CONSTRAINT_DB

_RNA.CONSTRAINT_DB_ENFORCE_BP_swigconstant(_RNA)
CONSTRAINT_DB_ENFORCE_BP = _RNA.CONSTRAINT_DB_ENFORCE_BP

_RNA.CONSTRAINT_DB_PIPE_swigconstant(_RNA)
CONSTRAINT_DB_PIPE = _RNA.CONSTRAINT_DB_PIPE

_RNA.CONSTRAINT_DB_DOT_swigconstant(_RNA)
CONSTRAINT_DB_DOT = _RNA.CONSTRAINT_DB_DOT

_RNA.CONSTRAINT_DB_X_swigconstant(_RNA)
CONSTRAINT_DB_X = _RNA.CONSTRAINT_DB_X

_RNA.CONSTRAINT_DB_ANG_BRACK_swigconstant(_RNA)
CONSTRAINT_DB_ANG_BRACK = _RNA.CONSTRAINT_DB_ANG_BRACK

_RNA.CONSTRAINT_DB_RND_BRACK_swigconstant(_RNA)
CONSTRAINT_DB_RND_BRACK = _RNA.CONSTRAINT_DB_RND_BRACK

_RNA.CONSTRAINT_DB_INTRAMOL_swigconstant(_RNA)
CONSTRAINT_DB_INTRAMOL = _RNA.CONSTRAINT_DB_INTRAMOL

_RNA.CONSTRAINT_DB_INTERMOL_swigconstant(_RNA)
CONSTRAINT_DB_INTERMOL = _RNA.CONSTRAINT_DB_INTERMOL

_RNA.CONSTRAINT_DB_GQUAD_swigconstant(_RNA)
CONSTRAINT_DB_GQUAD = _RNA.CONSTRAINT_DB_GQUAD

_RNA.CONSTRAINT_DB_DEFAULT_swigconstant(_RNA)
CONSTRAINT_DB_DEFAULT = _RNA.CONSTRAINT_DB_DEFAULT

_RNA.CONSTRAINT_CONTEXT_EXT_LOOP_swigconstant(_RNA)
CONSTRAINT_CONTEXT_EXT_LOOP = _RNA.CONSTRAINT_CONTEXT_EXT_LOOP

_RNA.CONSTRAINT_CONTEXT_HP_LOOP_swigconstant(_RNA)
CONSTRAINT_CONTEXT_HP_LOOP = _RNA.CONSTRAINT_CONTEXT_HP_LOOP

_RNA.CONSTRAINT_CONTEXT_INT_LOOP_swigconstant(_RNA)
CONSTRAINT_CONTEXT_INT_LOOP = _RNA.CONSTRAINT_CONTEXT_INT_LOOP

_RNA.CONSTRAINT_CONTEXT_INT_LOOP_ENC_swigconstant(_RNA)
CONSTRAINT_CONTEXT_INT_LOOP_ENC = _RNA.CONSTRAINT_CONTEXT_INT_LOOP_ENC

_RNA.CONSTRAINT_CONTEXT_MB_LOOP_swigconstant(_RNA)
CONSTRAINT_CONTEXT_MB_LOOP = _RNA.CONSTRAINT_CONTEXT_MB_LOOP

_RNA.CONSTRAINT_CONTEXT_MB_LOOP_ENC_swigconstant(_RNA)
CONSTRAINT_CONTEXT_MB_LOOP_ENC = _RNA.CONSTRAINT_CONTEXT_MB_LOOP_ENC

_RNA.CONSTRAINT_CONTEXT_ENFORCE_swigconstant(_RNA)
CONSTRAINT_CONTEXT_ENFORCE = _RNA.CONSTRAINT_CONTEXT_ENFORCE

_RNA.CONSTRAINT_CONTEXT_NO_REMOVE_swigconstant(_RNA)
CONSTRAINT_CONTEXT_NO_REMOVE = _RNA.CONSTRAINT_CONTEXT_NO_REMOVE

_RNA.CONSTRAINT_CONTEXT_ALL_LOOPS_swigconstant(_RNA)
CONSTRAINT_CONTEXT_ALL_LOOPS = _RNA.CONSTRAINT_CONTEXT_ALL_LOOPS

def energy_of_structure(string: 'char const *', structure: 'char const *', verbosity_level: 'int') -> "float":
    return _RNA.energy_of_structure(string, structure, verbosity_level)
energy_of_structure = _RNA.energy_of_structure

def energy_of_circ_structure(string: 'char const *', structure: 'char const *', verbosity_level: 'int') -> "float":
    return _RNA.energy_of_circ_structure(string, structure, verbosity_level)
energy_of_circ_structure = _RNA.energy_of_circ_structure

def energy_of_gquad_structure(string: 'char const *', structure: 'char const *', verbosity_level: 'int') -> "float":
    return _RNA.energy_of_gquad_structure(string, structure, verbosity_level)
energy_of_gquad_structure = _RNA.energy_of_gquad_structure

def energy_of_structure_pt(string: 'char const *', ptable: 'short *', s: 'short *', s1: 'short *', verbosity_level: 'int') -> "int":
    return _RNA.energy_of_structure_pt(string, ptable, s, s1, verbosity_level)
energy_of_structure_pt = _RNA.energy_of_structure_pt

def energy_of_move(string: 'char const *', structure: 'char const *', m1: 'int', m2: 'int') -> "float":
    return _RNA.energy_of_move(string, structure, m1, m2)
energy_of_move = _RNA.energy_of_move

def energy_of_move_pt(pt: 'short *', s: 'short *', s1: 'short *', m1: 'int', m2: 'int') -> "int":
    return _RNA.energy_of_move_pt(pt, s, s1, m1, m2)
energy_of_move_pt = _RNA.energy_of_move_pt

def loop_energy(ptable: 'short *', s: 'short *', s1: 'short *', i: 'int') -> "int":
    return _RNA.loop_energy(ptable, s, s1, i)
loop_energy = _RNA.loop_energy

def energy_of_struct(string: 'char const *', structure: 'char const *') -> "float":
    return _RNA.energy_of_struct(string, structure)
energy_of_struct = _RNA.energy_of_struct

def energy_of_struct_pt(string: 'char const *', ptable: 'short *', s: 'short *', s1: 'short *') -> "int":
    return _RNA.energy_of_struct_pt(string, ptable, s, s1)
energy_of_struct_pt = _RNA.energy_of_struct_pt

def energy_of_circ_struct(string: 'char const *', structure: 'char const *') -> "float":
    return _RNA.energy_of_circ_struct(string, structure)
energy_of_circ_struct = _RNA.energy_of_circ_struct

def fold(*args) -> "float *":
    return _RNA.fold(*args)
fold = _RNA.fold

def circfold(*args) -> "float *":
    return _RNA.circfold(*args)
circfold = _RNA.circfold

def free_arrays() -> "void":
    return _RNA.free_arrays()
free_arrays = _RNA.free_arrays

def update_fold_params() -> "void":
    return _RNA.update_fold_params()
update_fold_params = _RNA.update_fold_params

def cofold(*args) -> "float *":
    return _RNA.cofold(*args)
cofold = _RNA.cofold

def free_co_arrays() -> "void":
    return _RNA.free_co_arrays()
free_co_arrays = _RNA.free_co_arrays

def update_cofold_params() -> "void":
    return _RNA.update_cofold_params()
update_cofold_params = _RNA.update_cofold_params

def initialize_cofold(length: 'int') -> "void":
    return _RNA.initialize_cofold(length)
initialize_cofold = _RNA.initialize_cofold

def alifold(*args) -> "float *":
    return _RNA.alifold(*args)
alifold = _RNA.alifold

def circalifold(strings: 'char const **', structure: 'char *') -> "float":
    return _RNA.circalifold(strings, structure)
circalifold = _RNA.circalifold

def free_alifold_arrays() -> "void":
    return _RNA.free_alifold_arrays()
free_alifold_arrays = _RNA.free_alifold_arrays

def pf_fold(*args) -> "float *":
    return _RNA.pf_fold(*args)
pf_fold = _RNA.pf_fold

def pf_circ_fold(*args) -> "float *":
    return _RNA.pf_circ_fold(*args)
pf_circ_fold = _RNA.pf_circ_fold

def pbacktrack(sequence: 'char *') -> "char *":
    return _RNA.pbacktrack(sequence)
pbacktrack = _RNA.pbacktrack

def pf_float_precision() -> "int":
    return _RNA.pf_float_precision()
pf_float_precision = _RNA.pf_float_precision

def pbacktrack5(sequence: 'char *', length: 'int') -> "char *":
    return _RNA.pbacktrack5(sequence, length)
pbacktrack5 = _RNA.pbacktrack5

def pbacktrack_circ(sequence: 'char *') -> "char *":
    return _RNA.pbacktrack_circ(sequence)
pbacktrack_circ = _RNA.pbacktrack_circ

def free_pf_arrays() -> "void":
    return _RNA.free_pf_arrays()
free_pf_arrays = _RNA.free_pf_arrays

def update_pf_params(length: 'int') -> "void":
    return _RNA.update_pf_params(length)
update_pf_params = _RNA.update_pf_params

def mean_bp_distance(length: 'int') -> "double":
    return _RNA.mean_bp_distance(length)
mean_bp_distance = _RNA.mean_bp_distance

def init_pf_fold(length: 'int') -> "void":
    return _RNA.init_pf_fold(length)
init_pf_fold = _RNA.init_pf_fold

def centroid(length: 'int', dist: 'double *') -> "char *":
    return _RNA.centroid(length, dist)
centroid = _RNA.centroid

def co_pf_fold(*args) -> "float *, float *, float *, float *":
    return _RNA.co_pf_fold(*args)
co_pf_fold = _RNA.co_pf_fold

def get_concentrations(FcAB: 'double', FcAA: 'double', FcBB: 'double', FEA: 'double', FEB: 'double', A0: 'double', BO: 'double') -> "double *, double *, double *, double *, double *":
    return _RNA.get_concentrations(FcAB, FcAA, FcBB, FEA, FEB, A0, BO)
get_concentrations = _RNA.get_concentrations

def free_co_pf_arrays() -> "void":
    return _RNA.free_co_pf_arrays()
free_co_pf_arrays = _RNA.free_co_pf_arrays

def update_co_pf_params(length: 'int') -> "void":
    return _RNA.update_co_pf_params(length)
update_co_pf_params = _RNA.update_co_pf_params

def get_pr(i: 'int', j: 'int') -> "double":
    return _RNA.get_pr(i, j)
get_pr = _RNA.get_pr
class SOLUTION(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    energy = _swig_property(_RNA.SOLUTION_energy_get, _RNA.SOLUTION_energy_set)
    structure = _swig_property(_RNA.SOLUTION_structure_get, _RNA.SOLUTION_structure_set)

    def get(self, i: 'int') -> "SOLUTION *":
        return _RNA.SOLUTION_get(self, i)

    def size(self) -> "int":
        return _RNA.SOLUTION_size(self)
    __swig_destroy__ = _RNA.delete_SOLUTION
    __del__ = lambda self: None

    def __init__(self):
        this = _RNA.new_SOLUTION()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
SOLUTION_swigregister = _RNA.SOLUTION_swigregister
SOLUTION_swigregister(SOLUTION)

class subopt_solution(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    energy = _swig_property(_RNA.subopt_solution_energy_get, _RNA.subopt_solution_energy_set)
    structure = _swig_property(_RNA.subopt_solution_structure_get, _RNA.subopt_solution_structure_set)
    __swig_destroy__ = _RNA.delete_subopt_solution
    __del__ = lambda self: None

    def __init__(self):
        this = _RNA.new_subopt_solution()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
subopt_solution_swigregister = _RNA.subopt_solution_swigregister
subopt_solution_swigregister(subopt_solution)

class SuboptVector(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def iterator(self) -> "swig::SwigPyIterator *":
        return _RNA.SuboptVector_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        return _RNA.SuboptVector___nonzero__(self)

    def __bool__(self) -> "bool":
        return _RNA.SuboptVector___bool__(self)

    def __len__(self) -> "std::vector< subopt_solution >::size_type":
        return _RNA.SuboptVector___len__(self)

    def __getslice__(self, i: 'std::vector< subopt_solution >::difference_type', j: 'std::vector< subopt_solution >::difference_type') -> "std::vector< subopt_solution,std::allocator< subopt_solution > > *":
        return _RNA.SuboptVector___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        return _RNA.SuboptVector___setslice__(self, *args)

    def __delslice__(self, i: 'std::vector< subopt_solution >::difference_type', j: 'std::vector< subopt_solution >::difference_type') -> "void":
        return _RNA.SuboptVector___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        return _RNA.SuboptVector___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< subopt_solution >::value_type const &":
        return _RNA.SuboptVector___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        return _RNA.SuboptVector___setitem__(self, *args)

    def pop(self) -> "std::vector< subopt_solution >::value_type":
        return _RNA.SuboptVector_pop(self)

    def append(self, x: 'subopt_solution') -> "void":
        return _RNA.SuboptVector_append(self, x)

    def empty(self) -> "bool":
        return _RNA.SuboptVector_empty(self)

    def size(self) -> "std::vector< subopt_solution >::size_type":
        return _RNA.SuboptVector_size(self)

    def swap(self, v: 'SuboptVector') -> "void":
        return _RNA.SuboptVector_swap(self, v)

    def begin(self) -> "std::vector< subopt_solution >::iterator":
        return _RNA.SuboptVector_begin(self)

    def end(self) -> "std::vector< subopt_solution >::iterator":
        return _RNA.SuboptVector_end(self)

    def rbegin(self) -> "std::vector< subopt_solution >::reverse_iterator":
        return _RNA.SuboptVector_rbegin(self)

    def rend(self) -> "std::vector< subopt_solution >::reverse_iterator":
        return _RNA.SuboptVector_rend(self)

    def clear(self) -> "void":
        return _RNA.SuboptVector_clear(self)

    def get_allocator(self) -> "std::vector< subopt_solution >::allocator_type":
        return _RNA.SuboptVector_get_allocator(self)

    def pop_back(self) -> "void":
        return _RNA.SuboptVector_pop_back(self)

    def erase(self, *args) -> "std::vector< subopt_solution >::iterator":
        return _RNA.SuboptVector_erase(self, *args)

    def __init__(self, *args):
        this = _RNA.new_SuboptVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def push_back(self, x: 'subopt_solution') -> "void":
        return _RNA.SuboptVector_push_back(self, x)

    def front(self) -> "std::vector< subopt_solution >::value_type const &":
        return _RNA.SuboptVector_front(self)

    def back(self) -> "std::vector< subopt_solution >::value_type const &":
        return _RNA.SuboptVector_back(self)

    def assign(self, n: 'std::vector< subopt_solution >::size_type', x: 'subopt_solution') -> "void":
        return _RNA.SuboptVector_assign(self, n, x)

    def resize(self, *args) -> "void":
        return _RNA.SuboptVector_resize(self, *args)

    def insert(self, *args) -> "void":
        return _RNA.SuboptVector_insert(self, *args)

    def reserve(self, n: 'std::vector< subopt_solution >::size_type') -> "void":
        return _RNA.SuboptVector_reserve(self, n)

    def capacity(self) -> "std::vector< subopt_solution >::size_type":
        return _RNA.SuboptVector_capacity(self)
    __swig_destroy__ = _RNA.delete_SuboptVector
    __del__ = lambda self: None
SuboptVector_swigregister = _RNA.SuboptVector_swigregister
SuboptVector_swigregister(SuboptVector)


def subopt(*args) -> "SOLUTION *":
    return _RNA.subopt(*args)
subopt = _RNA.subopt

_RNA.MAXDOS_swigconstant(_RNA)
MAXDOS = _RNA.MAXDOS

def inverse_fold(start: 'char *', target: 'char const *') -> "float *":
    return _RNA.inverse_fold(start, target)
inverse_fold = _RNA.inverse_fold

def inverse_pf_fold(start: 'char *', target: 'char const *') -> "float *":
    return _RNA.inverse_pf_fold(start, target)
inverse_pf_fold = _RNA.inverse_pf_fold

def b2HIT(structure: 'char *') -> "char *":
    return _RNA.b2HIT(structure)
b2HIT = _RNA.b2HIT

def b2C(structure: 'char *') -> "char *":
    return _RNA.b2C(structure)
b2C = _RNA.b2C

def b2Shapiro(structure: 'char *') -> "char *":
    return _RNA.b2Shapiro(structure)
b2Shapiro = _RNA.b2Shapiro

def add_root(arg1: 'char *') -> "char *":
    return _RNA.add_root(arg1)
add_root = _RNA.add_root

def expand_Shapiro(coarse: 'char *') -> "char *":
    return _RNA.expand_Shapiro(coarse)
expand_Shapiro = _RNA.expand_Shapiro

def expand_Full(structure: 'char *') -> "char *":
    return _RNA.expand_Full(structure)
expand_Full = _RNA.expand_Full

def unexpand_Full(ffull: 'char *') -> "char *":
    return _RNA.unexpand_Full(ffull)
unexpand_Full = _RNA.unexpand_Full

def unweight(wcoarse: 'char *') -> "char *":
    return _RNA.unweight(wcoarse)
unweight = _RNA.unweight

def unexpand_aligned_F(align: 'char *[2]') -> "void":
    return _RNA.unexpand_aligned_F(align)
unexpand_aligned_F = _RNA.unexpand_aligned_F

def parse_structure(structure: 'char *') -> "void":
    return _RNA.parse_structure(structure)
parse_structure = _RNA.parse_structure

def make_tree(struc: 'char *') -> "Tree *":
    return _RNA.make_tree(struc)
make_tree = _RNA.make_tree

def tree_edit_distance(T1: 'Tree *', T2: 'Tree *') -> "float":
    return _RNA.tree_edit_distance(T1, T2)
tree_edit_distance = _RNA.tree_edit_distance

def print_tree(t: 'Tree *') -> "void":
    return _RNA.print_tree(t)
print_tree = _RNA.print_tree

def free_tree(t: 'Tree *') -> "void":
    return _RNA.free_tree(t)
free_tree = _RNA.free_tree

def Make_swString(string: 'char *') -> "swString *":
    return _RNA.Make_swString(string)
Make_swString = _RNA.Make_swString

def string_edit_distance(T1: 'swString *', T2: 'swString *') -> "float":
    return _RNA.string_edit_distance(T1, T2)
string_edit_distance = _RNA.string_edit_distance

def profile_edit_distance(T1: 'float const *', T2: 'float const *') -> "float":
    return _RNA.profile_edit_distance(T1, T2)
profile_edit_distance = _RNA.profile_edit_distance

def Make_bp_profile_bppm(bppm: 'FLT_OR_DBL *', length: 'int') -> "float *":
    return _RNA.Make_bp_profile_bppm(bppm, length)
Make_bp_profile_bppm = _RNA.Make_bp_profile_bppm

def print_bppm(T: 'float const *') -> "void":
    return _RNA.print_bppm(T)
print_bppm = _RNA.print_bppm

def free_profile(T: 'float *') -> "void":
    return _RNA.free_profile(T)
free_profile = _RNA.free_profile

def Make_bp_profile(length: 'int') -> "float *":
    return _RNA.Make_bp_profile(length)
Make_bp_profile = _RNA.Make_bp_profile

def deref_any(ptr: 'void **', index: 'int') -> "void *":
    return _RNA.deref_any(ptr, index)
deref_any = _RNA.deref_any

def get_aligned_line(arg1: 'int') -> "char *":
    return _RNA.get_aligned_line(arg1)
get_aligned_line = _RNA.get_aligned_line

def file_SHAPE_read(file_name: 'char const *', length: 'int', default_value: 'double') -> "std::string *, int *":
    return _RNA.file_SHAPE_read(file_name, length, default_value)
file_SHAPE_read = _RNA.file_SHAPE_read

def extract_record_rest_structure(lines: 'char const **', length: 'unsigned int', option: 'unsigned int') -> "char *":
    return _RNA.extract_record_rest_structure(lines, length, option)
extract_record_rest_structure = _RNA.extract_record_rest_structure

def read_record(header: 'char **', sequence: 'char **', rest: 'char ***', options: 'unsigned int') -> "unsigned int":
    return _RNA.read_record(header, sequence, rest, options)
read_record = _RNA.read_record

def get_multi_input_line(string: 'char **', options: 'unsigned int') -> "unsigned int":
    return _RNA.get_multi_input_line(string, options)
get_multi_input_line = _RNA.get_multi_input_line

def duplexfold(s1: 'char const *', s2: 'char const *') -> "duplexT":
    return _RNA.duplexfold(s1, s2)
duplexfold = _RNA.duplexfold

def duplex_subopt(s1: 'char const *', s2: 'char const *', delta: 'int', w: 'int') -> "duplexT *":
    return _RNA.duplex_subopt(s1, s2, delta, w)
duplex_subopt = _RNA.duplex_subopt

def aliduplexfold(s1: 'char const *[]', s2: 'char const *[]') -> "duplexT":
    return _RNA.aliduplexfold(s1, s2)
aliduplexfold = _RNA.aliduplexfold

def aliduplex_subopt(s1: 'char const *[]', s2: 'char const *[]', delta: 'int', w: 'int') -> "duplexT *":
    return _RNA.aliduplex_subopt(s1, s2, delta, w)
aliduplex_subopt = _RNA.aliduplex_subopt

def aliLfold(strings: 'char const **', structure: 'char *', maxdist: 'int') -> "float":
    return _RNA.aliLfold(strings, structure, maxdist)
aliLfold = _RNA.aliLfold

def Lfold(string: 'char const *', structure: 'char *', maxdist: 'int') -> "float":
    return _RNA.Lfold(string, structure, maxdist)
Lfold = _RNA.Lfold

def Lfoldz(string: 'char const *', structure: 'char *', maxdist: 'int', zsc: 'int', min_z: 'double') -> "float":
    return _RNA.Lfoldz(string, structure, maxdist, zsc, min_z)
Lfoldz = _RNA.Lfoldz
class path(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    en = _swig_property(_RNA.path_en_get, _RNA.path_en_set)
    s = _swig_property(_RNA.path_s_get, _RNA.path_s_set)

    def get(self, i: 'int') -> "vrna_path_t *":
        return _RNA.path_get(self, i)

    def size(self) -> "int":
        return _RNA.path_size(self)
    __swig_destroy__ = _RNA.delete_path
    __del__ = lambda self: None

    def __init__(self):
        this = _RNA.new_path()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
path_swigregister = _RNA.path_swigregister
path_swigregister(path)


def find_saddle(seq: 'char const *', struc1: 'char const *', struc2: 'char const *', max: 'int') -> "int":
    return _RNA.find_saddle(seq, struc1, struc2, max)
find_saddle = _RNA.find_saddle

def free_path(path: 'path') -> "void":
    return _RNA.free_path(path)
free_path = _RNA.free_path

def get_path(seq: 'char const *', s1: 'char const *', s2: 'char const *', maxkeep: 'int') -> "vrna_path_t *":
    return _RNA.get_path(seq, s1, s2, maxkeep)
get_path = _RNA.get_path


