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


import sys
if sys.platform.find("linux") != -1:
    dlflags = sys.getdlopenflags()
    import ctypes
    sys.setdlopenflags(dlflags | ctypes.RTLD_GLOBAL)



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _openbabel
else:
    import _openbabel

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _openbabel.SWIG_PyInstanceMethod_New
_swig_new_static_method = _openbabel.SWIG_PyStaticMethod_New

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


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)



if sys.platform.find("linux") != -1:
    sys.setdlopenflags(dlflags)

class SwigPyIterator(object):
    thisown = 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__ = _openbabel.delete_SwigPyIterator
    value = _swig_new_instance_method(_openbabel.SwigPyIterator_value)
    incr = _swig_new_instance_method(_openbabel.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_openbabel.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_openbabel.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_openbabel.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_openbabel.SwigPyIterator_copy)
    next = _swig_new_instance_method(_openbabel.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_openbabel.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_openbabel.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_openbabel.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_openbabel.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_openbabel.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_openbabel.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_openbabel.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_openbabel.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _openbabel:
_openbabel.SwigPyIterator_swigregister(SwigPyIterator)
class vectorInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorInt_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorInt___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorInt___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorInt___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorInt___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorInt___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorInt___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorInt___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorInt___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorInt___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorInt_clear)

    def __init__(self, *args):
        _openbabel.vectorInt_swiginit(self, _openbabel.new_vectorInt(*args))
    __swig_destroy__ = _openbabel.delete_vectorInt

# Register vectorInt in _openbabel:
_openbabel.vectorInt_swigregister(vectorInt)
class vectorUnsignedInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorUnsignedInt_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorUnsignedInt___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorUnsignedInt_clear)

    def __init__(self, *args):
        _openbabel.vectorUnsignedInt_swiginit(self, _openbabel.new_vectorUnsignedInt(*args))
    __swig_destroy__ = _openbabel.delete_vectorUnsignedInt

# Register vectorUnsignedInt in _openbabel:
_openbabel.vectorUnsignedInt_swigregister(vectorUnsignedInt)
class vectorvInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorvInt_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorvInt___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorvInt___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorvInt___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorvInt___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorvInt___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorvInt___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorvInt___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorvInt___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorvInt___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorvInt_clear)

    def __init__(self, *args):
        _openbabel.vectorvInt_swiginit(self, _openbabel.new_vectorvInt(*args))
    __swig_destroy__ = _openbabel.delete_vectorvInt

# Register vectorvInt in _openbabel:
_openbabel.vectorvInt_swigregister(vectorvInt)
class vectorDouble(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorDouble_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorDouble___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorDouble___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorDouble___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorDouble___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorDouble___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorDouble___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorDouble___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorDouble___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorDouble___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorDouble_clear)

    def __init__(self, *args):
        _openbabel.vectorDouble_swiginit(self, _openbabel.new_vectorDouble(*args))
    __swig_destroy__ = _openbabel.delete_vectorDouble

# Register vectorDouble in _openbabel:
_openbabel.vectorDouble_swigregister(vectorDouble)
class vectorULong(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorULong_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorULong___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorULong___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorULong___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorULong___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorULong___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorULong___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorULong___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorULong___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorULong___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorULong_clear)

    def __init__(self, *args):
        _openbabel.vectorULong_swiginit(self, _openbabel.new_vectorULong(*args))
    __swig_destroy__ = _openbabel.delete_vectorULong

# Register vectorULong in _openbabel:
_openbabel.vectorULong_swigregister(vectorULong)
class vectorString(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorString_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorString___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorString___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorString___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorString___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorString___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorString___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorString___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorString___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorString___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorString_clear)

    def __init__(self, *args):
        _openbabel.vectorString_swiginit(self, _openbabel.new_vectorString(*args))
    __swig_destroy__ = _openbabel.delete_vectorString

# Register vectorString in _openbabel:
_openbabel.vectorString_swigregister(vectorString)
class vectorVector3(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorVector3_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorVector3___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorVector3___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorVector3___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorVector3___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorVector3___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorVector3___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorVector3___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorVector3___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorVector3___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorVector3_clear)

    def __init__(self, *args):
        _openbabel.vectorVector3_swiginit(self, _openbabel.new_vectorVector3(*args))
    __swig_destroy__ = _openbabel.delete_vectorVector3

# Register vectorVector3 in _openbabel:
_openbabel.vectorVector3_swigregister(vectorVector3)
class vectorvVector3(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorvVector3_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorvVector3___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorvVector3___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorvVector3___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorvVector3___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorvVector3___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorvVector3___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorvVector3___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorvVector3___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorvVector3___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorvVector3_clear)

    def __init__(self, *args):
        _openbabel.vectorvVector3_swiginit(self, _openbabel.new_vectorvVector3(*args))
    __swig_destroy__ = _openbabel.delete_vectorvVector3

# Register vectorvVector3 in _openbabel:
_openbabel.vectorvVector3_swigregister(vectorvVector3)
class vectorOBMol(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorOBMol_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorOBMol___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorOBMol___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorOBMol___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorOBMol___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorOBMol___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorOBMol___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorOBMol___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorOBMol___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorOBMol___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorOBMol_clear)

    def __init__(self, *args):
        _openbabel.vectorOBMol_swiginit(self, _openbabel.new_vectorOBMol(*args))
    __swig_destroy__ = _openbabel.delete_vectorOBMol

# Register vectorOBMol in _openbabel:
_openbabel.vectorOBMol_swigregister(vectorOBMol)
class vectorOBBond(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorOBBond_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorOBBond___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorOBBond___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorOBBond___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorOBBond___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorOBBond___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorOBBond___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorOBBond___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorOBBond___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorOBBond___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorOBBond_clear)

    def __init__(self, *args):
        _openbabel.vectorOBBond_swiginit(self, _openbabel.new_vectorOBBond(*args))
    __swig_destroy__ = _openbabel.delete_vectorOBBond

# Register vectorOBBond in _openbabel:
_openbabel.vectorOBBond_swigregister(vectorOBBond)
class vectorOBResidue(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorOBResidue_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorOBResidue___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorOBResidue___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorOBResidue___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorOBResidue___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorOBResidue___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorOBResidue___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorOBResidue___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorOBResidue___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorOBResidue___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorOBResidue_clear)

    def __init__(self, *args):
        _openbabel.vectorOBResidue_swiginit(self, _openbabel.new_vectorOBResidue(*args))
    __swig_destroy__ = _openbabel.delete_vectorOBResidue

# Register vectorOBResidue in _openbabel:
_openbabel.vectorOBResidue_swigregister(vectorOBResidue)
class vectorOBRing(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorOBRing_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorOBRing___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorOBRing___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorOBRing___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorOBRing___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorOBRing___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorOBRing___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorOBRing___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorOBRing___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorOBRing___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorOBRing_clear)

    def __init__(self, *args):
        _openbabel.vectorOBRing_swiginit(self, _openbabel.new_vectorOBRing(*args))
    __swig_destroy__ = _openbabel.delete_vectorOBRing

# Register vectorOBRing in _openbabel:
_openbabel.vectorOBRing_swigregister(vectorOBRing)
class vectorpOBRing(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorpOBRing_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorpOBRing___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorpOBRing___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorpOBRing___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorpOBRing___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorpOBRing___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorpOBRing___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorpOBRing___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorpOBRing___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorpOBRing___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorpOBRing_clear)

    def __init__(self, *args):
        _openbabel.vectorpOBRing_swiginit(self, _openbabel.new_vectorpOBRing(*args))
    __swig_destroy__ = _openbabel.delete_vectorpOBRing

# Register vectorpOBRing in _openbabel:
_openbabel.vectorpOBRing_swigregister(vectorpOBRing)
class vectorpOBGenericData(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorpOBGenericData_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorpOBGenericData___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorpOBGenericData_clear)

    def __init__(self, *args):
        _openbabel.vectorpOBGenericData_swiginit(self, _openbabel.new_vectorpOBGenericData(*args))
    __swig_destroy__ = _openbabel.delete_vectorpOBGenericData

# Register vectorpOBGenericData in _openbabel:
_openbabel.vectorpOBGenericData_swigregister(vectorpOBGenericData)
class vectorpOBInternalCoord(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord___setitem__)
    clear = _swig_new_instance_method(_openbabel.vectorpOBInternalCoord_clear)

    def __init__(self, *args):
        _openbabel.vectorpOBInternalCoord_swiginit(self, _openbabel.new_vectorpOBInternalCoord(*args))
    __swig_destroy__ = _openbabel.delete_vectorpOBInternalCoord

# Register vectorpOBInternalCoord in _openbabel:
_openbabel.vectorpOBInternalCoord_swigregister(vectorpOBInternalCoord)
class pairUIntUInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.pairUIntUInt_swiginit(self, _openbabel.new_pairUIntUInt(*args))
    first = property(_openbabel.pairUIntUInt_first_get, _openbabel.pairUIntUInt_first_set)
    second = property(_openbabel.pairUIntUInt_second_get, _openbabel.pairUIntUInt_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__ = _openbabel.delete_pairUIntUInt

# Register pairUIntUInt in _openbabel:
_openbabel.pairUIntUInt_swigregister(pairUIntUInt)
class vpairUIntUInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vpairUIntUInt_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vpairUIntUInt___setitem__)
    clear = _swig_new_instance_method(_openbabel.vpairUIntUInt_clear)

    def __init__(self, *args):
        _openbabel.vpairUIntUInt_swiginit(self, _openbabel.new_vpairUIntUInt(*args))
    __swig_destroy__ = _openbabel.delete_vpairUIntUInt

# Register vpairUIntUInt in _openbabel:
_openbabel.vpairUIntUInt_swigregister(vpairUIntUInt)
class vvpairUIntUInt(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    iterator = _swig_new_instance_method(_openbabel.vvpairUIntUInt_iterator)
    def __iter__(self):
        return self.iterator()
    __nonzero__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___nonzero__)
    __bool__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___bool__)
    __len__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___len__)
    __getslice__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___getslice__)
    __setslice__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___setslice__)
    __delslice__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___delslice__)
    __delitem__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___delitem__)
    __getitem__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.vvpairUIntUInt___setitem__)
    pop = _swig_new_instance_method(_openbabel.vvpairUIntUInt_pop)
    append = _swig_new_instance_method(_openbabel.vvpairUIntUInt_append)
    empty = _swig_new_instance_method(_openbabel.vvpairUIntUInt_empty)
    size = _swig_new_instance_method(_openbabel.vvpairUIntUInt_size)
    swap = _swig_new_instance_method(_openbabel.vvpairUIntUInt_swap)
    begin = _swig_new_instance_method(_openbabel.vvpairUIntUInt_begin)
    end = _swig_new_instance_method(_openbabel.vvpairUIntUInt_end)
    rbegin = _swig_new_instance_method(_openbabel.vvpairUIntUInt_rbegin)
    rend = _swig_new_instance_method(_openbabel.vvpairUIntUInt_rend)
    clear = _swig_new_instance_method(_openbabel.vvpairUIntUInt_clear)
    get_allocator = _swig_new_instance_method(_openbabel.vvpairUIntUInt_get_allocator)
    pop_back = _swig_new_instance_method(_openbabel.vvpairUIntUInt_pop_back)
    erase = _swig_new_instance_method(_openbabel.vvpairUIntUInt_erase)

    def __init__(self, *args):
        _openbabel.vvpairUIntUInt_swiginit(self, _openbabel.new_vvpairUIntUInt(*args))
    push_back = _swig_new_instance_method(_openbabel.vvpairUIntUInt_push_back)
    front = _swig_new_instance_method(_openbabel.vvpairUIntUInt_front)
    back = _swig_new_instance_method(_openbabel.vvpairUIntUInt_back)
    assign = _swig_new_instance_method(_openbabel.vvpairUIntUInt_assign)
    resize = _swig_new_instance_method(_openbabel.vvpairUIntUInt_resize)
    insert = _swig_new_instance_method(_openbabel.vvpairUIntUInt_insert)
    reserve = _swig_new_instance_method(_openbabel.vvpairUIntUInt_reserve)
    capacity = _swig_new_instance_method(_openbabel.vvpairUIntUInt_capacity)
    __swig_destroy__ = _openbabel.delete_vvpairUIntUInt

# Register vvpairUIntUInt in _openbabel:
_openbabel.vvpairUIntUInt_swigregister(vvpairUIntUInt)
toAliasData = _openbabel.toAliasData
toAngleData = _openbabel.toAngleData
toCommentData = _openbabel.toCommentData
toConformerData = _openbabel.toConformerData
toExternalBondData = _openbabel.toExternalBondData
toGridData = _openbabel.toGridData
toMatrixData = _openbabel.toMatrixData
toNasaThermoData = _openbabel.toNasaThermoData
toPairData = _openbabel.toPairData
toPairInteger = _openbabel.toPairInteger
toPairFloatingPoint = _openbabel.toPairFloatingPoint
toRateData = _openbabel.toRateData
toRotamerList = _openbabel.toRotamerList
toRotationData = _openbabel.toRotationData
toSerialNums = _openbabel.toSerialNums
toSetData = _openbabel.toSetData
toSymmetryData = _openbabel.toSymmetryData
toTorsionData = _openbabel.toTorsionData
toUnitCell = _openbabel.toUnitCell
toVectorData = _openbabel.toVectorData
toVibrationData = _openbabel.toVibrationData
toVirtualBond = _openbabel.toVirtualBond
toStereoBase = _openbabel.toStereoBase
toTetrahedralStereo = _openbabel.toTetrahedralStereo
toCisTransStereo = _openbabel.toCisTransStereo
toSquarePlanarStereo = _openbabel.toSquarePlanarStereo
class OBGlobalDataBase(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBGlobalDataBase_swiginit(self, _openbabel.new_OBGlobalDataBase())
    __swig_destroy__ = _openbabel.delete_OBGlobalDataBase
    Init = _swig_new_instance_method(_openbabel.OBGlobalDataBase_Init)
    GetSize = _swig_new_instance_method(_openbabel.OBGlobalDataBase_GetSize)
    SetReadDirectory = _swig_new_instance_method(_openbabel.OBGlobalDataBase_SetReadDirectory)
    SetEnvironmentVariable = _swig_new_instance_method(_openbabel.OBGlobalDataBase_SetEnvironmentVariable)
    ParseLine = _swig_new_instance_method(_openbabel.OBGlobalDataBase_ParseLine)

# Register OBGlobalDataBase in _openbabel:
_openbabel.OBGlobalDataBase_swigregister(OBGlobalDataBase)
class OBAtomHOF(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, element, charge, method, desc, T, value, multiplicity, unit):
        _openbabel.OBAtomHOF_swiginit(self, _openbabel.new_OBAtomHOF(element, charge, method, desc, T, value, multiplicity, unit))
    __swig_destroy__ = _openbabel.delete_OBAtomHOF
    Element = _swig_new_instance_method(_openbabel.OBAtomHOF_Element)
    Charge = _swig_new_instance_method(_openbabel.OBAtomHOF_Charge)
    Method = _swig_new_instance_method(_openbabel.OBAtomHOF_Method)
    Desc = _swig_new_instance_method(_openbabel.OBAtomHOF_Desc)
    T = _swig_new_instance_method(_openbabel.OBAtomHOF_T)
    Value = _swig_new_instance_method(_openbabel.OBAtomHOF_Value)
    Multiplicity = _swig_new_instance_method(_openbabel.OBAtomHOF_Multiplicity)
    Unit = _swig_new_instance_method(_openbabel.OBAtomHOF_Unit)

# Register OBAtomHOF in _openbabel:
_openbabel.OBAtomHOF_swigregister(OBAtomHOF)
class OBAtomicHeatOfFormationTable(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBAtomicHeatOfFormationTable_swiginit(self, _openbabel.new_OBAtomicHeatOfFormationTable())
    __swig_destroy__ = _openbabel.delete_OBAtomicHeatOfFormationTable
    GetHeatOfFormation = _swig_new_instance_method(_openbabel.OBAtomicHeatOfFormationTable_GetHeatOfFormation)

# Register OBAtomicHeatOfFormationTable in _openbabel:
_openbabel.OBAtomicHeatOfFormationTable_swigregister(OBAtomicHeatOfFormationTable)
class OBTypeTable(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBTypeTable_swiginit(self, _openbabel.new_OBTypeTable())
    __swig_destroy__ = _openbabel.delete_OBTypeTable
    SetFromType = _swig_new_instance_method(_openbabel.OBTypeTable_SetFromType)
    SetToType = _swig_new_instance_method(_openbabel.OBTypeTable_SetToType)
    Translate = _swig_new_instance_method(_openbabel.OBTypeTable_Translate)
    GetFromType = _swig_new_instance_method(_openbabel.OBTypeTable_GetFromType)
    GetToType = _swig_new_instance_method(_openbabel.OBTypeTable_GetToType)

# Register OBTypeTable in _openbabel:
_openbabel.OBTypeTable_swigregister(OBTypeTable)
class OBResidueData(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBResidueData_swiginit(self, _openbabel.new_OBResidueData())
    SetResName = _swig_new_instance_method(_openbabel.OBResidueData_SetResName)
    LookupBO = _swig_new_instance_method(_openbabel.OBResidueData_LookupBO)
    LookupType = _swig_new_instance_method(_openbabel.OBResidueData_LookupType)
    AssignBonds = _swig_new_instance_method(_openbabel.OBResidueData_AssignBonds)
    __swig_destroy__ = _openbabel.delete_OBResidueData

# Register OBResidueData in _openbabel:
_openbabel.OBResidueData_swigregister(OBResidueData)
cvar = _openbabel.cvar

M_PI = _openbabel.M_PI
class OBStopwatch(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Start = _swig_new_instance_method(_openbabel.OBStopwatch_Start)
    Lap = _swig_new_instance_method(_openbabel.OBStopwatch_Lap)
    Elapsed = _swig_new_instance_method(_openbabel.OBStopwatch_Elapsed)

    def __init__(self):
        _openbabel.OBStopwatch_swiginit(self, _openbabel.new_OBStopwatch())
    __swig_destroy__ = _openbabel.delete_OBStopwatch

# Register OBStopwatch in _openbabel:
_openbabel.OBStopwatch_swigregister(OBStopwatch)
class OBSqrtTbl(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBSqrtTbl_swiginit(self, _openbabel.new_OBSqrtTbl(*args))
    __swig_destroy__ = _openbabel.delete_OBSqrtTbl
    Sqrt = _swig_new_instance_method(_openbabel.OBSqrtTbl_Sqrt)
    Init = _swig_new_instance_method(_openbabel.OBSqrtTbl_Init)

# Register OBSqrtTbl in _openbabel:
_openbabel.OBSqrtTbl_swigregister(OBSqrtTbl)
rotate_coords = _openbabel.rotate_coords
calc_rms = _openbabel.calc_rms
RAD_TO_DEG = _openbabel.RAD_TO_DEG
DEG_TO_RAD = _openbabel.DEG_TO_RAD
class vector3(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.vector3_swiginit(self, _openbabel.new_vector3(*args))
    __swig_destroy__ = _openbabel.delete_vector3
    begin = _swig_new_instance_method(_openbabel.vector3_begin)
    end = _swig_new_instance_method(_openbabel.vector3_end)
    Set = _swig_new_instance_method(_openbabel.vector3_Set)
    SetX = _swig_new_instance_method(_openbabel.vector3_SetX)
    SetY = _swig_new_instance_method(_openbabel.vector3_SetY)
    SetZ = _swig_new_instance_method(_openbabel.vector3_SetZ)
    GetX = _swig_new_instance_method(_openbabel.vector3_GetX)
    GetY = _swig_new_instance_method(_openbabel.vector3_GetY)
    GetZ = _swig_new_instance_method(_openbabel.vector3_GetZ)
    Get = _swig_new_instance_method(_openbabel.vector3_Get)
    AsArray = _swig_new_instance_method(_openbabel.vector3_AsArray)
    __iadd__ = _swig_new_instance_method(_openbabel.vector3___iadd__)
    __isub__ = _swig_new_instance_method(_openbabel.vector3___isub__)

    def __itruediv__(self, *args):
        return _openbabel.vector3___itruediv__(self, *args)
    __idiv__ = __itruediv__


    __imul__ = _swig_new_instance_method(_openbabel.vector3___imul__)
    randomUnitVector = _swig_new_instance_method(_openbabel.vector3_randomUnitVector)
    normalize = _swig_new_instance_method(_openbabel.vector3_normalize)
    CanBeNormalized = _swig_new_instance_method(_openbabel.vector3_CanBeNormalized)
    length_2 = _swig_new_instance_method(_openbabel.vector3_length_2)
    length = _swig_new_instance_method(_openbabel.vector3_length)
    x = _swig_new_instance_method(_openbabel.vector3_x)
    y = _swig_new_instance_method(_openbabel.vector3_y)
    z = _swig_new_instance_method(_openbabel.vector3_z)
    __eq__ = _swig_new_instance_method(_openbabel.vector3___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.vector3___ne__)
    IsApprox = _swig_new_instance_method(_openbabel.vector3_IsApprox)
    distSq = _swig_new_instance_method(_openbabel.vector3_distSq)
    createOrthoVector = _swig_new_instance_method(_openbabel.vector3_createOrthoVector)

# Register vector3 in _openbabel:
_openbabel.vector3_swigregister(vector3)
__add__ = _openbabel.__add__
__truediv__ = _openbabel.__truediv__
dot = _openbabel.dot
cross = _openbabel.cross
vectorAngle = _openbabel.vectorAngle
CalcTorsionAngle = _openbabel.CalcTorsionAngle
Point2PlaneSigned = _openbabel.Point2PlaneSigned
Point2Plane = _openbabel.Point2Plane
Point2PlaneAngle = _openbabel.Point2PlaneAngle
Point2Line = _openbabel.Point2Line
class matrix3x3(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.matrix3x3_swiginit(self, _openbabel.new_matrix3x3(*args))
    __swig_destroy__ = _openbabel.delete_matrix3x3
    GetArray = _swig_new_instance_method(_openbabel.matrix3x3_GetArray)
    __call__ = _swig_new_instance_method(_openbabel.matrix3x3___call__)
    inverse = _swig_new_instance_method(_openbabel.matrix3x3_inverse)
    transpose = _swig_new_instance_method(_openbabel.matrix3x3_transpose)
    determinant = _swig_new_instance_method(_openbabel.matrix3x3_determinant)
    isSymmetric = _swig_new_instance_method(_openbabel.matrix3x3_isSymmetric)
    isOrthogonal = _swig_new_instance_method(_openbabel.matrix3x3_isOrthogonal)
    isDiagonal = _swig_new_instance_method(_openbabel.matrix3x3_isDiagonal)
    isUnitMatrix = _swig_new_instance_method(_openbabel.matrix3x3_isUnitMatrix)
    Get = _swig_new_instance_method(_openbabel.matrix3x3_Get)
    Set = _swig_new_instance_method(_openbabel.matrix3x3_Set)
    SetColumn = _swig_new_instance_method(_openbabel.matrix3x3_SetColumn)
    SetRow = _swig_new_instance_method(_openbabel.matrix3x3_SetRow)
    GetColumn = _swig_new_instance_method(_openbabel.matrix3x3_GetColumn)
    GetRow = _swig_new_instance_method(_openbabel.matrix3x3_GetRow)
    __imul__ = _swig_new_instance_method(_openbabel.matrix3x3___imul__)

    def __itruediv__(self, *args):
        return _openbabel.matrix3x3___itruediv__(self, *args)
    __idiv__ = __itruediv__


    SetupRotMat = _swig_new_instance_method(_openbabel.matrix3x3_SetupRotMat)
    PlaneReflection = _swig_new_instance_method(_openbabel.matrix3x3_PlaneReflection)
    RotAboutAxisByAngle = _swig_new_instance_method(_openbabel.matrix3x3_RotAboutAxisByAngle)
    FillOrth = _swig_new_instance_method(_openbabel.matrix3x3_FillOrth)
    findEigenvectorsIfSymmetric = _swig_new_instance_method(_openbabel.matrix3x3_findEigenvectorsIfSymmetric)
    jacobi = _swig_new_static_method(_openbabel.matrix3x3_jacobi)

# Register matrix3x3 in _openbabel:
_openbabel.matrix3x3_swigregister(matrix3x3)
VZero = cvar.VZero
VX = cvar.VX
VY = cvar.VY
VZ = cvar.VZ
__mul__ = _openbabel.__mul__

class transform3d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.transform3d_swiginit(self, _openbabel.new_transform3d(*args))
    __mul__ = _swig_new_instance_method(_openbabel.transform3d___mul__)
    DescribeAsString = _swig_new_instance_method(_openbabel.transform3d_DescribeAsString)
    DescribeAsValues = _swig_new_instance_method(_openbabel.transform3d_DescribeAsValues)
    Normalize = _swig_new_instance_method(_openbabel.transform3d_Normalize)
    __swig_destroy__ = _openbabel.delete_transform3d

# Register transform3d in _openbabel:
_openbabel.transform3d_swigregister(transform3d)
class SpaceGroup(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.SpaceGroup_swiginit(self, _openbabel.new_SpaceGroup())
    __swig_destroy__ = _openbabel.delete_SpaceGroup
    SetHMName = _swig_new_instance_method(_openbabel.SpaceGroup_SetHMName)
    SetHallName = _swig_new_instance_method(_openbabel.SpaceGroup_SetHallName)
    SetId = _swig_new_instance_method(_openbabel.SpaceGroup_SetId)
    AddTransform = _swig_new_instance_method(_openbabel.SpaceGroup_AddTransform)
    GetHMName = _swig_new_instance_method(_openbabel.SpaceGroup_GetHMName)
    GetHallName = _swig_new_instance_method(_openbabel.SpaceGroup_GetHallName)
    GetId = _swig_new_instance_method(_openbabel.SpaceGroup_GetId)
    GetOriginAlternative = _swig_new_instance_method(_openbabel.SpaceGroup_GetOriginAlternative)
    Transform = _swig_new_instance_method(_openbabel.SpaceGroup_Transform)
    BeginTransform = _swig_new_instance_method(_openbabel.SpaceGroup_BeginTransform)
    NextTransform = _swig_new_instance_method(_openbabel.SpaceGroup_NextTransform)
    GetSpaceGroup = _swig_new_static_method(_openbabel.SpaceGroup_GetSpaceGroup)
    Find = _swig_new_static_method(_openbabel.SpaceGroup_Find)
    __eq__ = _swig_new_instance_method(_openbabel.SpaceGroup___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.SpaceGroup___ne__)
    IsValid = _swig_new_instance_method(_openbabel.SpaceGroup_IsValid)
    HEXAGONAL_ORIGIN = property(_openbabel.SpaceGroup_HEXAGONAL_ORIGIN_get)

# Register SpaceGroup in _openbabel:
_openbabel.SpaceGroup_swigregister(SpaceGroup)
SETWORD = _openbabel.SETWORD
WORDROLL = _openbabel.WORDROLL
WORDMASK = _openbabel.WORDMASK
STARTWORDS = _openbabel.STARTWORDS
class OBBitVec(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBBitVec_swiginit(self, _openbabel.new_OBBitVec(*args))
    SetBitOn = _swig_new_instance_method(_openbabel.OBBitVec_SetBitOn)
    SetBitOff = _swig_new_instance_method(_openbabel.OBBitVec_SetBitOff)
    SetRangeOn = _swig_new_instance_method(_openbabel.OBBitVec_SetRangeOn)
    SetRangeOff = _swig_new_instance_method(_openbabel.OBBitVec_SetRangeOff)
    Fold = _swig_new_instance_method(_openbabel.OBBitVec_Fold)
    FirstBit = _swig_new_instance_method(_openbabel.OBBitVec_FirstBit)
    NextBit = _swig_new_instance_method(_openbabel.OBBitVec_NextBit)
    EndBit = _swig_new_instance_method(_openbabel.OBBitVec_EndBit)
    GetSize = _swig_new_instance_method(_openbabel.OBBitVec_GetSize)
    CountBits = _swig_new_instance_method(_openbabel.OBBitVec_CountBits)
    IsEmpty = _swig_new_instance_method(_openbabel.OBBitVec_IsEmpty)
    Resize = _swig_new_instance_method(_openbabel.OBBitVec_Resize)
    ResizeWords = _swig_new_instance_method(_openbabel.OBBitVec_ResizeWords)
    BitIsSet = _swig_new_instance_method(_openbabel.OBBitVec_BitIsSet)
    FromVecInt = _swig_new_instance_method(_openbabel.OBBitVec_FromVecInt)
    FromString = _swig_new_instance_method(_openbabel.OBBitVec_FromString)
    ToVecInt = _swig_new_instance_method(_openbabel.OBBitVec_ToVecInt)
    Clear = _swig_new_instance_method(_openbabel.OBBitVec_Clear)
    Negate = _swig_new_instance_method(_openbabel.OBBitVec_Negate)
    GetWords = _swig_new_instance_method(_openbabel.OBBitVec_GetWords)
    __iand__ = _swig_new_instance_method(_openbabel.OBBitVec___iand__)
    __ior__ = _swig_new_instance_method(_openbabel.OBBitVec___ior__)
    __ixor__ = _swig_new_instance_method(_openbabel.OBBitVec___ixor__)
    __isub__ = _swig_new_instance_method(_openbabel.OBBitVec___isub__)
    __iadd__ = _swig_new_instance_method(_openbabel.OBBitVec___iadd__)
    __swig_destroy__ = _openbabel.delete_OBBitVec

# Register OBBitVec in _openbabel:
_openbabel.OBBitVec_swigregister(OBBitVec)
__or__ = _openbabel.__or__
__and__ = _openbabel.__and__
__xor__ = _openbabel.__xor__
__sub__ = _openbabel.__sub__
__eq__ = _openbabel.__eq__
__lt__ = _openbabel.__lt__
__rshift__ = _openbabel.__rshift__

Tanimoto = _openbabel.Tanimoto
OBReleaseVersion = _openbabel.OBReleaseVersion
UndefinedData = _openbabel.UndefinedData
PairData = _openbabel.PairData
EnergyData = _openbabel.EnergyData
CommentData = _openbabel.CommentData
ConformerData = _openbabel.ConformerData
ExternalBondData = _openbabel.ExternalBondData
RotamerList = _openbabel.RotamerList
VirtualBondData = _openbabel.VirtualBondData
RingData = _openbabel.RingData
TorsionData = _openbabel.TorsionData
AngleData = _openbabel.AngleData
SerialNums = _openbabel.SerialNums
UnitCell = _openbabel.UnitCell
SpinData = _openbabel.SpinData
ChargeData = _openbabel.ChargeData
SymmetryData = _openbabel.SymmetryData
OccupationData = _openbabel.OccupationData
DensityData = _openbabel.DensityData
ElectronicData = _openbabel.ElectronicData
VibrationData = _openbabel.VibrationData
RotationData = _openbabel.RotationData
NuclearData = _openbabel.NuclearData
SetData = _openbabel.SetData
GridData = _openbabel.GridData
VectorData = _openbabel.VectorData
MatrixData = _openbabel.MatrixData
StereoData = _openbabel.StereoData
DOSData = _openbabel.DOSData
ElectronicTransitionData = _openbabel.ElectronicTransitionData
CustomData0 = _openbabel.CustomData0
CustomData1 = _openbabel.CustomData1
CustomData2 = _openbabel.CustomData2
CustomData3 = _openbabel.CustomData3
CustomData4 = _openbabel.CustomData4
CustomData5 = _openbabel.CustomData5
CustomData6 = _openbabel.CustomData6
CustomData7 = _openbabel.CustomData7
CustomData8 = _openbabel.CustomData8
CustomData9 = _openbabel.CustomData9
CustomData10 = _openbabel.CustomData10
CustomData11 = _openbabel.CustomData11
CustomData12 = _openbabel.CustomData12
CustomData13 = _openbabel.CustomData13
CustomData14 = _openbabel.CustomData14
CustomData15 = _openbabel.CustomData15
any = _openbabel.any
fileformatInput = _openbabel.fileformatInput
userInput = _openbabel.userInput
perceived = _openbabel.perceived
external = _openbabel.external
local = _openbabel.local
class OBGenericData(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBGenericData_swiginit(self, _openbabel.new_OBGenericData(*args))
    Clone = _swig_new_instance_method(_openbabel.OBGenericData_Clone)
    __swig_destroy__ = _openbabel.delete_OBGenericData
    SetAttribute = _swig_new_instance_method(_openbabel.OBGenericData_SetAttribute)
    SetOrigin = _swig_new_instance_method(_openbabel.OBGenericData_SetOrigin)
    GetAttribute = _swig_new_instance_method(_openbabel.OBGenericData_GetAttribute)
    GetDataType = _swig_new_instance_method(_openbabel.OBGenericData_GetDataType)
    GetValue = _swig_new_instance_method(_openbabel.OBGenericData_GetValue)
    GetOrigin = _swig_new_instance_method(_openbabel.OBGenericData_GetOrigin)

# Register OBGenericData in _openbabel:
_openbabel.OBGenericData_swigregister(OBGenericData)
class OBBase(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _openbabel.delete_OBBase
    Clear = _swig_new_instance_method(_openbabel.OBBase_Clear)
    DoTransformations = _swig_new_instance_method(_openbabel.OBBase_DoTransformations)
    ClassDescription = _swig_new_static_method(_openbabel.OBBase_ClassDescription)
    GetTitle = _swig_new_instance_method(_openbabel.OBBase_GetTitle)
    SetTitle = _swig_new_instance_method(_openbabel.OBBase_SetTitle)
    HasData = _swig_new_instance_method(_openbabel.OBBase_HasData)
    DeleteData = _swig_new_instance_method(_openbabel.OBBase_DeleteData)
    CloneData = _swig_new_instance_method(_openbabel.OBBase_CloneData)
    DataSize = _swig_new_instance_method(_openbabel.OBBase_DataSize)
    GetAllData = _swig_new_instance_method(_openbabel.OBBase_GetAllData)
    GetData = _swig_new_instance_method(_openbabel.OBBase_GetData)
    BeginData = _swig_new_instance_method(_openbabel.OBBase_BeginData)
    EndData = _swig_new_instance_method(_openbabel.OBBase_EndData)

    def __init__(self):
        _openbabel.OBBase_swiginit(self, _openbabel.new_OBBase())

# Register OBBase in _openbabel:
_openbabel.OBBase_swigregister(OBBase)
class OBCommentData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBCommentData_swiginit(self, _openbabel.new_OBCommentData(*args))
    SetData = _swig_new_instance_method(_openbabel.OBCommentData_SetData)
    GetData = _swig_new_instance_method(_openbabel.OBCommentData_GetData)
    __swig_destroy__ = _openbabel.delete_OBCommentData

# Register OBCommentData in _openbabel:
_openbabel.OBCommentData_swigregister(OBCommentData)
class OBExternalBond(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBExternalBond_swiginit(self, _openbabel.new_OBExternalBond(*args))
    __swig_destroy__ = _openbabel.delete_OBExternalBond
    GetIdx = _swig_new_instance_method(_openbabel.OBExternalBond_GetIdx)
    GetAtom = _swig_new_instance_method(_openbabel.OBExternalBond_GetAtom)
    GetBond = _swig_new_instance_method(_openbabel.OBExternalBond_GetBond)
    SetIdx = _swig_new_instance_method(_openbabel.OBExternalBond_SetIdx)
    SetAtom = _swig_new_instance_method(_openbabel.OBExternalBond_SetAtom)
    SetBond = _swig_new_instance_method(_openbabel.OBExternalBond_SetBond)

# Register OBExternalBond in _openbabel:
_openbabel.OBExternalBond_swigregister(OBExternalBond)
class OBExternalBondData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBExternalBondData_swiginit(self, _openbabel.new_OBExternalBondData())
    SetData = _swig_new_instance_method(_openbabel.OBExternalBondData_SetData)
    GetData = _swig_new_instance_method(_openbabel.OBExternalBondData_GetData)
    __swig_destroy__ = _openbabel.delete_OBExternalBondData

# Register OBExternalBondData in _openbabel:
_openbabel.OBExternalBondData_swigregister(OBExternalBondData)
class OBPairData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBPairData_swiginit(self, _openbabel.new_OBPairData())
    SetValue = _swig_new_instance_method(_openbabel.OBPairData_SetValue)
    __swig_destroy__ = _openbabel.delete_OBPairData

# Register OBPairData in _openbabel:
_openbabel.OBPairData_swigregister(OBPairData)
class OBSetData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBSetData_swiginit(self, _openbabel.new_OBSetData())
    AddData = _swig_new_instance_method(_openbabel.OBSetData_AddData)
    SetData = _swig_new_instance_method(_openbabel.OBSetData_SetData)
    GetData = _swig_new_instance_method(_openbabel.OBSetData_GetData)
    GetBegin = _swig_new_instance_method(_openbabel.OBSetData_GetBegin)
    GetEnd = _swig_new_instance_method(_openbabel.OBSetData_GetEnd)
    DeleteData = _swig_new_instance_method(_openbabel.OBSetData_DeleteData)
    __swig_destroy__ = _openbabel.delete_OBSetData

# Register OBSetData in _openbabel:
_openbabel.OBSetData_swigregister(OBSetData)
class OBVirtualBond(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBVirtualBond_swiginit(self, _openbabel.new_OBVirtualBond(*args))
    GetBgn = _swig_new_instance_method(_openbabel.OBVirtualBond_GetBgn)
    GetEnd = _swig_new_instance_method(_openbabel.OBVirtualBond_GetEnd)
    GetOrder = _swig_new_instance_method(_openbabel.OBVirtualBond_GetOrder)
    GetStereo = _swig_new_instance_method(_openbabel.OBVirtualBond_GetStereo)
    __swig_destroy__ = _openbabel.delete_OBVirtualBond

# Register OBVirtualBond in _openbabel:
_openbabel.OBVirtualBond_swigregister(OBVirtualBond)
class OBRingData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBRingData_swiginit(self, _openbabel.new_OBRingData(*args))
    __swig_destroy__ = _openbabel.delete_OBRingData
    SetData = _swig_new_instance_method(_openbabel.OBRingData_SetData)
    PushBack = _swig_new_instance_method(_openbabel.OBRingData_PushBack)
    GetData = _swig_new_instance_method(_openbabel.OBRingData_GetData)
    BeginRings = _swig_new_instance_method(_openbabel.OBRingData_BeginRings)
    EndRings = _swig_new_instance_method(_openbabel.OBRingData_EndRings)
    BeginRing = _swig_new_instance_method(_openbabel.OBRingData_BeginRing)
    NextRing = _swig_new_instance_method(_openbabel.OBRingData_NextRing)

# Register OBRingData in _openbabel:
_openbabel.OBRingData_swigregister(OBRingData)
class OBUnitCell(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Undefined = _openbabel.OBUnitCell_Undefined
    Triclinic = _openbabel.OBUnitCell_Triclinic
    Monoclinic = _openbabel.OBUnitCell_Monoclinic
    Orthorhombic = _openbabel.OBUnitCell_Orthorhombic
    Tetragonal = _openbabel.OBUnitCell_Tetragonal
    Rhombohedral = _openbabel.OBUnitCell_Rhombohedral
    Hexagonal = _openbabel.OBUnitCell_Hexagonal
    Cubic = _openbabel.OBUnitCell_Cubic

    def __init__(self, *args):
        _openbabel.OBUnitCell_swiginit(self, _openbabel.new_OBUnitCell(*args))
    __swig_destroy__ = _openbabel.delete_OBUnitCell
    SetData = _swig_new_instance_method(_openbabel.OBUnitCell_SetData)
    SetOffset = _swig_new_instance_method(_openbabel.OBUnitCell_SetOffset)
    SetSpaceGroup = _swig_new_instance_method(_openbabel.OBUnitCell_SetSpaceGroup)
    SetLatticeType = _swig_new_instance_method(_openbabel.OBUnitCell_SetLatticeType)
    FillUnitCell = _swig_new_instance_method(_openbabel.OBUnitCell_FillUnitCell)
    GetA = _swig_new_instance_method(_openbabel.OBUnitCell_GetA)
    GetB = _swig_new_instance_method(_openbabel.OBUnitCell_GetB)
    GetC = _swig_new_instance_method(_openbabel.OBUnitCell_GetC)
    GetAlpha = _swig_new_instance_method(_openbabel.OBUnitCell_GetAlpha)
    GetBeta = _swig_new_instance_method(_openbabel.OBUnitCell_GetBeta)
    GetGamma = _swig_new_instance_method(_openbabel.OBUnitCell_GetGamma)
    GetOffset = _swig_new_instance_method(_openbabel.OBUnitCell_GetOffset)
    GetSpaceGroup = _swig_new_instance_method(_openbabel.OBUnitCell_GetSpaceGroup)
    GetSpaceGroupName = _swig_new_instance_method(_openbabel.OBUnitCell_GetSpaceGroupName)
    GetLatticeType = _swig_new_instance_method(_openbabel.OBUnitCell_GetLatticeType)
    GetCellVectors = _swig_new_instance_method(_openbabel.OBUnitCell_GetCellVectors)
    GetCellMatrix = _swig_new_instance_method(_openbabel.OBUnitCell_GetCellMatrix)
    GetOrthoMatrix = _swig_new_instance_method(_openbabel.OBUnitCell_GetOrthoMatrix)
    GetOrientationMatrix = _swig_new_instance_method(_openbabel.OBUnitCell_GetOrientationMatrix)
    GetFractionalMatrix = _swig_new_instance_method(_openbabel.OBUnitCell_GetFractionalMatrix)
    FractionalToCartesian = _swig_new_instance_method(_openbabel.OBUnitCell_FractionalToCartesian)
    CartesianToFractional = _swig_new_instance_method(_openbabel.OBUnitCell_CartesianToFractional)
    WrapCartesianCoordinate = _swig_new_instance_method(_openbabel.OBUnitCell_WrapCartesianCoordinate)
    WrapFractionalCoordinate = _swig_new_instance_method(_openbabel.OBUnitCell_WrapFractionalCoordinate)
    UnwrapCartesianNear = _swig_new_instance_method(_openbabel.OBUnitCell_UnwrapCartesianNear)
    UnwrapFractionalNear = _swig_new_instance_method(_openbabel.OBUnitCell_UnwrapFractionalNear)
    MinimumImageCartesian = _swig_new_instance_method(_openbabel.OBUnitCell_MinimumImageCartesian)
    MinimumImageFractional = _swig_new_instance_method(_openbabel.OBUnitCell_MinimumImageFractional)
    GetSpaceGroupNumber = _swig_new_instance_method(_openbabel.OBUnitCell_GetSpaceGroupNumber)
    GetCellVolume = _swig_new_instance_method(_openbabel.OBUnitCell_GetCellVolume)

# Register OBUnitCell in _openbabel:
_openbabel.OBUnitCell_swigregister(OBUnitCell)
class OBConformerData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBConformerData_swiginit(self, _openbabel.new_OBConformerData(*args))
    __swig_destroy__ = _openbabel.delete_OBConformerData
    SetDimension = _swig_new_instance_method(_openbabel.OBConformerData_SetDimension)
    SetEnergies = _swig_new_instance_method(_openbabel.OBConformerData_SetEnergies)
    SetForces = _swig_new_instance_method(_openbabel.OBConformerData_SetForces)
    SetVelocities = _swig_new_instance_method(_openbabel.OBConformerData_SetVelocities)
    SetDisplacements = _swig_new_instance_method(_openbabel.OBConformerData_SetDisplacements)
    SetData = _swig_new_instance_method(_openbabel.OBConformerData_SetData)
    GetDimension = _swig_new_instance_method(_openbabel.OBConformerData_GetDimension)
    GetEnergies = _swig_new_instance_method(_openbabel.OBConformerData_GetEnergies)
    GetForces = _swig_new_instance_method(_openbabel.OBConformerData_GetForces)
    GetVelocities = _swig_new_instance_method(_openbabel.OBConformerData_GetVelocities)
    GetDisplacements = _swig_new_instance_method(_openbabel.OBConformerData_GetDisplacements)
    GetData = _swig_new_instance_method(_openbabel.OBConformerData_GetData)

# Register OBConformerData in _openbabel:
_openbabel.OBConformerData_swigregister(OBConformerData)
class OBSymmetryData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBSymmetryData_swiginit(self, _openbabel.new_OBSymmetryData(*args))
    __swig_destroy__ = _openbabel.delete_OBSymmetryData
    SetData = _swig_new_instance_method(_openbabel.OBSymmetryData_SetData)
    SetPointGroup = _swig_new_instance_method(_openbabel.OBSymmetryData_SetPointGroup)
    SetSpaceGroup = _swig_new_instance_method(_openbabel.OBSymmetryData_SetSpaceGroup)
    GetPointGroup = _swig_new_instance_method(_openbabel.OBSymmetryData_GetPointGroup)
    GetSpaceGroup = _swig_new_instance_method(_openbabel.OBSymmetryData_GetSpaceGroup)

# Register OBSymmetryData in _openbabel:
_openbabel.OBSymmetryData_swigregister(OBSymmetryData)
class OBTorsion(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2):
        _openbabel.OBTorsion_swiginit(self, _openbabel.new_OBTorsion(arg2))
    __swig_destroy__ = _openbabel.delete_OBTorsion
    Clear = _swig_new_instance_method(_openbabel.OBTorsion_Clear)
    Empty = _swig_new_instance_method(_openbabel.OBTorsion_Empty)
    AddTorsion = _swig_new_instance_method(_openbabel.OBTorsion_AddTorsion)
    SetAngle = _swig_new_instance_method(_openbabel.OBTorsion_SetAngle)
    SetData = _swig_new_instance_method(_openbabel.OBTorsion_SetData)
    GetAngle = _swig_new_instance_method(_openbabel.OBTorsion_GetAngle)
    GetBondIdx = _swig_new_instance_method(_openbabel.OBTorsion_GetBondIdx)
    GetSize = _swig_new_instance_method(_openbabel.OBTorsion_GetSize)
    GetBC = _swig_new_instance_method(_openbabel.OBTorsion_GetBC)
    GetADs = _swig_new_instance_method(_openbabel.OBTorsion_GetADs)
    IsProtonRotor = _swig_new_instance_method(_openbabel.OBTorsion_IsProtonRotor)

# Register OBTorsion in _openbabel:
_openbabel.OBTorsion_swigregister(OBTorsion)
class OBTorsionData(OBGenericData):
    thisown = 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
    Clear = _swig_new_instance_method(_openbabel.OBTorsionData_Clear)
    GetData = _swig_new_instance_method(_openbabel.OBTorsionData_GetData)
    GetSize = _swig_new_instance_method(_openbabel.OBTorsionData_GetSize)
    SetData = _swig_new_instance_method(_openbabel.OBTorsionData_SetData)
    FillTorsionArray = _swig_new_instance_method(_openbabel.OBTorsionData_FillTorsionArray)
    __swig_destroy__ = _openbabel.delete_OBTorsionData

# Register OBTorsionData in _openbabel:
_openbabel.OBTorsionData_swigregister(OBTorsionData)
class OBAngle(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2):
        _openbabel.OBAngle_swiginit(self, _openbabel.new_OBAngle(arg2))
    __swig_destroy__ = _openbabel.delete_OBAngle
    __eq__ = _swig_new_instance_method(_openbabel.OBAngle___eq__)
    Clear = _swig_new_instance_method(_openbabel.OBAngle_Clear)
    GetAngle = _swig_new_instance_method(_openbabel.OBAngle_GetAngle)
    SetAngle = _swig_new_instance_method(_openbabel.OBAngle_SetAngle)
    SetAtoms = _swig_new_instance_method(_openbabel.OBAngle_SetAtoms)

# Register OBAngle in _openbabel:
_openbabel.OBAngle_swigregister(OBAngle)
class OBAngleData(OBGenericData):
    thisown = 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
    Clear = _swig_new_instance_method(_openbabel.OBAngleData_Clear)
    FillAngleArray = _swig_new_instance_method(_openbabel.OBAngleData_FillAngleArray)
    SetData = _swig_new_instance_method(_openbabel.OBAngleData_SetData)
    GetSize = _swig_new_instance_method(_openbabel.OBAngleData_GetSize)
    __swig_destroy__ = _openbabel.delete_OBAngleData

# Register OBAngleData in _openbabel:
_openbabel.OBAngleData_swigregister(OBAngleData)
class OBSerialNums(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBSerialNums_swiginit(self, _openbabel.new_OBSerialNums(*args))
    GetData = _swig_new_instance_method(_openbabel.OBSerialNums_GetData)
    SetData = _swig_new_instance_method(_openbabel.OBSerialNums_SetData)
    __swig_destroy__ = _openbabel.delete_OBSerialNums

# Register OBSerialNums in _openbabel:
_openbabel.OBSerialNums_swigregister(OBSerialNums)
class OBVibrationData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBVibrationData_swiginit(self, _openbabel.new_OBVibrationData())
    __swig_destroy__ = _openbabel.delete_OBVibrationData
    SetData = _swig_new_instance_method(_openbabel.OBVibrationData_SetData)
    GetLx = _swig_new_instance_method(_openbabel.OBVibrationData_GetLx)
    GetFrequencies = _swig_new_instance_method(_openbabel.OBVibrationData_GetFrequencies)
    GetIntensities = _swig_new_instance_method(_openbabel.OBVibrationData_GetIntensities)
    GetRamanActivities = _swig_new_instance_method(_openbabel.OBVibrationData_GetRamanActivities)
    GetNumberOfFrequencies = _swig_new_instance_method(_openbabel.OBVibrationData_GetNumberOfFrequencies)

# Register OBVibrationData in _openbabel:
_openbabel.OBVibrationData_swigregister(OBVibrationData)
class OBDOSData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBDOSData_swiginit(self, _openbabel.new_OBDOSData())
    __swig_destroy__ = _openbabel.delete_OBDOSData
    SetData = _swig_new_instance_method(_openbabel.OBDOSData_SetData)
    GetFermiEnergy = _swig_new_instance_method(_openbabel.OBDOSData_GetFermiEnergy)
    GetEnergies = _swig_new_instance_method(_openbabel.OBDOSData_GetEnergies)
    GetDensities = _swig_new_instance_method(_openbabel.OBDOSData_GetDensities)
    GetIntegration = _swig_new_instance_method(_openbabel.OBDOSData_GetIntegration)

# Register OBDOSData in _openbabel:
_openbabel.OBDOSData_swigregister(OBDOSData)
class OBOrbital(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    SetData = _swig_new_instance_method(_openbabel.OBOrbital_SetData)
    GetEnergy = _swig_new_instance_method(_openbabel.OBOrbital_GetEnergy)
    GetOccupation = _swig_new_instance_method(_openbabel.OBOrbital_GetOccupation)
    GetSymbol = _swig_new_instance_method(_openbabel.OBOrbital_GetSymbol)

    def __init__(self):
        _openbabel.OBOrbital_swiginit(self, _openbabel.new_OBOrbital())
    __swig_destroy__ = _openbabel.delete_OBOrbital

# Register OBOrbital in _openbabel:
_openbabel.OBOrbital_swigregister(OBOrbital)
class OBOrbitalData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBOrbitalData_swiginit(self, _openbabel.new_OBOrbitalData())
    __swig_destroy__ = _openbabel.delete_OBOrbitalData
    SetAlphaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_SetAlphaOrbitals)
    SetBetaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_SetBetaOrbitals)
    SetHOMO = _swig_new_instance_method(_openbabel.OBOrbitalData_SetHOMO)
    SetOpenShell = _swig_new_instance_method(_openbabel.OBOrbitalData_SetOpenShell)
    IsOpenShell = _swig_new_instance_method(_openbabel.OBOrbitalData_IsOpenShell)
    GetAlphaHOMO = _swig_new_instance_method(_openbabel.OBOrbitalData_GetAlphaHOMO)
    GetBetaHOMO = _swig_new_instance_method(_openbabel.OBOrbitalData_GetBetaHOMO)
    GetAlphaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_GetAlphaOrbitals)
    GetBetaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_GetBetaOrbitals)
    LoadClosedShellOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_LoadClosedShellOrbitals)
    LoadAlphaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_LoadAlphaOrbitals)
    LoadBetaOrbitals = _swig_new_instance_method(_openbabel.OBOrbitalData_LoadBetaOrbitals)

# Register OBOrbitalData in _openbabel:
_openbabel.OBOrbitalData_swigregister(OBOrbitalData)
class OBElectronicTransitionData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBElectronicTransitionData_swiginit(self, _openbabel.new_OBElectronicTransitionData())
    __swig_destroy__ = _openbabel.delete_OBElectronicTransitionData
    SetData = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_SetData)
    SetEDipole = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_SetEDipole)
    SetRotatoryStrengthsVelocity = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_SetRotatoryStrengthsVelocity)
    SetRotatoryStrengthsLength = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_SetRotatoryStrengthsLength)
    GetWavelengths = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_GetWavelengths)
    GetForces = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_GetForces)
    GetEDipole = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_GetEDipole)
    GetRotatoryStrengthsVelocity = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_GetRotatoryStrengthsVelocity)
    GetRotatoryStrengthsLength = _swig_new_instance_method(_openbabel.OBElectronicTransitionData_GetRotatoryStrengthsLength)

# Register OBElectronicTransitionData in _openbabel:
_openbabel.OBElectronicTransitionData_swigregister(OBElectronicTransitionData)
class OBRotationData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    UNKNOWN = _openbabel.OBRotationData_UNKNOWN
    ASYMMETRIC = _openbabel.OBRotationData_ASYMMETRIC
    SYMMETRIC = _openbabel.OBRotationData_SYMMETRIC
    LINEAR = _openbabel.OBRotationData_LINEAR

    def __init__(self):
        _openbabel.OBRotationData_swiginit(self, _openbabel.new_OBRotationData())
    __swig_destroy__ = _openbabel.delete_OBRotationData
    SetData = _swig_new_instance_method(_openbabel.OBRotationData_SetData)
    GetRotConsts = _swig_new_instance_method(_openbabel.OBRotationData_GetRotConsts)
    GetSymmetryNumber = _swig_new_instance_method(_openbabel.OBRotationData_GetSymmetryNumber)
    GetRotorType = _swig_new_instance_method(_openbabel.OBRotationData_GetRotorType)

# Register OBRotationData in _openbabel:
_openbabel.OBRotationData_swigregister(OBRotationData)
class OBVectorData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBVectorData_swiginit(self, _openbabel.new_OBVectorData())
    __swig_destroy__ = _openbabel.delete_OBVectorData
    SetData = _swig_new_instance_method(_openbabel.OBVectorData_SetData)
    GetData = _swig_new_instance_method(_openbabel.OBVectorData_GetData)

# Register OBVectorData in _openbabel:
_openbabel.OBVectorData_swigregister(OBVectorData)
class OBMatrixData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBMatrixData_swiginit(self, _openbabel.new_OBMatrixData())
    __swig_destroy__ = _openbabel.delete_OBMatrixData
    SetData = _swig_new_instance_method(_openbabel.OBMatrixData_SetData)
    GetData = _swig_new_instance_method(_openbabel.OBMatrixData_GetData)

# Register OBMatrixData in _openbabel:
_openbabel.OBMatrixData_swigregister(OBMatrixData)
class OBFreeGridPoint(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBFreeGridPoint_swiginit(self, _openbabel.new_OBFreeGridPoint(*args))
    __swig_destroy__ = _openbabel.delete_OBFreeGridPoint
    GetX = _swig_new_instance_method(_openbabel.OBFreeGridPoint_GetX)
    GetY = _swig_new_instance_method(_openbabel.OBFreeGridPoint_GetY)
    GetZ = _swig_new_instance_method(_openbabel.OBFreeGridPoint_GetZ)
    GetV = _swig_new_instance_method(_openbabel.OBFreeGridPoint_GetV)
    SetX = _swig_new_instance_method(_openbabel.OBFreeGridPoint_SetX)
    SetY = _swig_new_instance_method(_openbabel.OBFreeGridPoint_SetY)
    SetZ = _swig_new_instance_method(_openbabel.OBFreeGridPoint_SetZ)
    SetV = _swig_new_instance_method(_openbabel.OBFreeGridPoint_SetV)

# Register OBFreeGridPoint in _openbabel:
_openbabel.OBFreeGridPoint_swigregister(OBFreeGridPoint)
class OBFreeGrid(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBFreeGrid_swiginit(self, _openbabel.new_OBFreeGrid())
    __swig_destroy__ = _openbabel.delete_OBFreeGrid
    NumPoints = _swig_new_instance_method(_openbabel.OBFreeGrid_NumPoints)
    AddPoint = _swig_new_instance_method(_openbabel.OBFreeGrid_AddPoint)
    BeginPoints = _swig_new_instance_method(_openbabel.OBFreeGrid_BeginPoints)
    EndPoints = _swig_new_instance_method(_openbabel.OBFreeGrid_EndPoints)
    BeginPoint = _swig_new_instance_method(_openbabel.OBFreeGrid_BeginPoint)
    NextPoint = _swig_new_instance_method(_openbabel.OBFreeGrid_NextPoint)
    Clear = _swig_new_instance_method(_openbabel.OBFreeGrid_Clear)

# Register OBFreeGrid in _openbabel:
_openbabel.OBFreeGrid_swigregister(OBFreeGrid)
class OBPcharge(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBPcharge_swiginit(self, _openbabel.new_OBPcharge())
    __swig_destroy__ = _openbabel.delete_OBPcharge
    NumPartialCharges = _swig_new_instance_method(_openbabel.OBPcharge_NumPartialCharges)
    AddPartialCharge = _swig_new_instance_method(_openbabel.OBPcharge_AddPartialCharge)
    GetPartialCharge = _swig_new_instance_method(_openbabel.OBPcharge_GetPartialCharge)

# Register OBPcharge in _openbabel:
_openbabel.OBPcharge_swigregister(OBPcharge)
class OBPairInteger(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBPairInteger_swiginit(self, _openbabel.new_OBPairInteger())
    SetValue = _swig_new_instance_method(_openbabel.OBPairInteger_SetValue)
    GetGenericValue = _swig_new_instance_method(_openbabel.OBPairInteger_GetGenericValue)
    __swig_destroy__ = _openbabel.delete_OBPairInteger

# Register OBPairInteger in _openbabel:
_openbabel.OBPairInteger_swigregister(OBPairInteger)
class OBPairFloatingPoint(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBPairFloatingPoint_swiginit(self, _openbabel.new_OBPairFloatingPoint())
    SetValue = _swig_new_instance_method(_openbabel.OBPairFloatingPoint_SetValue)
    GetGenericValue = _swig_new_instance_method(_openbabel.OBPairFloatingPoint_GetGenericValue)
    __swig_destroy__ = _openbabel.delete_OBPairFloatingPoint

# Register OBPairFloatingPoint in _openbabel:
_openbabel.OBPairFloatingPoint_swigregister(OBPairFloatingPoint)
class OBGridData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBGridData_swiginit(self, _openbabel.new_OBGridData())
    __swig_destroy__ = _openbabel.delete_OBGridData
    BOHR = _openbabel.OBGridData_BOHR
    ANGSTROM = _openbabel.OBGridData_ANGSTROM
    OTHER = _openbabel.OBGridData_OTHER
    GetXAxis = _swig_new_instance_method(_openbabel.OBGridData_GetXAxis)
    GetYAxis = _swig_new_instance_method(_openbabel.OBGridData_GetYAxis)
    GetZAxis = _swig_new_instance_method(_openbabel.OBGridData_GetZAxis)
    GetAxes = _swig_new_instance_method(_openbabel.OBGridData_GetAxes)
    GetNumberOfPoints = _swig_new_instance_method(_openbabel.OBGridData_GetNumberOfPoints)
    GetNumberOfSteps = _swig_new_instance_method(_openbabel.OBGridData_GetNumberOfSteps)
    GetValues = _swig_new_instance_method(_openbabel.OBGridData_GetValues)
    GetValue = _swig_new_instance_method(_openbabel.OBGridData_GetValue)
    GetUnit = _swig_new_instance_method(_openbabel.OBGridData_GetUnit)
    GetMinValue = _swig_new_instance_method(_openbabel.OBGridData_GetMinValue)
    GetMaxValue = _swig_new_instance_method(_openbabel.OBGridData_GetMaxValue)
    GetOriginVector = _swig_new_instance_method(_openbabel.OBGridData_GetOriginVector)
    GetMaxVector = _swig_new_instance_method(_openbabel.OBGridData_GetMaxVector)
    GetUnrestricted = _swig_new_instance_method(_openbabel.OBGridData_GetUnrestricted)
    GetNumSymmetries = _swig_new_instance_method(_openbabel.OBGridData_GetNumSymmetries)
    SetNumberOfPoints = _swig_new_instance_method(_openbabel.OBGridData_SetNumberOfPoints)
    SetLimits = _swig_new_instance_method(_openbabel.OBGridData_SetLimits)
    SetValue = _swig_new_instance_method(_openbabel.OBGridData_SetValue)
    SetValues = _swig_new_instance_method(_openbabel.OBGridData_SetValues)
    SetUnit = _swig_new_instance_method(_openbabel.OBGridData_SetUnit)
    SetUnrestricted = _swig_new_instance_method(_openbabel.OBGridData_SetUnrestricted)
    SetNumSymmetries = _swig_new_instance_method(_openbabel.OBGridData_SetNumSymmetries)

# Register OBGridData in _openbabel:
_openbabel.OBGridData_swigregister(OBGridData)
MaxMonoAtom = _openbabel.MaxMonoAtom
MaxMonoBond = _openbabel.MaxMonoBond
class OBChainsParser(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBChainsParser_swiginit(self, _openbabel.new_OBChainsParser())
    __swig_destroy__ = _openbabel.delete_OBChainsParser
    PerceiveChains = _swig_new_instance_method(_openbabel.OBChainsParser_PerceiveChains)

# Register OBChainsParser in _openbabel:
_openbabel.OBChainsParser_swigregister(OBChainsParser)
class OBAtomTyper(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBAtomTyper_swiginit(self, _openbabel.new_OBAtomTyper(*args))
    __swig_destroy__ = _openbabel.delete_OBAtomTyper
    AssignHyb = _swig_new_instance_method(_openbabel.OBAtomTyper_AssignHyb)
    AssignTypes = _swig_new_instance_method(_openbabel.OBAtomTyper_AssignTypes)

# Register OBAtomTyper in _openbabel:
_openbabel.OBAtomTyper_swigregister(OBAtomTyper)
class OBAromaticTyper(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBAromaticTyper_swiginit(self, _openbabel.new_OBAromaticTyper())
    __swig_destroy__ = _openbabel.delete_OBAromaticTyper
    AssignAromaticFlags = _swig_new_instance_method(_openbabel.OBAromaticTyper_AssignAromaticFlags)

# Register OBAromaticTyper in _openbabel:
_openbabel.OBAromaticTyper_swigregister(OBAromaticTyper)
class OBRingTyper(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRingTyper_swiginit(self, _openbabel.new_OBRingTyper())
    __swig_destroy__ = _openbabel.delete_OBRingTyper
    AssignTypes = _swig_new_instance_method(_openbabel.OBRingTyper_AssignTypes)

# Register OBRingTyper in _openbabel:
_openbabel.OBRingTyper_swigregister(OBRingTyper)
class dummy(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.dummy_swiginit(self, _openbabel.new_dummy())
    __swig_destroy__ = _openbabel.delete_dummy

# Register dummy in _openbabel:
_openbabel.dummy_swigregister(dummy)
class CharPtrLess(dummy):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __call__ = _swig_new_instance_method(_openbabel.CharPtrLess___call__)

    def __init__(self):
        _openbabel.CharPtrLess_swiginit(self, _openbabel.new_CharPtrLess())
    __swig_destroy__ = _openbabel.delete_CharPtrLess

# Register CharPtrLess in _openbabel:
_openbabel.CharPtrLess_swigregister(CharPtrLess)
class OBPlugin(object):
    thisown = 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__ = _openbabel.delete_OBPlugin
    Description = _swig_new_instance_method(_openbabel.OBPlugin_Description)
    TypeID = _swig_new_instance_method(_openbabel.OBPlugin_TypeID)
    Display = _swig_new_instance_method(_openbabel.OBPlugin_Display)
    MakeInstance = _swig_new_instance_method(_openbabel.OBPlugin_MakeInstance)
    Init = _swig_new_instance_method(_openbabel.OBPlugin_Init)
    GetPlugin = _swig_new_static_method(_openbabel.OBPlugin_GetPlugin)
    GetID = _swig_new_instance_method(_openbabel.OBPlugin_GetID)
    ListAsVector = _swig_new_static_method(_openbabel.OBPlugin_ListAsVector)
    List = _swig_new_static_method(_openbabel.OBPlugin_List)
    ListAsString = _swig_new_static_method(_openbabel.OBPlugin_ListAsString)
    FirstLine = _swig_new_static_method(_openbabel.OBPlugin_FirstLine)
    Begin = _swig_new_static_method(_openbabel.OBPlugin_Begin)
    End = _swig_new_static_method(_openbabel.OBPlugin_End)
    GetMap = _swig_new_instance_method(_openbabel.OBPlugin_GetMap)
    LoadAllPlugins = _swig_new_static_method(_openbabel.OBPlugin_LoadAllPlugins)

# Register OBPlugin in _openbabel:
_openbabel.OBPlugin_swigregister(OBPlugin)
class stringbuf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.stringbuf_swiginit(self, _openbabel.new_stringbuf())
    __swig_destroy__ = _openbabel.delete_stringbuf

# Register stringbuf in _openbabel:
_openbabel.stringbuf_swigregister(stringbuf)
obError = _openbabel.obError
obWarning = _openbabel.obWarning
obInfo = _openbabel.obInfo
obAuditMsg = _openbabel.obAuditMsg
obDebug = _openbabel.obDebug
always = _openbabel.always
onceOnly = _openbabel.onceOnly
class OBError(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBError_swiginit(self, _openbabel.new_OBError(*args))
    message = _swig_new_instance_method(_openbabel.OBError_message)
    GetMethod = _swig_new_instance_method(_openbabel.OBError_GetMethod)
    GetError = _swig_new_instance_method(_openbabel.OBError_GetError)
    GetExplanation = _swig_new_instance_method(_openbabel.OBError_GetExplanation)
    GetPossibleCause = _swig_new_instance_method(_openbabel.OBError_GetPossibleCause)
    GetSuggestedRemedy = _swig_new_instance_method(_openbabel.OBError_GetSuggestedRemedy)
    GetLevel = _swig_new_instance_method(_openbabel.OBError_GetLevel)
    __eq__ = _swig_new_instance_method(_openbabel.OBError___eq__)
    __swig_destroy__ = _openbabel.delete_OBError

# Register OBError in _openbabel:
_openbabel.OBError_swigregister(OBError)
__lshift__ = _openbabel.__lshift__

class OBMessageHandler(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBMessageHandler_swiginit(self, _openbabel.new_OBMessageHandler())
    __swig_destroy__ = _openbabel.delete_OBMessageHandler
    ThrowError = _swig_new_instance_method(_openbabel.OBMessageHandler_ThrowError)
    GetMessagesOfLevel = _swig_new_instance_method(_openbabel.OBMessageHandler_GetMessagesOfLevel)
    StartLogging = _swig_new_instance_method(_openbabel.OBMessageHandler_StartLogging)
    StopLogging = _swig_new_instance_method(_openbabel.OBMessageHandler_StopLogging)
    SetMaxLogEntries = _swig_new_instance_method(_openbabel.OBMessageHandler_SetMaxLogEntries)
    GetMaxLogEntries = _swig_new_instance_method(_openbabel.OBMessageHandler_GetMaxLogEntries)
    ClearLog = _swig_new_instance_method(_openbabel.OBMessageHandler_ClearLog)
    SetOutputLevel = _swig_new_instance_method(_openbabel.OBMessageHandler_SetOutputLevel)
    GetOutputLevel = _swig_new_instance_method(_openbabel.OBMessageHandler_GetOutputLevel)
    SetOutputStream = _swig_new_instance_method(_openbabel.OBMessageHandler_SetOutputStream)
    GetOutputStream = _swig_new_instance_method(_openbabel.OBMessageHandler_GetOutputStream)
    StartErrorWrap = _swig_new_instance_method(_openbabel.OBMessageHandler_StartErrorWrap)
    StopErrorWrap = _swig_new_instance_method(_openbabel.OBMessageHandler_StopErrorWrap)
    GetErrorMessageCount = _swig_new_instance_method(_openbabel.OBMessageHandler_GetErrorMessageCount)
    GetWarningMessageCount = _swig_new_instance_method(_openbabel.OBMessageHandler_GetWarningMessageCount)
    GetInfoMessageCount = _swig_new_instance_method(_openbabel.OBMessageHandler_GetInfoMessageCount)
    GetAuditMessageCount = _swig_new_instance_method(_openbabel.OBMessageHandler_GetAuditMessageCount)
    GetDebugMessageCount = _swig_new_instance_method(_openbabel.OBMessageHandler_GetDebugMessageCount)
    GetMessageSummary = _swig_new_instance_method(_openbabel.OBMessageHandler_GetMessageSummary)

# Register OBMessageHandler in _openbabel:
_openbabel.OBMessageHandler_swigregister(OBMessageHandler)
class obLogBuf(stringbuf):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _openbabel.delete_obLogBuf

    def __init__(self):
        _openbabel.obLogBuf_swiginit(self, _openbabel.new_obLogBuf())

# Register obLogBuf in _openbabel:
_openbabel.obLogBuf_swigregister(obLogBuf)
NOTREADABLE = _openbabel.NOTREADABLE
READONEONLY = _openbabel.READONEONLY
READBINARY = _openbabel.READBINARY
ZEROATOMSOK = _openbabel.ZEROATOMSOK
NOTWRITABLE = _openbabel.NOTWRITABLE
WRITEONEONLY = _openbabel.WRITEONEONLY
WRITEBINARY = _openbabel.WRITEBINARY
READXML = _openbabel.READXML
DEPICTION2D = _openbabel.DEPICTION2D
DEFAULTFORMAT = _openbabel.DEFAULTFORMAT
class OBFormat(OBPlugin):
    thisown = 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
    Default = _swig_new_static_method(_openbabel.OBFormat_Default)
    FindType = _swig_new_static_method(_openbabel.OBFormat_FindType)
    ReadMolecule = _swig_new_instance_method(_openbabel.OBFormat_ReadMolecule)
    ReadChemObject = _swig_new_instance_method(_openbabel.OBFormat_ReadChemObject)
    WriteMolecule = _swig_new_instance_method(_openbabel.OBFormat_WriteMolecule)
    WriteChemObject = _swig_new_instance_method(_openbabel.OBFormat_WriteChemObject)
    TargetClassDescription = _swig_new_instance_method(_openbabel.OBFormat_TargetClassDescription)
    GetType = _swig_new_instance_method(_openbabel.OBFormat_GetType)
    SpecificationURL = _swig_new_instance_method(_openbabel.OBFormat_SpecificationURL)
    GetMIMEType = _swig_new_instance_method(_openbabel.OBFormat_GetMIMEType)
    Flags = _swig_new_instance_method(_openbabel.OBFormat_Flags)
    SkipObjects = _swig_new_instance_method(_openbabel.OBFormat_SkipObjects)
    MakeNewInstance = _swig_new_instance_method(_openbabel.OBFormat_MakeNewInstance)
    RegisterFormat = _swig_new_instance_method(_openbabel.OBFormat_RegisterFormat)
    Display = _swig_new_instance_method(_openbabel.OBFormat_Display)
    FormatFromMIME = _swig_new_static_method(_openbabel.OBFormat_FormatFromMIME)
    __swig_destroy__ = _openbabel.delete_OBFormat

# Register OBFormat in _openbabel:
_openbabel.OBFormat_swigregister(OBFormat)
class OBConversion(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBConversion_swiginit(self, _openbabel.new_OBConversion(*args))
    __swig_destroy__ = _openbabel.delete_OBConversion
    RegisterFormat = _swig_new_static_method(_openbabel.OBConversion_RegisterFormat)
    FindFormat = _swig_new_static_method(_openbabel.OBConversion_FindFormat)
    FormatFromExt = _swig_new_static_method(_openbabel.OBConversion_FormatFromExt)
    FormatFromMIME = _swig_new_static_method(_openbabel.OBConversion_FormatFromMIME)
    Description = _swig_new_static_method(_openbabel.OBConversion_Description)
    GetInStream = _swig_new_instance_method(_openbabel.OBConversion_GetInStream)
    GetOutStream = _swig_new_instance_method(_openbabel.OBConversion_GetOutStream)
    SetInStream = _swig_new_instance_method(_openbabel.OBConversion_SetInStream)
    SetOutStream = _swig_new_instance_method(_openbabel.OBConversion_SetOutStream)
    SetInAndOutFormats = _swig_new_instance_method(_openbabel.OBConversion_SetInAndOutFormats)
    SetInFormat = _swig_new_instance_method(_openbabel.OBConversion_SetInFormat)
    SetOutFormat = _swig_new_instance_method(_openbabel.OBConversion_SetOutFormat)
    GetInFormat = _swig_new_instance_method(_openbabel.OBConversion_GetInFormat)
    GetOutFormat = _swig_new_instance_method(_openbabel.OBConversion_GetOutFormat)
    GetInGzipped = _swig_new_instance_method(_openbabel.OBConversion_GetInGzipped)
    GetOutGzipped = _swig_new_instance_method(_openbabel.OBConversion_GetOutGzipped)
    GetInFilename = _swig_new_instance_method(_openbabel.OBConversion_GetInFilename)
    GetOutFilename = _swig_new_instance_method(_openbabel.OBConversion_GetOutFilename)
    GetInPos = _swig_new_instance_method(_openbabel.OBConversion_GetInPos)
    GetInLen = _swig_new_instance_method(_openbabel.OBConversion_GetInLen)
    GetTitle = _swig_new_instance_method(_openbabel.OBConversion_GetTitle)
    GetAuxConv = _swig_new_instance_method(_openbabel.OBConversion_GetAuxConv)
    SetAuxConv = _swig_new_instance_method(_openbabel.OBConversion_SetAuxConv)
    INOPTIONS = _openbabel.OBConversion_INOPTIONS
    OUTOPTIONS = _openbabel.OBConversion_OUTOPTIONS
    GENOPTIONS = _openbabel.OBConversion_GENOPTIONS
    ALL = _openbabel.OBConversion_ALL
    IsOption = _swig_new_instance_method(_openbabel.OBConversion_IsOption)
    GetOptions = _swig_new_instance_method(_openbabel.OBConversion_GetOptions)
    AddOption = _swig_new_instance_method(_openbabel.OBConversion_AddOption)
    RemoveOption = _swig_new_instance_method(_openbabel.OBConversion_RemoveOption)
    SetOptions = _swig_new_instance_method(_openbabel.OBConversion_SetOptions)
    RegisterOptionParam = _swig_new_static_method(_openbabel.OBConversion_RegisterOptionParam)
    GetOptionParams = _swig_new_static_method(_openbabel.OBConversion_GetOptionParams)
    CopyOptions = _swig_new_instance_method(_openbabel.OBConversion_CopyOptions)
    GetSupportedInputFormat = _swig_new_instance_method(_openbabel.OBConversion_GetSupportedInputFormat)
    GetSupportedOutputFormat = _swig_new_instance_method(_openbabel.OBConversion_GetSupportedOutputFormat)
    Convert = _swig_new_instance_method(_openbabel.OBConversion_Convert)
    FullConvert = _swig_new_instance_method(_openbabel.OBConversion_FullConvert)
    AddChemObject = _swig_new_instance_method(_openbabel.OBConversion_AddChemObject)
    GetChemObject = _swig_new_instance_method(_openbabel.OBConversion_GetChemObject)
    IsLast = _swig_new_instance_method(_openbabel.OBConversion_IsLast)
    IsFirstInput = _swig_new_instance_method(_openbabel.OBConversion_IsFirstInput)
    SetFirstInput = _swig_new_instance_method(_openbabel.OBConversion_SetFirstInput)
    GetOutputIndex = _swig_new_instance_method(_openbabel.OBConversion_GetOutputIndex)
    SetOutputIndex = _swig_new_instance_method(_openbabel.OBConversion_SetOutputIndex)
    SetMoreFilesToCome = _swig_new_instance_method(_openbabel.OBConversion_SetMoreFilesToCome)
    SetOneObjectOnly = _swig_new_instance_method(_openbabel.OBConversion_SetOneObjectOnly)
    SetLast = _swig_new_instance_method(_openbabel.OBConversion_SetLast)
    IsLastFile = _swig_new_instance_method(_openbabel.OBConversion_IsLastFile)
    GetCount = _swig_new_instance_method(_openbabel.OBConversion_GetCount)
    GetDefaultFormat = _swig_new_static_method(_openbabel.OBConversion_GetDefaultFormat)
    Write = _swig_new_instance_method(_openbabel.OBConversion_Write)
    WriteString = _swig_new_instance_method(_openbabel.OBConversion_WriteString)
    WriteFile = _swig_new_instance_method(_openbabel.OBConversion_WriteFile)
    CloseOutFile = _swig_new_instance_method(_openbabel.OBConversion_CloseOutFile)
    Read = _swig_new_instance_method(_openbabel.OBConversion_Read)
    ReadString = _swig_new_instance_method(_openbabel.OBConversion_ReadString)
    ReadFile = _swig_new_instance_method(_openbabel.OBConversion_ReadFile)
    OpenInAndOutFiles = _swig_new_instance_method(_openbabel.OBConversion_OpenInAndOutFiles)
    ReportNumberConverted = _swig_new_instance_method(_openbabel.OBConversion_ReportNumberConverted)
    NumInputObjects = _swig_new_instance_method(_openbabel.OBConversion_NumInputObjects)

# Register OBConversion in _openbabel:
_openbabel.OBConversion_swigregister(OBConversion)
OBBondGetSmallestRingSize = _openbabel.OBBondGetSmallestRingSize
GetTypicalValence = _openbabel.GetTypicalValence
OBAtomAssignTypicalImplicitHydrogens = _openbabel.OBAtomAssignTypicalImplicitHydrogens
GetSymbol = _openbabel.GetSymbol
GetName = _openbabel.GetName
GetMass = _openbabel.GetMass
GetExactMass = _openbabel.GetExactMass
GetAtomicNum = _openbabel.GetAtomicNum
GetAllredRochowElectroNeg = _openbabel.GetAllredRochowElectroNeg
GetCovalentRad = _openbabel.GetCovalentRad
GetVdwRad = _openbabel.GetVdwRad
GetElectronAffinity = _openbabel.GetElectronAffinity
GetIonization = _openbabel.GetIonization
GetMaxBonds = _openbabel.GetMaxBonds
GetElectroNeg = _openbabel.GetElectroNeg
GetRGB = _openbabel.GetRGB
class OBResidue(OBBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBResidue_swiginit(self, _openbabel.new_OBResidue(*args))
    __swig_destroy__ = _openbabel.delete_OBResidue
    AddAtom = _swig_new_instance_method(_openbabel.OBResidue_AddAtom)
    InsertAtom = _swig_new_instance_method(_openbabel.OBResidue_InsertAtom)
    RemoveAtom = _swig_new_instance_method(_openbabel.OBResidue_RemoveAtom)
    SetName = _swig_new_instance_method(_openbabel.OBResidue_SetName)
    SetNum = _swig_new_instance_method(_openbabel.OBResidue_SetNum)
    SetChain = _swig_new_instance_method(_openbabel.OBResidue_SetChain)
    SetChainNum = _swig_new_instance_method(_openbabel.OBResidue_SetChainNum)
    SetIdx = _swig_new_instance_method(_openbabel.OBResidue_SetIdx)
    SetInsertionCode = _swig_new_instance_method(_openbabel.OBResidue_SetInsertionCode)
    SetAtomID = _swig_new_instance_method(_openbabel.OBResidue_SetAtomID)
    SetHetAtom = _swig_new_instance_method(_openbabel.OBResidue_SetHetAtom)
    SetSerialNum = _swig_new_instance_method(_openbabel.OBResidue_SetSerialNum)
    GetName = _swig_new_instance_method(_openbabel.OBResidue_GetName)
    GetNum = _swig_new_instance_method(_openbabel.OBResidue_GetNum)
    GetNumString = _swig_new_instance_method(_openbabel.OBResidue_GetNumString)
    GetNumAtoms = _swig_new_instance_method(_openbabel.OBResidue_GetNumAtoms)
    GetChain = _swig_new_instance_method(_openbabel.OBResidue_GetChain)
    GetChainNum = _swig_new_instance_method(_openbabel.OBResidue_GetChainNum)
    GetIdx = _swig_new_instance_method(_openbabel.OBResidue_GetIdx)
    GetResKey = _swig_new_instance_method(_openbabel.OBResidue_GetResKey)
    GetBonds = _swig_new_instance_method(_openbabel.OBResidue_GetBonds)
    GetAtomID = _swig_new_instance_method(_openbabel.OBResidue_GetAtomID)
    GetSerialNum = _swig_new_instance_method(_openbabel.OBResidue_GetSerialNum)
    GetInsertionCode = _swig_new_instance_method(_openbabel.OBResidue_GetInsertionCode)
    GetAminoAcidProperty = _swig_new_instance_method(_openbabel.OBResidue_GetAminoAcidProperty)
    GetAtomProperty = _swig_new_instance_method(_openbabel.OBResidue_GetAtomProperty)
    GetResidueProperty = _swig_new_instance_method(_openbabel.OBResidue_GetResidueProperty)
    IsHetAtom = _swig_new_instance_method(_openbabel.OBResidue_IsHetAtom)
    IsResidueType = _swig_new_instance_method(_openbabel.OBResidue_IsResidueType)
    BeginAtoms = _swig_new_instance_method(_openbabel.OBResidue_BeginAtoms)
    EndAtoms = _swig_new_instance_method(_openbabel.OBResidue_EndAtoms)
    BeginAtom = _swig_new_instance_method(_openbabel.OBResidue_BeginAtom)
    NextAtom = _swig_new_instance_method(_openbabel.OBResidue_NextAtom)

# Register OBResidue in _openbabel:
_openbabel.OBResidue_swigregister(OBResidue)
Dummy = cvar.Dummy
Hydrogen = cvar.Hydrogen
H = cvar.H
Helium = cvar.Helium
He = cvar.He
Lithium = cvar.Lithium
Li = cvar.Li
Beryllium = cvar.Beryllium
Be = cvar.Be
Boron = cvar.Boron
B = cvar.B
Carbon = cvar.Carbon
C = cvar.C
Nitrogen = cvar.Nitrogen
N = cvar.N
Oxygen = cvar.Oxygen
O = cvar.O
Fluorine = cvar.Fluorine
F = cvar.F
Neon = cvar.Neon
Ne = cvar.Ne
Sodium = cvar.Sodium
Na = cvar.Na
Magnesium = cvar.Magnesium
Mg = cvar.Mg
Aluminium = cvar.Aluminium
Al = cvar.Al
Silicon = cvar.Silicon
Si = cvar.Si
Phosphorus = cvar.Phosphorus
P = cvar.P
Sulfur = cvar.Sulfur
S = cvar.S
Chlorine = cvar.Chlorine
Cl = cvar.Cl
Argon = cvar.Argon
Ar = cvar.Ar
Potassium = cvar.Potassium
K = cvar.K
Calcium = cvar.Calcium
Ca = cvar.Ca
Scandium = cvar.Scandium
Sc = cvar.Sc
Titanium = cvar.Titanium
Ti = cvar.Ti
Vanadium = cvar.Vanadium
V = cvar.V
Chromium = cvar.Chromium
Cr = cvar.Cr
Manganese = cvar.Manganese
Mn = cvar.Mn
Iron = cvar.Iron
Fe = cvar.Fe
Cobalt = cvar.Cobalt
Co = cvar.Co
Nickel = cvar.Nickel
Ni = cvar.Ni
Copper = cvar.Copper
Cu = cvar.Cu
Zinc = cvar.Zinc
Zn = cvar.Zn
Gallium = cvar.Gallium
Ga = cvar.Ga
Germanium = cvar.Germanium
Ge = cvar.Ge
Arsenic = cvar.Arsenic
As = cvar.As
Selenium = cvar.Selenium
Se = cvar.Se
Bromine = cvar.Bromine
Br = cvar.Br
Krypton = cvar.Krypton
Kr = cvar.Kr
Rubidium = cvar.Rubidium
Rb = cvar.Rb
Strontium = cvar.Strontium
Sr = cvar.Sr
Yttrium = cvar.Yttrium
Y = cvar.Y
Zirconium = cvar.Zirconium
Zr = cvar.Zr
Niobium = cvar.Niobium
Nb = cvar.Nb
Molybdenum = cvar.Molybdenum
Mo = cvar.Mo
Technetium = cvar.Technetium
Tc = cvar.Tc
Ruthenium = cvar.Ruthenium
Ru = cvar.Ru
Rhodium = cvar.Rhodium
Rh = cvar.Rh
Palladium = cvar.Palladium
Pd = cvar.Pd
Silver = cvar.Silver
Ag = cvar.Ag
Cadmium = cvar.Cadmium
Cd = cvar.Cd
Indium = cvar.Indium
In = cvar.In
Tin = cvar.Tin
Sn = cvar.Sn
Antimony = cvar.Antimony
Sb = cvar.Sb
Tellurium = cvar.Tellurium
Te = cvar.Te
Iodine = cvar.Iodine
I = cvar.I
Xenon = cvar.Xenon
Xe = cvar.Xe
Caesium = cvar.Caesium
Cs = cvar.Cs
Barium = cvar.Barium
Ba = cvar.Ba
Lanthanum = cvar.Lanthanum
La = cvar.La
Cerium = cvar.Cerium
Ce = cvar.Ce
Praseodymium = cvar.Praseodymium
Pr = cvar.Pr
Neodymium = cvar.Neodymium
Nd = cvar.Nd
Promethium = cvar.Promethium
Pm = cvar.Pm
Samarium = cvar.Samarium
Sm = cvar.Sm
Europium = cvar.Europium
Eu = cvar.Eu
Gadolinium = cvar.Gadolinium
Gd = cvar.Gd
Terbium = cvar.Terbium
Tb = cvar.Tb
Dysprosium = cvar.Dysprosium
Dy = cvar.Dy
Holmium = cvar.Holmium
Ho = cvar.Ho
Erbium = cvar.Erbium
Er = cvar.Er
Thulium = cvar.Thulium
Tm = cvar.Tm
Ytterbium = cvar.Ytterbium
Yb = cvar.Yb
Lutetium = cvar.Lutetium
Lu = cvar.Lu
Hafnium = cvar.Hafnium
Hf = cvar.Hf
Tantalum = cvar.Tantalum
Ta = cvar.Ta
Tungsten = cvar.Tungsten
W = cvar.W
Rhenium = cvar.Rhenium
Re = cvar.Re
Osmium = cvar.Osmium
Os = cvar.Os
Iridium = cvar.Iridium
Ir = cvar.Ir
Platinum = cvar.Platinum
Pt = cvar.Pt
Gold = cvar.Gold
Au = cvar.Au
Mercury = cvar.Mercury
Hg = cvar.Hg
Thallium = cvar.Thallium
Tl = cvar.Tl
Lead = cvar.Lead
Pb = cvar.Pb
Bismuth = cvar.Bismuth
Bi = cvar.Bi
Polonium = cvar.Polonium
Po = cvar.Po
Astatine = cvar.Astatine
At = cvar.At
Radon = cvar.Radon
Rn = cvar.Rn
Francium = cvar.Francium
Fr = cvar.Fr
Radium = cvar.Radium
Ra = cvar.Ra
Actinium = cvar.Actinium
Ac = cvar.Ac
Thorium = cvar.Thorium
Th = cvar.Th
Protactinium = cvar.Protactinium
Pa = cvar.Pa
Uranium = cvar.Uranium
U = cvar.U
Neptunium = cvar.Neptunium
Np = cvar.Np
Plutonium = cvar.Plutonium
Pu = cvar.Pu
Americium = cvar.Americium
Am = cvar.Am
Curium = cvar.Curium
Cm = cvar.Cm
Berkelium = cvar.Berkelium
Bk = cvar.Bk
Californium = cvar.Californium
Cf = cvar.Cf
Einsteinium = cvar.Einsteinium
Es = cvar.Es
Fermium = cvar.Fermium
Fm = cvar.Fm
Mendelevium = cvar.Mendelevium
Md = cvar.Md
Nobelium = cvar.Nobelium
No = cvar.No
Lawrencium = cvar.Lawrencium
Lr = cvar.Lr
Rutherfordium = cvar.Rutherfordium
Rf = cvar.Rf
Dubnium = cvar.Dubnium
Db = cvar.Db
Seaborgium = cvar.Seaborgium
Sg = cvar.Sg
Bohrium = cvar.Bohrium
Bh = cvar.Bh
Hassium = cvar.Hassium
Hs = cvar.Hs
Meitnerium = cvar.Meitnerium
Mt = cvar.Mt
Darmstadtium = cvar.Darmstadtium
Ds = cvar.Ds
Roentgenium = cvar.Roentgenium
Rg = cvar.Rg
Copernicium = cvar.Copernicium
Cn = cvar.Cn
Nihonium = cvar.Nihonium
Nh = cvar.Nh
Flerovium = cvar.Flerovium
Fl = cvar.Fl
Moscovium = cvar.Moscovium
Mc = cvar.Mc
Livermorium = cvar.Livermorium
Lv = cvar.Lv
Tennessine = cvar.Tennessine
Ts = cvar.Ts
Oganesson = cvar.Oganesson
Og = cvar.Og

MAXSETNO = _openbabel.MAXSETNO
MAXELEM = _openbabel.MAXELEM
MAXRES = _openbabel.MAXRES
AA_ALA = _openbabel.AA_ALA
AA_GLY = _openbabel.AA_GLY
AA_LEU = _openbabel.AA_LEU
AA_SER = _openbabel.AA_SER
AA_VAL = _openbabel.AA_VAL
AA_THR = _openbabel.AA_THR
AA_LYS = _openbabel.AA_LYS
AA_ASP = _openbabel.AA_ASP
AA_ILE = _openbabel.AA_ILE
AA_ASN = _openbabel.AA_ASN
AA_GLU = _openbabel.AA_GLU
AA_PRO = _openbabel.AA_PRO
AA_ARG = _openbabel.AA_ARG
AA_PHE = _openbabel.AA_PHE
AA_GLN = _openbabel.AA_GLN
AA_TYR = _openbabel.AA_TYR
AA_HIS = _openbabel.AA_HIS
AA_CYS = _openbabel.AA_CYS
AA_MET = _openbabel.AA_MET
AA_TRP = _openbabel.AA_TRP
ACIDIC = _openbabel.ACIDIC
ACYCLIC = _openbabel.ACYCLIC
ALIPHATIC = _openbabel.ALIPHATIC
AROMATIC = _openbabel.AROMATIC
BASIC = _openbabel.BASIC
BURIED = _openbabel.BURIED
CHARGED = _openbabel.CHARGED
CYCLIC = _openbabel.CYCLIC
HYDROPHOBIC = _openbabel.HYDROPHOBIC
LARGE = _openbabel.LARGE
MEDIUM = _openbabel.MEDIUM
NEGATIVE = _openbabel.NEGATIVE
NEUTRAL = _openbabel.NEUTRAL
POLAR = _openbabel.POLAR
POSITIVE = _openbabel.POSITIVE
SMALL = _openbabel.SMALL
SURFACE = _openbabel.SURFACE
ALPHA_CARBON = _openbabel.ALPHA_CARBON
AMINO_BACKBONE = _openbabel.AMINO_BACKBONE
BACKBONE = _openbabel.BACKBONE
CYSTEINE_SULPHUR = _openbabel.CYSTEINE_SULPHUR
LIGAND = _openbabel.LIGAND
NUCLEIC_BACKBONE = _openbabel.NUCLEIC_BACKBONE
SHAPELY_BACKBONE = _openbabel.SHAPELY_BACKBONE
SHAPELY_SPECIAL = _openbabel.SHAPELY_SPECIAL
SIDECHAIN = _openbabel.SIDECHAIN
SUGAR_PHOSPHATE = _openbabel.SUGAR_PHOSPHATE
ALA = _openbabel.ALA
GLY = _openbabel.GLY
LEU = _openbabel.LEU
SER = _openbabel.SER
VAL = _openbabel.VAL
THR = _openbabel.THR
LYS = _openbabel.LYS
ASP = _openbabel.ASP
ILE = _openbabel.ILE
ASN = _openbabel.ASN
GLU = _openbabel.GLU
PRO = _openbabel.PRO
ARG = _openbabel.ARG
PHE = _openbabel.PHE
GLN = _openbabel.GLN
TYR = _openbabel.TYR
HIS = _openbabel.HIS
CYS = _openbabel.CYS
MET = _openbabel.MET
TRP = _openbabel.TRP
ASX = _openbabel.ASX
GLX = _openbabel.GLX
PCA = _openbabel.PCA
HYP = _openbabel.HYP
resA = _openbabel.resA
resC = _openbabel.resC
resG = _openbabel.resG
resT = _openbabel.resT
resU = _openbabel.resU
UPLUS = _openbabel.UPLUS
resI = _openbabel.resI
_1MA = _openbabel._1MA
_5MC = _openbabel._5MC
OMC = _openbabel.OMC
_1MG = _openbabel._1MG
_2MG = _openbabel._2MG
M2G = _openbabel.M2G
_7MG = _openbabel._7MG
OMG = _openbabel.OMG
YG = _openbabel.YG
H2U = _openbabel.H2U
_5MU = _openbabel._5MU
PSU = _openbabel.PSU
UNK = _openbabel.UNK
ACE = _openbabel.ACE
FOR = _openbabel.FOR
HOH = _openbabel.HOH
DOD = _openbabel.DOD
SO4 = _openbabel.SO4
PO4 = _openbabel.PO4
NAD = _openbabel.NAD
COA = _openbabel.COA
NAP = _openbabel.NAP
NDP = _openbabel.NDP
AMINO = _openbabel.AMINO
AMINO_NUCLEO = _openbabel.AMINO_NUCLEO
COENZYME = _openbabel.COENZYME
ION = _openbabel.ION
NUCLEO = _openbabel.NUCLEO
PROTEIN = _openbabel.PROTEIN
PURINE = _openbabel.PURINE
PYRIMIDINE = _openbabel.PYRIMIDINE
SOLVENT = _openbabel.SOLVENT
WATER = _openbabel.WATER
class OBInternalCoord(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    _a = property(_openbabel.OBInternalCoord__a_get, _openbabel.OBInternalCoord__a_set)
    _b = property(_openbabel.OBInternalCoord__b_get, _openbabel.OBInternalCoord__b_set)
    _c = property(_openbabel.OBInternalCoord__c_get, _openbabel.OBInternalCoord__c_set)
    _dst = property(_openbabel.OBInternalCoord__dst_get, _openbabel.OBInternalCoord__dst_set)
    _ang = property(_openbabel.OBInternalCoord__ang_get, _openbabel.OBInternalCoord__ang_set)
    _tor = property(_openbabel.OBInternalCoord__tor_get, _openbabel.OBInternalCoord__tor_set)

    def __init__(self, a=None, b=None, c=None, dst=0.0, ang=0.0, tor=0.0):
        _openbabel.OBInternalCoord_swiginit(self, _openbabel.new_OBInternalCoord(a, b, c, dst, ang, tor))
    __swig_destroy__ = _openbabel.delete_OBInternalCoord

# Register OBInternalCoord in _openbabel:
_openbabel.OBInternalCoord_swigregister(OBInternalCoord)
OB_4RING_ATOM = _openbabel.OB_4RING_ATOM
OB_3RING_ATOM = _openbabel.OB_3RING_ATOM
OB_AROMATIC_ATOM = _openbabel.OB_AROMATIC_ATOM
OB_RING_ATOM = _openbabel.OB_RING_ATOM
OB_DONOR_ATOM = _openbabel.OB_DONOR_ATOM
OB_ACCEPTOR_ATOM = _openbabel.OB_ACCEPTOR_ATOM
OBATOM_TYPE_LEN = _openbabel.OBATOM_TYPE_LEN
class OBAtom(OBBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Visit = property(_openbabel.OBAtom_Visit_get, _openbabel.OBAtom_Visit_set)

    def __init__(self):
        _openbabel.OBAtom_swiginit(self, _openbabel.new_OBAtom())
    __swig_destroy__ = _openbabel.delete_OBAtom
    __eq__ = _swig_new_instance_method(_openbabel.OBAtom___eq__)
    Duplicate = _swig_new_instance_method(_openbabel.OBAtom_Duplicate)
    SetIdx = _swig_new_instance_method(_openbabel.OBAtom_SetIdx)
    SetId = _swig_new_instance_method(_openbabel.OBAtom_SetId)
    SetHyb = _swig_new_instance_method(_openbabel.OBAtom_SetHyb)
    SetAtomicNum = _swig_new_instance_method(_openbabel.OBAtom_SetAtomicNum)
    SetIsotope = _swig_new_instance_method(_openbabel.OBAtom_SetIsotope)
    SetImplicitHCount = _swig_new_instance_method(_openbabel.OBAtom_SetImplicitHCount)
    SetFormalCharge = _swig_new_instance_method(_openbabel.OBAtom_SetFormalCharge)
    SetSpinMultiplicity = _swig_new_instance_method(_openbabel.OBAtom_SetSpinMultiplicity)
    SetType = _swig_new_instance_method(_openbabel.OBAtom_SetType)
    SetPartialCharge = _swig_new_instance_method(_openbabel.OBAtom_SetPartialCharge)
    SetCoordPtr = _swig_new_instance_method(_openbabel.OBAtom_SetCoordPtr)
    SetVector = _swig_new_instance_method(_openbabel.OBAtom_SetVector)
    SetResidue = _swig_new_instance_method(_openbabel.OBAtom_SetResidue)
    SetParent = _swig_new_instance_method(_openbabel.OBAtom_SetParent)
    SetAromatic = _swig_new_instance_method(_openbabel.OBAtom_SetAromatic)
    SetInRing = _swig_new_instance_method(_openbabel.OBAtom_SetInRing)
    ClearCoordPtr = _swig_new_instance_method(_openbabel.OBAtom_ClearCoordPtr)
    GetFormalCharge = _swig_new_instance_method(_openbabel.OBAtom_GetFormalCharge)
    GetAtomicNum = _swig_new_instance_method(_openbabel.OBAtom_GetAtomicNum)
    GetIsotope = _swig_new_instance_method(_openbabel.OBAtom_GetIsotope)
    GetSpinMultiplicity = _swig_new_instance_method(_openbabel.OBAtom_GetSpinMultiplicity)
    GetAtomicMass = _swig_new_instance_method(_openbabel.OBAtom_GetAtomicMass)
    GetExactMass = _swig_new_instance_method(_openbabel.OBAtom_GetExactMass)
    GetIdx = _swig_new_instance_method(_openbabel.OBAtom_GetIdx)
    GetIndex = _swig_new_instance_method(_openbabel.OBAtom_GetIndex)
    GetId = _swig_new_instance_method(_openbabel.OBAtom_GetId)
    GetCoordinateIdx = _swig_new_instance_method(_openbabel.OBAtom_GetCoordinateIdx)
    GetExplicitDegree = _swig_new_instance_method(_openbabel.OBAtom_GetExplicitDegree)
    GetTotalDegree = _swig_new_instance_method(_openbabel.OBAtom_GetTotalDegree)
    GetExplicitValence = _swig_new_instance_method(_openbabel.OBAtom_GetExplicitValence)
    GetTotalValence = _swig_new_instance_method(_openbabel.OBAtom_GetTotalValence)
    GetHyb = _swig_new_instance_method(_openbabel.OBAtom_GetHyb)
    GetImplicitHCount = _swig_new_instance_method(_openbabel.OBAtom_GetImplicitHCount)
    GetHvyDegree = _swig_new_instance_method(_openbabel.OBAtom_GetHvyDegree)
    GetHeteroDegree = _swig_new_instance_method(_openbabel.OBAtom_GetHeteroDegree)
    GetType = _swig_new_instance_method(_openbabel.OBAtom_GetType)
    GetX = _swig_new_instance_method(_openbabel.OBAtom_GetX)
    GetY = _swig_new_instance_method(_openbabel.OBAtom_GetY)
    GetZ = _swig_new_instance_method(_openbabel.OBAtom_GetZ)
    x = _swig_new_instance_method(_openbabel.OBAtom_x)
    y = _swig_new_instance_method(_openbabel.OBAtom_y)
    z = _swig_new_instance_method(_openbabel.OBAtom_z)
    GetCoordinate = _swig_new_instance_method(_openbabel.OBAtom_GetCoordinate)
    GetVector = _swig_new_instance_method(_openbabel.OBAtom_GetVector)
    GetPartialCharge = _swig_new_instance_method(_openbabel.OBAtom_GetPartialCharge)
    GetResidue = _swig_new_instance_method(_openbabel.OBAtom_GetResidue)
    GetParent = _swig_new_instance_method(_openbabel.OBAtom_GetParent)
    GetNewBondVector = _swig_new_instance_method(_openbabel.OBAtom_GetNewBondVector)
    GetBond = _swig_new_instance_method(_openbabel.OBAtom_GetBond)
    BeginBonds = _swig_new_instance_method(_openbabel.OBAtom_BeginBonds)
    EndBonds = _swig_new_instance_method(_openbabel.OBAtom_EndBonds)
    BeginBond = _swig_new_instance_method(_openbabel.OBAtom_BeginBond)
    NextBond = _swig_new_instance_method(_openbabel.OBAtom_NextBond)
    BeginNbrAtom = _swig_new_instance_method(_openbabel.OBAtom_BeginNbrAtom)
    NextNbrAtom = _swig_new_instance_method(_openbabel.OBAtom_NextNbrAtom)
    GetDistance = _swig_new_instance_method(_openbabel.OBAtom_GetDistance)
    GetAngle = _swig_new_instance_method(_openbabel.OBAtom_GetAngle)
    NewResidue = _swig_new_instance_method(_openbabel.OBAtom_NewResidue)
    AddResidue = _swig_new_instance_method(_openbabel.OBAtom_AddResidue)
    DeleteResidue = _swig_new_instance_method(_openbabel.OBAtom_DeleteResidue)
    AddBond = _swig_new_instance_method(_openbabel.OBAtom_AddBond)
    InsertBond = _swig_new_instance_method(_openbabel.OBAtom_InsertBond)
    DeleteBond = _swig_new_instance_method(_openbabel.OBAtom_DeleteBond)
    ClearBond = _swig_new_instance_method(_openbabel.OBAtom_ClearBond)
    HtoMethyl = _swig_new_instance_method(_openbabel.OBAtom_HtoMethyl)
    SetHybAndGeom = _swig_new_instance_method(_openbabel.OBAtom_SetHybAndGeom)
    CountFreeOxygens = _swig_new_instance_method(_openbabel.OBAtom_CountFreeOxygens)
    CountFreeSulfurs = _swig_new_instance_method(_openbabel.OBAtom_CountFreeSulfurs)
    ExplicitHydrogenCount = _swig_new_instance_method(_openbabel.OBAtom_ExplicitHydrogenCount)
    MemberOfRingCount = _swig_new_instance_method(_openbabel.OBAtom_MemberOfRingCount)
    MemberOfRingSize = _swig_new_instance_method(_openbabel.OBAtom_MemberOfRingSize)
    CountRingBonds = _swig_new_instance_method(_openbabel.OBAtom_CountRingBonds)
    SmallestBondAngle = _swig_new_instance_method(_openbabel.OBAtom_SmallestBondAngle)
    AverageBondAngle = _swig_new_instance_method(_openbabel.OBAtom_AverageBondAngle)
    LewisAcidBaseCounts = _swig_new_instance_method(_openbabel.OBAtom_LewisAcidBaseCounts)
    HasResidue = _swig_new_instance_method(_openbabel.OBAtom_HasResidue)
    IsHetAtom = _swig_new_instance_method(_openbabel.OBAtom_IsHetAtom)
    IsElement = _swig_new_instance_method(_openbabel.OBAtom_IsElement)
    IsAromatic = _swig_new_instance_method(_openbabel.OBAtom_IsAromatic)
    IsInRing = _swig_new_instance_method(_openbabel.OBAtom_IsInRing)
    IsInRingSize = _swig_new_instance_method(_openbabel.OBAtom_IsInRingSize)
    IsHeteroatom = _swig_new_instance_method(_openbabel.OBAtom_IsHeteroatom)
    IsConnected = _swig_new_instance_method(_openbabel.OBAtom_IsConnected)
    IsOneThree = _swig_new_instance_method(_openbabel.OBAtom_IsOneThree)
    IsOneFour = _swig_new_instance_method(_openbabel.OBAtom_IsOneFour)
    IsCarboxylOxygen = _swig_new_instance_method(_openbabel.OBAtom_IsCarboxylOxygen)
    IsPhosphateOxygen = _swig_new_instance_method(_openbabel.OBAtom_IsPhosphateOxygen)
    IsSulfateOxygen = _swig_new_instance_method(_openbabel.OBAtom_IsSulfateOxygen)
    IsNitroOxygen = _swig_new_instance_method(_openbabel.OBAtom_IsNitroOxygen)
    IsAmideNitrogen = _swig_new_instance_method(_openbabel.OBAtom_IsAmideNitrogen)
    IsPolarHydrogen = _swig_new_instance_method(_openbabel.OBAtom_IsPolarHydrogen)
    IsNonPolarHydrogen = _swig_new_instance_method(_openbabel.OBAtom_IsNonPolarHydrogen)
    IsAromaticNOxide = _swig_new_instance_method(_openbabel.OBAtom_IsAromaticNOxide)
    IsChiral = _swig_new_instance_method(_openbabel.OBAtom_IsChiral)
    IsPeriodic = _swig_new_instance_method(_openbabel.OBAtom_IsPeriodic)
    IsAxial = _swig_new_instance_method(_openbabel.OBAtom_IsAxial)
    IsHbondAcceptor = _swig_new_instance_method(_openbabel.OBAtom_IsHbondAcceptor)
    IsHbondAcceptorSimple = _swig_new_instance_method(_openbabel.OBAtom_IsHbondAcceptorSimple)
    IsHbondDonor = _swig_new_instance_method(_openbabel.OBAtom_IsHbondDonor)
    IsHbondDonorH = _swig_new_instance_method(_openbabel.OBAtom_IsHbondDonorH)
    IsMetal = _swig_new_instance_method(_openbabel.OBAtom_IsMetal)
    HasAlphaBetaUnsat = _swig_new_instance_method(_openbabel.OBAtom_HasAlphaBetaUnsat)
    HasBondOfOrder = _swig_new_instance_method(_openbabel.OBAtom_HasBondOfOrder)
    CountBondsOfOrder = _swig_new_instance_method(_openbabel.OBAtom_CountBondsOfOrder)
    HighestBondOrder = _swig_new_instance_method(_openbabel.OBAtom_HighestBondOrder)
    HasNonSingleBond = _swig_new_instance_method(_openbabel.OBAtom_HasNonSingleBond)
    HasSingleBond = _swig_new_instance_method(_openbabel.OBAtom_HasSingleBond)
    HasDoubleBond = _swig_new_instance_method(_openbabel.OBAtom_HasDoubleBond)
    HasAromaticBond = _swig_new_instance_method(_openbabel.OBAtom_HasAromaticBond)
    MatchesSMARTS = _swig_new_instance_method(_openbabel.OBAtom_MatchesSMARTS)

# Register OBAtom in _openbabel:
_openbabel.OBAtom_swigregister(OBAtom)
OB_AROMATIC_BOND = _openbabel.OB_AROMATIC_BOND
OB_WEDGE_BOND = _openbabel.OB_WEDGE_BOND
OB_HASH_BOND = _openbabel.OB_HASH_BOND
OB_RING_BOND = _openbabel.OB_RING_BOND
OB_CLOSURE_BOND = _openbabel.OB_CLOSURE_BOND
OB_WEDGE_OR_HASH_BOND = _openbabel.OB_WEDGE_OR_HASH_BOND
class OBBond(OBBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Aromatic = _openbabel.OBBond_Aromatic
    Ring = _openbabel.OBBond_Ring
    Closure = _openbabel.OBBond_Closure
    Wedge = _openbabel.OBBond_Wedge
    Hash = _openbabel.OBBond_Hash
    WedgeOrHash = _openbabel.OBBond_WedgeOrHash
    CisOrTrans = _openbabel.OBBond_CisOrTrans
    Visit = property(_openbabel.OBBond_Visit_get, _openbabel.OBBond_Visit_set)

    def __init__(self):
        _openbabel.OBBond_swiginit(self, _openbabel.new_OBBond())
    __swig_destroy__ = _openbabel.delete_OBBond
    SetIdx = _swig_new_instance_method(_openbabel.OBBond_SetIdx)
    SetId = _swig_new_instance_method(_openbabel.OBBond_SetId)
    SetBondOrder = _swig_new_instance_method(_openbabel.OBBond_SetBondOrder)
    SetBegin = _swig_new_instance_method(_openbabel.OBBond_SetBegin)
    SetEnd = _swig_new_instance_method(_openbabel.OBBond_SetEnd)
    SetParent = _swig_new_instance_method(_openbabel.OBBond_SetParent)
    SetLength = _swig_new_instance_method(_openbabel.OBBond_SetLength)
    Set = _swig_new_instance_method(_openbabel.OBBond_Set)
    SetAromatic = _swig_new_instance_method(_openbabel.OBBond_SetAromatic)
    SetWedge = _swig_new_instance_method(_openbabel.OBBond_SetWedge)
    SetHash = _swig_new_instance_method(_openbabel.OBBond_SetHash)
    SetWedgeOrHash = _swig_new_instance_method(_openbabel.OBBond_SetWedgeOrHash)
    SetInRing = _swig_new_instance_method(_openbabel.OBBond_SetInRing)
    SetClosure = _swig_new_instance_method(_openbabel.OBBond_SetClosure)
    GetIdx = _swig_new_instance_method(_openbabel.OBBond_GetIdx)
    GetId = _swig_new_instance_method(_openbabel.OBBond_GetId)
    GetBondOrder = _swig_new_instance_method(_openbabel.OBBond_GetBondOrder)
    GetFlags = _swig_new_instance_method(_openbabel.OBBond_GetFlags)
    GetBeginAtomIdx = _swig_new_instance_method(_openbabel.OBBond_GetBeginAtomIdx)
    GetEndAtomIdx = _swig_new_instance_method(_openbabel.OBBond_GetEndAtomIdx)
    GetBeginAtom = _swig_new_instance_method(_openbabel.OBBond_GetBeginAtom)
    GetEndAtom = _swig_new_instance_method(_openbabel.OBBond_GetEndAtom)
    GetNbrAtom = _swig_new_instance_method(_openbabel.OBBond_GetNbrAtom)
    GetParent = _swig_new_instance_method(_openbabel.OBBond_GetParent)
    GetEquibLength = _swig_new_instance_method(_openbabel.OBBond_GetEquibLength)
    GetLength = _swig_new_instance_method(_openbabel.OBBond_GetLength)
    GetNbrAtomIdx = _swig_new_instance_method(_openbabel.OBBond_GetNbrAtomIdx)
    FindSmallestRing = _swig_new_instance_method(_openbabel.OBBond_FindSmallestRing)
    IsAromatic = _swig_new_instance_method(_openbabel.OBBond_IsAromatic)
    IsInRing = _swig_new_instance_method(_openbabel.OBBond_IsInRing)
    IsRotor = _swig_new_instance_method(_openbabel.OBBond_IsRotor)
    IsPeriodic = _swig_new_instance_method(_openbabel.OBBond_IsPeriodic)
    IsAmide = _swig_new_instance_method(_openbabel.OBBond_IsAmide)
    IsPrimaryAmide = _swig_new_instance_method(_openbabel.OBBond_IsPrimaryAmide)
    IsSecondaryAmide = _swig_new_instance_method(_openbabel.OBBond_IsSecondaryAmide)
    IsTertiaryAmide = _swig_new_instance_method(_openbabel.OBBond_IsTertiaryAmide)
    IsEster = _swig_new_instance_method(_openbabel.OBBond_IsEster)
    IsCarbonyl = _swig_new_instance_method(_openbabel.OBBond_IsCarbonyl)
    IsClosure = _swig_new_instance_method(_openbabel.OBBond_IsClosure)
    IsWedge = _swig_new_instance_method(_openbabel.OBBond_IsWedge)
    IsHash = _swig_new_instance_method(_openbabel.OBBond_IsHash)
    IsWedgeOrHash = _swig_new_instance_method(_openbabel.OBBond_IsWedgeOrHash)
    IsCisOrTrans = _swig_new_instance_method(_openbabel.OBBond_IsCisOrTrans)
    IsDoubleBondGeometry = _swig_new_instance_method(_openbabel.OBBond_IsDoubleBondGeometry)

# Register OBBond in _openbabel:
_openbabel.OBBond_swigregister(OBBond)
class OBReaction(OBBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBReaction_swiginit(self, _openbabel.new_OBReaction())
    NumReactants = _swig_new_instance_method(_openbabel.OBReaction_NumReactants)
    NumProducts = _swig_new_instance_method(_openbabel.OBReaction_NumProducts)
    NumAgents = _swig_new_instance_method(_openbabel.OBReaction_NumAgents)
    AddReactant = _swig_new_instance_method(_openbabel.OBReaction_AddReactant)
    AddProduct = _swig_new_instance_method(_openbabel.OBReaction_AddProduct)
    SetTransitionState = _swig_new_instance_method(_openbabel.OBReaction_SetTransitionState)
    AddAgent = _swig_new_instance_method(_openbabel.OBReaction_AddAgent)
    GetReactant = _swig_new_instance_method(_openbabel.OBReaction_GetReactant)
    GetProduct = _swig_new_instance_method(_openbabel.OBReaction_GetProduct)
    GetAgent = _swig_new_instance_method(_openbabel.OBReaction_GetAgent)
    GetTransitionState = _swig_new_instance_method(_openbabel.OBReaction_GetTransitionState)
    GetTitle = _swig_new_instance_method(_openbabel.OBReaction_GetTitle)
    GetComment = _swig_new_instance_method(_openbabel.OBReaction_GetComment)
    SetTitle = _swig_new_instance_method(_openbabel.OBReaction_SetTitle)
    SetComment = _swig_new_instance_method(_openbabel.OBReaction_SetComment)
    IsReversible = _swig_new_instance_method(_openbabel.OBReaction_IsReversible)
    SetReversible = _swig_new_instance_method(_openbabel.OBReaction_SetReversible)
    ClassDescription = _swig_new_static_method(_openbabel.OBReaction_ClassDescription)
    __swig_destroy__ = _openbabel.delete_OBReaction

# Register OBReaction in _openbabel:
_openbabel.OBReaction_swigregister(OBReaction)
NO_REACTIONROLE = _openbabel.NO_REACTIONROLE
REACTANT = _openbabel.REACTANT
AGENT = _openbabel.AGENT
PRODUCT = _openbabel.PRODUCT
class OBReactionFacade(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, mol):
        _openbabel.OBReactionFacade_swiginit(self, _openbabel.new_OBReactionFacade(mol))
    __swig_destroy__ = _openbabel.delete_OBReactionFacade
    AssignComponentIds = _swig_new_instance_method(_openbabel.OBReactionFacade_AssignComponentIds)
    GetRole = _swig_new_instance_method(_openbabel.OBReactionFacade_GetRole)
    GetComponentId = _swig_new_instance_method(_openbabel.OBReactionFacade_GetComponentId)
    SetRole = _swig_new_instance_method(_openbabel.OBReactionFacade_SetRole)
    SetComponentId = _swig_new_instance_method(_openbabel.OBReactionFacade_SetComponentId)
    IsValid = _swig_new_instance_method(_openbabel.OBReactionFacade_IsValid)
    AddComponent = _swig_new_instance_method(_openbabel.OBReactionFacade_AddComponent)
    ClearInternalState = _swig_new_instance_method(_openbabel.OBReactionFacade_ClearInternalState)
    GetComponent = _swig_new_instance_method(_openbabel.OBReactionFacade_GetComponent)
    NumComponents = _swig_new_instance_method(_openbabel.OBReactionFacade_NumComponents)
    ReassignComponent = _swig_new_instance_method(_openbabel.OBReactionFacade_ReassignComponent)

# Register OBReactionFacade in _openbabel:
_openbabel.OBReactionFacade_swigregister(OBReactionFacade)

def exceptionIter(*args):
    raise Exception("""\nThis method can only be used from C++. To iterate from Python
use the Iter classes (OBMolAtomIter, etc.) as described at
http://openbabel.org/wiki/Python""")

OB_SSSR_MOL = _openbabel.OB_SSSR_MOL
OB_RINGFLAGS_MOL = _openbabel.OB_RINGFLAGS_MOL
OB_AROMATIC_MOL = _openbabel.OB_AROMATIC_MOL
OB_ATOMTYPES_MOL = _openbabel.OB_ATOMTYPES_MOL
OB_CHIRALITY_MOL = _openbabel.OB_CHIRALITY_MOL
OB_PCHARGE_MOL = _openbabel.OB_PCHARGE_MOL
OB_HYBRID_MOL = _openbabel.OB_HYBRID_MOL
OB_CLOSURE_MOL = _openbabel.OB_CLOSURE_MOL
OB_H_ADDED_MOL = _openbabel.OB_H_ADDED_MOL
OB_PH_CORRECTED_MOL = _openbabel.OB_PH_CORRECTED_MOL
OB_CHAINS_MOL = _openbabel.OB_CHAINS_MOL
OB_TCHARGE_MOL = _openbabel.OB_TCHARGE_MOL
OB_TSPIN_MOL = _openbabel.OB_TSPIN_MOL
OB_RINGTYPES_MOL = _openbabel.OB_RINGTYPES_MOL
OB_PATTERN_STRUCTURE = _openbabel.OB_PATTERN_STRUCTURE
OB_LSSR_MOL = _openbabel.OB_LSSR_MOL
OB_ATOMSPIN_MOL = _openbabel.OB_ATOMSPIN_MOL
OB_REACTION_MOL = _openbabel.OB_REACTION_MOL
OB_PERIODIC_MOL = _openbabel.OB_PERIODIC_MOL
OB_CURRENT_CONFORMER = _openbabel.OB_CURRENT_CONFORMER
AllHydrogen = _openbabel.AllHydrogen
PolarHydrogen = _openbabel.PolarHydrogen
NonPolarHydrogen = _openbabel.NonPolarHydrogen
class OBMol(OBBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBMol_swiginit(self, _openbabel.new_OBMol(*args))
    __swig_destroy__ = _openbabel.delete_OBMol
    __iadd__ = _swig_new_instance_method(_openbabel.OBMol___iadd__)
    ReserveAtoms = _swig_new_instance_method(_openbabel.OBMol_ReserveAtoms)
    DestroyAtom = _swig_new_instance_method(_openbabel.OBMol_DestroyAtom)
    DestroyBond = _swig_new_instance_method(_openbabel.OBMol_DestroyBond)
    DestroyResidue = _swig_new_instance_method(_openbabel.OBMol_DestroyResidue)
    AddAtom = _swig_new_instance_method(_openbabel.OBMol_AddAtom)
    InsertAtom = _swig_new_instance_method(_openbabel.OBMol_InsertAtom)
    AddBond = _swig_new_instance_method(_openbabel.OBMol_AddBond)
    AddResidue = _swig_new_instance_method(_openbabel.OBMol_AddResidue)
    NewAtom = _swig_new_instance_method(_openbabel.OBMol_NewAtom)
    NewBond = _swig_new_instance_method(_openbabel.OBMol_NewBond)
    NewResidue = _swig_new_instance_method(_openbabel.OBMol_NewResidue)
    DeleteAtom = _swig_new_instance_method(_openbabel.OBMol_DeleteAtom)
    DeleteBond = _swig_new_instance_method(_openbabel.OBMol_DeleteBond)
    DeleteResidue = _swig_new_instance_method(_openbabel.OBMol_DeleteResidue)
    BeginModify = _swig_new_instance_method(_openbabel.OBMol_BeginModify)
    EndModify = _swig_new_instance_method(_openbabel.OBMol_EndModify)
    GetMod = _swig_new_instance_method(_openbabel.OBMol_GetMod)
    IncrementMod = _swig_new_instance_method(_openbabel.OBMol_IncrementMod)
    DecrementMod = _swig_new_instance_method(_openbabel.OBMol_DecrementMod)
    GetFlags = _swig_new_instance_method(_openbabel.OBMol_GetFlags)
    GetTitle = _swig_new_instance_method(_openbabel.OBMol_GetTitle)
    NumAtoms = _swig_new_instance_method(_openbabel.OBMol_NumAtoms)
    NumBonds = _swig_new_instance_method(_openbabel.OBMol_NumBonds)
    NumHvyAtoms = _swig_new_instance_method(_openbabel.OBMol_NumHvyAtoms)
    NumResidues = _swig_new_instance_method(_openbabel.OBMol_NumResidues)
    NumRotors = _swig_new_instance_method(_openbabel.OBMol_NumRotors)
    GetAtom = _swig_new_instance_method(_openbabel.OBMol_GetAtom)
    GetAtomById = _swig_new_instance_method(_openbabel.OBMol_GetAtomById)
    GetFirstAtom = _swig_new_instance_method(_openbabel.OBMol_GetFirstAtom)
    GetBondById = _swig_new_instance_method(_openbabel.OBMol_GetBondById)
    GetBond = _swig_new_instance_method(_openbabel.OBMol_GetBond)
    GetResidue = _swig_new_instance_method(_openbabel.OBMol_GetResidue)
    GetInternalCoord = _swig_new_instance_method(_openbabel.OBMol_GetInternalCoord)
    GetTorsion = _swig_new_instance_method(_openbabel.OBMol_GetTorsion)
    GetAngle = _swig_new_instance_method(_openbabel.OBMol_GetAngle)
    AreInSameRing = _swig_new_instance_method(_openbabel.OBMol_AreInSameRing)
    GetFormula = _swig_new_instance_method(_openbabel.OBMol_GetFormula)
    GetSpacedFormula = _swig_new_instance_method(_openbabel.OBMol_GetSpacedFormula)
    GetMolWt = _swig_new_instance_method(_openbabel.OBMol_GetMolWt)
    GetExactMass = _swig_new_instance_method(_openbabel.OBMol_GetExactMass)
    GetTotalCharge = _swig_new_instance_method(_openbabel.OBMol_GetTotalCharge)
    GetTotalSpinMultiplicity = _swig_new_instance_method(_openbabel.OBMol_GetTotalSpinMultiplicity)
    GetDimension = _swig_new_instance_method(_openbabel.OBMol_GetDimension)
    GetCoordinates = _swig_new_instance_method(_openbabel.OBMol_GetCoordinates)
    GetSSSR = _swig_new_instance_method(_openbabel.OBMol_GetSSSR)
    GetLSSR = _swig_new_instance_method(_openbabel.OBMol_GetLSSR)
    AutomaticFormalCharge = _swig_new_instance_method(_openbabel.OBMol_AutomaticFormalCharge)
    AutomaticPartialCharge = _swig_new_instance_method(_openbabel.OBMol_AutomaticPartialCharge)
    SetTitle = _swig_new_instance_method(_openbabel.OBMol_SetTitle)
    SetFormula = _swig_new_instance_method(_openbabel.OBMol_SetFormula)
    SetEnergy = _swig_new_instance_method(_openbabel.OBMol_SetEnergy)
    SetDimension = _swig_new_instance_method(_openbabel.OBMol_SetDimension)
    SetTotalCharge = _swig_new_instance_method(_openbabel.OBMol_SetTotalCharge)
    SetTotalSpinMultiplicity = _swig_new_instance_method(_openbabel.OBMol_SetTotalSpinMultiplicity)
    SetInternalCoord = _swig_new_instance_method(_openbabel.OBMol_SetInternalCoord)
    SetAutomaticFormalCharge = _swig_new_instance_method(_openbabel.OBMol_SetAutomaticFormalCharge)
    SetAutomaticPartialCharge = _swig_new_instance_method(_openbabel.OBMol_SetAutomaticPartialCharge)
    SetAromaticPerceived = _swig_new_instance_method(_openbabel.OBMol_SetAromaticPerceived)
    SetSSSRPerceived = _swig_new_instance_method(_openbabel.OBMol_SetSSSRPerceived)
    SetLSSRPerceived = _swig_new_instance_method(_openbabel.OBMol_SetLSSRPerceived)
    SetRingAtomsAndBondsPerceived = _swig_new_instance_method(_openbabel.OBMol_SetRingAtomsAndBondsPerceived)
    SetAtomTypesPerceived = _swig_new_instance_method(_openbabel.OBMol_SetAtomTypesPerceived)
    SetRingTypesPerceived = _swig_new_instance_method(_openbabel.OBMol_SetRingTypesPerceived)
    SetChainsPerceived = _swig_new_instance_method(_openbabel.OBMol_SetChainsPerceived)
    SetChiralityPerceived = _swig_new_instance_method(_openbabel.OBMol_SetChiralityPerceived)
    SetPartialChargesPerceived = _swig_new_instance_method(_openbabel.OBMol_SetPartialChargesPerceived)
    SetHybridizationPerceived = _swig_new_instance_method(_openbabel.OBMol_SetHybridizationPerceived)
    SetClosureBondsPerceived = _swig_new_instance_method(_openbabel.OBMol_SetClosureBondsPerceived)
    SetHydrogensAdded = _swig_new_instance_method(_openbabel.OBMol_SetHydrogensAdded)
    SetCorrectedForPH = _swig_new_instance_method(_openbabel.OBMol_SetCorrectedForPH)
    SetSpinMultiplicityAssigned = _swig_new_instance_method(_openbabel.OBMol_SetSpinMultiplicityAssigned)
    SetIsPatternStructure = _swig_new_instance_method(_openbabel.OBMol_SetIsPatternStructure)
    SetIsReaction = _swig_new_instance_method(_openbabel.OBMol_SetIsReaction)
    SetPeriodicMol = _swig_new_instance_method(_openbabel.OBMol_SetPeriodicMol)
    HasFlag = _swig_new_instance_method(_openbabel.OBMol_HasFlag)
    SetFlag = _swig_new_instance_method(_openbabel.OBMol_SetFlag)
    UnsetFlag = _swig_new_instance_method(_openbabel.OBMol_UnsetFlag)
    SetFlags = _swig_new_instance_method(_openbabel.OBMol_SetFlags)
    ClassDescription = _swig_new_static_method(_openbabel.OBMol_ClassDescription)
    RenumberAtoms = _swig_new_instance_method(_openbabel.OBMol_RenumberAtoms)
    SetCoordinates = _swig_new_instance_method(_openbabel.OBMol_SetCoordinates)
    ToInertialFrame = _swig_new_instance_method(_openbabel.OBMol_ToInertialFrame)
    Translate = _swig_new_instance_method(_openbabel.OBMol_Translate)
    Rotate = _swig_new_instance_method(_openbabel.OBMol_Rotate)
    DeleteHydrogens = _swig_new_instance_method(_openbabel.OBMol_DeleteHydrogens)
    DeletePolarHydrogens = _swig_new_instance_method(_openbabel.OBMol_DeletePolarHydrogens)
    DeleteNonPolarHydrogens = _swig_new_instance_method(_openbabel.OBMol_DeleteNonPolarHydrogens)
    DeleteHydrogen = _swig_new_instance_method(_openbabel.OBMol_DeleteHydrogen)
    AddHydrogens = _swig_new_instance_method(_openbabel.OBMol_AddHydrogens)
    AddPolarHydrogens = _swig_new_instance_method(_openbabel.OBMol_AddPolarHydrogens)
    AddNonPolarHydrogens = _swig_new_instance_method(_openbabel.OBMol_AddNonPolarHydrogens)
    AddNewHydrogens = _swig_new_instance_method(_openbabel.OBMol_AddNewHydrogens)
    StripSalts = _swig_new_instance_method(_openbabel.OBMol_StripSalts)
    Separate = _swig_new_instance_method(_openbabel.OBMol_Separate)
    GetNextFragment = _swig_new_instance_method(_openbabel.OBMol_GetNextFragment)
    CopySubstructure = _swig_new_instance_method(_openbabel.OBMol_CopySubstructure)
    ConvertDativeBonds = _swig_new_instance_method(_openbabel.OBMol_ConvertDativeBonds)
    MakeDativeBonds = _swig_new_instance_method(_openbabel.OBMol_MakeDativeBonds)
    ConvertZeroBonds = _swig_new_instance_method(_openbabel.OBMol_ConvertZeroBonds)
    CorrectForPH = _swig_new_instance_method(_openbabel.OBMol_CorrectForPH)
    AssignSpinMultiplicity = _swig_new_instance_method(_openbabel.OBMol_AssignSpinMultiplicity)
    AssignTotalChargeToAtoms = _swig_new_instance_method(_openbabel.OBMol_AssignTotalChargeToAtoms)
    Center = _swig_new_instance_method(_openbabel.OBMol_Center)
    FindSSSR = _swig_new_instance_method(_openbabel.OBMol_FindSSSR)
    FindLSSR = _swig_new_instance_method(_openbabel.OBMol_FindLSSR)
    FindRingAtomsAndBonds = _swig_new_instance_method(_openbabel.OBMol_FindRingAtomsAndBonds)
    FindChildren = _swig_new_instance_method(_openbabel.OBMol_FindChildren)
    FindLargestFragment = _swig_new_instance_method(_openbabel.OBMol_FindLargestFragment)
    ContigFragList = _swig_new_instance_method(_openbabel.OBMol_ContigFragList)
    Align = _swig_new_instance_method(_openbabel.OBMol_Align)
    ConnectTheDots = _swig_new_instance_method(_openbabel.OBMol_ConnectTheDots)
    PerceiveBondOrders = _swig_new_instance_method(_openbabel.OBMol_PerceiveBondOrders)
    FindAngles = _swig_new_instance_method(_openbabel.OBMol_FindAngles)
    FindTorsions = _swig_new_instance_method(_openbabel.OBMol_FindTorsions)
    GetGTDVector = _swig_new_instance_method(_openbabel.OBMol_GetGTDVector)
    GetGIVector = _swig_new_instance_method(_openbabel.OBMol_GetGIVector)
    GetGIDVector = _swig_new_instance_method(_openbabel.OBMol_GetGIDVector)
    Has2D = _swig_new_instance_method(_openbabel.OBMol_Has2D)
    Has3D = _swig_new_instance_method(_openbabel.OBMol_Has3D)
    HasNonZeroCoords = _swig_new_instance_method(_openbabel.OBMol_HasNonZeroCoords)
    HasAromaticPerceived = _swig_new_instance_method(_openbabel.OBMol_HasAromaticPerceived)
    HasSSSRPerceived = _swig_new_instance_method(_openbabel.OBMol_HasSSSRPerceived)
    HasLSSRPerceived = _swig_new_instance_method(_openbabel.OBMol_HasLSSRPerceived)
    HasRingAtomsAndBondsPerceived = _swig_new_instance_method(_openbabel.OBMol_HasRingAtomsAndBondsPerceived)
    HasAtomTypesPerceived = _swig_new_instance_method(_openbabel.OBMol_HasAtomTypesPerceived)
    HasRingTypesPerceived = _swig_new_instance_method(_openbabel.OBMol_HasRingTypesPerceived)
    HasChiralityPerceived = _swig_new_instance_method(_openbabel.OBMol_HasChiralityPerceived)
    HasPartialChargesPerceived = _swig_new_instance_method(_openbabel.OBMol_HasPartialChargesPerceived)
    HasHybridizationPerceived = _swig_new_instance_method(_openbabel.OBMol_HasHybridizationPerceived)
    HasClosureBondsPerceived = _swig_new_instance_method(_openbabel.OBMol_HasClosureBondsPerceived)
    HasChainsPerceived = _swig_new_instance_method(_openbabel.OBMol_HasChainsPerceived)
    HasHydrogensAdded = _swig_new_instance_method(_openbabel.OBMol_HasHydrogensAdded)
    IsCorrectedForPH = _swig_new_instance_method(_openbabel.OBMol_IsCorrectedForPH)
    HasSpinMultiplicityAssigned = _swig_new_instance_method(_openbabel.OBMol_HasSpinMultiplicityAssigned)
    IsReaction = _swig_new_instance_method(_openbabel.OBMol_IsReaction)
    IsPeriodic = _swig_new_instance_method(_openbabel.OBMol_IsPeriodic)
    Empty = _swig_new_instance_method(_openbabel.OBMol_Empty)
    NumConformers = _swig_new_instance_method(_openbabel.OBMol_NumConformers)
    SetConformers = _swig_new_instance_method(_openbabel.OBMol_SetConformers)
    AddConformer = _swig_new_instance_method(_openbabel.OBMol_AddConformer)
    SetConformer = _swig_new_instance_method(_openbabel.OBMol_SetConformer)
    CopyConformer = _swig_new_instance_method(_openbabel.OBMol_CopyConformer)
    DeleteConformer = _swig_new_instance_method(_openbabel.OBMol_DeleteConformer)
    GetConformer = _swig_new_instance_method(_openbabel.OBMol_GetConformer)
    SetEnergies = _swig_new_instance_method(_openbabel.OBMol_SetEnergies)
    GetEnergies = _swig_new_instance_method(_openbabel.OBMol_GetEnergies)
    GetEnergy = _swig_new_instance_method(_openbabel.OBMol_GetEnergy)
    BeginConformer = _swig_new_instance_method(_openbabel.OBMol_BeginConformer)
    NextConformer = _swig_new_instance_method(_openbabel.OBMol_NextConformer)
    GetConformers = _swig_new_instance_method(_openbabel.OBMol_GetConformers)
    BeginInternalCoord = _swig_new_instance_method(_openbabel.OBMol_BeginInternalCoord)
    NextInternalCoord = _swig_new_instance_method(_openbabel.OBMol_NextInternalCoord)
    SetTorsion = _swig_new_instance_method(_openbabel.OBMol_SetTorsion)

# Register OBMol in _openbabel:
_openbabel.OBMol_swigregister(OBMol)
ThrowError = _openbabel.ThrowError
CartesianToInternal = _openbabel.CartesianToInternal
InternalToCartesian = _openbabel.InternalToCartesian
NewExtension = _openbabel.NewExtension
BUFF_SIZE = _openbabel.BUFF_SIZE
get_rmat = _openbabel.get_rmat
ob_make_rmat = _openbabel.ob_make_rmat
qtrfit = _openbabel.qtrfit
superimpose = _openbabel.superimpose

OBMol.BeginAtoms = OBMol.EndAtoms = OBMol.BeginAtom = OBMol.EndAtom = exceptionIter
OBMol.BeginBonds = OBMol.EndBonds = OBMol.BeginBond = OBMol.EndBond = exceptionIter
OBMol.BeginResidues = OBMol.EndResidues = OBMol.BeginResidue = OBMol.EndResidue = exceptionIter

class OBRing(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ring_id = property(_openbabel.OBRing_ring_id_get, _openbabel.OBRing_ring_id_set)
    _path = property(_openbabel.OBRing__path_get, _openbabel.OBRing__path_set)
    _pathset = property(_openbabel.OBRing__pathset_get, _openbabel.OBRing__pathset_set)

    def __init__(self, *args):
        _openbabel.OBRing_swiginit(self, _openbabel.new_OBRing(*args))
    Size = _swig_new_instance_method(_openbabel.OBRing_Size)
    PathSize = _swig_new_instance_method(_openbabel.OBRing_PathSize)
    IsAromatic = _swig_new_instance_method(_openbabel.OBRing_IsAromatic)
    SetType = _swig_new_instance_method(_openbabel.OBRing_SetType)
    GetType = _swig_new_instance_method(_openbabel.OBRing_GetType)
    GetRootAtom = _swig_new_instance_method(_openbabel.OBRing_GetRootAtom)
    IsMember = _swig_new_instance_method(_openbabel.OBRing_IsMember)
    IsInRing = _swig_new_instance_method(_openbabel.OBRing_IsInRing)
    SetParent = _swig_new_instance_method(_openbabel.OBRing_SetParent)
    GetParent = _swig_new_instance_method(_openbabel.OBRing_GetParent)
    findCenterAndNormal = _swig_new_instance_method(_openbabel.OBRing_findCenterAndNormal)
    __swig_destroy__ = _openbabel.delete_OBRing

# Register OBRing in _openbabel:
_openbabel.OBRing_swigregister(OBRing)
NoId = cvar.NoId

CompareRingSize = _openbabel.CompareRingSize
class OBRingSearch(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRingSearch_swiginit(self, _openbabel.new_OBRingSearch())
    __swig_destroy__ = _openbabel.delete_OBRingSearch
    SortRings = _swig_new_instance_method(_openbabel.OBRingSearch_SortRings)
    RemoveRedundant = _swig_new_instance_method(_openbabel.OBRingSearch_RemoveRedundant)
    AddRingFromClosure = _swig_new_instance_method(_openbabel.OBRingSearch_AddRingFromClosure)
    SaveUniqueRing = _swig_new_instance_method(_openbabel.OBRingSearch_SaveUniqueRing)
    WriteRings = _swig_new_instance_method(_openbabel.OBRingSearch_WriteRings)
    BeginRings = _swig_new_instance_method(_openbabel.OBRingSearch_BeginRings)
    EndRings = _swig_new_instance_method(_openbabel.OBRingSearch_EndRings)

# Register OBRingSearch in _openbabel:
_openbabel.OBRingSearch_swigregister(OBRingSearch)
class OBRTree(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2, arg3):
        _openbabel.OBRTree_swiginit(self, _openbabel.new_OBRTree(arg2, arg3))
    __swig_destroy__ = _openbabel.delete_OBRTree
    GetAtomIdx = _swig_new_instance_method(_openbabel.OBRTree_GetAtomIdx)
    PathToRoot = _swig_new_instance_method(_openbabel.OBRTree_PathToRoot)

# Register OBRTree in _openbabel:
_openbabel.OBRTree_swigregister(OBRTree)
class OBSmartsPattern(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _openbabel.delete_OBSmartsPattern

    def __init__(self, *args):
        _openbabel.OBSmartsPattern_swiginit(self, _openbabel.new_OBSmartsPattern(*args))
    Init = _swig_new_instance_method(_openbabel.OBSmartsPattern_Init)
    GetSMARTS = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetSMARTS)
    Empty = _swig_new_instance_method(_openbabel.OBSmartsPattern_Empty)
    IsValid = _swig_new_instance_method(_openbabel.OBSmartsPattern_IsValid)
    NumAtoms = _swig_new_instance_method(_openbabel.OBSmartsPattern_NumAtoms)
    NumBonds = _swig_new_instance_method(_openbabel.OBSmartsPattern_NumBonds)
    GetBond = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetBond)
    GetAtomicNum = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetAtomicNum)
    GetCharge = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetCharge)
    GetVectorBinding = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetVectorBinding)
    All = _openbabel.OBSmartsPattern_All
    Single = _openbabel.OBSmartsPattern_Single
    AllUnique = _openbabel.OBSmartsPattern_AllUnique
    Match = _swig_new_instance_method(_openbabel.OBSmartsPattern_Match)
    HasMatch = _swig_new_instance_method(_openbabel.OBSmartsPattern_HasMatch)
    RestrictedMatch = _swig_new_instance_method(_openbabel.OBSmartsPattern_RestrictedMatch)
    NumMatches = _swig_new_instance_method(_openbabel.OBSmartsPattern_NumMatches)
    GetMapList = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetMapList)
    BeginMList = _swig_new_instance_method(_openbabel.OBSmartsPattern_BeginMList)
    EndMList = _swig_new_instance_method(_openbabel.OBSmartsPattern_EndMList)
    GetUMapList = _swig_new_instance_method(_openbabel.OBSmartsPattern_GetUMapList)
    WriteMapList = _swig_new_instance_method(_openbabel.OBSmartsPattern_WriteMapList)

# Register OBSmartsPattern in _openbabel:
_openbabel.OBSmartsPattern_swigregister(OBSmartsPattern)
class OBSmartsMatcher(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBSmartsMatcher_swiginit(self, _openbabel.new_OBSmartsMatcher())
    __swig_destroy__ = _openbabel.delete_OBSmartsMatcher
    match = _swig_new_instance_method(_openbabel.OBSmartsMatcher_match)

# Register OBSmartsMatcher in _openbabel:
_openbabel.OBSmartsMatcher_swigregister(OBSmartsMatcher)
class OBSSMatch(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2, arg3):
        _openbabel.OBSSMatch_swiginit(self, _openbabel.new_OBSSMatch(arg2, arg3))
    __swig_destroy__ = _openbabel.delete_OBSSMatch
    Match = _swig_new_instance_method(_openbabel.OBSSMatch_Match)

# Register OBSSMatch in _openbabel:
_openbabel.OBSSMatch_swigregister(OBSSMatch)
SmartsLexReplace = _openbabel.SmartsLexReplace
class AliasData(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.AliasData_swiginit(self, _openbabel.new_AliasData())
    SetAlias = _swig_new_instance_method(_openbabel.AliasData_SetAlias)
    GetAlias = _swig_new_instance_method(_openbabel.AliasData_GetAlias)
    GetColor = _swig_new_instance_method(_openbabel.AliasData_GetColor)
    SetColor = _swig_new_instance_method(_openbabel.AliasData_SetColor)
    IsExpanded = _swig_new_instance_method(_openbabel.AliasData_IsExpanded)
    RevertToAliasForm = _swig_new_static_method(_openbabel.AliasData_RevertToAliasForm)
    Expand = _swig_new_instance_method(_openbabel.AliasData_Expand)
    __swig_destroy__ = _openbabel.delete_AliasData

# Register AliasData in _openbabel:
_openbabel.AliasData_swigregister(AliasData)
AliasDataType = cvar.AliasDataType

class OBFingerprint(OBPlugin):
    thisown = 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
    Default = _swig_new_static_method(_openbabel.OBFingerprint_Default)
    FindType = _swig_new_static_method(_openbabel.OBFingerprint_FindType)
    __swig_destroy__ = _openbabel.delete_OBFingerprint
    SetBit = _swig_new_instance_method(_openbabel.OBFingerprint_SetBit)
    GetBit = _swig_new_instance_method(_openbabel.OBFingerprint_GetBit)
    Fold = _swig_new_instance_method(_openbabel.OBFingerprint_Fold)
    GetFingerprint = _swig_new_instance_method(_openbabel.OBFingerprint_GetFingerprint)
    FPT_UNIQUEBITS = _openbabel.OBFingerprint_FPT_UNIQUEBITS
    FPT_NOINFO = _openbabel.OBFingerprint_FPT_NOINFO
    Flags = _swig_new_instance_method(_openbabel.OBFingerprint_Flags)
    SetFlags = _swig_new_instance_method(_openbabel.OBFingerprint_SetFlags)
    DescribeBits = _swig_new_instance_method(_openbabel.OBFingerprint_DescribeBits)
    Tanimoto = _swig_new_static_method(_openbabel.OBFingerprint_Tanimoto)
    Getbitsperint = _swig_new_static_method(_openbabel.OBFingerprint_Getbitsperint)
    FindFingerprint = _swig_new_static_method(_openbabel.OBFingerprint_FindFingerprint)

# Register OBFingerprint in _openbabel:
_openbabel.OBFingerprint_swigregister(OBFingerprint)
class FptIndexHeader(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    headerlength = property(_openbabel.FptIndexHeader_headerlength_get, _openbabel.FptIndexHeader_headerlength_set)
    nEntries = property(_openbabel.FptIndexHeader_nEntries_get, _openbabel.FptIndexHeader_nEntries_set)
    words = property(_openbabel.FptIndexHeader_words_get, _openbabel.FptIndexHeader_words_set)
    fpid = property(_openbabel.FptIndexHeader_fpid_get, _openbabel.FptIndexHeader_fpid_set)
    seek64 = property(_openbabel.FptIndexHeader_seek64_get, _openbabel.FptIndexHeader_seek64_set)
    datafilename = property(_openbabel.FptIndexHeader_datafilename_get, _openbabel.FptIndexHeader_datafilename_set)

    def __init__(self):
        _openbabel.FptIndexHeader_swiginit(self, _openbabel.new_FptIndexHeader())
    __swig_destroy__ = _openbabel.delete_FptIndexHeader

# Register FptIndexHeader in _openbabel:
_openbabel.FptIndexHeader_swigregister(FptIndexHeader)
class FastSearch(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ReadIndexFile = _swig_new_instance_method(_openbabel.FastSearch_ReadIndexFile)
    ReadIndex = _swig_new_instance_method(_openbabel.FastSearch_ReadIndex)
    __swig_destroy__ = _openbabel.delete_FastSearch
    Find = _swig_new_instance_method(_openbabel.FastSearch_Find)
    FindMatch = _swig_new_instance_method(_openbabel.FastSearch_FindMatch)
    FindSimilar = _swig_new_instance_method(_openbabel.FastSearch_FindSimilar)
    GetFingerprint = _swig_new_instance_method(_openbabel.FastSearch_GetFingerprint)
    GetIndexHeader = _swig_new_instance_method(_openbabel.FastSearch_GetIndexHeader)

    def __init__(self):
        _openbabel.FastSearch_swiginit(self, _openbabel.new_FastSearch())

# Register FastSearch in _openbabel:
_openbabel.FastSearch_swigregister(FastSearch)
class FastSearchIndexer(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.FastSearchIndexer_swiginit(self, _openbabel.new_FastSearchIndexer(*args))
    __swig_destroy__ = _openbabel.delete_FastSearchIndexer
    Add = _swig_new_instance_method(_openbabel.FastSearchIndexer_Add)

# Register FastSearchIndexer in _openbabel:
_openbabel.FastSearchIndexer_swigregister(FastSearchIndexer)
class OBDescriptor(OBPlugin):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Default = _swig_new_static_method(_openbabel.OBDescriptor_Default)

    def __init__(self, ID, IsDefault=False):
        _openbabel.OBDescriptor_swiginit(self, _openbabel.new_OBDescriptor(ID, IsDefault))
    FindType = _swig_new_static_method(_openbabel.OBDescriptor_FindType)
    Predict = _swig_new_instance_method(_openbabel.OBDescriptor_Predict)
    PredictAndSave = _swig_new_instance_method(_openbabel.OBDescriptor_PredictAndSave)
    GetStringValue = _swig_new_instance_method(_openbabel.OBDescriptor_GetStringValue)
    Compare = _swig_new_instance_method(_openbabel.OBDescriptor_Compare)
    Display = _swig_new_instance_method(_openbabel.OBDescriptor_Display)
    Order = _swig_new_instance_method(_openbabel.OBDescriptor_Order)
    FilterCompare = _swig_new_static_method(_openbabel.OBDescriptor_FilterCompare)
    AddProperties = _swig_new_static_method(_openbabel.OBDescriptor_AddProperties)
    DeleteProperties = _swig_new_static_method(_openbabel.OBDescriptor_DeleteProperties)
    GetValues = _swig_new_static_method(_openbabel.OBDescriptor_GetValues)
    GetIdentifier = _swig_new_static_method(_openbabel.OBDescriptor_GetIdentifier)
    __swig_destroy__ = _openbabel.delete_OBDescriptor

# Register OBDescriptor in _openbabel:
_openbabel.OBDescriptor_swigregister(OBDescriptor)
OBFF_LOGLVL_NONE = _openbabel.OBFF_LOGLVL_NONE
OBFF_LOGLVL_LOW = _openbabel.OBFF_LOGLVL_LOW
OBFF_LOGLVL_MEDIUM = _openbabel.OBFF_LOGLVL_MEDIUM
OBFF_LOGLVL_HIGH = _openbabel.OBFF_LOGLVL_HIGH
OBFF_ENERGY = _openbabel.OBFF_ENERGY
OBFF_EBOND = _openbabel.OBFF_EBOND
OBFF_EANGLE = _openbabel.OBFF_EANGLE
OBFF_ESTRBND = _openbabel.OBFF_ESTRBND
OBFF_ETORSION = _openbabel.OBFF_ETORSION
OBFF_EOOP = _openbabel.OBFF_EOOP
OBFF_EVDW = _openbabel.OBFF_EVDW
OBFF_EELECTROSTATIC = _openbabel.OBFF_EELECTROSTATIC
OBFF_CONST_IGNORE = _openbabel.OBFF_CONST_IGNORE
OBFF_CONST_ATOM = _openbabel.OBFF_CONST_ATOM
OBFF_CONST_ATOM_X = _openbabel.OBFF_CONST_ATOM_X
OBFF_CONST_ATOM_Y = _openbabel.OBFF_CONST_ATOM_Y
OBFF_CONST_ATOM_Z = _openbabel.OBFF_CONST_ATOM_Z
OBFF_CONST_DISTANCE = _openbabel.OBFF_CONST_DISTANCE
OBFF_CONST_ANGLE = _openbabel.OBFF_CONST_ANGLE
OBFF_CONST_TORSION = _openbabel.OBFF_CONST_TORSION
OBFF_CONST_CHIRAL = _openbabel.OBFF_CONST_CHIRAL
OBFF_NUMERICAL_GRADIENT = _openbabel.OBFF_NUMERICAL_GRADIENT
OBFF_ANALYTICAL_GRADIENT = _openbabel.OBFF_ANALYTICAL_GRADIENT
class LineSearchType(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Simple = _openbabel.LineSearchType_Simple
    Newton2Num = _openbabel.LineSearchType_Newton2Num

    def __init__(self):
        _openbabel.LineSearchType_swiginit(self, _openbabel.new_LineSearchType())
    __swig_destroy__ = _openbabel.delete_LineSearchType

# Register LineSearchType in _openbabel:
_openbabel.LineSearchType_swigregister(LineSearchType)
KCAL_TO_KJ = cvar.KCAL_TO_KJ
GAS_CONSTANT = cvar.GAS_CONSTANT

class OBFFParameter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    a = property(_openbabel.OBFFParameter_a_get, _openbabel.OBFFParameter_a_set)
    b = property(_openbabel.OBFFParameter_b_get, _openbabel.OBFFParameter_b_set)
    c = property(_openbabel.OBFFParameter_c_get, _openbabel.OBFFParameter_c_set)
    d = property(_openbabel.OBFFParameter_d_get, _openbabel.OBFFParameter_d_set)
    _a = property(_openbabel.OBFFParameter__a_get, _openbabel.OBFFParameter__a_set)
    _b = property(_openbabel.OBFFParameter__b_get, _openbabel.OBFFParameter__b_set)
    _c = property(_openbabel.OBFFParameter__c_get, _openbabel.OBFFParameter__c_set)
    _d = property(_openbabel.OBFFParameter__d_get, _openbabel.OBFFParameter__d_set)
    _ipar = property(_openbabel.OBFFParameter__ipar_get, _openbabel.OBFFParameter__ipar_set)
    _dpar = property(_openbabel.OBFFParameter__dpar_get, _openbabel.OBFFParameter__dpar_set)
    clear = _swig_new_instance_method(_openbabel.OBFFParameter_clear)

    def __init__(self):
        _openbabel.OBFFParameter_swiginit(self, _openbabel.new_OBFFParameter())
    __swig_destroy__ = _openbabel.delete_OBFFParameter

# Register OBFFParameter in _openbabel:
_openbabel.OBFFParameter_swigregister(OBFFParameter)
class OBFFCalculation2(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    energy = property(_openbabel.OBFFCalculation2_energy_get, _openbabel.OBFFCalculation2_energy_set)
    a = property(_openbabel.OBFFCalculation2_a_get, _openbabel.OBFFCalculation2_a_set)
    b = property(_openbabel.OBFFCalculation2_b_get, _openbabel.OBFFCalculation2_b_set)
    idx_a = property(_openbabel.OBFFCalculation2_idx_a_get, _openbabel.OBFFCalculation2_idx_a_set)
    idx_b = property(_openbabel.OBFFCalculation2_idx_b_get, _openbabel.OBFFCalculation2_idx_b_set)
    pos_a = property(_openbabel.OBFFCalculation2_pos_a_get, _openbabel.OBFFCalculation2_pos_a_set)
    pos_b = property(_openbabel.OBFFCalculation2_pos_b_get, _openbabel.OBFFCalculation2_pos_b_set)
    force_a = property(_openbabel.OBFFCalculation2_force_a_get, _openbabel.OBFFCalculation2_force_a_set)
    force_b = property(_openbabel.OBFFCalculation2_force_b_get, _openbabel.OBFFCalculation2_force_b_set)
    __swig_destroy__ = _openbabel.delete_OBFFCalculation2
    SetupPointers = _swig_new_instance_method(_openbabel.OBFFCalculation2_SetupPointers)

    def __init__(self):
        _openbabel.OBFFCalculation2_swiginit(self, _openbabel.new_OBFFCalculation2())

# Register OBFFCalculation2 in _openbabel:
_openbabel.OBFFCalculation2_swigregister(OBFFCalculation2)
class OBFFCalculation3(OBFFCalculation2):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    c = property(_openbabel.OBFFCalculation3_c_get, _openbabel.OBFFCalculation3_c_set)
    idx_c = property(_openbabel.OBFFCalculation3_idx_c_get, _openbabel.OBFFCalculation3_idx_c_set)
    pos_c = property(_openbabel.OBFFCalculation3_pos_c_get, _openbabel.OBFFCalculation3_pos_c_set)
    force_c = property(_openbabel.OBFFCalculation3_force_c_get, _openbabel.OBFFCalculation3_force_c_set)
    __swig_destroy__ = _openbabel.delete_OBFFCalculation3

    def __init__(self):
        _openbabel.OBFFCalculation3_swiginit(self, _openbabel.new_OBFFCalculation3())

# Register OBFFCalculation3 in _openbabel:
_openbabel.OBFFCalculation3_swigregister(OBFFCalculation3)
class OBFFCalculation4(OBFFCalculation3):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    d = property(_openbabel.OBFFCalculation4_d_get, _openbabel.OBFFCalculation4_d_set)
    idx_d = property(_openbabel.OBFFCalculation4_idx_d_get, _openbabel.OBFFCalculation4_idx_d_set)
    pos_d = property(_openbabel.OBFFCalculation4_pos_d_get, _openbabel.OBFFCalculation4_pos_d_set)
    force_d = property(_openbabel.OBFFCalculation4_force_d_get, _openbabel.OBFFCalculation4_force_d_set)
    __swig_destroy__ = _openbabel.delete_OBFFCalculation4

    def __init__(self):
        _openbabel.OBFFCalculation4_swiginit(self, _openbabel.new_OBFFCalculation4())

# Register OBFFCalculation4 in _openbabel:
_openbabel.OBFFCalculation4_swigregister(OBFFCalculation4)
class OBFFConstraint(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    factor = property(_openbabel.OBFFConstraint_factor_get, _openbabel.OBFFConstraint_factor_set)
    constraint_value = property(_openbabel.OBFFConstraint_constraint_value_get, _openbabel.OBFFConstraint_constraint_value_set)
    rab0 = property(_openbabel.OBFFConstraint_rab0_get, _openbabel.OBFFConstraint_rab0_set)
    rbc0 = property(_openbabel.OBFFConstraint_rbc0_get, _openbabel.OBFFConstraint_rbc0_set)
    type = property(_openbabel.OBFFConstraint_type_get, _openbabel.OBFFConstraint_type_set)
    ia = property(_openbabel.OBFFConstraint_ia_get, _openbabel.OBFFConstraint_ia_set)
    ib = property(_openbabel.OBFFConstraint_ib_get, _openbabel.OBFFConstraint_ib_set)
    ic = property(_openbabel.OBFFConstraint_ic_get, _openbabel.OBFFConstraint_ic_set)
    id = property(_openbabel.OBFFConstraint_id_get, _openbabel.OBFFConstraint_id_set)
    a = property(_openbabel.OBFFConstraint_a_get, _openbabel.OBFFConstraint_a_set)
    b = property(_openbabel.OBFFConstraint_b_get, _openbabel.OBFFConstraint_b_set)
    c = property(_openbabel.OBFFConstraint_c_get, _openbabel.OBFFConstraint_c_set)
    d = property(_openbabel.OBFFConstraint_d_get, _openbabel.OBFFConstraint_d_set)
    grada = property(_openbabel.OBFFConstraint_grada_get, _openbabel.OBFFConstraint_grada_set)
    gradb = property(_openbabel.OBFFConstraint_gradb_get, _openbabel.OBFFConstraint_gradb_set)
    gradc = property(_openbabel.OBFFConstraint_gradc_get, _openbabel.OBFFConstraint_gradc_set)
    gradd = property(_openbabel.OBFFConstraint_gradd_get, _openbabel.OBFFConstraint_gradd_set)

    def __init__(self):
        _openbabel.OBFFConstraint_swiginit(self, _openbabel.new_OBFFConstraint())
    __swig_destroy__ = _openbabel.delete_OBFFConstraint
    GetGradient = _swig_new_instance_method(_openbabel.OBFFConstraint_GetGradient)

# Register OBFFConstraint in _openbabel:
_openbabel.OBFFConstraint_swigregister(OBFFConstraint)
class OBFFConstraints(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBFFConstraints_swiginit(self, _openbabel.new_OBFFConstraints())
    __swig_destroy__ = _openbabel.delete_OBFFConstraints
    Clear = _swig_new_instance_method(_openbabel.OBFFConstraints_Clear)
    GetConstraintEnergy = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintEnergy)
    GetGradient = _swig_new_instance_method(_openbabel.OBFFConstraints_GetGradient)
    Setup = _swig_new_instance_method(_openbabel.OBFFConstraints_Setup)
    SetFactor = _swig_new_instance_method(_openbabel.OBFFConstraints_SetFactor)
    AddIgnore = _swig_new_instance_method(_openbabel.OBFFConstraints_AddIgnore)
    AddAtomConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddAtomConstraint)
    AddAtomXConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddAtomXConstraint)
    AddAtomYConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddAtomYConstraint)
    AddAtomZConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddAtomZConstraint)
    AddDistanceConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddDistanceConstraint)
    AddAngleConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddAngleConstraint)
    AddTorsionConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_AddTorsionConstraint)
    DeleteConstraint = _swig_new_instance_method(_openbabel.OBFFConstraints_DeleteConstraint)
    GetFactor = _swig_new_instance_method(_openbabel.OBFFConstraints_GetFactor)
    Size = _swig_new_instance_method(_openbabel.OBFFConstraints_Size)
    GetConstraintType = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintType)
    GetConstraintValue = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintValue)
    GetConstraintAtomA = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintAtomA)
    GetConstraintAtomB = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintAtomB)
    GetConstraintAtomC = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintAtomC)
    GetConstraintAtomD = _swig_new_instance_method(_openbabel.OBFFConstraints_GetConstraintAtomD)
    IsIgnored = _swig_new_instance_method(_openbabel.OBFFConstraints_IsIgnored)
    IsFixed = _swig_new_instance_method(_openbabel.OBFFConstraints_IsFixed)
    IsXFixed = _swig_new_instance_method(_openbabel.OBFFConstraints_IsXFixed)
    IsYFixed = _swig_new_instance_method(_openbabel.OBFFConstraints_IsYFixed)
    IsZFixed = _swig_new_instance_method(_openbabel.OBFFConstraints_IsZFixed)
    GetIgnoredBitVec = _swig_new_instance_method(_openbabel.OBFFConstraints_GetIgnoredBitVec)
    GetFixedBitVec = _swig_new_instance_method(_openbabel.OBFFConstraints_GetFixedBitVec)

# Register OBFFConstraints in _openbabel:
_openbabel.OBFFConstraints_swigregister(OBFFConstraints)
class OBForceField(OBPlugin):
    thisown = 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
    Default = _swig_new_static_method(_openbabel.OBForceField_Default)
    FindType = _swig_new_static_method(_openbabel.OBForceField_FindType)
    MakeNewInstance = _swig_new_instance_method(_openbabel.OBForceField_MakeNewInstance)
    __swig_destroy__ = _openbabel.delete_OBForceField
    FindForceField = _swig_new_static_method(_openbabel.OBForceField_FindForceField)
    SetParameterFile = _swig_new_instance_method(_openbabel.OBForceField_SetParameterFile)
    GetUnit = _swig_new_instance_method(_openbabel.OBForceField_GetUnit)
    HasAnalyticalGradients = _swig_new_instance_method(_openbabel.OBForceField_HasAnalyticalGradients)
    Setup = _swig_new_instance_method(_openbabel.OBForceField_Setup)
    ParseParamFile = _swig_new_instance_method(_openbabel.OBForceField_ParseParamFile)
    SetTypes = _swig_new_instance_method(_openbabel.OBForceField_SetTypes)
    SetFormalCharges = _swig_new_instance_method(_openbabel.OBForceField_SetFormalCharges)
    SetPartialCharges = _swig_new_instance_method(_openbabel.OBForceField_SetPartialCharges)
    SetupCalculations = _swig_new_instance_method(_openbabel.OBForceField_SetupCalculations)
    SetupPointers = _swig_new_instance_method(_openbabel.OBForceField_SetupPointers)
    IsSetupNeeded = _swig_new_instance_method(_openbabel.OBForceField_IsSetupNeeded)
    GetAtomTypes = _swig_new_instance_method(_openbabel.OBForceField_GetAtomTypes)
    GetPartialCharges = _swig_new_instance_method(_openbabel.OBForceField_GetPartialCharges)
    GetCoordinates = _swig_new_instance_method(_openbabel.OBForceField_GetCoordinates)
    UpdateCoordinates = _swig_new_instance_method(_openbabel.OBForceField_UpdateCoordinates)
    GetConformers = _swig_new_instance_method(_openbabel.OBForceField_GetConformers)
    UpdateConformers = _swig_new_instance_method(_openbabel.OBForceField_UpdateConformers)
    SetCoordinates = _swig_new_instance_method(_openbabel.OBForceField_SetCoordinates)
    SetConformers = _swig_new_instance_method(_openbabel.OBForceField_SetConformers)
    GetGrid = _swig_new_instance_method(_openbabel.OBForceField_GetGrid)
    AddIntraGroup = _swig_new_instance_method(_openbabel.OBForceField_AddIntraGroup)
    AddInterGroup = _swig_new_instance_method(_openbabel.OBForceField_AddInterGroup)
    AddInterGroups = _swig_new_instance_method(_openbabel.OBForceField_AddInterGroups)
    ClearGroups = _swig_new_instance_method(_openbabel.OBForceField_ClearGroups)
    HasGroups = _swig_new_instance_method(_openbabel.OBForceField_HasGroups)
    EnableCutOff = _swig_new_instance_method(_openbabel.OBForceField_EnableCutOff)
    IsCutOffEnabled = _swig_new_instance_method(_openbabel.OBForceField_IsCutOffEnabled)
    SetVDWCutOff = _swig_new_instance_method(_openbabel.OBForceField_SetVDWCutOff)
    GetVDWCutOff = _swig_new_instance_method(_openbabel.OBForceField_GetVDWCutOff)
    SetElectrostaticCutOff = _swig_new_instance_method(_openbabel.OBForceField_SetElectrostaticCutOff)
    GetElectrostaticCutOff = _swig_new_instance_method(_openbabel.OBForceField_GetElectrostaticCutOff)
    SetDielectricConstant = _swig_new_instance_method(_openbabel.OBForceField_SetDielectricConstant)
    GetDielectricConstant = _swig_new_instance_method(_openbabel.OBForceField_GetDielectricConstant)
    SetUpdateFrequency = _swig_new_instance_method(_openbabel.OBForceField_SetUpdateFrequency)
    GetUpdateFrequency = _swig_new_instance_method(_openbabel.OBForceField_GetUpdateFrequency)
    UpdatePairsSimple = _swig_new_instance_method(_openbabel.OBForceField_UpdatePairsSimple)
    GetNumPairs = _swig_new_instance_method(_openbabel.OBForceField_GetNumPairs)
    GetNumElectrostaticPairs = _swig_new_instance_method(_openbabel.OBForceField_GetNumElectrostaticPairs)
    GetNumVDWPairs = _swig_new_instance_method(_openbabel.OBForceField_GetNumVDWPairs)
    EnableAllPairs = _swig_new_instance_method(_openbabel.OBForceField_EnableAllPairs)
    GetGradient = _swig_new_instance_method(_openbabel.OBForceField_GetGradient)
    GetGradientPtr = _swig_new_instance_method(_openbabel.OBForceField_GetGradientPtr)
    Energy = _swig_new_instance_method(_openbabel.OBForceField_Energy)
    E_Bond = _swig_new_instance_method(_openbabel.OBForceField_E_Bond)
    E_Angle = _swig_new_instance_method(_openbabel.OBForceField_E_Angle)
    E_StrBnd = _swig_new_instance_method(_openbabel.OBForceField_E_StrBnd)
    E_Torsion = _swig_new_instance_method(_openbabel.OBForceField_E_Torsion)
    E_OOP = _swig_new_instance_method(_openbabel.OBForceField_E_OOP)
    E_VDW = _swig_new_instance_method(_openbabel.OBForceField_E_VDW)
    E_Electrostatic = _swig_new_instance_method(_openbabel.OBForceField_E_Electrostatic)
    PrintTypes = _swig_new_instance_method(_openbabel.OBForceField_PrintTypes)
    PrintFormalCharges = _swig_new_instance_method(_openbabel.OBForceField_PrintFormalCharges)
    PrintPartialCharges = _swig_new_instance_method(_openbabel.OBForceField_PrintPartialCharges)
    PrintVelocities = _swig_new_instance_method(_openbabel.OBForceField_PrintVelocities)
    SetLogFile = _swig_new_instance_method(_openbabel.OBForceField_SetLogFile)
    SetLogLevel = _swig_new_instance_method(_openbabel.OBForceField_SetLogLevel)
    GetLogLevel = _swig_new_instance_method(_openbabel.OBForceField_GetLogLevel)
    OBFFLog = _swig_new_instance_method(_openbabel.OBForceField_OBFFLog)
    DistanceGeometry = _swig_new_instance_method(_openbabel.OBForceField_DistanceGeometry)
    SystematicRotorSearch = _swig_new_instance_method(_openbabel.OBForceField_SystematicRotorSearch)
    SystematicRotorSearchInitialize = _swig_new_instance_method(_openbabel.OBForceField_SystematicRotorSearchInitialize)
    SystematicRotorSearchNextConformer = _swig_new_instance_method(_openbabel.OBForceField_SystematicRotorSearchNextConformer)
    RandomRotorSearch = _swig_new_instance_method(_openbabel.OBForceField_RandomRotorSearch)
    RandomRotorSearchInitialize = _swig_new_instance_method(_openbabel.OBForceField_RandomRotorSearchInitialize)
    RandomRotorSearchNextConformer = _swig_new_instance_method(_openbabel.OBForceField_RandomRotorSearchNextConformer)
    WeightedRotorSearch = _swig_new_instance_method(_openbabel.OBForceField_WeightedRotorSearch)
    FastRotorSearch = _swig_new_instance_method(_openbabel.OBForceField_FastRotorSearch)
    DiverseConfGen = _swig_new_instance_method(_openbabel.OBForceField_DiverseConfGen)
    SetLineSearchType = _swig_new_instance_method(_openbabel.OBForceField_SetLineSearchType)
    GetLineSearchType = _swig_new_instance_method(_openbabel.OBForceField_GetLineSearchType)
    LineSearch = _swig_new_instance_method(_openbabel.OBForceField_LineSearch)
    Newton2NumLineSearch = _swig_new_instance_method(_openbabel.OBForceField_Newton2NumLineSearch)
    LineSearchTakeStep = _swig_new_instance_method(_openbabel.OBForceField_LineSearchTakeStep)
    SteepestDescent = _swig_new_instance_method(_openbabel.OBForceField_SteepestDescent)
    SteepestDescentInitialize = _swig_new_instance_method(_openbabel.OBForceField_SteepestDescentInitialize)
    SteepestDescentTakeNSteps = _swig_new_instance_method(_openbabel.OBForceField_SteepestDescentTakeNSteps)
    ConjugateGradients = _swig_new_instance_method(_openbabel.OBForceField_ConjugateGradients)
    ConjugateGradientsInitialize = _swig_new_instance_method(_openbabel.OBForceField_ConjugateGradientsInitialize)
    ConjugateGradientsTakeNSteps = _swig_new_instance_method(_openbabel.OBForceField_ConjugateGradientsTakeNSteps)
    GenerateVelocities = _swig_new_instance_method(_openbabel.OBForceField_GenerateVelocities)
    CorrectVelocities = _swig_new_instance_method(_openbabel.OBForceField_CorrectVelocities)
    MolecularDynamicsTakeNSteps = _swig_new_instance_method(_openbabel.OBForceField_MolecularDynamicsTakeNSteps)
    GetConstraints = _swig_new_instance_method(_openbabel.OBForceField_GetConstraints)
    SetConstraints = _swig_new_instance_method(_openbabel.OBForceField_SetConstraints)
    SetFixAtom = _swig_new_instance_method(_openbabel.OBForceField_SetFixAtom)
    UnsetFixAtom = _swig_new_instance_method(_openbabel.OBForceField_UnsetFixAtom)
    SetIgnoreAtom = _swig_new_instance_method(_openbabel.OBForceField_SetIgnoreAtom)
    UnsetIgnoreAtom = _swig_new_instance_method(_openbabel.OBForceField_UnsetIgnoreAtom)
    IgnoreCalculation = _swig_new_static_method(_openbabel.OBForceField_IgnoreCalculation)
    DetectExplosion = _swig_new_instance_method(_openbabel.OBForceField_DetectExplosion)
    ValidateLineSearch = _swig_new_instance_method(_openbabel.OBForceField_ValidateLineSearch)
    ValidateSteepestDescent = _swig_new_instance_method(_openbabel.OBForceField_ValidateSteepestDescent)
    ValidateConjugateGradients = _swig_new_instance_method(_openbabel.OBForceField_ValidateConjugateGradients)
    Validate = _swig_new_instance_method(_openbabel.OBForceField_Validate)
    ValidateGradients = _swig_new_instance_method(_openbabel.OBForceField_ValidateGradients)
    ValidateGradientError = _swig_new_instance_method(_openbabel.OBForceField_ValidateGradientError)
    VectorBondDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorBondDerivative)
    VectorDistanceDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorDistanceDerivative)
    VectorLengthDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorLengthDerivative)
    VectorAngleDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorAngleDerivative)
    VectorOOPDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorOOPDerivative)
    VectorTorsionDerivative = _swig_new_static_method(_openbabel.OBForceField_VectorTorsionDerivative)
    VectorSubtract = _swig_new_static_method(_openbabel.OBForceField_VectorSubtract)
    VectorAdd = _swig_new_static_method(_openbabel.OBForceField_VectorAdd)
    VectorDivide = _swig_new_static_method(_openbabel.OBForceField_VectorDivide)
    VectorMultiply = _swig_new_static_method(_openbabel.OBForceField_VectorMultiply)
    VectorSelfMultiply = _swig_new_static_method(_openbabel.OBForceField_VectorSelfMultiply)
    VectorNormalize = _swig_new_static_method(_openbabel.OBForceField_VectorNormalize)
    VectorCopy = _swig_new_static_method(_openbabel.OBForceField_VectorCopy)
    VectorLength = _swig_new_static_method(_openbabel.OBForceField_VectorLength)
    VectorDistance = _swig_new_static_method(_openbabel.OBForceField_VectorDistance)
    VectorAngle = _swig_new_static_method(_openbabel.OBForceField_VectorAngle)
    VectorTorsion = _swig_new_static_method(_openbabel.OBForceField_VectorTorsion)
    VectorOOP = _swig_new_static_method(_openbabel.OBForceField_VectorOOP)
    VectorClear = _swig_new_static_method(_openbabel.OBForceField_VectorClear)
    VectorDot = _swig_new_static_method(_openbabel.OBForceField_VectorDot)
    VectorCross = _swig_new_static_method(_openbabel.OBForceField_VectorCross)
    PrintVector = _swig_new_static_method(_openbabel.OBForceField_PrintVector)
    SetLogToStdOut = _swig_new_instance_method(_openbabel.OBForceField_SetLogToStdOut)
    SetLogToStdErr = _swig_new_instance_method(_openbabel.OBForceField_SetLogToStdErr)

# Register OBForceField in _openbabel:
_openbabel.OBForceField_swigregister(OBForceField)
class OBBuilder(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBBuilder_swiginit(self, _openbabel.new_OBBuilder())
    Build = _swig_new_instance_method(_openbabel.OBBuilder_Build)
    SetKeepRings = _swig_new_instance_method(_openbabel.OBBuilder_SetKeepRings)
    UnsetKeepRings = _swig_new_instance_method(_openbabel.OBBuilder_UnsetKeepRings)
    AddRingFragment = _swig_new_instance_method(_openbabel.OBBuilder_AddRingFragment)
    LoadFragments = _swig_new_instance_method(_openbabel.OBBuilder_LoadFragments)
    GetFragmentCoord = _swig_new_instance_method(_openbabel.OBBuilder_GetFragmentCoord)
    GetNewBondVector = _swig_new_static_method(_openbabel.OBBuilder_GetNewBondVector)
    Connect = _swig_new_static_method(_openbabel.OBBuilder_Connect)
    Swap = _swig_new_static_method(_openbabel.OBBuilder_Swap)
    CorrectStereoBonds = _swig_new_static_method(_openbabel.OBBuilder_CorrectStereoBonds)
    CorrectStereoAtoms = _swig_new_static_method(_openbabel.OBBuilder_CorrectStereoAtoms)
    IsSpiroAtom = _swig_new_static_method(_openbabel.OBBuilder_IsSpiroAtom)
    GetFragment = _swig_new_static_method(_openbabel.OBBuilder_GetFragment)
    AddNbrs = _swig_new_static_method(_openbabel.OBBuilder_AddNbrs)
    __swig_destroy__ = _openbabel.delete_OBBuilder

# Register OBBuilder in _openbabel:
_openbabel.OBBuilder_swigregister(OBBuilder)
class OBOp(OBPlugin):
    thisown = 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
    Default = _swig_new_static_method(_openbabel.OBOp_Default)
    FindType = _swig_new_static_method(_openbabel.OBOp_FindType)
    Do = _swig_new_instance_method(_openbabel.OBOp_Do)
    WorksWith = _swig_new_instance_method(_openbabel.OBOp_WorksWith)
    ProcessVec = _swig_new_instance_method(_openbabel.OBOp_ProcessVec)
    OpOptions = _swig_new_static_method(_openbabel.OBOp_OpOptions)
    DoOps = _swig_new_static_method(_openbabel.OBOp_DoOps)
    __swig_destroy__ = _openbabel.delete_OBOp

# Register OBOp in _openbabel:
_openbabel.OBOp_swigregister(OBOp)
class OBChargeModel(OBPlugin):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Default = _swig_new_static_method(_openbabel.OBChargeModel_Default)

    def __init__(self, ID, IsDefault=False):
        _openbabel.OBChargeModel_swiginit(self, _openbabel.new_OBChargeModel(ID, IsDefault))
    FindType = _swig_new_static_method(_openbabel.OBChargeModel_FindType)
    ComputeCharges = _swig_new_instance_method(_openbabel.OBChargeModel_ComputeCharges)
    GetFormalCharges = _swig_new_instance_method(_openbabel.OBChargeModel_GetFormalCharges)
    GetPartialCharges = _swig_new_instance_method(_openbabel.OBChargeModel_GetPartialCharges)
    GetDipoleMoment = _swig_new_instance_method(_openbabel.OBChargeModel_GetDipoleMoment)
    __swig_destroy__ = _openbabel.delete_OBChargeModel

# Register OBChargeModel in _openbabel:
_openbabel.OBChargeModel_swigregister(OBChargeModel)
class OBChemTsfm(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBChemTsfm_swiginit(self, _openbabel.new_OBChemTsfm())
    __swig_destroy__ = _openbabel.delete_OBChemTsfm
    Init = _swig_new_instance_method(_openbabel.OBChemTsfm_Init)
    Apply = _swig_new_instance_method(_openbabel.OBChemTsfm_Apply)
    IsAcid = _swig_new_instance_method(_openbabel.OBChemTsfm_IsAcid)
    IsBase = _swig_new_instance_method(_openbabel.OBChemTsfm_IsBase)

# Register OBChemTsfm in _openbabel:
_openbabel.OBChemTsfm_swigregister(OBChemTsfm)
class OBPhModel(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBPhModel_swiginit(self, _openbabel.new_OBPhModel())
    __swig_destroy__ = _openbabel.delete_OBPhModel
    AssignSeedPartialCharge = _swig_new_instance_method(_openbabel.OBPhModel_AssignSeedPartialCharge)
    CorrectForPH = _swig_new_instance_method(_openbabel.OBPhModel_CorrectForPH)

# Register OBPhModel in _openbabel:
_openbabel.OBPhModel_swigregister(OBPhModel)
class OBGraphSym(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, pmol, frag_atoms=None):
        _openbabel.OBGraphSym_swiginit(self, _openbabel.new_OBGraphSym(pmol, frag_atoms))
    __swig_destroy__ = _openbabel.delete_OBGraphSym
    GetSymmetry = _swig_new_instance_method(_openbabel.OBGraphSym_GetSymmetry)
    ClearSymmetry = _swig_new_instance_method(_openbabel.OBGraphSym_ClearSymmetry)

# Register OBGraphSym in _openbabel:
_openbabel.OBGraphSym_swigregister(OBGraphSym)
OBGraphSym.NoSymmetryClass = _openbabel.cvar.OBGraphSym_NoSymmetryClass

class OBIsomorphismMapper(object):
    thisown = 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__ = _openbabel.delete_OBIsomorphismMapper
    GetInstance = _swig_new_static_method(_openbabel.OBIsomorphismMapper_GetInstance)
    MapFirst = _swig_new_instance_method(_openbabel.OBIsomorphismMapper_MapFirst)
    MapUnique = _swig_new_instance_method(_openbabel.OBIsomorphismMapper_MapUnique)
    MapAll = _swig_new_instance_method(_openbabel.OBIsomorphismMapper_MapAll)
    MapGeneric = _swig_new_instance_method(_openbabel.OBIsomorphismMapper_MapGeneric)
    SetTimeout = _swig_new_instance_method(_openbabel.OBIsomorphismMapper_SetTimeout)

# Register OBIsomorphismMapper in _openbabel:
_openbabel.OBIsomorphismMapper_swigregister(OBIsomorphismMapper)
MapsTo = _openbabel.MapsTo
FindAutomorphisms = _openbabel.FindAutomorphisms
class OBQueryAtom(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, atomicNum=6, isInRing=False, isAromatic=False):
        _openbabel.OBQueryAtom_swiginit(self, _openbabel.new_OBQueryAtom(atomicNum, isInRing, isAromatic))
    __swig_destroy__ = _openbabel.delete_OBQueryAtom
    GetIndex = _swig_new_instance_method(_openbabel.OBQueryAtom_GetIndex)
    GetBonds = _swig_new_instance_method(_openbabel.OBQueryAtom_GetBonds)
    GetNbrs = _swig_new_instance_method(_openbabel.OBQueryAtom_GetNbrs)
    Matches = _swig_new_instance_method(_openbabel.OBQueryAtom_Matches)

# Register OBQueryAtom in _openbabel:
_openbabel.OBQueryAtom_swigregister(OBQueryAtom)
class OBQueryBond(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, begin, end, order=1, aromatic=False):
        _openbabel.OBQueryBond_swiginit(self, _openbabel.new_OBQueryBond(begin, end, order, aromatic))
    __swig_destroy__ = _openbabel.delete_OBQueryBond
    GetIndex = _swig_new_instance_method(_openbabel.OBQueryBond_GetIndex)
    GetBeginAtom = _swig_new_instance_method(_openbabel.OBQueryBond_GetBeginAtom)
    GetEndAtom = _swig_new_instance_method(_openbabel.OBQueryBond_GetEndAtom)
    Matches = _swig_new_instance_method(_openbabel.OBQueryBond_Matches)

# Register OBQueryBond in _openbabel:
_openbabel.OBQueryBond_swigregister(OBQueryBond)
class OBQuery(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _openbabel.delete_OBQuery
    NumAtoms = _swig_new_instance_method(_openbabel.OBQuery_NumAtoms)
    NumBonds = _swig_new_instance_method(_openbabel.OBQuery_NumBonds)
    GetAtoms = _swig_new_instance_method(_openbabel.OBQuery_GetAtoms)
    GetBonds = _swig_new_instance_method(_openbabel.OBQuery_GetBonds)
    GetBond = _swig_new_instance_method(_openbabel.OBQuery_GetBond)
    AddAtom = _swig_new_instance_method(_openbabel.OBQuery_AddAtom)
    AddBond = _swig_new_instance_method(_openbabel.OBQuery_AddBond)

    def __init__(self):
        _openbabel.OBQuery_swiginit(self, _openbabel.new_OBQuery())

# Register OBQuery in _openbabel:
_openbabel.OBQuery_swigregister(OBQuery)
CompileMoleculeQuery = _openbabel.CompileMoleculeQuery
CompileSmilesQuery = _openbabel.CompileSmilesQuery
CanonicalLabels = _openbabel.CanonicalLabels
class OBStereo(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    CisTrans = _openbabel.OBStereo_CisTrans
    ExtendedCisTrans = _openbabel.OBStereo_ExtendedCisTrans
    SquarePlanar = _openbabel.OBStereo_SquarePlanar
    Tetrahedral = _openbabel.OBStereo_Tetrahedral
    ExtendedTetrahedral = _openbabel.OBStereo_ExtendedTetrahedral
    TrigonalBipyramidal = _openbabel.OBStereo_TrigonalBipyramidal
    Octahedral = _openbabel.OBStereo_Octahedral
    NotStereo = _openbabel.OBStereo_NotStereo
    UpBond = _openbabel.OBStereo_UpBond
    DownBond = _openbabel.OBStereo_DownBond
    UnknownDir = _openbabel.OBStereo_UnknownDir
    ShapeU = _openbabel.OBStereo_ShapeU
    ShapeZ = _openbabel.OBStereo_ShapeZ
    Shape4 = _openbabel.OBStereo_Shape4
    ViewFrom = _openbabel.OBStereo_ViewFrom
    ViewTowards = _openbabel.OBStereo_ViewTowards
    Clockwise = _openbabel.OBStereo_Clockwise
    AntiClockwise = _openbabel.OBStereo_AntiClockwise
    UnknownWinding = _openbabel.OBStereo_UnknownWinding
    NoRef = _openbabel.OBStereo_NoRef
    ImplicitRef = _openbabel.OBStereo_ImplicitRef
    MakeRefs = _swig_new_static_method(_openbabel.OBStereo_MakeRefs)
    ContainsSameRefs = _swig_new_static_method(_openbabel.OBStereo_ContainsSameRefs)
    ContainsRef = _swig_new_static_method(_openbabel.OBStereo_ContainsRef)
    NumInversions = _swig_new_static_method(_openbabel.OBStereo_NumInversions)
    Permutate = _swig_new_static_method(_openbabel.OBStereo_Permutate)
    Permutated = _swig_new_static_method(_openbabel.OBStereo_Permutated)

    def __init__(self):
        _openbabel.OBStereo_swiginit(self, _openbabel.new_OBStereo())
    __swig_destroy__ = _openbabel.delete_OBStereo

# Register OBStereo in _openbabel:
_openbabel.OBStereo_swigregister(OBStereo)
class OBStereoUnit(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBStereoUnit_swiginit(self, _openbabel.new_OBStereoUnit(*args))
    type = property(_openbabel.OBStereoUnit_type_get, _openbabel.OBStereoUnit_type_set)
    id = property(_openbabel.OBStereoUnit_id_get, _openbabel.OBStereoUnit_id_set)
    para = property(_openbabel.OBStereoUnit_para_get, _openbabel.OBStereoUnit_para_set)
    __swig_destroy__ = _openbabel.delete_OBStereoUnit

# Register OBStereoUnit in _openbabel:
_openbabel.OBStereoUnit_swigregister(OBStereoUnit)
class OBStereoBase(OBGenericData):
    thisown = 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__ = _openbabel.delete_OBStereoBase
    GetMolecule = _swig_new_instance_method(_openbabel.OBStereoBase_GetMolecule)
    GetType = _swig_new_instance_method(_openbabel.OBStereoBase_GetType)
    SetSpecified = _swig_new_instance_method(_openbabel.OBStereoBase_SetSpecified)
    IsSpecified = _swig_new_instance_method(_openbabel.OBStereoBase_IsSpecified)

# Register OBStereoBase in _openbabel:
_openbabel.OBStereoBase_swigregister(OBStereoBase)
class OBStereoFacade(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, mol, perceive=True):
        _openbabel.OBStereoFacade_swiginit(self, _openbabel.new_OBStereoFacade(mol, perceive))
    NumTetrahedralStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_NumTetrahedralStereo)
    GetAllTetrahedralStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetAllTetrahedralStereo)
    HasTetrahedralStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_HasTetrahedralStereo)
    GetTetrahedralStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetTetrahedralStereo)
    NumCisTransStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_NumCisTransStereo)
    GetAllCisTransStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetAllCisTransStereo)
    HasCisTransStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_HasCisTransStereo)
    GetCisTransStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetCisTransStereo)
    NumSquarePlanarStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_NumSquarePlanarStereo)
    GetAllSquarePlanarStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetAllSquarePlanarStereo)
    HasSquarePlanarStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_HasSquarePlanarStereo)
    GetSquarePlanarStereo = _swig_new_instance_method(_openbabel.OBStereoFacade_GetSquarePlanarStereo)
    __swig_destroy__ = _openbabel.delete_OBStereoFacade

# Register OBStereoFacade in _openbabel:
_openbabel.OBStereoFacade_swigregister(OBStereoFacade)
PerceiveStereo = _openbabel.PerceiveStereo
StereoFrom2D = _openbabel.StereoFrom2D
StereoFrom3D = _openbabel.StereoFrom3D
StereoFrom0D = _openbabel.StereoFrom0D
TetrahedralFrom3D = _openbabel.TetrahedralFrom3D
TetrahedralFrom2D = _openbabel.TetrahedralFrom2D
TetrahedralFrom0D = _openbabel.TetrahedralFrom0D
CisTransFrom3D = _openbabel.CisTransFrom3D
CisTransFrom2D = _openbabel.CisTransFrom2D
TetStereoToWedgeHash = _openbabel.TetStereoToWedgeHash
GetUnspecifiedCisTrans = _openbabel.GetUnspecifiedCisTrans
StereoRefToImplicit = _openbabel.StereoRefToImplicit
ImplicitRefToStereo = _openbabel.ImplicitRefToStereo
CisTransFrom0D = _openbabel.CisTransFrom0D
FindStereogenicUnits = _openbabel.FindStereogenicUnits
class OBRotorRule(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, buffer, ref, vals, d):
        _openbabel.OBRotorRule_swiginit(self, _openbabel.new_OBRotorRule(buffer, ref, vals, d))
    __swig_destroy__ = _openbabel.delete_OBRotorRule
    IsValid = _swig_new_instance_method(_openbabel.OBRotorRule_IsValid)
    GetReferenceAtoms = _swig_new_instance_method(_openbabel.OBRotorRule_GetReferenceAtoms)
    SetDelta = _swig_new_instance_method(_openbabel.OBRotorRule_SetDelta)
    GetDelta = _swig_new_instance_method(_openbabel.OBRotorRule_GetDelta)
    GetTorsionVals = _swig_new_instance_method(_openbabel.OBRotorRule_GetTorsionVals)
    GetSmartsString = _swig_new_instance_method(_openbabel.OBRotorRule_GetSmartsString)
    GetSmartsPattern = _swig_new_instance_method(_openbabel.OBRotorRule_GetSmartsPattern)

# Register OBRotorRule in _openbabel:
_openbabel.OBRotorRule_swigregister(OBRotorRule)
class OBRotorRules(OBGlobalDataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRotorRules_swiginit(self, _openbabel.new_OBRotorRules())
    __swig_destroy__ = _openbabel.delete_OBRotorRules
    SetFilename = _swig_new_instance_method(_openbabel.OBRotorRules_SetFilename)
    GetRotorIncrements = _swig_new_instance_method(_openbabel.OBRotorRules_GetRotorIncrements)
    Quiet = _swig_new_instance_method(_openbabel.OBRotorRules_Quiet)

# Register OBRotorRules in _openbabel:
_openbabel.OBRotorRules_swigregister(OBRotorRules)
class OBRotor(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRotor_swiginit(self, _openbabel.new_OBRotor())
    __swig_destroy__ = _openbabel.delete_OBRotor
    SetBond = _swig_new_instance_method(_openbabel.OBRotor_SetBond)
    SetRings = _swig_new_instance_method(_openbabel.OBRotor_SetRings)
    SetIdx = _swig_new_instance_method(_openbabel.OBRotor_SetIdx)
    SetDihedralAtoms = _swig_new_instance_method(_openbabel.OBRotor_SetDihedralAtoms)
    SetRotAtoms = _swig_new_instance_method(_openbabel.OBRotor_SetRotAtoms)
    SetTorsionValues = _swig_new_instance_method(_openbabel.OBRotor_SetTorsionValues)
    SetFixedBonds = _swig_new_instance_method(_openbabel.OBRotor_SetFixedBonds)
    SetToAngle = _swig_new_instance_method(_openbabel.OBRotor_SetToAngle)
    SetRotor = _swig_new_instance_method(_openbabel.OBRotor_SetRotor)
    Precompute = _swig_new_instance_method(_openbabel.OBRotor_Precompute)
    Precalc = _swig_new_instance_method(_openbabel.OBRotor_Precalc)
    Set = _swig_new_instance_method(_openbabel.OBRotor_Set)
    GetBond = _swig_new_instance_method(_openbabel.OBRotor_GetBond)
    Size = _swig_new_instance_method(_openbabel.OBRotor_Size)
    GetIdx = _swig_new_instance_method(_openbabel.OBRotor_GetIdx)
    GetDihedralAtoms = _swig_new_instance_method(_openbabel.OBRotor_GetDihedralAtoms)
    GetTorsionValues = _swig_new_instance_method(_openbabel.OBRotor_GetTorsionValues)
    GetFixedBonds = _swig_new_instance_method(_openbabel.OBRotor_GetFixedBonds)
    CalcTorsion = _swig_new_instance_method(_openbabel.OBRotor_CalcTorsion)
    CalcBondLength = _swig_new_instance_method(_openbabel.OBRotor_CalcBondLength)
    BeginTorIncrement = _swig_new_instance_method(_openbabel.OBRotor_BeginTorIncrement)
    EndTorIncrement = _swig_new_instance_method(_openbabel.OBRotor_EndTorIncrement)
    RemoveSymTorsionValues = _swig_new_instance_method(_openbabel.OBRotor_RemoveSymTorsionValues)
    SetDelta = _swig_new_instance_method(_openbabel.OBRotor_SetDelta)
    GetDelta = _swig_new_instance_method(_openbabel.OBRotor_GetDelta)
    GetFixedAtoms = _swig_new_instance_method(_openbabel.OBRotor_GetFixedAtoms)
    SetFixedAtoms = _swig_new_instance_method(_openbabel.OBRotor_SetFixedAtoms)
    GetEvalAtoms = _swig_new_instance_method(_openbabel.OBRotor_GetEvalAtoms)
    SetEvalAtoms = _swig_new_instance_method(_openbabel.OBRotor_SetEvalAtoms)
    GetRotAtoms = _swig_new_instance_method(_openbabel.OBRotor_GetRotAtoms)
    GetResolution = _swig_new_instance_method(_openbabel.OBRotor_GetResolution)
    SetNumCoords = _swig_new_instance_method(_openbabel.OBRotor_SetNumCoords)

# Register OBRotor in _openbabel:
_openbabel.OBRotor_swigregister(OBRotor)
class OBRotorList(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRotorList_swiginit(self, _openbabel.new_OBRotorList())
    __swig_destroy__ = _openbabel.delete_OBRotorList
    Clear = _swig_new_instance_method(_openbabel.OBRotorList_Clear)
    Size = _swig_new_instance_method(_openbabel.OBRotorList_Size)
    IsFixedBond = _swig_new_instance_method(_openbabel.OBRotorList_IsFixedBond)
    HasFixedBonds = _swig_new_instance_method(_openbabel.OBRotorList_HasFixedBonds)
    RemoveSymVals = _swig_new_instance_method(_openbabel.OBRotorList_RemoveSymVals)
    HasRingRotors = _swig_new_instance_method(_openbabel.OBRotorList_HasRingRotors)
    Setup = _swig_new_instance_method(_openbabel.OBRotorList_Setup)
    SetFixedBonds = _swig_new_instance_method(_openbabel.OBRotorList_SetFixedBonds)
    Init = _swig_new_instance_method(_openbabel.OBRotorList_Init)
    SetQuiet = _swig_new_instance_method(_openbabel.OBRotorList_SetQuiet)
    SetRotAtoms = _swig_new_instance_method(_openbabel.OBRotorList_SetRotAtoms)
    FindRotors = _swig_new_instance_method(_openbabel.OBRotorList_FindRotors)
    SetEvalAtoms = _swig_new_instance_method(_openbabel.OBRotorList_SetEvalAtoms)
    AssignTorVals = _swig_new_instance_method(_openbabel.OBRotorList_AssignTorVals)
    BeginRotor = _swig_new_instance_method(_openbabel.OBRotorList_BeginRotor)
    NextRotor = _swig_new_instance_method(_openbabel.OBRotorList_NextRotor)
    BeginRotors = _swig_new_instance_method(_openbabel.OBRotorList_BeginRotors)
    EndRotors = _swig_new_instance_method(_openbabel.OBRotorList_EndRotors)
    IdentifyEvalAtoms = _swig_new_instance_method(_openbabel.OBRotorList_IdentifyEvalAtoms)
    SetFixAtoms = _swig_new_instance_method(_openbabel.OBRotorList_SetFixAtoms)
    HasFixedAtoms = _swig_new_instance_method(_openbabel.OBRotorList_HasFixedAtoms)
    IgnoreSymmetryRemoval = _swig_new_instance_method(_openbabel.OBRotorList_IgnoreSymmetryRemoval)
    SetRotAtomsByFix = _swig_new_instance_method(_openbabel.OBRotorList_SetRotAtomsByFix)

# Register OBRotorList in _openbabel:
_openbabel.OBRotorList_swigregister(OBRotorList)
class rotor_digit(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.rotor_digit_swiginit(self, _openbabel.new_rotor_digit(*args))
    set_size = _swig_new_instance_method(_openbabel.rotor_digit_set_size)
    set_state = _swig_new_instance_method(_openbabel.rotor_digit_set_state)
    get_state = _swig_new_instance_method(_openbabel.rotor_digit_get_state)
    size = _swig_new_instance_method(_openbabel.rotor_digit_size)
    next = _swig_new_instance_method(_openbabel.rotor_digit_next)
    __swig_destroy__ = _openbabel.delete_rotor_digit

# Register rotor_digit in _openbabel:
_openbabel.rotor_digit_swigregister(rotor_digit)
class OBRotorKeys(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRotorKeys_swiginit(self, _openbabel.new_OBRotorKeys())
    Clear = _swig_new_instance_method(_openbabel.OBRotorKeys_Clear)
    NumKeys = _swig_new_instance_method(_openbabel.OBRotorKeys_NumKeys)
    AddRotor = _swig_new_instance_method(_openbabel.OBRotorKeys_AddRotor)
    Next = _swig_new_instance_method(_openbabel.OBRotorKeys_Next)
    GetKey = _swig_new_instance_method(_openbabel.OBRotorKeys_GetKey)
    __swig_destroy__ = _openbabel.delete_OBRotorKeys

# Register OBRotorKeys in _openbabel:
_openbabel.OBRotorKeys_swigregister(OBRotorKeys)
class OBRotamerList(OBGenericData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRotamerList_swiginit(self, _openbabel.new_OBRotamerList())
    __swig_destroy__ = _openbabel.delete_OBRotamerList
    Setup = _swig_new_instance_method(_openbabel.OBRotamerList_Setup)
    NumRotors = _swig_new_instance_method(_openbabel.OBRotamerList_NumRotors)
    NumRotamers = _swig_new_instance_method(_openbabel.OBRotamerList_NumRotamers)
    AddRotamer = _swig_new_instance_method(_openbabel.OBRotamerList_AddRotamer)
    AddRotamers = _swig_new_instance_method(_openbabel.OBRotamerList_AddRotamers)
    GetReferenceArray = _swig_new_instance_method(_openbabel.OBRotamerList_GetReferenceArray)
    BeginRotamer = _swig_new_instance_method(_openbabel.OBRotamerList_BeginRotamer)
    EndRotamer = _swig_new_instance_method(_openbabel.OBRotamerList_EndRotamer)
    CreateConformerList = _swig_new_instance_method(_openbabel.OBRotamerList_CreateConformerList)
    ExpandConformerList = _swig_new_instance_method(_openbabel.OBRotamerList_ExpandConformerList)
    SetCurrentCoordinates = _swig_new_instance_method(_openbabel.OBRotamerList_SetCurrentCoordinates)
    SetBaseCoordinateSets = _swig_new_instance_method(_openbabel.OBRotamerList_SetBaseCoordinateSets)
    NumBaseCoordinateSets = _swig_new_instance_method(_openbabel.OBRotamerList_NumBaseCoordinateSets)
    GetBaseCoordinateSet = _swig_new_instance_method(_openbabel.OBRotamerList_GetBaseCoordinateSet)
    NumAtoms = _swig_new_instance_method(_openbabel.OBRotamerList_NumAtoms)

# Register OBRotamerList in _openbabel:
_openbabel.OBRotamerList_swigregister(OBRotamerList)
N_PROPERTIES = _openbabel.N_PROPERTIES
class OBSpectrophore(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AngStepSize1 = _openbabel.OBSpectrophore_AngStepSize1
    AngStepSize2 = _openbabel.OBSpectrophore_AngStepSize2
    AngStepSize5 = _openbabel.OBSpectrophore_AngStepSize5
    AngStepSize10 = _openbabel.OBSpectrophore_AngStepSize10
    AngStepSize15 = _openbabel.OBSpectrophore_AngStepSize15
    AngStepSize20 = _openbabel.OBSpectrophore_AngStepSize20
    AngStepSize30 = _openbabel.OBSpectrophore_AngStepSize30
    AngStepSize36 = _openbabel.OBSpectrophore_AngStepSize36
    AngStepSize45 = _openbabel.OBSpectrophore_AngStepSize45
    AngStepSize60 = _openbabel.OBSpectrophore_AngStepSize60
    NoNormalization = _openbabel.OBSpectrophore_NoNormalization
    NormalizationTowardsZeroMean = _openbabel.OBSpectrophore_NormalizationTowardsZeroMean
    NormalizationTowardsUnitStd = _openbabel.OBSpectrophore_NormalizationTowardsUnitStd
    NormalizationTowardsZeroMeanAndUnitStd = _openbabel.OBSpectrophore_NormalizationTowardsZeroMeanAndUnitStd
    NoStereoSpecificProbes = _openbabel.OBSpectrophore_NoStereoSpecificProbes
    UniqueStereoSpecificProbes = _openbabel.OBSpectrophore_UniqueStereoSpecificProbes
    MirrorStereoSpecificProbes = _openbabel.OBSpectrophore_MirrorStereoSpecificProbes
    AllStereoSpecificProbes = _openbabel.OBSpectrophore_AllStereoSpecificProbes

    def __init__(self, *args):
        _openbabel.OBSpectrophore_swiginit(self, _openbabel.new_OBSpectrophore(*args))
    __swig_destroy__ = _openbabel.delete_OBSpectrophore
    SetResolution = _swig_new_instance_method(_openbabel.OBSpectrophore_SetResolution)
    SetAccuracy = _swig_new_instance_method(_openbabel.OBSpectrophore_SetAccuracy)
    SetStereo = _swig_new_instance_method(_openbabel.OBSpectrophore_SetStereo)
    SetNormalization = _swig_new_instance_method(_openbabel.OBSpectrophore_SetNormalization)
    GetAccuracy = _swig_new_instance_method(_openbabel.OBSpectrophore_GetAccuracy)
    GetResolution = _swig_new_instance_method(_openbabel.OBSpectrophore_GetResolution)
    GetStereo = _swig_new_instance_method(_openbabel.OBSpectrophore_GetStereo)
    GetNormalization = _swig_new_instance_method(_openbabel.OBSpectrophore_GetNormalization)
    GetSpectrophore = _swig_new_instance_method(_openbabel.OBSpectrophore_GetSpectrophore)

# Register OBSpectrophore in _openbabel:
_openbabel.OBSpectrophore_swigregister(OBSpectrophore)
class OBConformerFilter(object):
    thisown = 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
    IsGood = _swig_new_instance_method(_openbabel.OBConformerFilter_IsGood)
    __swig_destroy__ = _openbabel.delete_OBConformerFilter

# Register OBConformerFilter in _openbabel:
_openbabel.OBConformerFilter_swigregister(OBConformerFilter)
class OBConformerFilters(OBConformerFilter):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, filters):
        _openbabel.OBConformerFilters_swiginit(self, _openbabel.new_OBConformerFilters(filters))
    __swig_destroy__ = _openbabel.delete_OBConformerFilters

# Register OBConformerFilters in _openbabel:
_openbabel.OBConformerFilters_swigregister(OBConformerFilters)
class OBStericConformerFilter(OBConformerFilter):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBStericConformerFilter_swiginit(self, _openbabel.new_OBStericConformerFilter(*args))
    __swig_destroy__ = _openbabel.delete_OBStericConformerFilter

# Register OBStericConformerFilter in _openbabel:
_openbabel.OBStericConformerFilter_swigregister(OBStericConformerFilter)
class OBConformerScore(object):
    thisown = 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
    HighScore = _openbabel.OBConformerScore_HighScore
    LowScore = _openbabel.OBConformerScore_LowScore
    GetPreferred = _swig_new_instance_method(_openbabel.OBConformerScore_GetPreferred)
    Highest = _openbabel.OBConformerScore_Highest
    Lowest = _openbabel.OBConformerScore_Lowest
    Sum = _openbabel.OBConformerScore_Sum
    Average = _openbabel.OBConformerScore_Average
    GetConvergence = _swig_new_instance_method(_openbabel.OBConformerScore_GetConvergence)
    Score = _swig_new_instance_method(_openbabel.OBConformerScore_Score)
    __swig_destroy__ = _openbabel.delete_OBConformerScore

# Register OBConformerScore in _openbabel:
_openbabel.OBConformerScore_swigregister(OBConformerScore)
class OBRMSDConformerScore(OBConformerScore):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBRMSDConformerScore_swiginit(self, _openbabel.new_OBRMSDConformerScore())
    __swig_destroy__ = _openbabel.delete_OBRMSDConformerScore

# Register OBRMSDConformerScore in _openbabel:
_openbabel.OBRMSDConformerScore_swigregister(OBRMSDConformerScore)
class OBEnergyConformerScore(OBConformerScore):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBEnergyConformerScore_swiginit(self, _openbabel.new_OBEnergyConformerScore())
    GetNbEnergyCompute = _swig_new_instance_method(_openbabel.OBEnergyConformerScore_GetNbEnergyCompute)
    GetNbEnergyRequest = _swig_new_instance_method(_openbabel.OBEnergyConformerScore_GetNbEnergyRequest)
    __swig_destroy__ = _openbabel.delete_OBEnergyConformerScore

# Register OBEnergyConformerScore in _openbabel:
_openbabel.OBEnergyConformerScore_swigregister(OBEnergyConformerScore)
class OBMinimizingEnergyConformerScore(OBConformerScore):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBMinimizingEnergyConformerScore_swiginit(self, _openbabel.new_OBMinimizingEnergyConformerScore())
    GetNbEnergyCompute = _swig_new_instance_method(_openbabel.OBMinimizingEnergyConformerScore_GetNbEnergyCompute)
    GetNbEnergyRequest = _swig_new_instance_method(_openbabel.OBMinimizingEnergyConformerScore_GetNbEnergyRequest)
    __swig_destroy__ = _openbabel.delete_OBMinimizingEnergyConformerScore

# Register OBMinimizingEnergyConformerScore in _openbabel:
_openbabel.OBMinimizingEnergyConformerScore_swigregister(OBMinimizingEnergyConformerScore)
class OBMinimizingRMSDConformerScore(OBConformerScore):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBMinimizingRMSDConformerScore_swiginit(self, _openbabel.new_OBMinimizingRMSDConformerScore())
    __swig_destroy__ = _openbabel.delete_OBMinimizingRMSDConformerScore

# Register OBMinimizingRMSDConformerScore in _openbabel:
_openbabel.OBMinimizingRMSDConformerScore_swigregister(OBMinimizingRMSDConformerScore)
class OBConformerSearch(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _openbabel.OBConformerSearch_swiginit(self, _openbabel.new_OBConformerSearch())
    __swig_destroy__ = _openbabel.delete_OBConformerSearch
    Setup = _swig_new_instance_method(_openbabel.OBConformerSearch_Setup)
    SetNumConformers = _swig_new_instance_method(_openbabel.OBConformerSearch_SetNumConformers)
    SetNumChildren = _swig_new_instance_method(_openbabel.OBConformerSearch_SetNumChildren)
    SetMutability = _swig_new_instance_method(_openbabel.OBConformerSearch_SetMutability)
    SetConvergence = _swig_new_instance_method(_openbabel.OBConformerSearch_SetConvergence)
    SetFixedBonds = _swig_new_instance_method(_openbabel.OBConformerSearch_SetFixedBonds)
    SetFilter = _swig_new_instance_method(_openbabel.OBConformerSearch_SetFilter)
    SetScore = _swig_new_instance_method(_openbabel.OBConformerSearch_SetScore)
    PrintRotors = _swig_new_instance_method(_openbabel.OBConformerSearch_PrintRotors)
    Search = _swig_new_instance_method(_openbabel.OBConformerSearch_Search)
    GetRotorKeys = _swig_new_instance_method(_openbabel.OBConformerSearch_GetRotorKeys)
    GetConformers = _swig_new_instance_method(_openbabel.OBConformerSearch_GetConformers)
    SetLogStream = _swig_new_instance_method(_openbabel.OBConformerSearch_SetLogStream)
    SetSharing = _swig_new_instance_method(_openbabel.OBConformerSearch_SetSharing)
    GetNbNiches = _swig_new_instance_method(_openbabel.OBConformerSearch_GetNbNiches)
    SetNbNiches = _swig_new_instance_method(_openbabel.OBConformerSearch_SetNbNiches)
    GetNicheRadius = _swig_new_instance_method(_openbabel.OBConformerSearch_GetNicheRadius)
    SetNicheRadius = _swig_new_instance_method(_openbabel.OBConformerSearch_SetNicheRadius)
    GetAlphaSharing = _swig_new_instance_method(_openbabel.OBConformerSearch_GetAlphaSharing)
    SetAlphaSharing = _swig_new_instance_method(_openbabel.OBConformerSearch_SetAlphaSharing)
    GetSigmaSharing = _swig_new_instance_method(_openbabel.OBConformerSearch_GetSigmaSharing)
    SetSigmaSharing = _swig_new_instance_method(_openbabel.OBConformerSearch_SetSigmaSharing)
    GetCrossoverProbability = _swig_new_instance_method(_openbabel.OBConformerSearch_GetCrossoverProbability)
    SetCrossoverProbability = _swig_new_instance_method(_openbabel.OBConformerSearch_SetCrossoverProbability)
    GetNicheMating = _swig_new_instance_method(_openbabel.OBConformerSearch_GetNicheMating)
    SetNicheMating = _swig_new_instance_method(_openbabel.OBConformerSearch_SetNicheMating)
    SetLocalOptRate = _swig_new_instance_method(_openbabel.OBConformerSearch_SetLocalOptRate)

# Register OBConformerSearch in _openbabel:
_openbabel.OBConformerSearch_swigregister(OBConformerSearch)
class OBAlign(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBAlign_swiginit(self, _openbabel.new_OBAlign(*args))
    SetRef = _swig_new_instance_method(_openbabel.OBAlign_SetRef)
    SetTarget = _swig_new_instance_method(_openbabel.OBAlign_SetTarget)
    SetRefMol = _swig_new_instance_method(_openbabel.OBAlign_SetRefMol)
    SetTargetMol = _swig_new_instance_method(_openbabel.OBAlign_SetTargetMol)
    Align = _swig_new_instance_method(_openbabel.OBAlign_Align)
    Kabsch = _openbabel.OBAlign_Kabsch
    QCP = _openbabel.OBAlign_QCP
    SetMethod = _swig_new_instance_method(_openbabel.OBAlign_SetMethod)
    GetRMSD = _swig_new_instance_method(_openbabel.OBAlign_GetRMSD)
    GetRotMatrix = _swig_new_instance_method(_openbabel.OBAlign_GetRotMatrix)
    GetAlignment = _swig_new_instance_method(_openbabel.OBAlign_GetAlignment)
    UpdateCoords = _swig_new_instance_method(_openbabel.OBAlign_UpdateCoords)
    __swig_destroy__ = _openbabel.delete_OBAlign

# Register OBAlign in _openbabel:
_openbabel.OBAlign_swigregister(OBAlign)
class _OBMolAtomIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolAtomIter_swiginit(self, _openbabel.new__OBMolAtomIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolAtomIter

    def __nonzero__(self):
        return _openbabel._OBMolAtomIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolAtomIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolAtomIter___ref__)

# Register _OBMolAtomIter in _openbabel:
_openbabel._OBMolAtomIter_swigregister(_OBMolAtomIter)
class _OBMolAtomDFSIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolAtomDFSIter_swiginit(self, _openbabel.new__OBMolAtomDFSIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolAtomDFSIter

    def __nonzero__(self):
        return _openbabel._OBMolAtomDFSIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolAtomDFSIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolAtomDFSIter___ref__)
    next = _swig_new_instance_method(_openbabel._OBMolAtomDFSIter_next)

# Register _OBMolAtomDFSIter in _openbabel:
_openbabel._OBMolAtomDFSIter_swigregister(_OBMolAtomDFSIter)
class _OBMolAtomBFSIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolAtomBFSIter_swiginit(self, _openbabel.new__OBMolAtomBFSIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolAtomBFSIter

    def __nonzero__(self):
        return _openbabel._OBMolAtomBFSIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolAtomBFSIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolAtomBFSIter___ref__)
    CurrentDepth = _swig_new_instance_method(_openbabel._OBMolAtomBFSIter_CurrentDepth)

# Register _OBMolAtomBFSIter in _openbabel:
_openbabel._OBMolAtomBFSIter_swigregister(_OBMolAtomBFSIter)
class OBMolBondBFSIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel.OBMolBondBFSIter_swiginit(self, _openbabel.new_OBMolBondBFSIter(*args))
    __swig_destroy__ = _openbabel.delete_OBMolBondBFSIter

    def __nonzero__(self):
        return _openbabel.OBMolBondBFSIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel.OBMolBondBFSIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel.OBMolBondBFSIter___ref__)
    CurrentDepth = _swig_new_instance_method(_openbabel.OBMolBondBFSIter_CurrentDepth)

# Register OBMolBondBFSIter in _openbabel:
_openbabel.OBMolBondBFSIter_swigregister(OBMolBondBFSIter)
class _OBMolBondIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolBondIter_swiginit(self, _openbabel.new__OBMolBondIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolBondIter

    def __nonzero__(self):
        return _openbabel._OBMolBondIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolBondIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolBondIter___ref__)

# Register _OBMolBondIter in _openbabel:
_openbabel._OBMolBondIter_swigregister(_OBMolBondIter)
class _OBAtomAtomIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBAtomAtomIter_swiginit(self, _openbabel.new__OBAtomAtomIter(*args))
    __swig_destroy__ = _openbabel.delete__OBAtomAtomIter

    def __nonzero__(self):
        return _openbabel._OBAtomAtomIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBAtomAtomIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBAtomAtomIter___ref__)

# Register _OBAtomAtomIter in _openbabel:
_openbabel._OBAtomAtomIter_swigregister(_OBAtomAtomIter)
class _OBAtomBondIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBAtomBondIter_swiginit(self, _openbabel.new__OBAtomBondIter(*args))
    __swig_destroy__ = _openbabel.delete__OBAtomBondIter

    def __nonzero__(self):
        return _openbabel._OBAtomBondIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBAtomBondIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBAtomBondIter___ref__)

# Register _OBAtomBondIter in _openbabel:
_openbabel._OBAtomBondIter_swigregister(_OBAtomBondIter)
class _OBResidueIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBResidueIter_swiginit(self, _openbabel.new__OBResidueIter(*args))
    __swig_destroy__ = _openbabel.delete__OBResidueIter

    def __nonzero__(self):
        return _openbabel._OBResidueIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBResidueIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBResidueIter___ref__)

# Register _OBResidueIter in _openbabel:
_openbabel._OBResidueIter_swigregister(_OBResidueIter)
class _OBResidueAtomIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBResidueAtomIter_swiginit(self, _openbabel.new__OBResidueAtomIter(*args))
    __swig_destroy__ = _openbabel.delete__OBResidueAtomIter

    def __nonzero__(self):
        return _openbabel._OBResidueAtomIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBResidueAtomIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBResidueAtomIter___ref__)

# Register _OBResidueAtomIter in _openbabel:
_openbabel._OBResidueAtomIter_swigregister(_OBResidueAtomIter)
class _OBMolAngleIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolAngleIter_swiginit(self, _openbabel.new__OBMolAngleIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolAngleIter

    def __nonzero__(self):
        return _openbabel._OBMolAngleIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolAngleIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolAngleIter___ref__)

# Register _OBMolAngleIter in _openbabel:
_openbabel._OBMolAngleIter_swigregister(_OBMolAngleIter)
class _OBMolTorsionIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolTorsionIter_swiginit(self, _openbabel.new__OBMolTorsionIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolTorsionIter

    def __nonzero__(self):
        return _openbabel._OBMolTorsionIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolTorsionIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolTorsionIter___ref__)

# Register _OBMolTorsionIter in _openbabel:
_openbabel._OBMolTorsionIter_swigregister(_OBMolTorsionIter)
class _OBMolPairIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolPairIter_swiginit(self, _openbabel.new__OBMolPairIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolPairIter

    def __nonzero__(self):
        return _openbabel._OBMolPairIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolPairIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolPairIter___ref__)

# Register _OBMolPairIter in _openbabel:
_openbabel._OBMolPairIter_swigregister(_OBMolPairIter)
class _OBMolRingIter(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _openbabel._OBMolRingIter_swiginit(self, _openbabel.new__OBMolRingIter(*args))
    __swig_destroy__ = _openbabel.delete__OBMolRingIter

    def __nonzero__(self):
        return _openbabel._OBMolRingIter___nonzero__(self)
    __bool__ = __nonzero__


    inc = _swig_new_instance_method(_openbabel._OBMolRingIter_inc)
    __ref__ = _swig_new_instance_method(_openbabel._OBMolRingIter___ref__)

# Register _OBMolRingIter in _openbabel:
_openbabel._OBMolRingIter_swigregister(_OBMolRingIter)

class OBIter(object):
    OBiterator = None # This is defined by the subclasses

    def __init__(self, *params):
        self.iter = self.OBiterator(*params)
        self.finished = False
        if not self.iter.__bool__():
            self.finished = True

    def __iter__(self):
        return self

    def next(self):
        if not self.finished:
            b = self.iter.__ref__()
            self.iter.inc()
            if not self.iter.__bool__():
# There is nothing left to iterate over
                self.finished = True
            return b
        else:
            raise StopIteration

    __next__ = next

class OBIterWithDepth(OBIter):
    def next(self):
        if not self.finished:
            b = self.iter.__ref__()
            depth = self.iter.CurrentDepth()
            self.iter.inc()
            if not self.iter.__bool__():
# There is nothing left to iterate over
                self.finished = True
            return b, depth
        else:
            raise StopIteration

    __next__ = next

class OBAtomAtomIter(OBIter):
    """Iterator over the atoms attached to an atom."""
    OBiterator = _OBAtomAtomIter
class OBAtomBondIter(OBIter):
    """Iterator over the bonds attached to an atom."""
    OBiterator = _OBAtomBondIter
class OBMolAngleIter(OBIter):
    """Iterator over the angles in a molecule."""
    OBiterator = _OBMolAngleIter
class OBMolAtomIter(OBIter):
    """Iterator over the atoms in a molecule."""
    OBiterator = _OBMolAtomIter
class OBMolAtomBFSIter(OBIterWithDepth):
    """Iterator over the atoms in a molecule in a breadth-first manner."""
    OBiterator = _OBMolAtomBFSIter
class OBMolAtomDFSIter(OBIter):
    """Iterator over the atoms in a molecule in a depth-first manner."""
    OBiterator = _OBMolAtomDFSIter
class OBMolBondIter(OBIter):
    """Iterator over the bonds in a molecule."""
    OBiterator = _OBMolBondIter
class OBMolPairIter(OBIter):
    """Iterator over pairs of atoms in a molecule."""
    OBiterator = _OBMolPairIter
class OBMolRingIter(OBIter):
    """Iterator over the rings in a molecule."""
    OBiterator = _OBMolRingIter
class OBMolTorsionIter(OBIter):
    """Iterator over the torsion angles in a molecule."""
    OBiterator = _OBMolTorsionIter
class OBResidueIter(OBIter):
    """Iterator over the residues in a molecule."""
    OBiterator = _OBResidueIter
class OBResidueAtomIter(OBIter):
    """Iterator over the atoms in a residue."""
    OBiterator = _OBResidueAtomIter

class doubleArray(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, nelements):
        _openbabel.doubleArray_swiginit(self, _openbabel.new_doubleArray(nelements))
    __swig_destroy__ = _openbabel.delete_doubleArray
    __getitem__ = _swig_new_instance_method(_openbabel.doubleArray___getitem__)
    __setitem__ = _swig_new_instance_method(_openbabel.doubleArray___setitem__)
    cast = _swig_new_instance_method(_openbabel.doubleArray_cast)
    frompointer = _swig_new_static_method(_openbabel.doubleArray_frompointer)

# Register doubleArray in _openbabel:
_openbabel.doubleArray_swigregister(doubleArray)

def double_array(mylist):
    """Create a C array of doubles from a list."""
    c = doubleArray(len(mylist))
    for i,v in enumerate(mylist):
        c[i] = v
    return c


obErrorLog = cvar.obErrorLog
ttab = cvar.ttab
atomtyper = cvar.atomtyper
aromtyper = cvar.aromtyper


def exception(*args):
    raise Exception("Use OBMol.CloneData instead. OBMol.SetData is only for use from C++.")
OBMol.SetData = exception

class OBTetraNonPlanarStereo(OBStereoBase):
    thisown = 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__ = _openbabel.delete_OBTetraNonPlanarStereo

# Register OBTetraNonPlanarStereo in _openbabel:
_openbabel.OBTetraNonPlanarStereo_swigregister(OBTetraNonPlanarStereo)
class OBTetraPlanarStereo(OBStereoBase):
    thisown = 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__ = _openbabel.delete_OBTetraPlanarStereo

# Register OBTetraPlanarStereo in _openbabel:
_openbabel.OBTetraPlanarStereo_swigregister(OBTetraPlanarStereo)
class OBTetrahedralStereo(OBTetraNonPlanarStereo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, mol):
        _openbabel.OBTetrahedralStereo_swiginit(self, _openbabel.new_OBTetrahedralStereo(mol))
    __swig_destroy__ = _openbabel.delete_OBTetrahedralStereo
    IsValid = _swig_new_instance_method(_openbabel.OBTetrahedralStereo_IsValid)
    __eq__ = _swig_new_instance_method(_openbabel.OBTetrahedralStereo___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBTetrahedralStereo___ne__)
    SetConfig = _swig_new_instance_method(_openbabel.OBTetrahedralStereo_SetConfig)
    GetConfig = _swig_new_instance_method(_openbabel.OBTetrahedralStereo_GetConfig)

# Register OBTetrahedralStereo in _openbabel:
_openbabel.OBTetrahedralStereo_swigregister(OBTetrahedralStereo)
class OBCisTransStereo(OBTetraPlanarStereo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, mol):
        _openbabel.OBCisTransStereo_swiginit(self, _openbabel.new_OBCisTransStereo(mol))
    __swig_destroy__ = _openbabel.delete_OBCisTransStereo
    IsValid = _swig_new_instance_method(_openbabel.OBCisTransStereo_IsValid)
    __eq__ = _swig_new_instance_method(_openbabel.OBCisTransStereo___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBCisTransStereo___ne__)
    IsOnSameAtom = _swig_new_instance_method(_openbabel.OBCisTransStereo_IsOnSameAtom)
    IsTrans = _swig_new_instance_method(_openbabel.OBCisTransStereo_IsTrans)
    IsCis = _swig_new_instance_method(_openbabel.OBCisTransStereo_IsCis)
    GetTransRef = _swig_new_instance_method(_openbabel.OBCisTransStereo_GetTransRef)
    GetCisRef = _swig_new_instance_method(_openbabel.OBCisTransStereo_GetCisRef)
    SetConfig = _swig_new_instance_method(_openbabel.OBCisTransStereo_SetConfig)
    GetConfig = _swig_new_instance_method(_openbabel.OBCisTransStereo_GetConfig)

# Register OBCisTransStereo in _openbabel:
_openbabel.OBCisTransStereo_swigregister(OBCisTransStereo)
class OBSquarePlanarStereo(OBTetraPlanarStereo):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, mol):
        _openbabel.OBSquarePlanarStereo_swiginit(self, _openbabel.new_OBSquarePlanarStereo(mol))
    __swig_destroy__ = _openbabel.delete_OBSquarePlanarStereo
    IsValid = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_IsValid)
    __eq__ = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo___ne__)
    IsTrans = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_IsTrans)
    IsCis = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_IsCis)
    GetTransRef = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_GetTransRef)
    GetCisRefs = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_GetCisRefs)
    SetConfig = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_SetConfig)
    GetConfig = _swig_new_instance_method(_openbabel.OBSquarePlanarStereo_GetConfig)

# Register OBSquarePlanarStereo in _openbabel:
_openbabel.OBSquarePlanarStereo_swigregister(OBSquarePlanarStereo)
class OBTetrahedralConfig(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __eq__ = _swig_new_instance_method(_openbabel.OBTetrahedralConfig___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBTetrahedralConfig___ne__)
    center = property(_openbabel.OBTetrahedralConfig_center_get, _openbabel.OBTetrahedralConfig_center_set)
    from_or_towards = property(_openbabel.OBTetrahedralConfig_from_or_towards_get, _openbabel.OBTetrahedralConfig_from_or_towards_set)
    refs = property(_openbabel.OBTetrahedralConfig_refs_get, _openbabel.OBTetrahedralConfig_refs_set)
    winding = property(_openbabel.OBTetrahedralConfig_winding_get, _openbabel.OBTetrahedralConfig_winding_set)
    view = property(_openbabel.OBTetrahedralConfig_view_get, _openbabel.OBTetrahedralConfig_view_set)
    specified = property(_openbabel.OBTetrahedralConfig_specified_get, _openbabel.OBTetrahedralConfig_specified_set)

    def __init__(self):
        _openbabel.OBTetrahedralConfig_swiginit(self, _openbabel.new_OBTetrahedralConfig())
    __swig_destroy__ = _openbabel.delete_OBTetrahedralConfig

# Register OBTetrahedralConfig in _openbabel:
_openbabel.OBTetrahedralConfig_swigregister(OBTetrahedralConfig)
class OBCisTransConfig(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __eq__ = _swig_new_instance_method(_openbabel.OBCisTransConfig___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBCisTransConfig___ne__)
    begin = property(_openbabel.OBCisTransConfig_begin_get, _openbabel.OBCisTransConfig_begin_set)
    end = property(_openbabel.OBCisTransConfig_end_get, _openbabel.OBCisTransConfig_end_set)
    refs = property(_openbabel.OBCisTransConfig_refs_get, _openbabel.OBCisTransConfig_refs_set)
    shape = property(_openbabel.OBCisTransConfig_shape_get, _openbabel.OBCisTransConfig_shape_set)
    specified = property(_openbabel.OBCisTransConfig_specified_get, _openbabel.OBCisTransConfig_specified_set)

    def __init__(self):
        _openbabel.OBCisTransConfig_swiginit(self, _openbabel.new_OBCisTransConfig())
    __swig_destroy__ = _openbabel.delete_OBCisTransConfig

# Register OBCisTransConfig in _openbabel:
_openbabel.OBCisTransConfig_swigregister(OBCisTransConfig)
class OBSquarePlanarConfig(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __eq__ = _swig_new_instance_method(_openbabel.OBSquarePlanarConfig___eq__)
    __ne__ = _swig_new_instance_method(_openbabel.OBSquarePlanarConfig___ne__)
    center = property(_openbabel.OBSquarePlanarConfig_center_get, _openbabel.OBSquarePlanarConfig_center_set)
    refs = property(_openbabel.OBSquarePlanarConfig_refs_get, _openbabel.OBSquarePlanarConfig_refs_set)
    shape = property(_openbabel.OBSquarePlanarConfig_shape_get, _openbabel.OBSquarePlanarConfig_shape_set)
    specified = property(_openbabel.OBSquarePlanarConfig_specified_get, _openbabel.OBSquarePlanarConfig_specified_set)

    def __init__(self):
        _openbabel.OBSquarePlanarConfig_swiginit(self, _openbabel.new_OBSquarePlanarConfig())
    __swig_destroy__ = _openbabel.delete_OBSquarePlanarConfig

# Register OBSquarePlanarConfig in _openbabel:
_openbabel.OBSquarePlanarConfig_swigregister(OBSquarePlanarConfig)

