# CONFIDENTIAL. (C) 2017 OpenEye Scientific Software Inc.
# All rights reserved.
# 
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO OPENEYE
# SCIENTIFIC SOFTWARE INC., AND IS SUBJECT TO THE FULL PROTECTION OF
# COPYRIGHT AND TRADESECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from OpenEye is strictly
# prohibited and illegal.  De-obfuscating, de-minimizing, or any other
# attempt to reverse engineer or discover the workings of this software,
# is strictly prohibited. Even if software is exposed or visible, it is
# still proprietary and confidential and the above prohibitions apply.
# This software is NOT "Sample Code". For purposes of customization or
# interoperation with other software you must use Sample Code
# specifically labeled as such.
# Please contact OpenEye at eyesopen.com/legal if you have any questions
# about this warning.


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

from sys import version_info as _swig_python_version_info

def swig_import_helper():
    from os.path import dirname
    import importlib.util

    spec = importlib.machinery.PathFinder().find_spec("_oechem", [dirname(__file__)])

    if spec is None:
        # OpenEye Import Statements
        spec = importlib.machinery.PathFinder().find_spec("libs",[dirname(__file__)])
    libs = importlib.util.module_from_spec(spec)

    import sys
    sys.modules[spec.name] = libs
    spec.loader.exec_module(libs)

    assert not sys.platform.startswith('win')

    _oeff = libs.OEGetModule('_oeff2206')
    return _oeff

_oeff = swig_import_helper()
del swig_import_helper
del _swig_python_version_info

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


try:
    import weakref
    weakref_proxy = weakref.proxy
except __builtin__.Exception:
    weakref_proxy = lambda x: x


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

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

    def value(self) -> "PyObject *":
        return _oeff.oeff_SwigPyIterator_value(self)

    def incr(self, n: 'size_t'=1) -> "swig::oeff_SwigPyIterator *":
        return _oeff.oeff_SwigPyIterator_incr(self, n)

    def decr(self, n: 'size_t'=1) -> "swig::oeff_SwigPyIterator *":
        return _oeff.oeff_SwigPyIterator_decr(self, n)

    def distance(self, x: 'oeff_SwigPyIterator') -> "ptrdiff_t":
        return _oeff.oeff_SwigPyIterator_distance(self, x)

    def equal(self, x: 'oeff_SwigPyIterator') -> "bool":
        return _oeff.oeff_SwigPyIterator_equal(self, x)

    def copy(self) -> "swig::oeff_SwigPyIterator *":
        return _oeff.oeff_SwigPyIterator_copy(self)

    def next(self) -> "PyObject *":
        return _oeff.oeff_SwigPyIterator_next(self)

    def __next__(self) -> "PyObject *":
        return _oeff.oeff_SwigPyIterator___next__(self)

    def previous(self) -> "PyObject *":
        return _oeff.oeff_SwigPyIterator_previous(self)

    def advance(self, n: 'ptrdiff_t') -> "swig::oeff_SwigPyIterator *":
        return _oeff.oeff_SwigPyIterator_advance(self, n)

    def __eq__(self, x: 'oeff_SwigPyIterator') -> "bool":
        return _oeff.oeff_SwigPyIterator___eq__(self, x)

    def __ne__(self, x: 'oeff_SwigPyIterator') -> "bool":
        return _oeff.oeff_SwigPyIterator___ne__(self, x)

    def __iadd__(self, n: 'ptrdiff_t') -> "swig::oeff_SwigPyIterator &":
        return _oeff.oeff_SwigPyIterator___iadd__(self, n)

    def __isub__(self, n: 'ptrdiff_t') -> "swig::oeff_SwigPyIterator &":
        return _oeff.oeff_SwigPyIterator___isub__(self, n)

    def __add__(self, n: 'ptrdiff_t') -> "swig::oeff_SwigPyIterator *":
        return _oeff.oeff_SwigPyIterator___add__(self, n)

    def __sub__(self, *args) -> "ptrdiff_t":
        return _oeff.oeff_SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self
oeff_SwigPyIterator_swigregister = _oeff.oeff_SwigPyIterator_swigregister
oeff_SwigPyIterator_swigregister(oeff_SwigPyIterator)

import openeye.oechem as oechem
OEFuncType_Undefined = _oeff.OEFuncType_Undefined
OEFuncType_VdW = _oeff.OEFuncType_VdW
OEFuncType_VdWRepel = _oeff.OEFuncType_VdWRepel
OEFuncType_Coulomb = _oeff.OEFuncType_Coulomb
OEFuncType_Bond = _oeff.OEFuncType_Bond
OEFuncType_Stretch = _oeff.OEFuncType_Stretch
OEFuncType_Bend = _oeff.OEFuncType_Bend
OEFuncType_StretchBend = _oeff.OEFuncType_StretchBend
OEFuncType_Torsion = _oeff.OEFuncType_Torsion
OEFuncType_ImproperTorsion = _oeff.OEFuncType_ImproperTorsion
OEFuncType_OutOfPlane = _oeff.OEFuncType_OutOfPlane

OEFuncType_All = OEFuncType_VdW|OEFuncType_Coulomb|OEFuncType_Bond|OEFuncType_Bend|OEFuncType_StretchBend|OEFuncType_Torsion|OEFuncType_OutOfPlane


OEFuncType_AllRepel = OEFuncType_VdWRepel|OEFuncType_Coulomb|OEFuncType_Bond|OEFuncType_Bend|OEFuncType_StretchBend|OEFuncType_Torsion|OEFuncType_OutOfPlane

OEFuncType_InterMolVdW = _oeff.OEFuncType_InterMolVdW
OEFuncType_InterMolCoulomb = _oeff.OEFuncType_InterMolCoulomb
OEFuncType_TorAdapt = _oeff.OEFuncType_TorAdapt
OEFuncType_QuatAdapt = _oeff.OEFuncType_QuatAdapt
OEFuncType_SubsetAdapt = _oeff.OEFuncType_SubsetAdapt
OEFuncType_SubsetAdaptor = _oeff.OEFuncType_SubsetAdaptor
OEFuncType_InterAdapt = _oeff.OEFuncType_InterAdapt
OEFuncType_HarmonicPot = _oeff.OEFuncType_HarmonicPot
OEFuncType_Sheffield = _oeff.OEFuncType_Sheffield
OEFuncType_Shape = _oeff.OEFuncType_Shape
OEFuncType_Color = _oeff.OEFuncType_Color
OEFFParam_r0 = _oeff.OEFFParam_r0
OEFFParam_EqDist = _oeff.OEFFParam_EqDist
OEFFParam_EqDistance = _oeff.OEFFParam_EqDistance
OEFFParam_StretchConst = _oeff.OEFFParam_StretchConst
OEFFParam_k = _oeff.OEFFParam_k
OEFFParam_rij = _oeff.OEFFParam_rij
OEFFParam_r2ij = _oeff.OEFFParam_r2ij
OEFFParam_ContactDist = _oeff.OEFFParam_ContactDist
OEFFParam_Epsilon = _oeff.OEFFParam_Epsilon
OEFFParam_eps = _oeff.OEFFParam_eps
OEFFParam_C = _oeff.OEFFParam_C
OEFFParam_a0 = _oeff.OEFFParam_a0
OEFFParam_EqAngle = _oeff.OEFFParam_EqAngle
OEFFParam_BendConst = _oeff.OEFFParam_BendConst
OEFFParam_ka = _oeff.OEFFParam_ka
OEFFParam_kb1 = _oeff.OEFFParam_kb1
OEFFParam_StretchBendConst1 = _oeff.OEFFParam_StretchBendConst1
OEFFParam_StretchBendConst2 = _oeff.OEFFParam_StretchBendConst2
OEFFParam_kb2 = _oeff.OEFFParam_kb2
OEFFParam_r1 = _oeff.OEFFParam_r1
OEFFParam_r2 = _oeff.OEFFParam_r2
OEFFParam_OutOfPlaneConst = _oeff.OEFFParam_OutOfPlaneConst
OEFFParam_OOP = _oeff.OEFFParam_OOP
OEFFParam_V1 = _oeff.OEFFParam_V1
OEFFParam_V2 = _oeff.OEFFParam_V2
OEFFParam_V3 = _oeff.OEFFParam_V3
OEFFParam_v1 = _oeff.OEFFParam_v1
OEFFParam_v2 = _oeff.OEFFParam_v2
OEFFParam_v3 = _oeff.OEFFParam_v3
OEFFParam_p1 = _oeff.OEFFParam_p1
OEFFParam_ph1 = _oeff.OEFFParam_ph1
OEFFParam_ntt = _oeff.OEFFParam_ntt
OEFFParam_ko = _oeff.OEFFParam_ko
OEFFParam_listKv = _oeff.OEFFParam_listKv
OEFFParam_listDv = _oeff.OEFFParam_listDv
OEFFParam_listPv = _oeff.OEFFParam_listPv
OEFFParam_listPhv = _oeff.OEFFParam_listPhv
OEFFParam_Cou = _oeff.OEFFParam_Cou
OEVarType_SolidBody = _oeff.OEVarType_SolidBody
OEVarType_Torsions = _oeff.OEVarType_Torsions
OEVarType_Cart = _oeff.OEVarType_Cart
OEVarType_TranRotTor = _oeff.OEVarType_TranRotTor
OEMMFFSheffieldFFType_Invalid = _oeff.OEMMFFSheffieldFFType_Invalid
OEMMFFSheffieldFFType_MMFF = _oeff.OEMMFFSheffieldFFType_MMFF
OEMMFFSheffieldFFType_MMFF_NOESTAT = _oeff.OEMMFFSheffieldFFType_MMFF_NOESTAT
OEMMFFSheffieldFFType_MMFF_TRUNC = _oeff.OEMMFFSheffieldFFType_MMFF_TRUNC
OEMMFFSheffieldFFType_MMFF_SHEFF = _oeff.OEMMFFSheffieldFFType_MMFF_SHEFF
OEMMFFSheffieldFFType_MMFF94S = _oeff.OEMMFFSheffieldFFType_MMFF94S
OEMMFFSheffieldFFType_MMFF94S_NOESTAT = _oeff.OEMMFFSheffieldFFType_MMFF94S_NOESTAT
OEMMFFSheffieldFFType_MMFF94S_TRUNC = _oeff.OEMMFFSheffieldFFType_MMFF94S_TRUNC
OEMMFFSheffieldFFType_MMFF94S_SHEFF = _oeff.OEMMFFSheffieldFFType_MMFF94S_SHEFF
OEMMFFSheffieldFFType_MMFF94Smod = _oeff.OEMMFFSheffieldFFType_MMFF94Smod
OEMMFFSheffieldFFType_MMFF94Smod_NOESTAT = _oeff.OEMMFFSheffieldFFType_MMFF94Smod_NOESTAT
OEMMFFSheffieldFFType_MMFF94Smod_TRUNC = _oeff.OEMMFFSheffieldFFType_MMFF94Smod_TRUNC
OEMMFFSheffieldFFType_MMFF94Smod_SHEFF = _oeff.OEMMFFSheffieldFFType_MMFF94Smod_SHEFF
OEMMFFSheffieldFFType_MMFFSheff_Max = _oeff.OEMMFFSheffieldFFType_MMFFSheff_Max
OESmirnoffType_SMIRNOFF99FROSST = _oeff.OESmirnoffType_SMIRNOFF99FROSST

OESmirnoffType_SMIRNOFF = OESmirnoffType_SMIRNOFF99FROSST

OESmirnoffType_PARSLEY_OPENFF100 = _oeff.OESmirnoffType_PARSLEY_OPENFF100
OESmirnoffType_PARSLEY_OPENFF111 = _oeff.OESmirnoffType_PARSLEY_OPENFF111

def no_op(arg1: 'OEAtomIter') -> "void":
    """no_op(OEAtomIter arg1)"""
    return _oeff.no_op(arg1)
class OEFComponentIter(object):
    """Proxy of C++ OESystem::OEIter<(OEOpt::OEFComponent)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OEFComponentIter rhs) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OESystem::OEIterBase< OEOpt::OEFComponent > * rhs) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OESystem::OEIterBase< OESystem::OEIter< OEOpt::OEFComponent >::NonConstA > * rhs) -> OEFComponentIter
        """
        this = _oeff.new_OEFComponentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEFComponentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """Copy(OEFComponentIter self) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEFComponentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEFComponentIter self, OESystem::OEIterBase< OEOpt::OEFComponent > * ib)
        Push(OEFComponentIter self, OEFComponentIter iter)
        """
        return _oeff.OEFComponentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEOpt::OEFComponent,OEOpt::OEFComponent > const &') -> "void":
        """Sort(OEFComponentIter self, OESystem::OEBinaryPredicate< OEOpt::OEFComponent,OEOpt::OEFComponent > const & sort_criterion)"""
        return _oeff.OEFComponentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        """ToFirst(OEFComponentIter self) -> OEFComponentIter"""
        return _oeff.OEFComponentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        """ToLast(OEFComponentIter self) -> OEFComponentIter"""
        return _oeff.OEFComponentIter_ToLast(self)


    def __ref__(self) -> "OEOpt::OEFComponent &":
        """__ref__(OEFComponentIter self) -> OEFComponent"""
        return _oeff.OEFComponentIter___ref__(self)


    def IsValid(self):
      return _oeff.OEFComponentIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEFComponentIter self) -> PyObject *"""
        return _oeff.OEFComponentIter_next(self)


    def Target(self) -> "OEOpt::OEFComponent &":
        """Target(OEFComponentIter self) -> OEFComponent"""
        return _oeff.OEFComponentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        """
        Next(OEFComponentIter self) -> OEFComponentIter
        Next(OEFComponentIter self, int i) -> OEFComponentIter
        """
        return _oeff.OEFComponentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        """
        Prev(OEFComponentIter self) -> OEFComponentIter
        Prev(OEFComponentIter self, int i) -> OEFComponentIter
        """
        return _oeff.OEFComponentIter_Prev(self, *args)

OEFComponentIter_swigregister = _oeff.OEFComponentIter_swigregister
OEFComponentIter_swigregister(OEFComponentIter)


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    """
    GetSWIG_NewPointerObj(OEAtomBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEBondBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMolBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEConfBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETransBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OENbrs arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltLocation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltGroup arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESequenceAlignment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERole arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string const & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERotamer arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETorsion arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColor arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColorStop arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEGroupBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAtomBondSet arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESubSearch arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHintTypeBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierFragment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierChain arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEPlaceHydrogensMoverNote arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAnnotation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFuzzy arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFComponent arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteraction arg, bool owned) -> PyObject *
    """
    return _oeff.GetSWIG_NewPointerObj(*args)
class OEInteractionIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEInteraction)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OEInteractionIter rhs) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * rhs) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEInteraction >::NonConstA > * rhs) -> OEInteractionIter
        """
        this = _oeff.new_OEInteractionIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEInteractionIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """Copy(OEInteractionIter self) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEInteractionIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionIter self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * ib)
        Push(OEInteractionIter self, OEInteractionIter iter)
        """
        return _oeff.OEInteractionIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OEInteraction,OEMolPotential::OEInteraction > const &') -> "void":
        """Sort(OEInteractionIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEInteraction,OEMolPotential::OEInteraction > const & sort_criterion)"""
        return _oeff.OEInteractionIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        """ToFirst(OEInteractionIter self) -> OEInteractionIter"""
        return _oeff.OEInteractionIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        """ToLast(OEInteractionIter self) -> OEInteractionIter"""
        return _oeff.OEInteractionIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OEInteraction &":
        """__ref__(OEInteractionIter self) -> OEInteraction"""
        return _oeff.OEInteractionIter___ref__(self)


    def IsValid(self):
      return _oeff.OEInteractionIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEInteractionIter self) -> PyObject *"""
        return _oeff.OEInteractionIter_next(self)


    def Target(self) -> "OEMolPotential::OEInteraction &":
        """Target(OEInteractionIter self) -> OEInteraction"""
        return _oeff.OEInteractionIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        """
        Next(OEInteractionIter self) -> OEInteractionIter
        Next(OEInteractionIter self, int i) -> OEInteractionIter
        """
        return _oeff.OEInteractionIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        """
        Prev(OEInteractionIter self) -> OEInteractionIter
        Prev(OEInteractionIter self, int i) -> OEInteractionIter
        """
        return _oeff.OEInteractionIter_Prev(self, *args)

OEInteractionIter_swigregister = _oeff.OEInteractionIter_swigregister
OEInteractionIter_swigregister(OEInteractionIter)

class OEMolFunc1Vector(object):
    """Proxy of C++ std::vector<(p.OEMolPotential::OEMolFunc1)> class."""

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

    def iterator(self) -> "swig::oeff_SwigPyIterator *":
        """iterator(OEMolFunc1Vector self) -> oeff_SwigPyIterator"""
        return _oeff.OEMolFunc1Vector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEMolFunc1Vector self) -> bool"""
        return _oeff.OEMolFunc1Vector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEMolFunc1Vector self) -> bool"""
        return _oeff.OEMolFunc1Vector___bool__(self)


    def __len__(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::size_type":
        """__len__(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::size_type"""
        return _oeff.OEMolFunc1Vector___len__(self)


    def __getslice__(self, i: 'std::vector< OEMolPotential::OEMolFunc1 * >::difference_type', j: 'std::vector< OEMolPotential::OEMolFunc1 * >::difference_type') -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > > *":
        """__getslice__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type j) -> OEMolFunc1Vector"""
        return _oeff.OEMolFunc1Vector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type j)
        __setslice__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type j, OEMolFunc1Vector v)
        """
        return _oeff.OEMolFunc1Vector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEMolPotential::OEMolFunc1 * >::difference_type', j: 'std::vector< OEMolPotential::OEMolFunc1 * >::difference_type') -> "void":
        """__delslice__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type j)"""
        return _oeff.OEMolFunc1Vector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i)
        __delitem__(OEMolFunc1Vector self, PySliceObject * slice)
        """
        return _oeff.OEMolFunc1Vector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEMolPotential::OEMolFunc1 * >::value_type":
        """
        __getitem__(OEMolFunc1Vector self, PySliceObject * slice) -> OEMolFunc1Vector
        __getitem__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i) -> OEMolFunc1
        """
        return _oeff.OEMolFunc1Vector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEMolFunc1Vector self, PySliceObject * slice, OEMolFunc1Vector v)
        __setitem__(OEMolFunc1Vector self, PySliceObject * slice)
        __setitem__(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::difference_type i, OEMolFunc1 x)
        """
        return _oeff.OEMolFunc1Vector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::value_type":
        """pop(OEMolFunc1Vector self) -> OEMolFunc1"""
        return _oeff.OEMolFunc1Vector_pop(self)


    def append(self, x: 'OEMolFunc1') -> "void":
        """append(OEMolFunc1Vector self, OEMolFunc1 x)"""
        return _oeff.OEMolFunc1Vector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEMolFunc1Vector self) -> bool"""
        return _oeff.OEMolFunc1Vector_empty(self)


    def size(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::size_type":
        """size(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::size_type"""
        return _oeff.OEMolFunc1Vector_size(self)


    def swap(self, v: 'OEMolFunc1Vector') -> "void":
        """swap(OEMolFunc1Vector self, OEMolFunc1Vector v)"""
        return _oeff.OEMolFunc1Vector_swap(self, v)


    def begin(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::iterator":
        """begin(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::iterator"""
        return _oeff.OEMolFunc1Vector_begin(self)


    def end(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::iterator":
        """end(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::iterator"""
        return _oeff.OEMolFunc1Vector_end(self)


    def rbegin(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::reverse_iterator":
        """rbegin(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::reverse_iterator"""
        return _oeff.OEMolFunc1Vector_rbegin(self)


    def rend(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::reverse_iterator":
        """rend(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::reverse_iterator"""
        return _oeff.OEMolFunc1Vector_rend(self)


    def clear(self) -> "void":
        """clear(OEMolFunc1Vector self)"""
        return _oeff.OEMolFunc1Vector_clear(self)


    def get_allocator(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::allocator_type":
        """get_allocator(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::allocator_type"""
        return _oeff.OEMolFunc1Vector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEMolFunc1Vector self)"""
        return _oeff.OEMolFunc1Vector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEMolPotential::OEMolFunc1 * >::iterator":
        """
        erase(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::iterator pos) -> std::vector< OEMolPotential::OEMolFunc1 * >::iterator
        erase(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::iterator first, std::vector< OEMolPotential::OEMolFunc1 * >::iterator last) -> std::vector< OEMolPotential::OEMolFunc1 * >::iterator
        """
        return _oeff.OEMolFunc1Vector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEMolPotential::OEMolFunc1)> self) -> OEMolFunc1Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc1)> self, OEMolFunc1Vector arg2) -> OEMolFunc1Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc1)> self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type size) -> OEMolFunc1Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc1)> self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type size, OEMolFunc1 value) -> OEMolFunc1Vector
        """
        this = _oeff.new_OEMolFunc1Vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEMolFunc1') -> "void":
        """push_back(OEMolFunc1Vector self, OEMolFunc1 x)"""
        return _oeff.OEMolFunc1Vector_push_back(self, x)


    def front(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::value_type":
        """front(OEMolFunc1Vector self) -> OEMolFunc1"""
        return _oeff.OEMolFunc1Vector_front(self)


    def back(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::value_type":
        """back(OEMolFunc1Vector self) -> OEMolFunc1"""
        return _oeff.OEMolFunc1Vector_back(self)


    def assign(self, n: 'std::vector< OEMolPotential::OEMolFunc1 * >::size_type', x: 'OEMolFunc1') -> "void":
        """assign(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type n, OEMolFunc1 x)"""
        return _oeff.OEMolFunc1Vector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type new_size)
        resize(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type new_size, OEMolFunc1 x)
        """
        return _oeff.OEMolFunc1Vector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::iterator pos, OEMolFunc1 x) -> std::vector< OEMolPotential::OEMolFunc1 * >::iterator
        insert(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::iterator pos, std::vector< OEMolPotential::OEMolFunc1 * >::size_type n, OEMolFunc1 x)
        """
        return _oeff.OEMolFunc1Vector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEMolPotential::OEMolFunc1 * >::size_type') -> "void":
        """reserve(OEMolFunc1Vector self, std::vector< OEMolPotential::OEMolFunc1 * >::size_type n)"""
        return _oeff.OEMolFunc1Vector_reserve(self, n)


    def capacity(self) -> "std::vector< OEMolPotential::OEMolFunc1 * >::size_type":
        """capacity(OEMolFunc1Vector self) -> std::vector< OEMolPotential::OEMolFunc1 * >::size_type"""
        return _oeff.OEMolFunc1Vector_capacity(self)

    __swig_destroy__ = _oeff.delete_OEMolFunc1Vector
    __del__ = lambda self: None
OEMolFunc1Vector_swigregister = _oeff.OEMolFunc1Vector_swigregister
OEMolFunc1Vector_swigregister(OEMolFunc1Vector)

class OEMolFunc2Vector(object):
    """Proxy of C++ std::vector<(p.OEMolPotential::OEMolFunc2)> class."""

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

    def iterator(self) -> "swig::oeff_SwigPyIterator *":
        """iterator(OEMolFunc2Vector self) -> oeff_SwigPyIterator"""
        return _oeff.OEMolFunc2Vector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEMolFunc2Vector self) -> bool"""
        return _oeff.OEMolFunc2Vector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEMolFunc2Vector self) -> bool"""
        return _oeff.OEMolFunc2Vector___bool__(self)


    def __len__(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::size_type":
        """__len__(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::size_type"""
        return _oeff.OEMolFunc2Vector___len__(self)


    def __getslice__(self, i: 'std::vector< OEMolPotential::OEMolFunc2 * >::difference_type', j: 'std::vector< OEMolPotential::OEMolFunc2 * >::difference_type') -> "std::vector< OEMolPotential::OEMolFunc2 *,std::allocator< OEMolPotential::OEMolFunc2 * > > *":
        """__getslice__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type j) -> OEMolFunc2Vector"""
        return _oeff.OEMolFunc2Vector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type j)
        __setslice__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type j, OEMolFunc2Vector v)
        """
        return _oeff.OEMolFunc2Vector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEMolPotential::OEMolFunc2 * >::difference_type', j: 'std::vector< OEMolPotential::OEMolFunc2 * >::difference_type') -> "void":
        """__delslice__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type j)"""
        return _oeff.OEMolFunc2Vector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i)
        __delitem__(OEMolFunc2Vector self, PySliceObject * slice)
        """
        return _oeff.OEMolFunc2Vector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEMolPotential::OEMolFunc2 * >::value_type":
        """
        __getitem__(OEMolFunc2Vector self, PySliceObject * slice) -> OEMolFunc2Vector
        __getitem__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i) -> OEMolFunc2
        """
        return _oeff.OEMolFunc2Vector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEMolFunc2Vector self, PySliceObject * slice, OEMolFunc2Vector v)
        __setitem__(OEMolFunc2Vector self, PySliceObject * slice)
        __setitem__(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::difference_type i, OEMolFunc2 x)
        """
        return _oeff.OEMolFunc2Vector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::value_type":
        """pop(OEMolFunc2Vector self) -> OEMolFunc2"""
        return _oeff.OEMolFunc2Vector_pop(self)


    def append(self, x: 'OEMolFunc2') -> "void":
        """append(OEMolFunc2Vector self, OEMolFunc2 x)"""
        return _oeff.OEMolFunc2Vector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEMolFunc2Vector self) -> bool"""
        return _oeff.OEMolFunc2Vector_empty(self)


    def size(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::size_type":
        """size(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::size_type"""
        return _oeff.OEMolFunc2Vector_size(self)


    def swap(self, v: 'OEMolFunc2Vector') -> "void":
        """swap(OEMolFunc2Vector self, OEMolFunc2Vector v)"""
        return _oeff.OEMolFunc2Vector_swap(self, v)


    def begin(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::iterator":
        """begin(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::iterator"""
        return _oeff.OEMolFunc2Vector_begin(self)


    def end(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::iterator":
        """end(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::iterator"""
        return _oeff.OEMolFunc2Vector_end(self)


    def rbegin(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::reverse_iterator":
        """rbegin(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::reverse_iterator"""
        return _oeff.OEMolFunc2Vector_rbegin(self)


    def rend(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::reverse_iterator":
        """rend(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::reverse_iterator"""
        return _oeff.OEMolFunc2Vector_rend(self)


    def clear(self) -> "void":
        """clear(OEMolFunc2Vector self)"""
        return _oeff.OEMolFunc2Vector_clear(self)


    def get_allocator(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::allocator_type":
        """get_allocator(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::allocator_type"""
        return _oeff.OEMolFunc2Vector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEMolFunc2Vector self)"""
        return _oeff.OEMolFunc2Vector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEMolPotential::OEMolFunc2 * >::iterator":
        """
        erase(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::iterator pos) -> std::vector< OEMolPotential::OEMolFunc2 * >::iterator
        erase(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::iterator first, std::vector< OEMolPotential::OEMolFunc2 * >::iterator last) -> std::vector< OEMolPotential::OEMolFunc2 * >::iterator
        """
        return _oeff.OEMolFunc2Vector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEMolPotential::OEMolFunc2)> self) -> OEMolFunc2Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc2)> self, OEMolFunc2Vector arg2) -> OEMolFunc2Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc2)> self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type size) -> OEMolFunc2Vector
        __init__(std::vector<(p.OEMolPotential::OEMolFunc2)> self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type size, OEMolFunc2 value) -> OEMolFunc2Vector
        """
        this = _oeff.new_OEMolFunc2Vector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEMolFunc2') -> "void":
        """push_back(OEMolFunc2Vector self, OEMolFunc2 x)"""
        return _oeff.OEMolFunc2Vector_push_back(self, x)


    def front(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::value_type":
        """front(OEMolFunc2Vector self) -> OEMolFunc2"""
        return _oeff.OEMolFunc2Vector_front(self)


    def back(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::value_type":
        """back(OEMolFunc2Vector self) -> OEMolFunc2"""
        return _oeff.OEMolFunc2Vector_back(self)


    def assign(self, n: 'std::vector< OEMolPotential::OEMolFunc2 * >::size_type', x: 'OEMolFunc2') -> "void":
        """assign(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type n, OEMolFunc2 x)"""
        return _oeff.OEMolFunc2Vector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type new_size)
        resize(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type new_size, OEMolFunc2 x)
        """
        return _oeff.OEMolFunc2Vector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::iterator pos, OEMolFunc2 x) -> std::vector< OEMolPotential::OEMolFunc2 * >::iterator
        insert(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::iterator pos, std::vector< OEMolPotential::OEMolFunc2 * >::size_type n, OEMolFunc2 x)
        """
        return _oeff.OEMolFunc2Vector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEMolPotential::OEMolFunc2 * >::size_type') -> "void":
        """reserve(OEMolFunc2Vector self, std::vector< OEMolPotential::OEMolFunc2 * >::size_type n)"""
        return _oeff.OEMolFunc2Vector_reserve(self, n)


    def capacity(self) -> "std::vector< OEMolPotential::OEMolFunc2 * >::size_type":
        """capacity(OEMolFunc2Vector self) -> std::vector< OEMolPotential::OEMolFunc2 * >::size_type"""
        return _oeff.OEMolFunc2Vector_capacity(self)

    __swig_destroy__ = _oeff.delete_OEMolFunc2Vector
    __del__ = lambda self: None
OEMolFunc2Vector_swigregister = _oeff.OEMolFunc2Vector_swigregister
OEMolFunc2Vector_swigregister(OEMolFunc2Vector)

class OEAdaptor(object):
    """Proxy of C++ OEOpt::OEAdaptor class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def GetVar(self, *args) -> "void":
        """
        GetVar(OEAdaptor self, double const * arg2) -> double const
        GetVar(OEAdaptor self, double * var, double const * x)
        """
        return _oeff.OEAdaptor_GetVar(self, *args)


    def AdaptVar(self, ca: 'double *', arg3: 'double const *') -> "bool":
        """AdaptVar(OEAdaptor self, double * ca, double const * arg3) -> bool"""
        return _oeff.OEAdaptor_AdaptVar(self, ca, arg3)

    __swig_destroy__ = _oeff.delete_OEAdaptor
    __del__ = lambda self: None
OEAdaptor_swigregister = _oeff.OEAdaptor_swigregister
OEAdaptor_swigregister(OEAdaptor)

class OEFComponent(object):
    """Proxy of C++ OEOpt::OEFComponent class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    name = _swig_property(_oeff.OEFComponent_name_get, _oeff.OEFComponent_name_set)
    value = _swig_property(_oeff.OEFComponent_value_get, _oeff.OEFComponent_value_set)

    def __init__(self, *args):
        """
        __init__(OEOpt::OEFComponent self) -> OEFComponent
        __init__(OEOpt::OEFComponent self, std::string const & n, double v) -> OEFComponent
        """
        this = _oeff.new_OEFComponent(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEFComponent
    __del__ = lambda self: None
OEFComponent_swigregister = _oeff.OEFComponent_swigregister
OEFComponent_swigregister(OEFComponent)

class OEFunc0(object):
    """Proxy of C++ OEOpt::OEFunc0 class."""

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

    def __init__(self):
        """__init__(OEOpt::OEFunc0 self) -> OEFunc0"""
        if self.__class__ == OEFunc0:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEFunc0(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def NumVar(self) -> "unsigned int":
        """NumVar(OEFunc0 self) -> unsigned int"""
        return _oeff.OEFunc0_NumVar(self)


    def __call__(self, x: 'double const *') -> "double":
        """__call__(OEFunc0 self, double const * x) -> double"""
        return _oeff.OEFunc0___call__(self, x)


    def GetFComponents(self, arg0: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEFunc0 self, double const * arg0) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEFunc0_GetFComponents(self, arg0)

    __swig_destroy__ = _oeff.delete_OEFunc0
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEFunc0(self)
        return weakref_proxy(self)
OEFunc0_swigregister = _oeff.OEFunc0_swigregister
OEFunc0_swigregister(OEFunc0)

class OEFunc1(OEFunc0):
    """Proxy of C++ OEOpt::OEFunc1 class."""

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

    def __init__(self):
        """__init__(OEOpt::OEFunc1 self) -> OEFunc1"""
        if self.__class__ == OEFunc1:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEFunc1(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def NumVar(self) -> "unsigned int":
        """NumVar(OEFunc1 self) -> unsigned int"""
        return _oeff.OEFunc1_NumVar(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEFunc1 self, float const ** arg0) -> OEFloatVector
        __call__(OEFunc1 self, double const * x) -> double
        __call__(OEFunc1 self, double const * x, double * g) -> double
        """
        return _oeff.OEFunc1___call__(self, *args)


    def GetFComponents(self, arg0: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEFunc1 self, double const * arg0) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEFunc1_GetFComponents(self, arg0)

    __swig_destroy__ = _oeff.delete_OEFunc1
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEFunc1(self)
        return weakref_proxy(self)
OEFunc1_swigregister = _oeff.OEFunc1_swigregister
OEFunc1_swigregister(OEFunc1)

class OEFunc2(OEFunc1):
    """Proxy of C++ OEOpt::OEFunc2 class."""

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

    def __init__(self):
        """__init__(OEOpt::OEFunc2 self) -> OEFunc2"""
        if self.__class__ == OEFunc2:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEFunc2(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, *args) -> "bool":
        """
        __call__(OEFunc2 self, double const * x) -> double
        __call__(OEFunc2 self, double const * x, double * g) -> double
        __call__(OEFunc2 self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEFunc2___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OEFunc2
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEFunc2(self)
        return weakref_proxy(self)
OEFunc2_swigregister = _oeff.OEFunc2_swigregister
OEFunc2_swigregister(OEFunc2)


def OEGetStateName(state: 'unsigned int') -> "char const *":
    """OEGetStateName(unsigned int state) -> char const *"""
    return _oeff.OEGetStateName(state)
class OECheckpoint0(object):
    """Proxy of C++ OEOpt::OECheckpoint0 class."""

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

    def __call__(self, *args) -> "bool":
        """
        __call__(OECheckpoint0 self, unsigned int iteration, unsigned int nvar, double fval, double const * var, unsigned int state=0) -> bool
        __call__(OECheckpoint0 self, unsigned int iteration, unsigned int nvar, double fval, double const * var) -> bool
        __call__(OECheckpoint0 self, unsigned int iteration, unsigned int nvar, double fval) -> bool
        """
        return _oeff.OECheckpoint0___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OECheckpoint0
    __del__ = lambda self: None

    def __init__(self):
        """__init__(OEOpt::OECheckpoint0 self) -> OECheckpoint0"""
        if self.__class__ == OECheckpoint0:
            _self = None
        else:
            _self = self
        this = _oeff.new_OECheckpoint0(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OECheckpoint0(self)
        return weakref_proxy(self)
OECheckpoint0_swigregister = _oeff.OECheckpoint0_swigregister
OECheckpoint0_swigregister(OECheckpoint0)
cvar = _oeff.cvar
Cont = cvar.Cont
NoOpt = cvar.NoOpt
OneVar = cvar.OneVar
NotFound = cvar.NotFound
Ended = cvar.Ended
NotJust = cvar.NotJust
Exhaust = cvar.Exhaust
Dist = cvar.Dist
Fval = cvar.Fval
Grad = cvar.Grad
Comp = cvar.Comp
Done = cvar.Done
Stable = cvar.Stable
Max = cvar.Max

class OECheckpoint1(OECheckpoint0):
    """Proxy of C++ OEOpt::OECheckpoint1 class."""

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

    def __call__(self, *args) -> "bool":
        """
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double const * var, unsigned int state=0) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double const * var) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double gnorm, double const * var, double const * grad, unsigned int state=0) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double gnorm, double const * var, double const * grad) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double gnorm, double const * var) -> bool
        __call__(OECheckpoint1 self, unsigned int iteration, unsigned int nvar, double fval, double gnorm) -> bool
        """
        return _oeff.OECheckpoint1___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OECheckpoint1
    __del__ = lambda self: None

    def __init__(self):
        """__init__(OEOpt::OECheckpoint1 self) -> OECheckpoint1"""
        if self.__class__ == OECheckpoint1:
            _self = None
        else:
            _self = self
        this = _oeff.new_OECheckpoint1(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OECheckpoint1(self)
        return weakref_proxy(self)
OECheckpoint1_swigregister = _oeff.OECheckpoint1_swigregister
OECheckpoint1_swigregister(OECheckpoint1)

class OEOptimizer0(object):
    """Proxy of C++ OEOpt::OEOptimizer0 class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def SetIterLimit(self, itmax: 'unsigned int') -> "void":
        """SetIterLimit(OEOptimizer0 self, unsigned int itmax)"""
        return _oeff.OEOptimizer0_SetIterLimit(self, itmax)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEOptimizer0 self) -> unsigned int"""
        return _oeff.OEOptimizer0_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEOptimizer0 self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEOptimizer0 self, OEFunc0 function, OECheckpoint0 check, double const * var, double * opt_var) -> double
        """
        return _oeff.OEOptimizer0___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OEOptimizer0
    __del__ = lambda self: None
OEOptimizer0_swigregister = _oeff.OEOptimizer0_swigregister
OEOptimizer0_swigregister(OEOptimizer0)

class OEOptimizer1(object):
    """Proxy of C++ OEOpt::OEOptimizer1 class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def SetIterLimit(self, itmax: 'unsigned int') -> "void":
        """SetIterLimit(OEOptimizer1 self, unsigned int itmax)"""
        return _oeff.OEOptimizer1_SetIterLimit(self, itmax)


    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEOptimizer1 self, double t)"""
        return _oeff.OEOptimizer1_SetTolerance(self, t)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEOptimizer1 self) -> unsigned int"""
        return _oeff.OEOptimizer1_GetIterLimit(self)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEOptimizer1 self) -> double"""
        return _oeff.OEOptimizer1_GetTolerance(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEOptimizer1 self, OEFunc1 function, double const * var, double * opt_var) -> double
        __call__(OEOptimizer1 self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var) -> double
        """
        return _oeff.OEOptimizer1___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OEOptimizer1
    __del__ = lambda self: None
OEOptimizer1_swigregister = _oeff.OEOptimizer1_swigregister
OEOptimizer1_swigregister(OEOptimizer1)

class OEOptimizer2(object):
    """Proxy of C++ OEOpt::OEOptimizer2 class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def SetIterLimit(self, itmax: 'unsigned int') -> "void":
        """SetIterLimit(OEOptimizer2 self, unsigned int itmax)"""
        return _oeff.OEOptimizer2_SetIterLimit(self, itmax)


    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEOptimizer2 self, double t)"""
        return _oeff.OEOptimizer2_SetTolerance(self, t)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEOptimizer2 self) -> unsigned int"""
        return _oeff.OEOptimizer2_GetIterLimit(self)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEOptimizer2 self) -> double"""
        return _oeff.OEOptimizer2_GetTolerance(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEOptimizer2 self, OEFunc2 function, double const * var, double * opt_var) -> double
        __call__(OEOptimizer2 self, OEFunc2 function, OECheckpoint1 check, double const * var, double * opt_var) -> double
        """
        return _oeff.OEOptimizer2___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OEOptimizer2
    __del__ = lambda self: None
OEOptimizer2_swigregister = _oeff.OEOptimizer2_swigregister
OEOptimizer2_swigregister(OEOptimizer2)

class OELineMinimize(object):
    """Proxy of C++ OEOpt::OELineMinimize class."""

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

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

    def __call__(self, n: 'unsigned int', p: 'double const *', d: 'double *', g: 'double *', k: 'double *', gmin: 'double *', alpha: 'double *', fun: 'OEFunc1') -> "bool":
        """__call__(OELineMinimize self, unsigned int n, double const * p, double * d, double * g, double * k, double * gmin, double * alpha, OEFunc1 fun) -> bool"""
        return _oeff.OELineMinimize___call__(self, n, p, d, g, k, gmin, alpha, fun)


    def SetMaxStep(self, arg2: 'unsigned int', arg3: 'double *') -> "bool":
        """SetMaxStep(OELineMinimize self, unsigned int arg2, double * arg3) -> bool"""
        return _oeff.OELineMinimize_SetMaxStep(self, arg2, arg3)


    def CreateCopy(self) -> "OEOpt::OELineMinimize *":
        """CreateCopy(OELineMinimize self) -> OELineMinimize"""
        return _oeff.OELineMinimize_CreateCopy(self)

OELineMinimize_swigregister = _oeff.OELineMinimize_swigregister
OELineMinimize_swigregister(OELineMinimize)

class OEBFGSOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OEBFGSOpt class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEBFGSOpt
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEOpt::OEBFGSOpt self) -> OEBFGSOpt
        __init__(OEOpt::OEBFGSOpt self, OEBFGSOpt arg2) -> OEBFGSOpt
        """
        this = _oeff.new_OEBFGSOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEBFGSOpt self, double t)"""
        return _oeff.OEBFGSOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OEBFGSOpt self, unsigned int arg2)"""
        return _oeff.OEBFGSOpt_SetIterLimit(self, arg2)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEBFGSOpt self) -> unsigned int"""
        return _oeff.OEBFGSOpt_GetIterLimit(self)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEBFGSOpt self) -> double"""
        return _oeff.OEBFGSOpt_GetTolerance(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEBFGSOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEBFGSOpt self, OEFunc0 function, double const * var) -> double
        __call__(OEBFGSOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OEBFGSOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OEBFGSOpt self, OEFunc1 function, double const * var) -> double
        __call__(OEBFGSOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OEBFGSOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OEBFGSOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OEBFGSOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OEBFGSOpt_SetLineMinimize(self, linmin)


    def GetInverseHessian(self, h: 'double *', nv: 'unsigned int') -> "bool":
        """GetInverseHessian(OEBFGSOpt self, double * h, unsigned int nv) -> bool"""
        return _oeff.OEBFGSOpt_GetInverseHessian(self, h, nv)


    def SetKeepHessian(self, keep: 'bool') -> "void":
        """SetKeepHessian(OEBFGSOpt self, bool keep)"""
        return _oeff.OEBFGSOpt_SetKeepHessian(self, keep)


    def GetKeepHessian(self) -> "bool":
        """GetKeepHessian(OEBFGSOpt self) -> bool"""
        return _oeff.OEBFGSOpt_GetKeepHessian(self)


    def GetHessianDimension(self) -> "unsigned int":
        """GetHessianDimension(OEBFGSOpt self) -> unsigned int"""
        return _oeff.OEBFGSOpt_GetHessianDimension(self)


    def UseSavedHessian(self, ini: 'bool') -> "void":
        """UseSavedHessian(OEBFGSOpt self, bool ini)"""
        return _oeff.OEBFGSOpt_UseSavedHessian(self, ini)

OEBFGSOpt_swigregister = _oeff.OEBFGSOpt_swigregister
OEBFGSOpt_swigregister(OEBFGSOpt)

class OEConjGradOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OEConjGradOpt class."""

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

    def __init__(self, *args):
        """
        __init__(OEOpt::OEConjGradOpt self) -> OEConjGradOpt
        __init__(OEOpt::OEConjGradOpt self, OEConjGradOpt arg2) -> OEConjGradOpt
        """
        this = _oeff.new_OEConjGradOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEConjGradOpt
    __del__ = lambda self: None

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEConjGradOpt self, double t)"""
        return _oeff.OEConjGradOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OEConjGradOpt self, unsigned int arg2)"""
        return _oeff.OEConjGradOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEConjGradOpt self) -> double"""
        return _oeff.OEConjGradOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEConjGradOpt self) -> unsigned int"""
        return _oeff.OEConjGradOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEConjGradOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEConjGradOpt self, OEFunc0 function, double const * var) -> double
        __call__(OEConjGradOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OEConjGradOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OEConjGradOpt self, OEFunc1 function, double const * var) -> double
        __call__(OEConjGradOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OEConjGradOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OEConjGradOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OEConjGradOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OEConjGradOpt_SetLineMinimize(self, linmin)

OEConjGradOpt_swigregister = _oeff.OEConjGradOpt_swigregister
OEConjGradOpt_swigregister(OEConjGradOpt)

class OEDFPOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OEDFPOpt class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEDFPOpt
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEOpt::OEDFPOpt self) -> OEDFPOpt
        __init__(OEOpt::OEDFPOpt self, OEDFPOpt arg2) -> OEDFPOpt
        """
        this = _oeff.new_OEDFPOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEDFPOpt self, double t)"""
        return _oeff.OEDFPOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OEDFPOpt self, unsigned int arg2)"""
        return _oeff.OEDFPOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEDFPOpt self) -> double"""
        return _oeff.OEDFPOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEDFPOpt self) -> unsigned int"""
        return _oeff.OEDFPOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEDFPOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEDFPOpt self, OEFunc0 function, double const * var) -> double
        __call__(OEDFPOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OEDFPOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OEDFPOpt self, OEFunc1 function, double const * var) -> double
        __call__(OEDFPOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OEDFPOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OEDFPOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OEDFPOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OEDFPOpt_SetLineMinimize(self, linmin)

OEDFPOpt_swigregister = _oeff.OEDFPOpt_swigregister
OEDFPOpt_swigregister(OEDFPOpt)

class OEFletcherReevesOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OEFletcherReevesOpt class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEFletcherReevesOpt
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEOpt::OEFletcherReevesOpt self) -> OEFletcherReevesOpt
        __init__(OEOpt::OEFletcherReevesOpt self, OEFletcherReevesOpt arg2) -> OEFletcherReevesOpt
        """
        this = _oeff.new_OEFletcherReevesOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEFletcherReevesOpt self, double t)"""
        return _oeff.OEFletcherReevesOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OEFletcherReevesOpt self, unsigned int arg2)"""
        return _oeff.OEFletcherReevesOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEFletcherReevesOpt self) -> double"""
        return _oeff.OEFletcherReevesOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEFletcherReevesOpt self) -> unsigned int"""
        return _oeff.OEFletcherReevesOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEFletcherReevesOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEFletcherReevesOpt self, OEFunc0 function, double const * var) -> double
        __call__(OEFletcherReevesOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OEFletcherReevesOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OEFletcherReevesOpt self, OEFunc1 function, double const * var) -> double
        __call__(OEFletcherReevesOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OEFletcherReevesOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OEFletcherReevesOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OEFletcherReevesOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OEFletcherReevesOpt_SetLineMinimize(self, linmin)

OEFletcherReevesOpt_swigregister = _oeff.OEFletcherReevesOpt_swigregister
OEFletcherReevesOpt_swigregister(OEFletcherReevesOpt)

class OECGLineMinimize(OELineMinimize):
    """Proxy of C++ OEOpt::OECGLineMinimize class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OECGLineMinimize
    __del__ = lambda self: None

    def __call__(self, n: 'unsigned int', p: 'double const *', d: 'double *', g: 'double *', k: 'double *', gmin: 'double *', alpha: 'double *', fun: 'OEFunc1') -> "bool":
        """__call__(OECGLineMinimize self, unsigned int n, double const * p, double * d, double * g, double * k, double * gmin, double * alpha, OEFunc1 fun) -> bool"""
        return _oeff.OECGLineMinimize___call__(self, n, p, d, g, k, gmin, alpha, fun)


    def CreateCopy(self) -> "OEOpt::OELineMinimize *":
        """CreateCopy(OECGLineMinimize self) -> OELineMinimize"""
        return _oeff.OECGLineMinimize_CreateCopy(self)


    def __init__(self):
        """__init__(OEOpt::OECGLineMinimize self) -> OECGLineMinimize"""
        this = _oeff.new_OECGLineMinimize()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OECGLineMinimize_swigregister = _oeff.OECGLineMinimize_swigregister
OECGLineMinimize_swigregister(OECGLineMinimize)
UseFullNewtonInitialStep = cvar.UseFullNewtonInitialStep
UseAlphaForInitialStep = cvar.UseAlphaForInitialStep

class OEQNLineMinimize(OELineMinimize):
    """Proxy of C++ OEOpt::OEQNLineMinimize class."""

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

    def __init__(self, alpha: 'double'=1e-4, beta: 'double'=0.9, approxzero: 'double'=1e-10, lmmax: 'unsigned int'=32):
        """
        __init__(OEOpt::OEQNLineMinimize self, double alpha=1e-4, double beta=0.9, double approxzero=1e-10, unsigned int lmmax=32) -> OEQNLineMinimize
        __init__(OEOpt::OEQNLineMinimize self, double alpha=1e-4, double beta=0.9, double approxzero=1e-10) -> OEQNLineMinimize
        __init__(OEOpt::OEQNLineMinimize self, double alpha=1e-4, double beta=0.9) -> OEQNLineMinimize
        __init__(OEOpt::OEQNLineMinimize self, double alpha=1e-4) -> OEQNLineMinimize
        __init__(OEOpt::OEQNLineMinimize self) -> OEQNLineMinimize
        """
        this = _oeff.new_OEQNLineMinimize(alpha, beta, approxzero, lmmax)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEQNLineMinimize
    __del__ = lambda self: None

    def __call__(self, n: 'unsigned int', p: 'double const *', d: 'double *', g: 'double *', k: 'double *', gmin: 'double *', alpha: 'double *', fun: 'OEFunc1') -> "bool":
        """__call__(OEQNLineMinimize self, unsigned int n, double const * p, double * d, double * g, double * k, double * gmin, double * alpha, OEFunc1 fun) -> bool"""
        return _oeff.OEQNLineMinimize___call__(self, n, p, d, g, k, gmin, alpha, fun)


    def CreateCopy(self) -> "OEOpt::OELineMinimize *":
        """CreateCopy(OEQNLineMinimize self) -> OELineMinimize"""
        return _oeff.OEQNLineMinimize_CreateCopy(self)

OEQNLineMinimize_swigregister = _oeff.OEQNLineMinimize_swigregister
OEQNLineMinimize_swigregister(OEQNLineMinimize)

class OEMaxStepLineMinimize(OELineMinimize):
    """Proxy of C++ OEOpt::OEMaxStepLineMinimize class."""

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

    def __init__(self, *args):
        """
        __init__(OEOpt::OEMaxStepLineMinimize self) -> OEMaxStepLineMinimize
        __init__(OEOpt::OEMaxStepLineMinimize self, double * maxStep, unsigned int len) -> OEMaxStepLineMinimize
        __init__(OEOpt::OEMaxStepLineMinimize self, OEMaxStepLineMinimize rhs) -> OEMaxStepLineMinimize
        """
        this = _oeff.new_OEMaxStepLineMinimize(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMaxStepLineMinimize
    __del__ = lambda self: None

    def SetMaxStep(self, len: 'unsigned int', maxStep: 'double *') -> "bool":
        """SetMaxStep(OEMaxStepLineMinimize self, unsigned int len, double * maxStep) -> bool"""
        return _oeff.OEMaxStepLineMinimize_SetMaxStep(self, len, maxStep)


    def __call__(self, n: 'unsigned int', p: 'double const *', d: 'double *', g: 'double *', k: 'double *', gmin: 'double *', alpha: 'double *', fun: 'OEFunc1') -> "bool":
        """__call__(OEMaxStepLineMinimize self, unsigned int n, double const * p, double * d, double * g, double * k, double * gmin, double * alpha, OEFunc1 fun) -> bool"""
        return _oeff.OEMaxStepLineMinimize___call__(self, n, p, d, g, k, gmin, alpha, fun)


    def CreateCopy(self) -> "OEOpt::OELineMinimize *":
        """CreateCopy(OEMaxStepLineMinimize self) -> OELineMinimize"""
        return _oeff.OEMaxStepLineMinimize_CreateCopy(self)

OEMaxStepLineMinimize_swigregister = _oeff.OEMaxStepLineMinimize_swigregister
OEMaxStepLineMinimize_swigregister(OEMaxStepLineMinimize)

class OENRLineSearch(OELineMinimize):
    """Proxy of C++ OEOpt::OENRLineSearch class."""

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

    def __init__(self, *args):
        """
        __init__(OEOpt::OENRLineSearch self, unsigned int inistep) -> OENRLineSearch
        __init__(OEOpt::OENRLineSearch self) -> OENRLineSearch
        """
        this = _oeff.new_OENRLineSearch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetMaxStep(self, n: 'unsigned int', p: 'double *') -> "bool":
        """SetMaxStep(OENRLineSearch self, unsigned int n, double * p) -> bool"""
        return _oeff.OENRLineSearch_SetMaxStep(self, n, p)


    def __call__(self, n: 'unsigned int', p: 'double const *', d: 'double *', g: 'double *', k: 'double *', gmin: 'double *', alpha: 'double *', fun: 'OEFunc1') -> "bool":
        """__call__(OENRLineSearch self, unsigned int n, double const * p, double * d, double * g, double * k, double * gmin, double * alpha, OEFunc1 fun) -> bool"""
        return _oeff.OENRLineSearch___call__(self, n, p, d, g, k, gmin, alpha, fun)


    def CreateCopy(self) -> "OEOpt::OELineMinimize *":
        """CreateCopy(OENRLineSearch self) -> OELineMinimize"""
        return _oeff.OENRLineSearch_CreateCopy(self)

    __swig_destroy__ = _oeff.delete_OENRLineSearch
    __del__ = lambda self: None
OENRLineSearch_swigregister = _oeff.OENRLineSearch_swigregister
OENRLineSearch_swigregister(OENRLineSearch)

class OERibierePolakOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OERibierePolakOpt class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OERibierePolakOpt
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEOpt::OERibierePolakOpt self) -> OERibierePolakOpt
        __init__(OEOpt::OERibierePolakOpt self, OERibierePolakOpt rhs) -> OERibierePolakOpt
        """
        this = _oeff.new_OERibierePolakOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OERibierePolakOpt self, double t)"""
        return _oeff.OERibierePolakOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OERibierePolakOpt self, unsigned int arg2)"""
        return _oeff.OERibierePolakOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OERibierePolakOpt self) -> double"""
        return _oeff.OERibierePolakOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OERibierePolakOpt self) -> unsigned int"""
        return _oeff.OERibierePolakOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OERibierePolakOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OERibierePolakOpt self, OEFunc0 function, double const * var) -> double
        __call__(OERibierePolakOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OERibierePolakOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OERibierePolakOpt self, OEFunc1 function, double const * var) -> double
        __call__(OERibierePolakOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OERibierePolakOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OERibierePolakOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OERibierePolakOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OERibierePolakOpt_SetLineMinimize(self, linmin)

OERibierePolakOpt_swigregister = _oeff.OERibierePolakOpt_swigregister
OERibierePolakOpt_swigregister(OERibierePolakOpt)

class OEHestenesStiefelOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OEHestenesStiefelOpt class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEHestenesStiefelOpt
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEOpt::OEHestenesStiefelOpt self) -> OEHestenesStiefelOpt
        __init__(OEOpt::OEHestenesStiefelOpt self, OEHestenesStiefelOpt rhs) -> OEHestenesStiefelOpt
        """
        this = _oeff.new_OEHestenesStiefelOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OEHestenesStiefelOpt self, double t)"""
        return _oeff.OEHestenesStiefelOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OEHestenesStiefelOpt self, unsigned int arg2)"""
        return _oeff.OEHestenesStiefelOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OEHestenesStiefelOpt self) -> double"""
        return _oeff.OEHestenesStiefelOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OEHestenesStiefelOpt self) -> unsigned int"""
        return _oeff.OEHestenesStiefelOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEHestenesStiefelOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc0 function, double const * var) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc1 function, double const * var) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OEHestenesStiefelOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OEHestenesStiefelOpt___call__(self, *args)


    def SetLineMinimize(self, linmin: 'OELineMinimize') -> "bool":
        """SetLineMinimize(OEHestenesStiefelOpt self, OELineMinimize linmin) -> bool"""
        return _oeff.OEHestenesStiefelOpt_SetLineMinimize(self, linmin)

OEHestenesStiefelOpt_swigregister = _oeff.OEHestenesStiefelOpt_swigregister
OEHestenesStiefelOpt_swigregister(OEHestenesStiefelOpt)

class OESteepestDescentOpt(OEOptimizer1):
    """Proxy of C++ OEOpt::OESteepestDescentOpt class."""

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

    def __init__(self):
        """__init__(OEOpt::OESteepestDescentOpt self) -> OESteepestDescentOpt"""
        this = _oeff.new_OESteepestDescentOpt()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTolerance(self, t: 'double') -> "void":
        """SetTolerance(OESteepestDescentOpt self, double t)"""
        return _oeff.OESteepestDescentOpt_SetTolerance(self, t)


    def SetIterLimit(self, arg2: 'unsigned int') -> "void":
        """SetIterLimit(OESteepestDescentOpt self, unsigned int arg2)"""
        return _oeff.OESteepestDescentOpt_SetIterLimit(self, arg2)


    def GetTolerance(self) -> "double":
        """GetTolerance(OESteepestDescentOpt self) -> double"""
        return _oeff.OESteepestDescentOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OESteepestDescentOpt self) -> unsigned int"""
        return _oeff.OESteepestDescentOpt_GetIterLimit(self)


    def SetInitialStep(self, step: 'double') -> "void":
        """SetInitialStep(OESteepestDescentOpt self, double step)"""
        return _oeff.OESteepestDescentOpt_SetInitialStep(self, step)


    def GetInitialStep(self) -> "double":
        """GetInitialStep(OESteepestDescentOpt self) -> double"""
        return _oeff.OESteepestDescentOpt_GetInitialStep(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OESteepestDescentOpt self, OEFunc0 function, double const * var, double * opt_var) -> double
        __call__(OESteepestDescentOpt self, OEFunc0 function, double const * var) -> double
        __call__(OESteepestDescentOpt self, OEFunc0 arg2, OECheckpoint0 arg3, double const * arg4, double * arg5) -> double
        __call__(OESteepestDescentOpt self, OEFunc1 function, double const * var, double * opt_var=None) -> double
        __call__(OESteepestDescentOpt self, OEFunc1 function, double const * var) -> double
        __call__(OESteepestDescentOpt self, OEFunc1 function, OECheckpoint1 check, double const * var, double * opt_var=None) -> double
        __call__(OESteepestDescentOpt self, OEFunc1 function, OECheckpoint1 check, double const * var) -> double
        """
        return _oeff.OESteepestDescentOpt___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OESteepestDescentOpt
    __del__ = lambda self: None
OESteepestDescentOpt_swigregister = _oeff.OESteepestDescentOpt_swigregister
OESteepestDescentOpt_swigregister(OESteepestDescentOpt)

class OENewtonOpt(OEOptimizer2):
    """Proxy of C++ OEOpt::OENewtonOpt class."""

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

    def __init__(self, *args):
        """
        __init__(OEOpt::OENewtonOpt self) -> OENewtonOpt
        __init__(OEOpt::OENewtonOpt self, OENewtonOpt arg2) -> OENewtonOpt
        """
        this = _oeff.new_OENewtonOpt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OENewtonOpt
    __del__ = lambda self: None

    def SetTolerance(self, gradRmsdTol: 'double') -> "void":
        """SetTolerance(OENewtonOpt self, double gradRmsdTol)"""
        return _oeff.OENewtonOpt_SetTolerance(self, gradRmsdTol)


    def SetIterLimit(self, n: 'unsigned int') -> "void":
        """SetIterLimit(OENewtonOpt self, unsigned int n)"""
        return _oeff.OENewtonOpt_SetIterLimit(self, n)


    def GetTolerance(self) -> "double":
        """GetTolerance(OENewtonOpt self) -> double"""
        return _oeff.OENewtonOpt_GetTolerance(self)


    def GetIterLimit(self) -> "unsigned int":
        """GetIterLimit(OENewtonOpt self) -> unsigned int"""
        return _oeff.OENewtonOpt_GetIterLimit(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OENewtonOpt self, OEFunc2 function, OECheckpoint1 check, double const * var, double * opt_var) -> double
        __call__(OENewtonOpt self, OEFunc2 function, double const * var, double * opt_var) -> double
        """
        return _oeff.OENewtonOpt___call__(self, *args)


    def GetImpl(self, *args) -> "OEOpt::OENewtonOptImpl const *":
        """
        GetImpl(OENewtonOpt self) -> OEOpt::OENewtonOptImpl
        GetImpl(OENewtonOpt self) -> OEOpt::OENewtonOptImpl const *
        """
        return _oeff.OENewtonOpt_GetImpl(self, *args)

OENewtonOpt_swigregister = _oeff.OENewtonOpt_swigregister
OENewtonOpt_swigregister(OENewtonOpt)

class OEInteraction(object):
    """Proxy of C++ OEMolPotential::OEInteraction class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEInteraction self, OEMolPotential::OEInteractImpl & arg2) -> OEInteraction
        __init__(OEMolPotential::OEInteraction self, OEInteraction arg2) -> OEInteraction
        """
        this = _oeff.new_OEInteraction(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEInteraction
    __del__ = lambda self: None

    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEInteraction self) -> unsigned int"""
        return _oeff.OEInteraction_NumAtoms(self)


    def NumValues(self) -> "unsigned int":
        """NumValues(OEInteraction self) -> unsigned int"""
        return _oeff.OEInteraction_NumValues(self)


    def GetName(self) -> "std::string":
        """GetName(OEInteraction self) -> std::string"""
        return _oeff.OEInteraction_GetName(self)


    def GetValues(self, grads: 'double *'=None) -> "double":
        """
        GetValues(OEInteraction self, double * grads=None) -> double
        GetValues(OEInteraction self) -> double
        """
        return _oeff.OEInteraction_GetValues(self, grads)


    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """GetAtoms(OEInteraction self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oeff.OEInteraction_GetAtoms(self)


    def GetImpl(self) -> "OEMolPotential::OEInteractImpl *":
        """GetImpl(OEInteraction self) -> OEMolPotential::OEInteractImpl *"""
        return _oeff.OEInteraction_GetImpl(self)

OEInteraction_swigregister = _oeff.OEInteraction_swigregister
OEInteraction_swigregister(OEInteraction)

class OEMolFunc(object):
    """Proxy of C++ OEMolPotential::OEMolFunc class."""

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

    def __init__(self):
        """__init__(OEMolPotential::OEMolFunc self) -> OEMolFunc"""
        if self.__class__ == OEMolFunc:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEMolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMolFunc
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMolFunc self, OEMolBase mol) -> bool"""
        return _oeff.OEMolFunc_Setup(self, mol)


    def GetInteractions(self, arg0: 'OEMolBase', arg1: 'double const *', functype: 'unsigned int'=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """
        GetInteractions(OEMolFunc self, OEMolBase arg0, double const * arg1, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEMolFunc self, OEMolBase arg0, double const * arg1) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeff.OEMolFunc_GetInteractions(self, arg0, arg1, functype)


    def Clear(self) -> "void":
        """Clear(OEMolFunc self)"""
        return _oeff.OEMolFunc_Clear(self)


    def Set(self, *args) -> "bool":
        """
        Set(OEMolFunc self, OEUnaryAtomPred arg0, unsigned int arg1) -> bool
        Set(OEMolFunc self, OEUnaryBondPred arg0, unsigned int arg1) -> bool
        Set(OEMolFunc self, OEBinaryAtomPred arg0, unsigned int arg1) -> bool
        Set(OEMolFunc self, OEBinaryBondPred arg0, unsigned int arg1) -> bool
        """
        return _oeff.OEMolFunc_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMolFunc self)"""
        return _oeff.OEMolFunc_ClearPredicates(self)


    def SetVerbose(self, arg0: 'bool') -> "void":
        """SetVerbose(OEMolFunc self, bool arg0)"""
        return _oeff.OEMolFunc_SetVerbose(self, arg0)

    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEMolFunc(self)
        return weakref_proxy(self)
OEMolFunc_swigregister = _oeff.OEMolFunc_swigregister
OEMolFunc_swigregister(OEMolFunc)

class OEMolFunc0(OEFunc0, OEMolFunc):
    """Proxy of C++ OEMolPotential::OEMolFunc0 class."""

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

    def __init__(self):
        """__init__(OEMolPotential::OEMolFunc0 self) -> OEMolFunc0"""
        if self.__class__ == OEMolFunc0:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEMolFunc0(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMolFunc0
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEMolFunc0(self)
        return weakref_proxy(self)
OEMolFunc0_swigregister = _oeff.OEMolFunc0_swigregister
OEMolFunc0_swigregister(OEMolFunc0)

class OEMolFunc1(OEFunc1, OEMolFunc0):
    """Proxy of C++ OEMolPotential::OEMolFunc1 class."""

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

    def __init__(self):
        """__init__(OEMolPotential::OEMolFunc1 self) -> OEMolFunc1"""
        if self.__class__ == OEMolFunc1:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEMolFunc1(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMolFunc1
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEMolFunc1(self)
        return weakref_proxy(self)
OEMolFunc1_swigregister = _oeff.OEMolFunc1_swigregister
OEMolFunc1_swigregister(OEMolFunc1)

class OEMolFunc2(OEFunc2, OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEMolFunc2 class."""

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

    def __init__(self):
        """__init__(OEMolPotential::OEMolFunc2 self) -> OEMolFunc2"""
        if self.__class__ == OEMolFunc2:
            _self = None
        else:
            _self = self
        this = _oeff.new_OEMolFunc2(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMolFunc2
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeff.disown_OEMolFunc2(self)
        return weakref_proxy(self)
OEMolFunc2_swigregister = _oeff.OEMolFunc2_swigregister
OEMolFunc2_swigregister(OEMolFunc2)

class OEForceField(OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEForceField class."""

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

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

    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEForceField self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEForceField self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEForceField self, OEMolBase mol) -> bool
        """
        return _oeff.OEForceField_PrepMol(self, mol, sweep, warnOK)


    def GetTitle(self) -> "std::string":
        """GetTitle(OEForceField self) -> std::string"""
        return _oeff.OEForceField_GetTitle(self)


    def SetTitle(self, argTitle: 'std::string const &') -> "void":
        """SetTitle(OEForceField self, std::string const & argTitle)"""
        return _oeff.OEForceField_SetTitle(self, argTitle)


    def Add(self, f: 'OEMolFunc1', own: 'bool'=False) -> "bool":
        """
        Add(OEForceField self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEForceField self, OEMolFunc1 f) -> bool
        """
        return _oeff.OEForceField_Add(self, f, own)

OEForceField_swigregister = _oeff.OEForceField_swigregister
OEForceField_swigregister(OEForceField)

class OEGenericFF2(OEMolFunc2, OEForceField):
    """Proxy of C++ OEMolPotential::OEGenericFF2 class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEGenericFF2 self) -> OEGenericFF2
        __init__(OEMolPotential::OEGenericFF2 self, OEGenericFF2 arg2) -> OEGenericFF2
        """
        this = _oeff.new_OEGenericFF2(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEGenericFF2
    __del__ = lambda self: None

    def NumVar(self) -> "unsigned int":
        """NumVar(OEGenericFF2 self) -> unsigned int"""
        return _oeff.OEGenericFF2_NumVar(self)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEGenericFF2 self, OEMolBase mol) -> bool"""
        return _oeff.OEGenericFF2_Setup(self, mol)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEGenericFF2 self, double const * coord) -> double
        __call__(OEGenericFF2 self, double const * coord, double * grad) -> double
        __call__(OEGenericFF2 self, double const * coord, double * hess, double * grad) -> bool
        """
        return _oeff.OEGenericFF2___call__(self, *args)


    def GetFComponents(self, coord: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEGenericFF2 self, double const * coord) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEGenericFF2_GetFComponents(self, coord)


    def Set(self, *args) -> "bool":
        """
        Set(OEGenericFF2 self, OEUnaryAtomPred pred, unsigned int functype) -> bool
        Set(OEGenericFF2 self, OEUnaryBondPred pred, unsigned int functype) -> bool
        Set(OEGenericFF2 self, OEBinaryAtomPred pred, unsigned int functype) -> bool
        Set(OEGenericFF2 self, OEBinaryBondPred arg2, unsigned int functype) -> bool
        """
        return _oeff.OEGenericFF2_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEGenericFF2 self)"""
        return _oeff.OEGenericFF2_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', coord: 'double const *', functype: 'unsigned int'=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """
        GetInteractions(OEGenericFF2 self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEGenericFF2 self, OEMolBase mol, double const * coord) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeff.OEGenericFF2_GetInteractions(self, mol, coord, functype)


    def Clear(self) -> "void":
        """Clear(OEGenericFF2 self)"""
        return _oeff.OEGenericFF2_Clear(self)


    def SetVerbose(self, arg2: 'bool') -> "void":
        """SetVerbose(OEGenericFF2 self, bool arg2)"""
        return _oeff.OEGenericFF2_SetVerbose(self, arg2)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEGenericFF2 self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEGenericFF2 self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEGenericFF2 self, OEMolBase mol) -> bool
        """
        return _oeff.OEGenericFF2_PrepMol(self, mol, sweep, warnOK)


    def Add(self, func: 'OEMolFunc1', own: 'bool'=False) -> "bool":
        """
        Add(OEGenericFF2 self, OEMolFunc1 func, bool own=False) -> bool
        Add(OEGenericFF2 self, OEMolFunc1 func) -> bool
        """
        return _oeff.OEGenericFF2_Add(self, func, own)


    def AddMolFunc(self, f: 'OEMolFunc2', own: 'bool'=False) -> "bool":
        """
        AddMolFunc(OEGenericFF2 self, OEMolFunc2 f, bool own=False) -> bool
        AddMolFunc(OEGenericFF2 self, OEMolFunc2 f) -> bool
        """
        return _oeff.OEGenericFF2_AddMolFunc(self, f, own)


    def RemoveMolFunc(self, f: 'OEMolFunc2') -> "bool":
        """RemoveMolFunc(OEGenericFF2 self, OEMolFunc2 f) -> bool"""
        return _oeff.OEGenericFF2_RemoveMolFunc(self, f)


    def GetComponents(self) -> "std::vector< OEMolPotential::OEMolFunc2 *,std::allocator< OEMolPotential::OEMolFunc2 * > >":
        """GetComponents(OEGenericFF2 self) -> OEMolFunc2Vector"""
        return _oeff.OEGenericFF2_GetComponents(self)

OEGenericFF2_swigregister = _oeff.OEGenericFF2_swigregister
OEGenericFF2_swigregister(OEGenericFF2)

class OEGenericFF(OEForceField):
    """Proxy of C++ OEMolPotential::OEGenericFF class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEGenericFF self) -> OEGenericFF
        __init__(OEMolPotential::OEGenericFF self, OEGenericFF arg2) -> OEGenericFF
        __init__(OEMolPotential::OEGenericFF self, OEGenericFF2 arg2) -> OEGenericFF
        """
        this = _oeff.new_OEGenericFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEGenericFF
    __del__ = lambda self: None

    def NumVar(self) -> "unsigned int":
        """NumVar(OEGenericFF self) -> unsigned int"""
        return _oeff.OEGenericFF_NumVar(self)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEGenericFF self, OEMolBase mol) -> bool"""
        return _oeff.OEGenericFF_Setup(self, mol)


    def __call__(self, *args) -> "double":
        """
        __call__(OEGenericFF self, double const * coord) -> double
        __call__(OEGenericFF self, double const * coord, double * grad) -> double
        """
        return _oeff.OEGenericFF___call__(self, *args)


    def GetFComponents(self, coord: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEGenericFF self, double const * coord) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEGenericFF_GetFComponents(self, coord)


    def Set(self, *args) -> "bool":
        """
        Set(OEGenericFF self, OEUnaryAtomPred pred, unsigned int functype) -> bool
        Set(OEGenericFF self, OEUnaryBondPred pred, unsigned int functype) -> bool
        Set(OEGenericFF self, OEBinaryAtomPred pred, unsigned int functype) -> bool
        Set(OEGenericFF self, OEBinaryBondPred arg2, unsigned int functype) -> bool
        """
        return _oeff.OEGenericFF_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEGenericFF self)"""
        return _oeff.OEGenericFF_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', coord: 'double const *', functype: 'unsigned int'=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """
        GetInteractions(OEGenericFF self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEGenericFF self, OEMolBase mol, double const * coord) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeff.OEGenericFF_GetInteractions(self, mol, coord, functype)


    def Clear(self) -> "void":
        """Clear(OEGenericFF self)"""
        return _oeff.OEGenericFF_Clear(self)


    def SetVerbose(self, arg2: 'bool') -> "void":
        """SetVerbose(OEGenericFF self, bool arg2)"""
        return _oeff.OEGenericFF_SetVerbose(self, arg2)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEGenericFF self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEGenericFF self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEGenericFF self, OEMolBase mol) -> bool
        """
        return _oeff.OEGenericFF_PrepMol(self, mol, sweep, warnOK)


    def Add(self, f: 'OEMolFunc1', own: 'bool'=False) -> "bool":
        """
        Add(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEGenericFF self, OEMolFunc1 f) -> bool
        """
        return _oeff.OEGenericFF_Add(self, f, own)


    def AddMolFunc(self, f: 'OEMolFunc1', own: 'bool'=False) -> "bool":
        """
        AddMolFunc(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool
        AddMolFunc(OEGenericFF self, OEMolFunc1 f) -> bool
        """
        return _oeff.OEGenericFF_AddMolFunc(self, f, own)


    def RemoveMolFunc(self, f: 'OEMolFunc1') -> "bool":
        """RemoveMolFunc(OEGenericFF self, OEMolFunc1 f) -> bool"""
        return _oeff.OEGenericFF_RemoveMolFunc(self, f)


    def GetComponents(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """GetComponents(OEGenericFF self) -> OEMolFunc1Vector"""
        return _oeff.OEGenericFF_GetComponents(self)

OEGenericFF_swigregister = _oeff.OEGenericFF_swigregister
OEGenericFF_swigregister(OEGenericFF)

class OEInterMolFunc1(OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEInterMolFunc1 class."""

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

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

    def SetupHost(self, host: 'OEMolBase') -> "bool":
        """SetupHost(OEInterMolFunc1 self, OEMolBase host) -> bool"""
        return _oeff.OEInterMolFunc1_SetupHost(self, host)


    def SetHostFlex(self, pred: 'OEUnaryAtomPred') -> "bool":
        """SetHostFlex(OEInterMolFunc1 self, OEUnaryAtomPred pred) -> bool"""
        return _oeff.OEInterMolFunc1_SetHostFlex(self, pred)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEInterMolFunc1 self, double * var, double const * x)"""
        return _oeff.OEInterMolFunc1_GetVar(self, var, x)


    def AdaptHostCoords(self, coords: 'double *', var: 'double const *') -> "bool":
        """AdaptHostCoords(OEInterMolFunc1 self, double * coords, double const * var) -> bool"""
        return _oeff.OEInterMolFunc1_AdaptHostCoords(self, coords, var)

OEInterMolFunc1_swigregister = _oeff.OEInterMolFunc1_swigregister
OEInterMolFunc1_swigregister(OEInterMolFunc1)

class OEInterMolFunc2(OEInterMolFunc1, OEMolFunc2):
    """Proxy of C++ OEMolPotential::OEInterMolFunc2 class."""

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

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

class OEScaledMolFunc(OEMolFunc2):
    """Proxy of C++ OEMolPotential::OEScaledMolFunc class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEScaledMolFunc self, OEMolFunc1 argFunc, double const argFactor, bool const argOwn=False) -> OEScaledMolFunc
        __init__(OEMolPotential::OEScaledMolFunc self, OEMolFunc1 argFunc, double const argFactor) -> OEScaledMolFunc
        __init__(OEMolPotential::OEScaledMolFunc self, OEMolFunc2 argFunc, double const argFactor, bool const argOwn=False) -> OEScaledMolFunc
        __init__(OEMolPotential::OEScaledMolFunc self, OEMolFunc2 argFunc, double const argFactor) -> OEScaledMolFunc
        """
        this = _oeff.new_OEScaledMolFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEScaledMolFunc
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEScaledMolFunc self, OEMolBase mol) -> bool"""
        return _oeff.OEScaledMolFunc_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEScaledMolFunc self) -> unsigned int"""
        return _oeff.OEScaledMolFunc_NumVar(self)


    def Set(self, *args) -> "bool":
        """
        Set(OEScaledMolFunc self, OEUnaryAtomPred pred, unsigned int functype) -> bool
        Set(OEScaledMolFunc self, OEUnaryBondPred pred, unsigned int functype) -> bool
        Set(OEScaledMolFunc self, OEBinaryAtomPred pred, unsigned int functype) -> bool
        Set(OEScaledMolFunc self, OEBinaryBondPred pred, unsigned int functype) -> bool
        """
        return _oeff.OEScaledMolFunc_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEScaledMolFunc self)"""
        return _oeff.OEScaledMolFunc_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OEScaledMolFunc self)"""
        return _oeff.OEScaledMolFunc_Clear(self)


    def SetVerbose(self, value: 'bool') -> "void":
        """SetVerbose(OEScaledMolFunc self, bool value)"""
        return _oeff.OEScaledMolFunc_SetVerbose(self, value)


    def GetInteractions(self, mol: 'OEMolBase', coords: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEScaledMolFunc self, OEMolBase mol, double const * coords, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEScaledMolFunc_GetInteractions(self, mol, coords, functype)


    def GetFComponents(self, coords: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEScaledMolFunc self, double const * coords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEScaledMolFunc_GetFComponents(self, coords)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEScaledMolFunc self, double const * coords) -> double
        __call__(OEScaledMolFunc self, double const * coords, double * grads) -> double
        __call__(OEScaledMolFunc self, double const * coords, double * hess, double * grads) -> bool
        """
        return _oeff.OEScaledMolFunc___call__(self, *args)

OEScaledMolFunc_swigregister = _oeff.OEScaledMolFunc_swigregister
OEScaledMolFunc_swigregister(OEScaledMolFunc)

class OENumericMolFunc2(OEMolFunc2):
    """Proxy of C++ OEMolPotential::OENumericMolFunc2 class."""

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

    def __init__(self, argFunc1: 'OEMolFunc1', argOwn: 'bool const'=False):
        """
        __init__(OEMolPotential::OENumericMolFunc2 self, OEMolFunc1 argFunc1, bool const argOwn=False) -> OENumericMolFunc2
        __init__(OEMolPotential::OENumericMolFunc2 self, OEMolFunc1 argFunc1) -> OENumericMolFunc2
        """
        this = _oeff.new_OENumericMolFunc2(argFunc1, argOwn)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OENumericMolFunc2
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OENumericMolFunc2 self, OEMolBase mol) -> bool"""
        return _oeff.OENumericMolFunc2_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OENumericMolFunc2 self) -> unsigned int"""
        return _oeff.OENumericMolFunc2_NumVar(self)


    def GetFComponents(self, coords: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OENumericMolFunc2 self, double const * coords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OENumericMolFunc2_GetFComponents(self, coords)


    def Set(self, *args) -> "bool":
        """
        Set(OENumericMolFunc2 self, OEUnaryAtomPred pred, unsigned int functype) -> bool
        Set(OENumericMolFunc2 self, OEUnaryBondPred pred, unsigned int functype) -> bool
        Set(OENumericMolFunc2 self, OEBinaryAtomPred pred, unsigned int functype) -> bool
        Set(OENumericMolFunc2 self, OEBinaryBondPred pred, unsigned int functype) -> bool
        """
        return _oeff.OENumericMolFunc2_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OENumericMolFunc2 self)"""
        return _oeff.OENumericMolFunc2_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', coords: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OENumericMolFunc2 self, OEMolBase mol, double const * coords, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OENumericMolFunc2_GetInteractions(self, mol, coords, functype)


    def Clear(self) -> "void":
        """Clear(OENumericMolFunc2 self)"""
        return _oeff.OENumericMolFunc2_Clear(self)


    def SetVerbose(self, value: 'bool') -> "void":
        """SetVerbose(OENumericMolFunc2 self, bool value)"""
        return _oeff.OENumericMolFunc2_SetVerbose(self, value)


    def __call__(self, *args) -> "bool":
        """
        __call__(OENumericMolFunc2 self, double const * coords) -> double
        __call__(OENumericMolFunc2 self, double const * coords, double * grads) -> double
        __call__(OENumericMolFunc2 self, double const * coords, double * hess, double * grads) -> bool
        """
        return _oeff.OENumericMolFunc2___call__(self, *args)

OENumericMolFunc2_swigregister = _oeff.OENumericMolFunc2_swigregister
OENumericMolFunc2_swigregister(OENumericMolFunc2)

class OEMolAdaptor(OEAdaptor, OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEMolAdaptor class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEMolAdaptor self, double * var, double const * x)"""
        return _oeff.OEMolAdaptor_GetVar(self, var, x)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OEMolAdaptor self) -> OEMolFunc1"""
        return _oeff.OEMolAdaptor_GetMolFunc(self)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OEMolAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OEMolAdaptor_SetMolFunc(self, molfunc, own)

    __swig_destroy__ = _oeff.delete_OEMolAdaptor
    __del__ = lambda self: None
OEMolAdaptor_swigregister = _oeff.OEMolAdaptor_swigregister
OEMolAdaptor_swigregister(OEMolAdaptor)

class OEMolAdaptor2(OEMolAdaptor, OEMolFunc2):
    """Proxy of C++ OEMolPotential::OEMolAdaptor2 class."""

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

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

    def SetMolFunc2(self, molfunc: 'OEMolFunc2', own: 'bool') -> "bool":
        """SetMolFunc2(OEMolAdaptor2 self, OEMolFunc2 molfunc, bool own) -> bool"""
        return _oeff.OEMolAdaptor2_SetMolFunc2(self, molfunc, own)

OEMolAdaptor2_swigregister = _oeff.OEMolAdaptor2_swigregister
OEMolAdaptor2_swigregister(OEMolAdaptor2)

class OESubsetAdaptor(OEMolAdaptor2):
    """Proxy of C++ OEMolPotential::OESubsetAdaptor class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc1 arg2, bool own=False, bool excludeInteract=True) -> OESubsetAdaptor
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc1 arg2, bool own=False) -> OESubsetAdaptor
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc1 arg2) -> OESubsetAdaptor
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc2 arg2, bool own=False, bool excludeInteract=True) -> OESubsetAdaptor
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc2 arg2, bool own=False) -> OESubsetAdaptor
        __init__(OEMolPotential::OESubsetAdaptor self, OEMolFunc2 arg2) -> OESubsetAdaptor
        """
        this = _oeff.new_OESubsetAdaptor(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESubsetAdaptor
    __del__ = lambda self: None

    def __call__(self, *args) -> "bool":
        """
        __call__(OESubsetAdaptor self, double const * c) -> double
        __call__(OESubsetAdaptor self, double const * c, double * g) -> double
        __call__(OESubsetAdaptor self, double const * coord, double * hes, double * grad) -> bool
        """
        return _oeff.OESubsetAdaptor___call__(self, *args)


    def Setup(self, arg2: 'OEMolBase') -> "bool":
        """Setup(OESubsetAdaptor self, OEMolBase arg2) -> bool"""
        return _oeff.OESubsetAdaptor_Setup(self, arg2)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OESubsetAdaptor self) -> OEMolFunc1"""
        return _oeff.OESubsetAdaptor_GetMolFunc(self)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OESubsetAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OESubsetAdaptor_SetMolFunc(self, molfunc, own)


    def SetMolFunc2(self, molfunc: 'OEMolFunc2', own: 'bool') -> "bool":
        """SetMolFunc2(OESubsetAdaptor self, OEMolFunc2 molfunc, bool own) -> bool"""
        return _oeff.OESubsetAdaptor_SetMolFunc2(self, molfunc, own)


    def Set(self, *args) -> "bool":
        """Set(OESubsetAdaptor self, OEUnaryAtomPred fix) -> bool"""
        return _oeff.OESubsetAdaptor_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OESubsetAdaptor self)"""
        return _oeff.OESubsetAdaptor_ClearPredicates(self)


    def NumVar(self) -> "unsigned int":
        """NumVar(OESubsetAdaptor self) -> unsigned int"""
        return _oeff.OESubsetAdaptor_NumVar(self)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OESubsetAdaptor self, double * var, double const * x)"""
        return _oeff.OESubsetAdaptor_GetVar(self, var, x)


    def AdaptVar(self, ca: 'double *', c: 'double const *') -> "bool":
        """AdaptVar(OESubsetAdaptor self, double * ca, double const * c) -> bool"""
        return _oeff.OESubsetAdaptor_AdaptVar(self, ca, c)


    def AdaptGrad(self, ga: 'double *', g: 'double const *') -> "bool":
        """AdaptGrad(OESubsetAdaptor self, double * ga, double const * g) -> bool"""
        return _oeff.OESubsetAdaptor_AdaptGrad(self, ga, g)


    def AdaptHessian(self, he: 'double *', h: 'double const *') -> "bool":
        """AdaptHessian(OESubsetAdaptor self, double * he, double const * h) -> bool"""
        return _oeff.OESubsetAdaptor_AdaptHessian(self, he, h)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OESubsetAdaptor self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OESubsetAdaptor_GetFComponents(self, arg2)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', arg4: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OESubsetAdaptor self, OEMolBase arg2, double const * arg3, unsigned int arg4) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OESubsetAdaptor_GetInteractions(self, arg2, arg3, arg4)

OESubsetAdaptor_swigregister = _oeff.OESubsetAdaptor_swigregister
OESubsetAdaptor_swigregister(OESubsetAdaptor)

class OETorAdaptor(OEMolAdaptor):
    """Proxy of C++ OEMolPotential::OETorAdaptor class."""

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

    def __init__(self, arg2: 'OEMolFunc1', own: 'bool'=False, excludeInteract: 'bool'=True):
        """
        __init__(OEMolPotential::OETorAdaptor self, OEMolFunc1 arg2, bool own=False, bool excludeInteract=True) -> OETorAdaptor
        __init__(OEMolPotential::OETorAdaptor self, OEMolFunc1 arg2, bool own=False) -> OETorAdaptor
        __init__(OEMolPotential::OETorAdaptor self, OEMolFunc1 arg2) -> OETorAdaptor
        """
        this = _oeff.new_OETorAdaptor(arg2, own, excludeInteract)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorAdaptor
    __del__ = lambda self: None

    def __call__(self, *args) -> "double":
        """
        __call__(OETorAdaptor self, double const * arg2) -> double
        __call__(OETorAdaptor self, double const * arg2, double * arg3) -> double
        """
        return _oeff.OETorAdaptor___call__(self, *args)


    def Setup(self, *args) -> "bool":
        """
        Setup(OETorAdaptor self, OEMolBase mol) -> bool
        Setup(OETorAdaptor self, OEMolBase mol, OEBondIter bond) -> bool
        """
        return _oeff.OETorAdaptor_Setup(self, *args)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OETorAdaptor self) -> OEMolFunc1"""
        return _oeff.OETorAdaptor_GetMolFunc(self)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OETorAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OETorAdaptor_SetMolFunc(self, molfunc, own)


    def Set(self, *args) -> "bool":
        """
        Set(OETorAdaptor self, OEUnaryAtomPred p) -> bool
        Set(OETorAdaptor self, OEUnaryBondPred rot) -> bool
        """
        return _oeff.OETorAdaptor_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OETorAdaptor self)"""
        return _oeff.OETorAdaptor_ClearPredicates(self)


    def AdaptVar(self, arg2: 'double *', arg3: 'double const *') -> "bool":
        """AdaptVar(OETorAdaptor self, double * arg2, double const * arg3) -> bool"""
        return _oeff.OETorAdaptor_AdaptVar(self, arg2, arg3)


    def AdaptGrad(self, torGrad: 'double *', grads: 'double const *') -> "bool":
        """AdaptGrad(OETorAdaptor self, double * torGrad, double const * grads) -> bool"""
        return _oeff.OETorAdaptor_AdaptGrad(self, torGrad, grads)


    def NumVar(self) -> "unsigned int":
        """NumVar(OETorAdaptor self) -> unsigned int"""
        return _oeff.OETorAdaptor_NumVar(self)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OETorAdaptor self, double * var, double const * x)"""
        return _oeff.OETorAdaptor_GetVar(self, var, x)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OETorAdaptor self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OETorAdaptor_GetFComponents(self, arg2)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', arg4: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OETorAdaptor self, OEMolBase arg2, double const * arg3, unsigned int arg4) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OETorAdaptor_GetInteractions(self, arg2, arg3, arg4)

OETorAdaptor_swigregister = _oeff.OETorAdaptor_swigregister
OETorAdaptor_swigregister(OETorAdaptor)

class OETorsionPred1(oechem.OEUnaryBondPred):
    """Proxy of C++ OEMolPotential::OETorsionPred1 class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OETorsionPred1 self, OEBondBase bond) -> bool"""
        return _oeff.OETorsionPred1___call__(self, bond)


    def __init__(self):
        """__init__(OEMolPotential::OETorsionPred1 self) -> OETorsionPred1"""
        this = _oeff.new_OETorsionPred1()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorsionPred1
    __del__ = lambda self: None
OETorsionPred1_swigregister = _oeff.OETorsionPred1_swigregister
OETorsionPred1_swigregister(OETorsionPred1)

class OETorsionPred2(oechem.OEUnaryBondPred):
    """Proxy of C++ OEMolPotential::OETorsionPred2 class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OETorsionPred2 self, OEBondBase bond) -> bool"""
        return _oeff.OETorsionPred2___call__(self, bond)


    def __init__(self):
        """__init__(OEMolPotential::OETorsionPred2 self) -> OETorsionPred2"""
        this = _oeff.new_OETorsionPred2()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorsionPred2
    __del__ = lambda self: None
OETorsionPred2_swigregister = _oeff.OETorsionPred2_swigregister
OETorsionPred2_swigregister(OETorsionPred2)

class OETorsionPred3(oechem.OEUnaryBondPred):
    """Proxy of C++ OEMolPotential::OETorsionPred3 class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OETorsionPred3 self, OEBondBase bond) -> bool"""
        return _oeff.OETorsionPred3___call__(self, bond)


    def __init__(self):
        """__init__(OEMolPotential::OETorsionPred3 self) -> OETorsionPred3"""
        this = _oeff.new_OETorsionPred3()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorsionPred3
    __del__ = lambda self: None
OETorsionPred3_swigregister = _oeff.OETorsionPred3_swigregister
OETorsionPred3_swigregister(OETorsionPred3)

class OEQuatAdaptor(OEMolAdaptor):
    """Proxy of C++ OEMolPotential::OEQuatAdaptor class."""

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

    def __init__(self, arg2: 'OEMolFunc1', own: 'bool'=False, excludeInteract: 'bool'=True):
        """
        __init__(OEMolPotential::OEQuatAdaptor self, OEMolFunc1 arg2, bool own=False, bool excludeInteract=True) -> OEQuatAdaptor
        __init__(OEMolPotential::OEQuatAdaptor self, OEMolFunc1 arg2, bool own=False) -> OEQuatAdaptor
        __init__(OEMolPotential::OEQuatAdaptor self, OEMolFunc1 arg2) -> OEQuatAdaptor
        """
        this = _oeff.new_OEQuatAdaptor(arg2, own, excludeInteract)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEQuatAdaptor
    __del__ = lambda self: None

    def __call__(self, *args) -> "double":
        """
        __call__(OEQuatAdaptor self, double const * quat) -> double
        __call__(OEQuatAdaptor self, double const * quat, double * quatgrad) -> double
        """
        return _oeff.OEQuatAdaptor___call__(self, *args)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEQuatAdaptor self, OEMolBase mol) -> bool"""
        return _oeff.OEQuatAdaptor_Setup(self, mol)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OEQuatAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OEQuatAdaptor_SetMolFunc(self, molfunc, own)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEQuatAdaptor self) -> unsigned int"""
        return _oeff.OEQuatAdaptor_NumVar(self)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEQuatAdaptor self, double * var, double const * x)"""
        return _oeff.OEQuatAdaptor_GetVar(self, var, x)


    def AdaptVar(self, coords: 'double *', quat: 'double const *') -> "bool":
        """AdaptVar(OEQuatAdaptor self, double * coords, double const * quat) -> bool"""
        return _oeff.OEQuatAdaptor_AdaptVar(self, coords, quat)


    def AdaptGrad(self, qg: 'double *', g: 'double const *', quat: 'double const *', coords: 'double const *') -> "bool":
        """AdaptGrad(OEQuatAdaptor self, double * qg, double const * g, double const * quat, double const * coords) -> bool"""
        return _oeff.OEQuatAdaptor_AdaptGrad(self, qg, g, quat, coords)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEQuatAdaptor self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEQuatAdaptor_GetFComponents(self, arg2)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', arg4: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEQuatAdaptor self, OEMolBase arg2, double const * arg3, unsigned int arg4) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEQuatAdaptor_GetInteractions(self, arg2, arg3, arg4)


    def IsRedundant(self, x: 'double const *', y: 'double const *', tolerance: 'double const'=0.1) -> "bool":
        """
        IsRedundant(OEQuatAdaptor self, double const * x, double const * y, double const tolerance=0.1) -> bool
        IsRedundant(OEQuatAdaptor self, double const * x, double const * y) -> bool
        """
        return _oeff.OEQuatAdaptor_IsRedundant(self, x, y, tolerance)


    def SetTranslateRefToGC(self, argValue: 'bool const') -> "void":
        """SetTranslateRefToGC(OEQuatAdaptor self, bool const argValue)"""
        return _oeff.OEQuatAdaptor_SetTranslateRefToGC(self, argValue)


    def GetTranslateRefToGC(self) -> "bool":
        """GetTranslateRefToGC(OEQuatAdaptor self) -> bool"""
        return _oeff.OEQuatAdaptor_GetTranslateRefToGC(self)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OEQuatAdaptor self) -> OEMolFunc1"""
        return _oeff.OEQuatAdaptor_GetMolFunc(self)


    def GetRefCoord(self) -> "double const *":
        """GetRefCoord(OEQuatAdaptor self) -> double const *"""
        return _oeff.OEQuatAdaptor_GetRefCoord(self)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEQuatAdaptor self)"""
        return _oeff.OEQuatAdaptor_ClearPredicates(self)

OEQuatAdaptor_swigregister = _oeff.OEQuatAdaptor_swigregister
OEQuatAdaptor_swigregister(OEQuatAdaptor)

class OEInterAdaptor(OEMolAdaptor):
    """Proxy of C++ OEMolPotential::OEInterAdaptor class."""

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

    def __init__(self, arg2: 'OEMolFunc1', dihedrals: 'bool'=True, own: 'bool'=False):
        """
        __init__(OEMolPotential::OEInterAdaptor self, OEMolFunc1 arg2, bool dihedrals=True, bool own=False) -> OEInterAdaptor
        __init__(OEMolPotential::OEInterAdaptor self, OEMolFunc1 arg2, bool dihedrals=True) -> OEInterAdaptor
        __init__(OEMolPotential::OEInterAdaptor self, OEMolFunc1 arg2) -> OEInterAdaptor
        """
        this = _oeff.new_OEInterAdaptor(arg2, dihedrals, own)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEInterAdaptor
    __del__ = lambda self: None

    def __call__(self, *args) -> "double":
        """
        __call__(OEInterAdaptor self, double const * c) -> double
        __call__(OEInterAdaptor self, double const * c, double * g) -> double
        """
        return _oeff.OEInterAdaptor___call__(self, *args)


    def Setup(self, arg2: 'OEMolBase') -> "bool":
        """Setup(OEInterAdaptor self, OEMolBase arg2) -> bool"""
        return _oeff.OEInterAdaptor_Setup(self, arg2)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OEInterAdaptor self) -> OEMolFunc1"""
        return _oeff.OEInterAdaptor_GetMolFunc(self)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OEInterAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OEInterAdaptor_SetMolFunc(self, molfunc, own)


    def Set(self, *args) -> "bool":
        """Set(OEInterAdaptor self, OEUnaryAtomPred fix) -> bool"""
        return _oeff.OEInterAdaptor_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEInterAdaptor self)"""
        return _oeff.OEInterAdaptor_ClearPredicates(self)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEInterAdaptor self) -> unsigned int"""
        return _oeff.OEInterAdaptor_NumVar(self)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEInterAdaptor self, double * var, double const * x)"""
        return _oeff.OEInterAdaptor_GetVar(self, var, x)


    def AdaptVar(self, ca: 'double *', c: 'double const *') -> "bool":
        """AdaptVar(OEInterAdaptor self, double * ca, double const * c) -> bool"""
        return _oeff.OEInterAdaptor_AdaptVar(self, ca, c)


    def AdaptGrad(self, ga: 'double *', g: 'double const *') -> "bool":
        """AdaptGrad(OEInterAdaptor self, double * ga, double const * g) -> bool"""
        return _oeff.OEInterAdaptor_AdaptGrad(self, ga, g)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEInterAdaptor self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEInterAdaptor_GetFComponents(self, arg2)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', arg4: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEInterAdaptor self, OEMolBase arg2, double const * arg3, unsigned int arg4) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEInterAdaptor_GetInteractions(self, arg2, arg3, arg4)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEInterAdaptor self, bool v)"""
        return _oeff.OEInterAdaptor_SetVerbose(self, v)

OEInterAdaptor_swigregister = _oeff.OEInterAdaptor_swigregister
OEInterAdaptor_swigregister(OEInterAdaptor)

class OETorQuatAdaptor(OEMolAdaptor):
    """Proxy of C++ OEMolPotential::OETorQuatAdaptor class."""

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

    def __init__(self, arg2: 'OEMolFunc1', own: 'bool'=False, excludeInteract: 'bool'=True):
        """
        __init__(OEMolPotential::OETorQuatAdaptor self, OEMolFunc1 arg2, bool own=False, bool excludeInteract=True) -> OETorQuatAdaptor
        __init__(OEMolPotential::OETorQuatAdaptor self, OEMolFunc1 arg2, bool own=False) -> OETorQuatAdaptor
        __init__(OEMolPotential::OETorQuatAdaptor self, OEMolFunc1 arg2) -> OETorQuatAdaptor
        """
        this = _oeff.new_OETorQuatAdaptor(arg2, own, excludeInteract)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorQuatAdaptor
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OETorQuatAdaptor self, OEMolBase mol) -> bool"""
        return _oeff.OETorQuatAdaptor_Setup(self, mol)


    def __call__(self, *args) -> "double":
        """
        __call__(OETorQuatAdaptor self, double const * arg2) -> double
        __call__(OETorQuatAdaptor self, double const * arg2, double * arg3) -> double
        """
        return _oeff.OETorQuatAdaptor___call__(self, *args)


    def NumVar(self) -> "unsigned int":
        """NumVar(OETorQuatAdaptor self) -> unsigned int"""
        return _oeff.OETorQuatAdaptor_NumVar(self)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OETorQuatAdaptor self, double * var, double const * x)"""
        return _oeff.OETorQuatAdaptor_GetVar(self, var, x)


    def GetMolFunc(self) -> "OEMolPotential::OEMolFunc1 &":
        """GetMolFunc(OETorQuatAdaptor self) -> OEMolFunc1"""
        return _oeff.OETorQuatAdaptor_GetMolFunc(self)


    def SetMolFunc(self, molfunc: 'OEMolFunc1', own: 'bool') -> "bool":
        """SetMolFunc(OETorQuatAdaptor self, OEMolFunc1 molfunc, bool own) -> bool"""
        return _oeff.OETorQuatAdaptor_SetMolFunc(self, molfunc, own)


    def AdaptVar(self, arg2: 'double *', arg3: 'double const *') -> "bool":
        """AdaptVar(OETorQuatAdaptor self, double * arg2, double const * arg3) -> bool"""
        return _oeff.OETorQuatAdaptor_AdaptVar(self, arg2, arg3)


    def AdaptGrad(self, arg2: 'double *', arg3: 'double const *', arg4: 'double const *') -> "bool":
        """AdaptGrad(OETorQuatAdaptor self, double * arg2, double const * arg3, double const * arg4) -> bool"""
        return _oeff.OETorQuatAdaptor_AdaptGrad(self, arg2, arg3, arg4)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OETorQuatAdaptor self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OETorQuatAdaptor_GetFComponents(self, arg2)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', arg4: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OETorQuatAdaptor self, OEMolBase arg2, double const * arg3, unsigned int arg4) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OETorQuatAdaptor_GetInteractions(self, arg2, arg3, arg4)


    def Set(self, *args) -> "bool":
        """
        Set(OETorQuatAdaptor self, OEUnaryAtomPred p) -> bool
        Set(OETorQuatAdaptor self, OEUnaryBondPred p) -> bool
        """
        return _oeff.OETorQuatAdaptor_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OETorQuatAdaptor self)"""
        return _oeff.OETorQuatAdaptor_ClearPredicates(self)

OETorQuatAdaptor_swigregister = _oeff.OETorQuatAdaptor_swigregister
OETorQuatAdaptor_swigregister(OETorQuatAdaptor)

class OECheckFunc(object):
    """Proxy of C++ OEMolPotential::OECheckFunc class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def __call__(self, *args) -> "void":
        """
        __call__(OECheckFunc self, unsigned int const * idx, unsigned int size, bool fatal=False, unsigned int type=0)
        __call__(OECheckFunc self, unsigned int const * idx, unsigned int size, bool fatal=False)
        __call__(OECheckFunc self, unsigned int const * idx, unsigned int size)
        __call__(OECheckFunc self, std::string arg2)
        """
        return _oeff.OECheckFunc___call__(self, *args)

    __swig_destroy__ = _oeff.delete_OECheckFunc
    __del__ = lambda self: None
OECheckFunc_swigregister = _oeff.OECheckFunc_swigregister
OECheckFunc_swigregister(OECheckFunc)

class OEHarmonicPotential(OEMolFunc1):
    """Proxy of C++ OEConstr::OEHarmonicPotential class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEHarmonicPotential
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEConstr::OEHarmonicPotential self, double kc, double dc) -> OEHarmonicPotential
        __init__(OEConstr::OEHarmonicPotential self, OEHarmonicPotential arg2) -> OEHarmonicPotential
        """
        this = _oeff.new_OEHarmonicPotential(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEHarmonicPotential self, OEMolBase mol) -> bool"""
        return _oeff.OEHarmonicPotential_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEHarmonicPotential self) -> unsigned int"""
        return _oeff.OEHarmonicPotential_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEHarmonicPotential self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEHarmonicPotential_GetFComponents(self, arg2)


    def __call__(self, *args) -> "double":
        """
        __call__(OEHarmonicPotential self, double const * x) -> double
        __call__(OEHarmonicPotential self, double const * x, double * g) -> double
        """
        return _oeff.OEHarmonicPotential___call__(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEHarmonicPotential self)"""
        return _oeff.OEHarmonicPotential_ClearPredicates(self)


    def Set_kc(self, kc: 'double') -> "void":
        """Set_kc(OEHarmonicPotential self, double kc)"""
        return _oeff.OEHarmonicPotential_Set_kc(self, kc)


    def Get_kc(self) -> "double":
        """Get_kc(OEHarmonicPotential self) -> double"""
        return _oeff.OEHarmonicPotential_Get_kc(self)


    def Set_dc(self, dc: 'double') -> "void":
        """Set_dc(OEHarmonicPotential self, double dc)"""
        return _oeff.OEHarmonicPotential_Set_dc(self, dc)


    def Get_dc(self) -> "double":
        """Get_dc(OEHarmonicPotential self) -> double"""
        return _oeff.OEHarmonicPotential_Get_dc(self)


    def GetPred(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > const *":
        """GetPred(OEHarmonicPotential self) -> OEUnaryAtomPred"""
        return _oeff.OEHarmonicPotential_GetPred(self)

OEHarmonicPotential_swigregister = _oeff.OEHarmonicPotential_swigregister
OEHarmonicPotential_swigregister(OEHarmonicPotential)

class OEBendParamsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEBendParams)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEBendParams)> self) -> OEBendParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEBendParams)> self, OEBendParamsIter rhs) -> OEBendParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEBendParams)> self, OESystem::OEIterBase< OEMolPotential::OEBendParams > * rhs) -> OEBendParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEBendParams)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEBendParams >::NonConstA > * rhs) -> OEBendParamsIter
        """
        this = _oeff.new_OEBendParamsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEBendParamsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEBendParams > *":
        """Copy(OEBendParamsIter self) -> OESystem::OEIterBase< OEMolPotential::OEBendParams > *"""
        return _oeff.OEBendParamsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEBendParamsIter self, OESystem::OEIterBase< OEMolPotential::OEBendParams > * ib)
        Push(OEBendParamsIter self, OEBendParamsIter iter)
        """
        return _oeff.OEBendParamsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OEBendParams,OEMolPotential::OEBendParams > const &') -> "void":
        """Sort(OEBendParamsIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEBendParams,OEMolPotential::OEBendParams > const & sort_criterion)"""
        return _oeff.OEBendParamsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEBendParams > &":
        """ToFirst(OEBendParamsIter self) -> OEBendParamsIter"""
        return _oeff.OEBendParamsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEBendParams > &":
        """ToLast(OEBendParamsIter self) -> OEBendParamsIter"""
        return _oeff.OEBendParamsIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OEBendParams &":
        """__ref__(OEBendParamsIter self) -> OEBendParams"""
        return _oeff.OEBendParamsIter___ref__(self)


    def IsValid(self):
      return _oeff.OEBendParamsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEBendParamsIter self) -> PyObject *"""
        return _oeff.OEBendParamsIter_next(self)


    def Target(self) -> "OEMolPotential::OEBendParams &":
        """Target(OEBendParamsIter self) -> OEBendParams"""
        return _oeff.OEBendParamsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEBendParams > &":
        """
        Next(OEBendParamsIter self) -> OEBendParamsIter
        Next(OEBendParamsIter self, int i) -> OEBendParamsIter
        """
        return _oeff.OEBendParamsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEBendParams > &":
        """
        Prev(OEBendParamsIter self) -> OEBendParamsIter
        Prev(OEBendParamsIter self, int i) -> OEBendParamsIter
        """
        return _oeff.OEBendParamsIter_Prev(self, *args)

OEBendParamsIter_swigregister = _oeff.OEBendParamsIter_swigregister
OEBendParamsIter_swigregister(OEBendParamsIter)

class OEVdwParamsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEVdwParams)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEVdwParams)> self) -> OEVdwParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEVdwParams)> self, OEVdwParamsIter rhs) -> OEVdwParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEVdwParams)> self, OESystem::OEIterBase< OEMolPotential::OEVdwParams > * rhs) -> OEVdwParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEVdwParams)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEVdwParams >::NonConstA > * rhs) -> OEVdwParamsIter
        """
        this = _oeff.new_OEVdwParamsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEVdwParamsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEVdwParams > *":
        """Copy(OEVdwParamsIter self) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams > *"""
        return _oeff.OEVdwParamsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEVdwParamsIter self, OESystem::OEIterBase< OEMolPotential::OEVdwParams > * ib)
        Push(OEVdwParamsIter self, OEVdwParamsIter iter)
        """
        return _oeff.OEVdwParamsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OEVdwParams,OEMolPotential::OEVdwParams > const &') -> "void":
        """Sort(OEVdwParamsIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEVdwParams,OEMolPotential::OEVdwParams > const & sort_criterion)"""
        return _oeff.OEVdwParamsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEVdwParams > &":
        """ToFirst(OEVdwParamsIter self) -> OEVdwParamsIter"""
        return _oeff.OEVdwParamsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEVdwParams > &":
        """ToLast(OEVdwParamsIter self) -> OEVdwParamsIter"""
        return _oeff.OEVdwParamsIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OEVdwParams &":
        """__ref__(OEVdwParamsIter self) -> OEVdwParams"""
        return _oeff.OEVdwParamsIter___ref__(self)


    def IsValid(self):
      return _oeff.OEVdwParamsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEVdwParamsIter self) -> PyObject *"""
        return _oeff.OEVdwParamsIter_next(self)


    def Target(self) -> "OEMolPotential::OEVdwParams &":
        """Target(OEVdwParamsIter self) -> OEVdwParams"""
        return _oeff.OEVdwParamsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEVdwParams > &":
        """
        Next(OEVdwParamsIter self) -> OEVdwParamsIter
        Next(OEVdwParamsIter self, int i) -> OEVdwParamsIter
        """
        return _oeff.OEVdwParamsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEVdwParams > &":
        """
        Prev(OEVdwParamsIter self) -> OEVdwParamsIter
        Prev(OEVdwParamsIter self, int i) -> OEVdwParamsIter
        """
        return _oeff.OEVdwParamsIter_Prev(self, *args)

OEVdwParamsIter_swigregister = _oeff.OEVdwParamsIter_swigregister
OEVdwParamsIter_swigregister(OEVdwParamsIter)

class OETorsionParamsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OETorsionParams)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OETorsionParams)> self) -> OETorsionParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OETorsionParams)> self, OETorsionParamsIter rhs) -> OETorsionParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OETorsionParams)> self, OESystem::OEIterBase< OEMolPotential::OETorsionParams > * rhs) -> OETorsionParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OETorsionParams)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OETorsionParams >::NonConstA > * rhs) -> OETorsionParamsIter
        """
        this = _oeff.new_OETorsionParamsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorsionParamsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OETorsionParams > *":
        """Copy(OETorsionParamsIter self) -> OESystem::OEIterBase< OEMolPotential::OETorsionParams > *"""
        return _oeff.OETorsionParamsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OETorsionParamsIter self, OESystem::OEIterBase< OEMolPotential::OETorsionParams > * ib)
        Push(OETorsionParamsIter self, OETorsionParamsIter iter)
        """
        return _oeff.OETorsionParamsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OETorsionParams,OEMolPotential::OETorsionParams > const &') -> "void":
        """Sort(OETorsionParamsIter self, OESystem::OEBinaryPredicate< OEMolPotential::OETorsionParams,OEMolPotential::OETorsionParams > const & sort_criterion)"""
        return _oeff.OETorsionParamsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OETorsionParams > &":
        """ToFirst(OETorsionParamsIter self) -> OETorsionParamsIter"""
        return _oeff.OETorsionParamsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OETorsionParams > &":
        """ToLast(OETorsionParamsIter self) -> OETorsionParamsIter"""
        return _oeff.OETorsionParamsIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OETorsionParams &":
        """__ref__(OETorsionParamsIter self) -> OETorsionParams"""
        return _oeff.OETorsionParamsIter___ref__(self)


    def IsValid(self):
      return _oeff.OETorsionParamsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OETorsionParamsIter self) -> PyObject *"""
        return _oeff.OETorsionParamsIter_next(self)


    def Target(self) -> "OEMolPotential::OETorsionParams &":
        """Target(OETorsionParamsIter self) -> OETorsionParams"""
        return _oeff.OETorsionParamsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OETorsionParams > &":
        """
        Next(OETorsionParamsIter self) -> OETorsionParamsIter
        Next(OETorsionParamsIter self, int i) -> OETorsionParamsIter
        """
        return _oeff.OETorsionParamsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OETorsionParams > &":
        """
        Prev(OETorsionParamsIter self) -> OETorsionParamsIter
        Prev(OETorsionParamsIter self, int i) -> OETorsionParamsIter
        """
        return _oeff.OETorsionParamsIter_Prev(self, *args)

OETorsionParamsIter_swigregister = _oeff.OETorsionParamsIter_swigregister
OETorsionParamsIter_swigregister(OETorsionParamsIter)

class OEStretchParamsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEStretchParams)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEStretchParams)> self) -> OEStretchParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEStretchParams)> self, OEStretchParamsIter rhs) -> OEStretchParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEStretchParams)> self, OESystem::OEIterBase< OEMolPotential::OEStretchParams > * rhs) -> OEStretchParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEStretchParams)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEStretchParams >::NonConstA > * rhs) -> OEStretchParamsIter
        """
        this = _oeff.new_OEStretchParamsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEStretchParamsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEStretchParams > *":
        """Copy(OEStretchParamsIter self) -> OESystem::OEIterBase< OEMolPotential::OEStretchParams > *"""
        return _oeff.OEStretchParamsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEStretchParamsIter self, OESystem::OEIterBase< OEMolPotential::OEStretchParams > * ib)
        Push(OEStretchParamsIter self, OEStretchParamsIter iter)
        """
        return _oeff.OEStretchParamsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OEStretchParams,OEMolPotential::OEStretchParams > const &') -> "void":
        """Sort(OEStretchParamsIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEStretchParams,OEMolPotential::OEStretchParams > const & sort_criterion)"""
        return _oeff.OEStretchParamsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEStretchParams > &":
        """ToFirst(OEStretchParamsIter self) -> OEStretchParamsIter"""
        return _oeff.OEStretchParamsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEStretchParams > &":
        """ToLast(OEStretchParamsIter self) -> OEStretchParamsIter"""
        return _oeff.OEStretchParamsIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OEStretchParams &":
        """__ref__(OEStretchParamsIter self) -> OEStretchParams"""
        return _oeff.OEStretchParamsIter___ref__(self)


    def IsValid(self):
      return _oeff.OEStretchParamsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEStretchParamsIter self) -> PyObject *"""
        return _oeff.OEStretchParamsIter_next(self)


    def Target(self) -> "OEMolPotential::OEStretchParams &":
        """Target(OEStretchParamsIter self) -> OEStretchParams"""
        return _oeff.OEStretchParamsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEStretchParams > &":
        """
        Next(OEStretchParamsIter self) -> OEStretchParamsIter
        Next(OEStretchParamsIter self, int i) -> OEStretchParamsIter
        """
        return _oeff.OEStretchParamsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEStretchParams > &":
        """
        Prev(OEStretchParamsIter self) -> OEStretchParamsIter
        Prev(OEStretchParamsIter self, int i) -> OEStretchParamsIter
        """
        return _oeff.OEStretchParamsIter_Prev(self, *args)

OEStretchParamsIter_swigregister = _oeff.OEStretchParamsIter_swigregister
OEStretchParamsIter_swigregister(OEStretchParamsIter)

class OEInteractParams(object):
    """Proxy of C++ OEMolPotential::OEInteractParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEInteractParams self) -> OEInteractParams
        __init__(OEMolPotential::OEInteractParams self, OEInteractParams arg2) -> OEInteractParams
        """
        this = _oeff.new_OEInteractParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEInteractParams
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEInteractParams self)"""
        return _oeff.OEInteractParams_Clear(self)


    def Get(self, idx: 'unsigned int const') -> "double":
        """Get(OEInteractParams self, unsigned int const idx) -> double"""
        return _oeff.OEInteractParams_Get(self, idx)


    def __getitem__(self, idx: 'unsigned int') -> "double &":
        """__getitem__(OEInteractParams self, unsigned int idx) -> double &"""
        return _oeff.OEInteractParams___getitem__(self, idx)

OEInteractParams_swigregister = _oeff.OEInteractParams_swigregister
OEInteractParams_swigregister(OEInteractParams)

class OEStretchParams(OEInteractParams):
    """Proxy of C++ OEMolPotential::OEStretchParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEStretchParams self, OEBondBase bond) -> OEStretchParams
        __init__(OEMolPotential::OEStretchParams self, OEStretchParams arg2) -> OEStretchParams
        """
        this = _oeff.new_OEStretchParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEStretchParams
    __del__ = lambda self: None

    def GetAtomIndex1(self) -> "unsigned int":
        """GetAtomIndex1(OEStretchParams self) -> unsigned int"""
        return _oeff.OEStretchParams_GetAtomIndex1(self)


    def GetAtomIndex2(self) -> "unsigned int":
        """GetAtomIndex2(OEStretchParams self) -> unsigned int"""
        return _oeff.OEStretchParams_GetAtomIndex2(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEStretchParams self, OEUnaryAtomPred pred) -> bool
        IsValid(OEStretchParams self, OEUnaryBondPred pred) -> bool
        """
        return _oeff.OEStretchParams_IsValid(self, *args)


    def IsBond(self, bond: 'OEBondBase') -> "bool":
        """IsBond(OEStretchParams self, OEBondBase bond) -> bool"""
        return _oeff.OEStretchParams_IsBond(self, bond)

OEStretchParams_swigregister = _oeff.OEStretchParams_swigregister
OEStretchParams_swigregister(OEStretchParams)

class OEBendParams(OEInteractParams):
    """Proxy of C++ OEMolPotential::OEBendParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEBendParams self, OEBondBase bond1, OEBondBase bond2) -> OEBendParams
        __init__(OEMolPotential::OEBendParams self, OEBendParams arg2) -> OEBendParams
        """
        this = _oeff.new_OEBendParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEBendParams
    __del__ = lambda self: None

    def GetAtomIndex1(self) -> "unsigned int":
        """GetAtomIndex1(OEBendParams self) -> unsigned int"""
        return _oeff.OEBendParams_GetAtomIndex1(self)


    def GetAtomIndex2(self) -> "unsigned int":
        """GetAtomIndex2(OEBendParams self) -> unsigned int"""
        return _oeff.OEBendParams_GetAtomIndex2(self)


    def GetAtomIndex3(self) -> "unsigned int":
        """GetAtomIndex3(OEBendParams self) -> unsigned int"""
        return _oeff.OEBendParams_GetAtomIndex3(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEBendParams self) -> bool
        IsValid(OEBendParams self, OEUnaryAtomPred pred) -> bool
        IsValid(OEBendParams self, OEBinaryBondPred pred) -> bool
        """
        return _oeff.OEBendParams_IsValid(self, *args)


    def IsAngle(self, atom1: 'OEAtomBase', atom2: 'OEAtomBase', atom3: 'OEAtomBase') -> "bool":
        """IsAngle(OEBendParams self, OEAtomBase atom1, OEAtomBase atom2, OEAtomBase atom3) -> bool"""
        return _oeff.OEBendParams_IsAngle(self, atom1, atom2, atom3)

OEBendParams_swigregister = _oeff.OEBendParams_swigregister
OEBendParams_swigregister(OEBendParams)

class OETorsionParams(OEInteractParams):
    """Proxy of C++ OEMolPotential::OETorsionParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OETorsionParams self, OEBondBase bond, OEAtomBase atom1, OEAtomBase atom2) -> OETorsionParams
        __init__(OEMolPotential::OETorsionParams self, OETorsionParams arg2) -> OETorsionParams
        """
        this = _oeff.new_OETorsionParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OETorsionParams
    __del__ = lambda self: None

    def GetAtomIndex1(self) -> "unsigned int":
        """GetAtomIndex1(OETorsionParams self) -> unsigned int"""
        return _oeff.OETorsionParams_GetAtomIndex1(self)


    def GetAtomIndex2(self) -> "unsigned int":
        """GetAtomIndex2(OETorsionParams self) -> unsigned int"""
        return _oeff.OETorsionParams_GetAtomIndex2(self)


    def GetAtomIndex3(self) -> "unsigned int":
        """GetAtomIndex3(OETorsionParams self) -> unsigned int"""
        return _oeff.OETorsionParams_GetAtomIndex3(self)


    def GetAtomIndex4(self) -> "unsigned int":
        """GetAtomIndex4(OETorsionParams self) -> unsigned int"""
        return _oeff.OETorsionParams_GetAtomIndex4(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OETorsionParams self) -> bool
        IsValid(OETorsionParams self, OEUnaryAtomPred pred) -> bool
        IsValid(OETorsionParams self, OEUnaryBondPred pred) -> bool
        """
        return _oeff.OETorsionParams_IsValid(self, *args)


    def IsTorsion(self, atom1: 'OEAtomBase', atom2: 'OEAtomBase', atom3: 'OEAtomBase', atom4: 'OEAtomBase') -> "bool":
        """IsTorsion(OETorsionParams self, OEAtomBase atom1, OEAtomBase atom2, OEAtomBase atom3, OEAtomBase atom4) -> bool"""
        return _oeff.OETorsionParams_IsTorsion(self, atom1, atom2, atom3, atom4)

OETorsionParams_swigregister = _oeff.OETorsionParams_swigregister
OETorsionParams_swigregister(OETorsionParams)

class OEVdwParams(OEInteractParams):
    """Proxy of C++ OEMolPotential::OEVdwParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEVdwParams self, OEAtomBase atom1, OEAtomBase atom2) -> OEVdwParams
        __init__(OEMolPotential::OEVdwParams self, OEVdwParams arg2) -> OEVdwParams
        """
        this = _oeff.new_OEVdwParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEVdwParams
    __del__ = lambda self: None

    def GetAtomIndex1(self) -> "unsigned int":
        """GetAtomIndex1(OEVdwParams self) -> unsigned int"""
        return _oeff.OEVdwParams_GetAtomIndex1(self)


    def GetAtomIndex2(self) -> "unsigned int":
        """GetAtomIndex2(OEVdwParams self) -> unsigned int"""
        return _oeff.OEVdwParams_GetAtomIndex2(self)


    def GetAtom1(self) -> "OEChem::OEAtomBase const *":
        """GetAtom1(OEVdwParams self) -> OEAtomBase"""
        return _oeff.OEVdwParams_GetAtom1(self)


    def GetAtom2(self) -> "OEChem::OEAtomBase const *":
        """GetAtom2(OEVdwParams self) -> OEAtomBase"""
        return _oeff.OEVdwParams_GetAtom2(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEVdwParams self, OEUnaryAtomPred pred) -> bool
        IsValid(OEVdwParams self, OEBinaryAtomPred pred) -> bool
        """
        return _oeff.OEVdwParams_IsValid(self, *args)


    def IsPair(self, atom1: 'OEAtomBase', atom2: 'OEAtomBase') -> "bool":
        """IsPair(OEVdwParams self, OEAtomBase atom1, OEAtomBase atom2) -> bool"""
        return _oeff.OEVdwParams_IsPair(self, atom1, atom2)

OEVdwParams_swigregister = _oeff.OEVdwParams_swigregister
OEVdwParams_swigregister(OEVdwParams)

class OEOutOfPlaneParams(OEInteractParams):
    """Proxy of C++ OEMolPotential::OEOutOfPlaneParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEOutOfPlaneParams self, OEAtomBase atom1, OEAtomBase atom2, OEAtomBase atom3, OEAtomBase atom4) -> OEOutOfPlaneParams
        __init__(OEMolPotential::OEOutOfPlaneParams self, OEOutOfPlaneParams arg2) -> OEOutOfPlaneParams
        """
        this = _oeff.new_OEOutOfPlaneParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEOutOfPlaneParams
    __del__ = lambda self: None

    def GetAtomIndex1(self) -> "unsigned int":
        """GetAtomIndex1(OEOutOfPlaneParams self) -> unsigned int"""
        return _oeff.OEOutOfPlaneParams_GetAtomIndex1(self)


    def GetAtomIndex2(self) -> "unsigned int":
        """GetAtomIndex2(OEOutOfPlaneParams self) -> unsigned int"""
        return _oeff.OEOutOfPlaneParams_GetAtomIndex2(self)


    def GetAtomIndex3(self) -> "unsigned int":
        """GetAtomIndex3(OEOutOfPlaneParams self) -> unsigned int"""
        return _oeff.OEOutOfPlaneParams_GetAtomIndex3(self)


    def GetAtomIndex4(self) -> "unsigned int":
        """GetAtomIndex4(OEOutOfPlaneParams self) -> unsigned int"""
        return _oeff.OEOutOfPlaneParams_GetAtomIndex4(self)


    def IsValid(self, pred: 'OEUnaryAtomPred') -> "bool":
        """IsValid(OEOutOfPlaneParams self, OEUnaryAtomPred pred) -> bool"""
        return _oeff.OEOutOfPlaneParams_IsValid(self, pred)

OEOutOfPlaneParams_swigregister = _oeff.OEOutOfPlaneParams_swigregister
OEOutOfPlaneParams_swigregister(OEOutOfPlaneParams)

class OEFFParams(object):
    """Proxy of C++ OEMolPotential::OEFFParams class."""

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

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

    def GetTitle(self) -> "std::string":
        """GetTitle(OEFFParams self) -> std::string"""
        return _oeff.OEFFParams_GetTitle(self)


    def GetCoulombParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase') -> "bool":
        """GetCoulombParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool"""
        return _oeff.OEFFParams_GetCoulombParams(self, arg2, arg3, arg4)


    def GetStretchBendParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetStretchBendParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OEFFParams_GetStretchBendParams(self, arg2, arg3, arg4, arg5)


    def GetEquilibriumBondLength(self, arg2: 'double &', arg3: 'OEBondBase') -> "bool":
        """GetEquilibriumBondLength(OEFFParams self, double & arg2, OEBondBase arg3) -> bool"""
        return _oeff.OEFFParams_GetEquilibriumBondLength(self, arg2, arg3)


    def GetContactDistance(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase') -> "bool":
        """GetContactDistance(OEFFParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool"""
        return _oeff.OEFFParams_GetContactDistance(self, arg2, arg3, arg4)


    def GetEquilibriumAngle(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetEquilibriumAngle(OEFFParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OEFFParams_GetEquilibriumAngle(self, arg2, arg3, arg4, arg5)


    def GetVdwRadius(self, arg2: 'double &', atm: 'OEAtomBase') -> "bool":
        """GetVdwRadius(OEFFParams self, double & arg2, OEAtomBase atm) -> bool"""
        return _oeff.OEFFParams_GetVdwRadius(self, arg2, atm)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEFFParams self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEFFParams self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEFFParams self, OEMolBase mol) -> bool
        """
        return _oeff.OEFFParams_PrepMol(self, mol, sweep, warnOK)


    def GetAtomTypeIndex(self, arg2: 'unsigned int') -> "unsigned int":
        """GetAtomTypeIndex(OEFFParams self, unsigned int arg2) -> unsigned int"""
        return _oeff.OEFFParams_GetAtomTypeIndex(self, arg2)


    def GetAtomTypeName(self, arg2: 'unsigned int') -> "char const *":
        """GetAtomTypeName(OEFFParams self, unsigned int arg2) -> char const *"""
        return _oeff.OEFFParams_GetAtomTypeName(self, arg2)


    def GetVdwParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEVdwParams > *":
        """
        GetVdwParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool
        GetVdwParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None, double const rcut=0.0) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEFFParams self, OEMolBase mol, OEMolBase host) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams > *
        """
        return _oeff.OEFFParams_GetVdwParams(self, *args)


    def GetStretchParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEStretchParams > *":
        """
        GetStretchParams(OEFFParams self, OEInteractParams arg2, OEBondBase arg3) -> bool
        GetStretchParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEStretchParams >
        GetStretchParams(OEFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEStretchParams > *
        """
        return _oeff.OEFFParams_GetStretchParams(self, *args)


    def GetBendParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEBendParams > *":
        """
        GetBendParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool
        GetBendParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEBendParams >
        GetBendParams(OEFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEBendParams > *
        """
        return _oeff.OEFFParams_GetBendParams(self, *args)


    def GetTorsionParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OETorsionParams > *":
        """
        GetTorsionParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        GetTorsionParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OETorsionParams >
        GetTorsionParams(OEFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OETorsionParams > *
        """
        return _oeff.OEFFParams_GetTorsionParams(self, *args)


    def GetOutOfPlaneParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *":
        """
        GetOutOfPlaneParams(OEFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        GetOutOfPlaneParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams >
        GetOutOfPlaneParams(OEFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *
        """
        return _oeff.OEFFParams_GetOutOfPlaneParams(self, *args)


    def HasVdwParams(self, *args) -> "bool":
        """
        HasVdwParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None, double const rcut=0.0) -> bool
        HasVdwParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> bool
        HasVdwParams(OEFFParams self, OEMolBase mol) -> bool
        HasVdwParams(OEFFParams self, OEMolBase mol, OEMolBase host) -> bool
        """
        return _oeff.OEFFParams_HasVdwParams(self, *args)


    def HasStretchParams(self, mol: 'OEMolBase', pred: 'OEUnaryAtomPred'=None) -> "bool":
        """
        HasStretchParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> bool
        HasStretchParams(OEFFParams self, OEMolBase mol) -> bool
        """
        return _oeff.OEFFParams_HasStretchParams(self, mol, pred)


    def HasBendParams(self, mol: 'OEMolBase', pred: 'OEUnaryAtomPred'=None) -> "bool":
        """
        HasBendParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> bool
        HasBendParams(OEFFParams self, OEMolBase mol) -> bool
        """
        return _oeff.OEFFParams_HasBendParams(self, mol, pred)


    def HasTorsionParams(self, mol: 'OEMolBase', pred: 'OEUnaryAtomPred'=None) -> "bool":
        """
        HasTorsionParams(OEFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> bool
        HasTorsionParams(OEFFParams self, OEMolBase mol) -> bool
        """
        return _oeff.OEFFParams_HasTorsionParams(self, mol, pred)

OEFFParams_swigregister = _oeff.OEFFParams_swigregister
OEFFParams_swigregister(OEFFParams)

class OEStretchBase(OEMolFunc2):
    """Proxy of C++ OEMolPotential::OEStretchBase class."""

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

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

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEStretchBase self, OEMolBase mol) -> bool"""
        return _oeff.OEStretchBase_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEStretchBase self) -> unsigned int"""
        return _oeff.OEStretchBase_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEStretchBase self, double const * x) -> double
        __call__(OEStretchBase self, double const * x, double * g) -> double
        __call__(OEStretchBase self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEStretchBase___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEStretchBase self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEStretchBase_GetFComponents(self, arg2)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEStretchBase self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEStretchBase_GetInteractions(self, mol, c, functype)


    def Set(self, *args) -> "bool":
        """
        Set(OEStretchBase self, OEUnaryAtomPred arg2) -> bool
        Set(OEStretchBase self, OEUnaryBondPred arg2) -> bool
        """
        return _oeff.OEStretchBase_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEStretchBase self)"""
        return _oeff.OEStretchBase_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OEStretchBase self)"""
        return _oeff.OEStretchBase_Clear(self)


    def SetVerbose(self, verbose: 'bool') -> "void":
        """SetVerbose(OEStretchBase self, bool verbose)"""
        return _oeff.OEStretchBase_SetVerbose(self, verbose)

OEStretchBase_swigregister = _oeff.OEStretchBase_swigregister
OEStretchBase_swigregister(OEStretchBase)

class OENonBondIntcsOptions(oechem.OEOptions):
    """Proxy of C++ OEMolPotential::OENonBondIntcsOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OENonBondIntcsOptions self) -> OENonBondIntcsOptions
        __init__(OEMolPotential::OENonBondIntcsOptions self, OENonBondIntcsOptions arg2) -> OENonBondIntcsOptions
        """
        this = _oeff.new_OENonBondIntcsOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OENonBondIntcsOptions
    __del__ = lambda self: None

    def GetUseCoulomb(self) -> "bool":
        """GetUseCoulomb(OENonBondIntcsOptions self) -> bool"""
        return _oeff.OENonBondIntcsOptions_GetUseCoulomb(self)


    def SetUseCoulomb(self, value: 'bool const') -> "bool":
        """SetUseCoulomb(OENonBondIntcsOptions self, bool const value) -> bool"""
        return _oeff.OENonBondIntcsOptions_SetUseCoulomb(self, value)


    def GetUseVdW(self) -> "bool":
        """GetUseVdW(OENonBondIntcsOptions self) -> bool"""
        return _oeff.OENonBondIntcsOptions_GetUseVdW(self)


    def SetUseVdW(self, value: 'bool const') -> "bool":
        """SetUseVdW(OENonBondIntcsOptions self, bool const value) -> bool"""
        return _oeff.OENonBondIntcsOptions_SetUseVdW(self, value)


    def GetVdWCutoff(self) -> "double":
        """GetVdWCutoff(OENonBondIntcsOptions self) -> double"""
        return _oeff.OENonBondIntcsOptions_GetVdWCutoff(self)


    def SetVdWCutoff(self, value: 'double const') -> "bool":
        """SetVdWCutoff(OENonBondIntcsOptions self, double const value) -> bool"""
        return _oeff.OENonBondIntcsOptions_SetVdWCutoff(self, value)


    def GetCoulombCutoff(self) -> "double":
        """GetCoulombCutoff(OENonBondIntcsOptions self) -> double"""
        return _oeff.OENonBondIntcsOptions_GetCoulombCutoff(self)


    def SetCoulombCutoff(self, value: 'double const') -> "bool":
        """SetCoulombCutoff(OENonBondIntcsOptions self, double const value) -> bool"""
        return _oeff.OENonBondIntcsOptions_SetCoulombCutoff(self, value)


    def GetUseAttract(self) -> "bool":
        """GetUseAttract(OENonBondIntcsOptions self) -> bool"""
        return _oeff.OENonBondIntcsOptions_GetUseAttract(self)


    def SetUseAttract(self, value: 'bool const') -> "bool":
        """SetUseAttract(OENonBondIntcsOptions self, bool const value) -> bool"""
        return _oeff.OENonBondIntcsOptions_SetUseAttract(self, value)

OENonBondIntcsOptions_swigregister = _oeff.OENonBondIntcsOptions_swigregister
OENonBondIntcsOptions_swigregister(OENonBondIntcsOptions)

class OENonBondBase(OEMolFunc2):
    """Proxy of C++ OEMolPotential::OENonBondBase class."""

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

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

    def SetOptions(self, opts: 'OENonBondIntcsOptions') -> "bool":
        """SetOptions(OENonBondBase self, OENonBondIntcsOptions opts) -> bool"""
        return _oeff.OENonBondBase_SetOptions(self, opts)


    def GetOptions(self, *args) -> "OEMolPotential::OENonBondIntcsOptions const &":
        """
        GetOptions(OENonBondBase self) -> OENonBondIntcsOptions
        GetOptions(OENonBondBase self) -> OENonBondIntcsOptions
        """
        return _oeff.OENonBondBase_GetOptions(self, *args)


    def NumVar(self) -> "unsigned int":
        """NumVar(OENonBondBase self) -> unsigned int"""
        return _oeff.OENonBondBase_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OENonBondBase self, double const * x) -> double
        __call__(OENonBondBase self, double const * x, double * g) -> double
        __call__(OENonBondBase self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OENonBondBase___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OENonBondBase self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OENonBondBase_GetFComponents(self, arg2)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OENonBondBase self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OENonBondBase_GetInteractions(self, mol, c, functype)


    def Set(self, *args) -> "bool":
        """
        Set(OENonBondBase self, OEUnaryAtomPred arg2) -> bool
        Set(OENonBondBase self, OEBinaryAtomPred arg2) -> bool
        """
        return _oeff.OENonBondBase_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OENonBondBase self)"""
        return _oeff.OENonBondBase_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OENonBondBase self)"""
        return _oeff.OENonBondBase_Clear(self)

OENonBondBase_swigregister = _oeff.OENonBondBase_swigregister
OENonBondBase_swigregister(OENonBondBase)

class OEInterNonBondBase(OENonBondBase, OEInterMolFunc2):
    """Proxy of C++ OEMolPotential::OEInterNonBondBase class."""

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

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

    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEInterNonBondBase self)"""
        return _oeff.OEInterNonBondBase_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OEInterNonBondBase self)"""
        return _oeff.OEInterNonBondBase_Clear(self)


    def SetupHost(self, host: 'OEMolBase') -> "bool":
        """SetupHost(OEInterNonBondBase self, OEMolBase host) -> bool"""
        return _oeff.OEInterNonBondBase_SetupHost(self, host)


    def SetHostFlex(self, pred: 'OEUnaryAtomPred') -> "bool":
        """SetHostFlex(OEInterNonBondBase self, OEUnaryAtomPred pred) -> bool"""
        return _oeff.OEInterNonBondBase_SetHostFlex(self, pred)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEInterNonBondBase self, double * var, double const * x)"""
        return _oeff.OEInterNonBondBase_GetVar(self, var, x)


    def AdaptHostCoords(self, coords: 'double *', var: 'double const *') -> "bool":
        """AdaptHostCoords(OEInterNonBondBase self, double * coords, double const * var) -> bool"""
        return _oeff.OEInterNonBondBase_AdaptHostCoords(self, coords, var)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEInterNonBondBase self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEInterNonBondBase_GetFComponents(self, arg2)

OEInterNonBondBase_swigregister = _oeff.OEInterNonBondBase_swigregister
OEInterNonBondBase_swigregister(OEInterNonBondBase)

class OEMMFF(OEGenericFF2):
    """Proxy of C++ OEMolMMFF::OEMMFF class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFF
    __del__ = lambda self: None

    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEMMFF self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEMMFF self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEMMFF self, OEMolBase mol) -> bool
        """
        return _oeff.OEMMFF_PrepMol(self, mol, sweep, warnOK)


    def GetFFParams(self) -> "OEMMFFParams const *":
        """GetFFParams(OEMMFF self) -> OEMMFFParams const *"""
        return _oeff.OEMMFF_GetFFParams(self)


    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFF self, OEMMFFParams const & params, OENonBondIntcsOptions opts) -> OEMMFF
        __init__(OEMolMMFF::OEMMFF self, OEMMFFParams const & params) -> OEMMFF
        __init__(OEMolMMFF::OEMMFF self, OEMMFF arg2) -> OEMMFF
        __init__(OEMolMMFF::OEMMFF self, bool mmff94s=False, unsigned int terms) -> OEMMFF
        __init__(OEMolMMFF::OEMMFF self, bool mmff94s=False) -> OEMMFF
        __init__(OEMolMMFF::OEMMFF self) -> OEMMFF
        """
        this = _oeff.new_OEMMFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsMMFF94S(self) -> "bool":
        """IsMMFF94S(OEMMFF self) -> bool"""
        return _oeff.OEMMFF_IsMMFF94S(self)

OEMMFF_swigregister = _oeff.OEMMFF_swigregister
OEMMFF_swigregister(OEMMFF)

class OEMMFFParams(OEFFParams):
    """Proxy of C++ OEMolMMFF::OEMMFFParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFParams self) -> OEMMFFParams
        __init__(OEMolMMFF::OEMMFFParams self, OEMMFFParams arg2) -> OEMMFFParams
        """
        this = _oeff.new_OEMMFFParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFParams
    __del__ = lambda self: None

    def GetTitle(self) -> "std::string":
        """GetTitle(OEMMFFParams self) -> std::string"""
        return _oeff.OEMMFFParams_GetTitle(self)


    def GetBendParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetBendParams(OEMMFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OEMMFFParams_GetBendParams(self, arg2, arg3, arg4, arg5)


    def GetStretchBendParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetStretchBendParams(OEMMFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OEMMFFParams_GetStretchBendParams(self, arg2, arg3, arg4, arg5)


    def GetEquilibriumBondLength(self, arg2: 'double &', arg3: 'OEBondBase') -> "bool":
        """GetEquilibriumBondLength(OEMMFFParams self, double & arg2, OEBondBase arg3) -> bool"""
        return _oeff.OEMMFFParams_GetEquilibriumBondLength(self, arg2, arg3)


    def GetContactDistance(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase') -> "bool":
        """GetContactDistance(OEMMFFParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool"""
        return _oeff.OEMMFFParams_GetContactDistance(self, arg2, arg3, arg4)


    def GetEquilibriumAngle(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetEquilibriumAngle(OEMMFFParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OEMMFFParams_GetEquilibriumAngle(self, arg2, arg3, arg4, arg5)


    def GetVdwRadius(self, arg2: 'double &', atm: 'OEAtomBase') -> "bool":
        """GetVdwRadius(OEMMFFParams self, double & arg2, OEAtomBase atm) -> bool"""
        return _oeff.OEMMFFParams_GetVdwRadius(self, arg2, atm)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEMMFFParams self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEMMFFParams self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEMMFFParams self, OEMolBase mol) -> bool
        """
        return _oeff.OEMMFFParams_PrepMol(self, mol, sweep, warnOK)


    def CreateCopy(self) -> "OEMolPotential::OEFFParams *":
        """CreateCopy(OEMMFFParams self) -> OEFFParams"""
        return _oeff.OEMMFFParams_CreateCopy(self)


    def GetAtomTypeIndex(self, idx: 'unsigned int') -> "unsigned int":
        """GetAtomTypeIndex(OEMMFFParams self, unsigned int idx) -> unsigned int"""
        return _oeff.OEMMFFParams_GetAtomTypeIndex(self, idx)


    def GetAtomTypeName(self, idx: 'unsigned int') -> "char const *":
        """GetAtomTypeName(OEMMFFParams self, unsigned int idx) -> char const *"""
        return _oeff.OEMMFFParams_GetAtomTypeName(self, idx)


    def GetOutOfPlaneParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *":
        """
        GetOutOfPlaneParams(OEMMFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        GetOutOfPlaneParams(OEMMFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams >
        GetOutOfPlaneParams(OEMMFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *
        """
        return _oeff.OEMMFFParams_GetOutOfPlaneParams(self, *args)


    def GetVdwParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEVdwParams > *":
        """
        GetVdwParams(OEMMFFParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool
        GetVdwParams(OEMMFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None, double const rcut=0.0) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEMMFFParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEMMFFParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OEMMFFParams self, OEMolBase mol, OEMolBase host) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams > *
        """
        return _oeff.OEMMFFParams_GetVdwParams(self, *args)

OEMMFFParams_swigregister = _oeff.OEMMFFParams_swigregister
OEMMFFParams_swigregister(OEMMFFParams)
SN = cvar.SN

class OEMMFF94sParams(OEMMFFParams):
    """Proxy of C++ OEMolMMFF::OEMMFF94sParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFF94sParams self) -> OEMMFF94sParams
        __init__(OEMolMMFF::OEMMFF94sParams self, OEMMFF94sParams arg2) -> OEMMFF94sParams
        """
        this = _oeff.new_OEMMFF94sParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFF94sParams
    __del__ = lambda self: None

    def GetTitle(self) -> "std::string":
        """GetTitle(OEMMFF94sParams self) -> std::string"""
        return _oeff.OEMMFF94sParams_GetTitle(self)


    def GetTorsionParams(self, *args) -> "bool":
        """
        GetTorsionParams(OEMMFF94sParams self)
        GetTorsionParams(OEMMFF94sParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        """
        return _oeff.OEMMFF94sParams_GetTorsionParams(self, *args)


    def GetOutOfPlaneParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase', arg6: 'OEAtomBase') -> "bool":
        """GetOutOfPlaneParams(OEMMFF94sParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool"""
        return _oeff.OEMMFF94sParams_GetOutOfPlaneParams(self, arg2, arg3, arg4, arg5, arg6)


    def CreateCopy(self) -> "OEMolPotential::OEFFParams *":
        """CreateCopy(OEMMFF94sParams self) -> OEFFParams"""
        return _oeff.OEMMFF94sParams_CreateCopy(self)

OEMMFF94sParams_swigregister = _oeff.OEMMFF94sParams_swigregister
OEMMFF94sParams_swigregister(OEMMFF94sParams)

class OEMMFFNonBond(OENonBondBase):
    """Proxy of C++ OEMolMMFF::OEMMFFNonBond class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFNonBond
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFNonBond self, OEMMFFParams params, OENonBondIntcsOptions opts) -> OEMMFFNonBond
        __init__(OEMolMMFF::OEMMFFNonBond self, OEMMFFParams params) -> OEMMFFNonBond
        __init__(OEMolMMFF::OEMMFFNonBond self) -> OEMMFFNonBond
        __init__(OEMolMMFF::OEMMFFNonBond self, OEMMFFNonBond arg2) -> OEMMFFNonBond
        """
        this = _oeff.new_OEMMFFNonBond(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFNonBond self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFNonBond_Setup(self, mol)

OEMMFFNonBond_swigregister = _oeff.OEMMFFNonBond_swigregister
OEMMFFNonBond_swigregister(OEMMFFNonBond)

class OEMMFFInterNonBond(OEInterNonBondBase):
    """Proxy of C++ OEMolMMFF::OEMMFFInterNonBond class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFInterNonBond
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFInterNonBond self, OEMMFFParams params, OENonBondIntcsOptions opts) -> OEMMFFInterNonBond
        __init__(OEMolMMFF::OEMMFFInterNonBond self, OEMMFFParams params) -> OEMMFFInterNonBond
        __init__(OEMolMMFF::OEMMFFInterNonBond self) -> OEMMFFInterNonBond
        __init__(OEMolMMFF::OEMMFFInterNonBond self, OEMMFFInterNonBond arg2) -> OEMMFFInterNonBond
        """
        this = _oeff.new_OEMMFFInterNonBond(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFInterNonBond self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFInterNonBond_Setup(self, mol)

OEMMFFInterNonBond_swigregister = _oeff.OEMMFFInterNonBond_swigregister
OEMMFFInterNonBond_swigregister(OEMMFFInterNonBond)

class OEMMFFVdw(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFVdw class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFVdw
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFVdw self, OEFFParams arg2, bool attract=True) -> OEMMFFVdw
        __init__(OEMolMMFF::OEMMFFVdw self, OEFFParams arg2) -> OEMMFFVdw
        __init__(OEMolMMFF::OEMMFFVdw self, OEMMFFVdw arg2) -> OEMMFFVdw
        """
        this = _oeff.new_OEMMFFVdw(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFVdw self, double const * x) -> double
        __call__(OEMMFFVdw self, double const * x, double * g) -> double
        __call__(OEMMFFVdw self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFVdw___call__(self, *args)


    def GetFComponents(self, coord: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFVdw self, double const * coord) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFVdw_GetFComponents(self, coord)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFVdw self) -> unsigned int"""
        return _oeff.OEMMFFVdw_NumVar(self)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFVdw self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFVdw_Setup(self, mol)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFVdw self, OEUnaryAtomPred arg2) -> bool"""
        return _oeff.OEMMFFVdw_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFVdw self)"""
        return _oeff.OEMMFFVdw_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFVdw self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFVdw_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFVdw self)"""
        return _oeff.OEMMFFVdw_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFVdw self, bool v)"""
        return _oeff.OEMMFFVdw_SetVerbose(self, v)


    def SetCutoff(self, cd: 'double') -> "void":
        """SetCutoff(OEMMFFVdw self, double cd)"""
        return _oeff.OEMMFFVdw_SetCutoff(self, cd)

OEMMFFVdw_swigregister = _oeff.OEMMFFVdw_swigregister
OEMMFFVdw_swigregister(OEMMFFVdw)

class OEMMFFInterVdw(OEMolFunc1):
    """Proxy of C++ OEMolMMFF::OEMMFFInterVdw class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFInterVdw self, OEMolBase arg2, OEFFParams arg3, double [6] minmax, bool coulomb=True) -> OEMMFFInterVdw
        __init__(OEMolMMFF::OEMMFFInterVdw self, OEMolBase arg2, OEFFParams arg3, double [6] minmax) -> OEMMFFInterVdw
        __init__(OEMolMMFF::OEMMFFInterVdw self, OEMolBase arg2, OEFFParams arg3) -> OEMMFFInterVdw
        __init__(OEMolMMFF::OEMMFFInterVdw self, OEMMFFInterVdw arg2) -> OEMMFFInterVdw
        """
        this = _oeff.new_OEMMFFInterVdw(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFInterVdw
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFInterVdw self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFInterVdw_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFInterVdw self) -> unsigned int"""
        return _oeff.OEMMFFInterVdw_NumVar(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEMMFFInterVdw self, double const * c) -> double
        __call__(OEMMFFInterVdw self, double const * c, double * g) -> double
        """
        return _oeff.OEMMFFInterVdw___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFInterVdw self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFInterVdw_GetFComponents(self, arg2)


    def GetMolecule(self) -> "OEChem::OEMolBase const &":
        """GetMolecule(OEMMFFInterVdw self) -> OEMolBase"""
        return _oeff.OEMMFFInterVdw_GetMolecule(self)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFInterVdw self)"""
        return _oeff.OEMMFFInterVdw_ClearPredicates(self)

OEMMFFInterVdw_swigregister = _oeff.OEMMFFInterVdw_swigregister
OEMMFFInterVdw_swigregister(OEMMFFInterVdw)

class OEMMFFInterVdwNN(OEMolFunc1):
    """Proxy of C++ OEMolMMFF::OEMMFFInterVdwNN class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFInterVdwNN self, OEMolBase arg2, OEFFParams arg3, double [6] minmax, double radius=6.0, double resolution=1.0) -> OEMMFFInterVdwNN
        __init__(OEMolMMFF::OEMMFFInterVdwNN self, OEMolBase arg2, OEFFParams arg3, double [6] minmax, double radius=6.0) -> OEMMFFInterVdwNN
        __init__(OEMolMMFF::OEMMFFInterVdwNN self, OEMolBase arg2, OEFFParams arg3, double [6] minmax) -> OEMMFFInterVdwNN
        __init__(OEMolMMFF::OEMMFFInterVdwNN self, OEMMFFInterVdwNN arg2) -> OEMMFFInterVdwNN
        """
        this = _oeff.new_OEMMFFInterVdwNN(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFInterVdwNN
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFInterVdwNN self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFInterVdwNN_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFInterVdwNN self) -> unsigned int"""
        return _oeff.OEMMFFInterVdwNN_NumVar(self)


    def __call__(self, *args) -> "double":
        """
        __call__(OEMMFFInterVdwNN self, double const * x) -> double
        __call__(OEMMFFInterVdwNN self, double const * x, double * g) -> double
        """
        return _oeff.OEMMFFInterVdwNN___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFInterVdwNN self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFInterVdwNN_GetFComponents(self, arg2)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFInterVdwNN self, OEUnaryAtomPred pred) -> bool"""
        return _oeff.OEMMFFInterVdwNN_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFInterVdwNN self)"""
        return _oeff.OEMMFFInterVdwNN_ClearPredicates(self)

OEMMFFInterVdwNN_swigregister = _oeff.OEMMFFInterVdwNN_swigregister
OEMMFFInterVdwNN_swigregister(OEMMFFInterVdwNN)


def OEMMFFCalcVdw(mol: 'OEMolBase', patom: 'OEAtomBase', latom: 'OEAtomBase', coloumb: 'bool'=False, attract: 'bool'=False) -> "double":
    """
    OEMMFFCalcVdw(OEMolBase mol, OEAtomBase patom, OEAtomBase latom, bool coloumb=False, bool attract=False) -> double
    OEMMFFCalcVdw(OEMolBase mol, OEAtomBase patom, OEAtomBase latom, bool coloumb=False) -> double
    OEMMFFCalcVdw(OEMolBase mol, OEAtomBase patom, OEAtomBase latom) -> double
    """
    return _oeff.OEMMFFCalcVdw(mol, patom, latom, coloumb, attract)
class OEMMFFCoulomb(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFCoulomb class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFCoulomb
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFCoulomb self, OEFFParams arg2, double dielectric=1.0) -> OEMMFFCoulomb
        __init__(OEMolMMFF::OEMMFFCoulomb self, OEFFParams arg2) -> OEMMFFCoulomb
        __init__(OEMolMMFF::OEMMFFCoulomb self, double const dielectric=1.0) -> OEMMFFCoulomb
        __init__(OEMolMMFF::OEMMFFCoulomb self) -> OEMMFFCoulomb
        __init__(OEMolMMFF::OEMMFFCoulomb self, OEMMFFCoulomb arg2) -> OEMMFFCoulomb
        """
        this = _oeff.new_OEMMFFCoulomb(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFCoulomb self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFCoulomb_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFCoulomb self) -> unsigned int"""
        return _oeff.OEMMFFCoulomb_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFCoulomb self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFCoulomb_GetFComponents(self, arg2)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFCoulomb self, double const * x) -> double
        __call__(OEMMFFCoulomb self, double const * x, double * g) -> double
        __call__(OEMMFFCoulomb self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFCoulomb___call__(self, *args)


    def SetDielectric(self, arg2: 'double') -> "bool":
        """SetDielectric(OEMMFFCoulomb self, double arg2) -> bool"""
        return _oeff.OEMMFFCoulomb_SetDielectric(self, arg2)


    def GetDielectric(self) -> "double":
        """GetDielectric(OEMMFFCoulomb self) -> double"""
        return _oeff.OEMMFFCoulomb_GetDielectric(self)


    def SetExponent(self, arg2: 'double') -> "bool":
        """SetExponent(OEMMFFCoulomb self, double arg2) -> bool"""
        return _oeff.OEMMFFCoulomb_SetExponent(self, arg2)


    def GetExponent(self) -> "double":
        """GetExponent(OEMMFFCoulomb self) -> double"""
        return _oeff.OEMMFFCoulomb_GetExponent(self)


    def SetMaxPathLength(self, arg2: 'unsigned int') -> "bool":
        """SetMaxPathLength(OEMMFFCoulomb self, unsigned int arg2) -> bool"""
        return _oeff.OEMMFFCoulomb_SetMaxPathLength(self, arg2)


    def GetMaxPathLength(self) -> "unsigned int":
        """GetMaxPathLength(OEMMFFCoulomb self) -> unsigned int"""
        return _oeff.OEMMFFCoulomb_GetMaxPathLength(self)


    def Set(self, *args) -> "bool":
        """
        Set(OEMMFFCoulomb self, OEBinaryAtomPred arg2) -> bool
        Set(OEMMFFCoulomb self, OEUnaryAtomPred arg2) -> bool
        """
        return _oeff.OEMMFFCoulomb_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFCoulomb self)"""
        return _oeff.OEMMFFCoulomb_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFCoulomb self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFCoulomb_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFCoulomb self)"""
        return _oeff.OEMMFFCoulomb_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFCoulomb self, bool v)"""
        return _oeff.OEMMFFCoulomb_SetVerbose(self, v)

OEMMFFCoulomb_swigregister = _oeff.OEMMFFCoulomb_swigregister
OEMMFFCoulomb_swigregister(OEMMFFCoulomb)

class OEMMFFInterCoulomb(OEMolFunc1):
    """Proxy of C++ OEMolMMFF::OEMMFFInterCoulomb class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEMolBase arg2, double [6] minmax, double dielectric=1.0, double exponent=1.0, double resolution=0.5) -> OEMMFFInterCoulomb
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEMolBase arg2, double [6] minmax, double dielectric=1.0, double exponent=1.0) -> OEMMFFInterCoulomb
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEMolBase arg2, double [6] minmax, double dielectric=1.0) -> OEMMFFInterCoulomb
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEMolBase arg2, double [6] minmax) -> OEMMFFInterCoulomb
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEFixedMultiFloatGrid grid) -> OEMMFFInterCoulomb
        __init__(OEMolMMFF::OEMMFFInterCoulomb self, OEMMFFInterCoulomb arg2) -> OEMMFFInterCoulomb
        """
        this = _oeff.new_OEMMFFInterCoulomb(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFInterCoulomb
    __del__ = lambda self: None

    def Setup(self, arg2: 'OEMolBase') -> "bool":
        """Setup(OEMMFFInterCoulomb self, OEMolBase arg2) -> bool"""
        return _oeff.OEMMFFInterCoulomb_Setup(self, arg2)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFInterCoulomb self) -> unsigned int"""
        return _oeff.OEMMFFInterCoulomb_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFInterCoulomb self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFInterCoulomb_GetFComponents(self, arg2)


    def __call__(self, *args) -> "double":
        """
        __call__(OEMMFFInterCoulomb self, double const * x) -> double
        __call__(OEMMFFInterCoulomb self, double const * x, double * g) -> double
        """
        return _oeff.OEMMFFInterCoulomb___call__(self, *args)


    def GetGrid(self) -> "OESystem::OEFixedMultiGrid< float > const &":
        """GetGrid(OEMMFFInterCoulomb self) -> OEFixedMultiFloatGrid"""
        return _oeff.OEMMFFInterCoulomb_GetGrid(self)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFInterCoulomb self, OEUnaryAtomPred arg2) -> bool"""
        return _oeff.OEMMFFInterCoulomb_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFInterCoulomb self)"""
        return _oeff.OEMMFFInterCoulomb_ClearPredicates(self)

OEMMFFInterCoulomb_swigregister = _oeff.OEMMFFInterCoulomb_swigregister
OEMMFFInterCoulomb_swigregister(OEMMFFInterCoulomb)

class OEMMFFStretch(OEStretchBase):
    """Proxy of C++ OEMolMMFF::OEMMFFStretch class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFStretch
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFStretch self, OEFFParams arg2) -> OEMMFFStretch
        __init__(OEMolMMFF::OEMMFFStretch self, OEMMFFStretch arg2) -> OEMMFFStretch
        """
        this = _oeff.new_OEMMFFStretch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OEMMFFStretch_swigregister = _oeff.OEMMFFStretch_swigregister
OEMMFFStretch_swigregister(OEMMFFStretch)

class OEMMFFTorsion(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFTorsion class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFTorsion
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFTorsion self, OEFFParams arg2) -> OEMMFFTorsion
        __init__(OEMolMMFF::OEMMFFTorsion self, OEMMFFTorsion arg2) -> OEMMFFTorsion
        """
        this = _oeff.new_OEMMFFTorsion(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFTorsion self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFTorsion_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFTorsion self) -> unsigned int"""
        return _oeff.OEMMFFTorsion_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFTorsion self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFTorsion_GetFComponents(self, arg2)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFTorsion self, double const * x) -> double
        __call__(OEMMFFTorsion self, double const * x, double * g) -> double
        __call__(OEMMFFTorsion self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFTorsion___call__(self, *args)


    def Set(self, *args) -> "bool":
        """
        Set(OEMMFFTorsion self, OEUnaryAtomPred arg2) -> bool
        Set(OEMMFFTorsion self, OEUnaryBondPred arg2) -> bool
        """
        return _oeff.OEMMFFTorsion_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFTorsion self)"""
        return _oeff.OEMMFFTorsion_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFTorsion self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFTorsion_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFTorsion self)"""
        return _oeff.OEMMFFTorsion_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFTorsion self, bool v)"""
        return _oeff.OEMMFFTorsion_SetVerbose(self, v)

OEMMFFTorsion_swigregister = _oeff.OEMMFFTorsion_swigregister
OEMMFFTorsion_swigregister(OEMMFFTorsion)

class OEMMFFOutOfPlane(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFOutOfPlane class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFOutOfPlane
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFOutOfPlane self, OEFFParams arg2) -> OEMMFFOutOfPlane
        __init__(OEMolMMFF::OEMMFFOutOfPlane self, OEMMFFOutOfPlane arg2) -> OEMMFFOutOfPlane
        """
        this = _oeff.new_OEMMFFOutOfPlane(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFOutOfPlane self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFOutOfPlane_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFOutOfPlane self) -> unsigned int"""
        return _oeff.OEMMFFOutOfPlane_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFOutOfPlane self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFOutOfPlane_GetFComponents(self, arg2)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFOutOfPlane self, double const * x) -> double
        __call__(OEMMFFOutOfPlane self, double const * x, double * g) -> double
        __call__(OEMMFFOutOfPlane self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFOutOfPlane___call__(self, *args)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFOutOfPlane self, OEUnaryAtomPred arg2) -> bool"""
        return _oeff.OEMMFFOutOfPlane_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFOutOfPlane self)"""
        return _oeff.OEMMFFOutOfPlane_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFOutOfPlane self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFOutOfPlane_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFOutOfPlane self)"""
        return _oeff.OEMMFFOutOfPlane_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFOutOfPlane self, bool v)"""
        return _oeff.OEMMFFOutOfPlane_SetVerbose(self, v)

OEMMFFOutOfPlane_swigregister = _oeff.OEMMFFOutOfPlane_swigregister
OEMMFFOutOfPlane_swigregister(OEMMFFOutOfPlane)

class OEMMFFBend(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFBend class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFBend
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFBend self, OEFFParams arg2) -> OEMMFFBend
        __init__(OEMolMMFF::OEMMFFBend self, OEMMFFBend arg2) -> OEMMFFBend
        """
        this = _oeff.new_OEMMFFBend(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFBend self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFBend_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFBend self) -> unsigned int"""
        return _oeff.OEMMFFBend_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFBend self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFBend_GetFComponents(self, arg2)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFBend self, double const * x) -> double
        __call__(OEMMFFBend self, double const * x, double * g) -> double
        __call__(OEMMFFBend self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFBend___call__(self, *args)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFBend self, OEBinaryBondPred arg2) -> bool"""
        return _oeff.OEMMFFBend_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFBend self)"""
        return _oeff.OEMMFFBend_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFBend self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFBend_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFBend self)"""
        return _oeff.OEMMFFBend_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFBend self, bool v)"""
        return _oeff.OEMMFFBend_SetVerbose(self, v)

OEMMFFBend_swigregister = _oeff.OEMMFFBend_swigregister
OEMMFFBend_swigregister(OEMMFFBend)

class OEMMFFStretchBend(OEMolFunc2):
    """Proxy of C++ OEMolMMFF::OEMMFFStretchBend class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OEMMFFStretchBend
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolMMFF::OEMMFFStretchBend self, OEFFParams arg2) -> OEMMFFStretchBend
        __init__(OEMolMMFF::OEMMFFStretchBend self, OEMMFFStretchBend arg2) -> OEMMFFStretchBend
        """
        this = _oeff.new_OEMMFFStretchBend(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFStretchBend self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFStretchBend_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEMMFFStretchBend self) -> unsigned int"""
        return _oeff.OEMMFFStretchBend_NumVar(self)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFStretchBend self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFStretchBend_GetFComponents(self, arg2)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEMMFFStretchBend self, double const * x) -> double
        __call__(OEMMFFStretchBend self, double const * x, double * g) -> double
        __call__(OEMMFFStretchBend self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OEMMFFStretchBend___call__(self, *args)


    def Set(self, *args) -> "bool":
        """Set(OEMMFFStretchBend self, OEBinaryBondPred arg2) -> bool"""
        return _oeff.OEMMFFStretchBend_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OEMMFFStretchBend self)"""
        return _oeff.OEMMFFStretchBend_ClearPredicates(self)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OEMMFFStretchBend self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OEMMFFStretchBend_GetInteractions(self, mol, c, functype)


    def Clear(self) -> "void":
        """Clear(OEMMFFStretchBend self)"""
        return _oeff.OEMMFFStretchBend_Clear(self)


    def SetVerbose(self, v: 'bool') -> "void":
        """SetVerbose(OEMMFFStretchBend self, bool v)"""
        return _oeff.OEMMFFStretchBend_SetVerbose(self, v)

OEMMFFStretchBend_swigregister = _oeff.OEMMFFStretchBend_swigregister
OEMMFFStretchBend_swigregister(OEMMFFStretchBend)

class OEOutOfPlaneParamsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEOutOfPlaneParams)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEOutOfPlaneParams)> self) -> OEOutOfPlaneParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEOutOfPlaneParams)> self, OEOutOfPlaneParamsIter rhs) -> OEOutOfPlaneParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEOutOfPlaneParams)> self, OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > * rhs) -> OEOutOfPlaneParamsIter
        __init__(OESystem::OEIter<(OEMolPotential::OEOutOfPlaneParams)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEOutOfPlaneParams >::NonConstA > * rhs) -> OEOutOfPlaneParamsIter
        """
        this = _oeff.new_OEOutOfPlaneParamsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEOutOfPlaneParamsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *":
        """Copy(OEOutOfPlaneParamsIter self) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *"""
        return _oeff.OEOutOfPlaneParamsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEOutOfPlaneParamsIter self, OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > * ib)
        Push(OEOutOfPlaneParamsIter self, OEOutOfPlaneParamsIter iter)
        """
        return _oeff.OEOutOfPlaneParamsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMolPotential::OEOutOfPlaneParams,OEMolPotential::OEOutOfPlaneParams > const &') -> "void":
        """Sort(OEOutOfPlaneParamsIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEOutOfPlaneParams,OEMolPotential::OEOutOfPlaneParams > const & sort_criterion)"""
        return _oeff.OEOutOfPlaneParamsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEOutOfPlaneParams > &":
        """ToFirst(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParamsIter"""
        return _oeff.OEOutOfPlaneParamsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEOutOfPlaneParams > &":
        """ToLast(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParamsIter"""
        return _oeff.OEOutOfPlaneParamsIter_ToLast(self)


    def __ref__(self) -> "OEMolPotential::OEOutOfPlaneParams &":
        """__ref__(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParams"""
        return _oeff.OEOutOfPlaneParamsIter___ref__(self)


    def IsValid(self):
      return _oeff.OEOutOfPlaneParamsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        """next(OEOutOfPlaneParamsIter self) -> PyObject *"""
        return _oeff.OEOutOfPlaneParamsIter_next(self)


    def Target(self) -> "OEMolPotential::OEOutOfPlaneParams &":
        """Target(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParams"""
        return _oeff.OEOutOfPlaneParamsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEOutOfPlaneParams > &":
        """
        Next(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParamsIter
        Next(OEOutOfPlaneParamsIter self, int i) -> OEOutOfPlaneParamsIter
        """
        return _oeff.OEOutOfPlaneParamsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEOutOfPlaneParams > &":
        """
        Prev(OEOutOfPlaneParamsIter self) -> OEOutOfPlaneParamsIter
        Prev(OEOutOfPlaneParamsIter self, int i) -> OEOutOfPlaneParamsIter
        """
        return _oeff.OEOutOfPlaneParamsIter_Prev(self, *args)

OEOutOfPlaneParamsIter_swigregister = _oeff.OEOutOfPlaneParamsIter_swigregister
OEOutOfPlaneParamsIter_swigregister(OEOutOfPlaneParamsIter)

class OESmirnoffParams(OEFFParams):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffParams class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffParams self) -> OESmirnoffParams
        __init__(OEMolSmirnoff::OESmirnoffParams self, OESmirnoffParams arg2) -> OESmirnoffParams
        """
        this = _oeff.new_OESmirnoffParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffParams
    __del__ = lambda self: None

    def Load(self, *args) -> "bool":
        """
        Load(OESmirnoffParams self, unsigned int const fftype) -> bool
        Load(OESmirnoffParams self, std::string const & xml_file_name) -> bool
        Load(OESmirnoffParams self, oeisstream ifs) -> bool
        """
        return _oeff.OESmirnoffParams_Load(self, *args)


    def GetTitle(self) -> "std::string":
        """GetTitle(OESmirnoffParams self) -> std::string"""
        return _oeff.OESmirnoffParams_GetTitle(self)


    def GetStretchBendParams(self, arg2: 'OEInteractParams', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetStretchBendParams(OESmirnoffParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OESmirnoffParams_GetStretchBendParams(self, arg2, arg3, arg4, arg5)


    def GetEquilibriumBondLength(self, arg2: 'double &', arg3: 'OEBondBase') -> "bool":
        """GetEquilibriumBondLength(OESmirnoffParams self, double & arg2, OEBondBase arg3) -> bool"""
        return _oeff.OESmirnoffParams_GetEquilibriumBondLength(self, arg2, arg3)


    def GetContactDistance(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase') -> "bool":
        """GetContactDistance(OESmirnoffParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool"""
        return _oeff.OESmirnoffParams_GetContactDistance(self, arg2, arg3, arg4)


    def GetEquilibriumAngle(self, arg2: 'double &', arg3: 'OEAtomBase', arg4: 'OEAtomBase', arg5: 'OEAtomBase') -> "bool":
        """GetEquilibriumAngle(OESmirnoffParams self, double & arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool"""
        return _oeff.OESmirnoffParams_GetEquilibriumAngle(self, arg2, arg3, arg4, arg5)


    def GetVdwRadius(self, arg2: 'double &', atm: 'OEAtomBase') -> "bool":
        """GetVdwRadius(OESmirnoffParams self, double & arg2, OEAtomBase atm) -> bool"""
        return _oeff.OESmirnoffParams_GetVdwRadius(self, arg2, atm)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OESmirnoffParams self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OESmirnoffParams self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OESmirnoffParams self, OEMolBase mol) -> bool
        """
        return _oeff.OESmirnoffParams_PrepMol(self, mol, sweep, warnOK)


    def GetAtomTypeIndex(self, arg2: 'unsigned int') -> "unsigned int":
        """GetAtomTypeIndex(OESmirnoffParams self, unsigned int arg2) -> unsigned int"""
        return _oeff.OESmirnoffParams_GetAtomTypeIndex(self, arg2)


    def GetAtomTypeName(self, arg2: 'unsigned int') -> "char const *":
        """GetAtomTypeName(OESmirnoffParams self, unsigned int arg2) -> char const *"""
        return _oeff.OESmirnoffParams_GetAtomTypeName(self, arg2)


    def GetOutOfPlaneParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *":
        """
        GetOutOfPlaneParams(OESmirnoffParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        GetOutOfPlaneParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams >
        GetOutOfPlaneParams(OESmirnoffParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEOutOfPlaneParams > *
        """
        return _oeff.OESmirnoffParams_GetOutOfPlaneParams(self, *args)


    def GetStretchParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEStretchParams > *":
        """
        GetStretchParams(OESmirnoffParams self, OEInteractParams arg2, OEBondBase arg3) -> bool
        GetStretchParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEStretchParams >
        GetStretchParams(OESmirnoffParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEStretchParams > *
        """
        return _oeff.OESmirnoffParams_GetStretchParams(self, *args)


    def GetTorsionParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OETorsionParams > *":
        """
        GetTorsionParams(OESmirnoffParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5, OEAtomBase arg6) -> bool
        GetTorsionParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OETorsionParams >
        GetTorsionParams(OESmirnoffParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OETorsionParams > *
        """
        return _oeff.OESmirnoffParams_GetTorsionParams(self, *args)


    def GetBendParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEBendParams > *":
        """
        GetBendParams(OESmirnoffParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4, OEAtomBase arg5) -> bool
        GetBendParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEBendParams >
        GetBendParams(OESmirnoffParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEBendParams > *
        """
        return _oeff.OESmirnoffParams_GetBendParams(self, *args)


    def GetVdwParams(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEVdwParams > *":
        """
        GetVdwParams(OESmirnoffParams self, OEInteractParams arg2, OEAtomBase arg3, OEAtomBase arg4) -> bool
        GetVdwParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None, double const rcut=0.0) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OESmirnoffParams self, OEMolBase mol, OEUnaryAtomPred pred=None) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OESmirnoffParams self, OEMolBase mol) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams >
        GetVdwParams(OESmirnoffParams self, OEMolBase mol, OEMolBase host) -> OESystem::OEIterBase< OEMolPotential::OEVdwParams > *
        """
        return _oeff.OESmirnoffParams_GetVdwParams(self, *args)

OESmirnoffParams_swigregister = _oeff.OESmirnoffParams_swigregister
OESmirnoffParams_swigregister(OESmirnoffParams)

class OESmirnoffStretch(OEStretchBase):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffStretch class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESmirnoffStretch
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffStretch self, OESmirnoffParams fp) -> OESmirnoffStretch
        __init__(OEMolSmirnoff::OESmirnoffStretch self, OESmirnoffStretch arg2) -> OESmirnoffStretch
        """
        this = _oeff.new_OESmirnoffStretch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OESmirnoffStretch_swigregister = _oeff.OESmirnoffStretch_swigregister
OESmirnoffStretch_swigregister(OESmirnoffStretch)

class OESmirnoffBend(OEMolFunc2):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffBend class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffBend self, OESmirnoffParams fp) -> OESmirnoffBend
        __init__(OEMolSmirnoff::OESmirnoffBend self, OESmirnoffBend arg2) -> OESmirnoffBend
        """
        this = _oeff.new_OESmirnoffBend(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffBend
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESmirnoffBend self, OEMolBase mol) -> bool"""
        return _oeff.OESmirnoffBend_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OESmirnoffBend self) -> unsigned int"""
        return _oeff.OESmirnoffBend_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OESmirnoffBend self, double const * x) -> double
        __call__(OESmirnoffBend self, double const * x, double * g) -> double
        __call__(OESmirnoffBend self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OESmirnoffBend___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OESmirnoffBend self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OESmirnoffBend_GetFComponents(self, arg2)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OESmirnoffBend self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OESmirnoffBend_GetInteractions(self, mol, c, functype)


    def Set(self, *args) -> "bool":
        """Set(OESmirnoffBend self, OEUnaryAtomPred arg2) -> bool"""
        return _oeff.OESmirnoffBend_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OESmirnoffBend self)"""
        return _oeff.OESmirnoffBend_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OESmirnoffBend self)"""
        return _oeff.OESmirnoffBend_Clear(self)

OESmirnoffBend_swigregister = _oeff.OESmirnoffBend_swigregister
OESmirnoffBend_swigregister(OESmirnoffBend)

class OESmirnoffTorsion(OEMolFunc2):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffTorsion class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESmirnoffTorsion
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffTorsion self, OESmirnoffParams fp) -> OESmirnoffTorsion
        __init__(OEMolSmirnoff::OESmirnoffTorsion self, OESmirnoffTorsion arg2) -> OESmirnoffTorsion
        """
        this = _oeff.new_OESmirnoffTorsion(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESmirnoffTorsion self, OEMolBase mol) -> bool"""
        return _oeff.OESmirnoffTorsion_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OESmirnoffTorsion self) -> unsigned int"""
        return _oeff.OESmirnoffTorsion_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OESmirnoffTorsion self, double const * x) -> double
        __call__(OESmirnoffTorsion self, double const * x, double * g) -> double
        __call__(OESmirnoffTorsion self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OESmirnoffTorsion___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OESmirnoffTorsion self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OESmirnoffTorsion_GetFComponents(self, arg2)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OESmirnoffTorsion self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OESmirnoffTorsion_GetInteractions(self, mol, c, functype)


    def Set(self, *args) -> "bool":
        """
        Set(OESmirnoffTorsion self, OEUnaryAtomPred arg2) -> bool
        Set(OESmirnoffTorsion self, OEUnaryBondPred arg2) -> bool
        """
        return _oeff.OESmirnoffTorsion_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OESmirnoffTorsion self)"""
        return _oeff.OESmirnoffTorsion_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OESmirnoffTorsion self)"""
        return _oeff.OESmirnoffTorsion_Clear(self)

OESmirnoffTorsion_swigregister = _oeff.OESmirnoffTorsion_swigregister
OESmirnoffTorsion_swigregister(OESmirnoffTorsion)

class OESmirnoffOutOfPlane(OEMolFunc2):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffOutOfPlane class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESmirnoffOutOfPlane
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffOutOfPlane self, OESmirnoffParams fp) -> OESmirnoffOutOfPlane
        __init__(OEMolSmirnoff::OESmirnoffOutOfPlane self, OESmirnoffOutOfPlane arg2) -> OESmirnoffOutOfPlane
        """
        this = _oeff.new_OESmirnoffOutOfPlane(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESmirnoffOutOfPlane self, OEMolBase mol) -> bool"""
        return _oeff.OESmirnoffOutOfPlane_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OESmirnoffOutOfPlane self) -> unsigned int"""
        return _oeff.OESmirnoffOutOfPlane_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OESmirnoffOutOfPlane self, double const * x) -> double
        __call__(OESmirnoffOutOfPlane self, double const * x, double * g) -> double
        __call__(OESmirnoffOutOfPlane self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OESmirnoffOutOfPlane___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OESmirnoffOutOfPlane self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OESmirnoffOutOfPlane_GetFComponents(self, arg2)


    def GetInteractions(self, mol: 'OEMolBase', c: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """GetInteractions(OESmirnoffOutOfPlane self, OEMolBase mol, double const * c, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeff.OESmirnoffOutOfPlane_GetInteractions(self, mol, c, functype)


    def Set(self, *args) -> "bool":
        """Set(OESmirnoffOutOfPlane self, OEUnaryAtomPred arg2) -> bool"""
        return _oeff.OESmirnoffOutOfPlane_Set(self, *args)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OESmirnoffOutOfPlane self)"""
        return _oeff.OESmirnoffOutOfPlane_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OESmirnoffOutOfPlane self)"""
        return _oeff.OESmirnoffOutOfPlane_Clear(self)

OESmirnoffOutOfPlane_swigregister = _oeff.OESmirnoffOutOfPlane_swigregister
OESmirnoffOutOfPlane_swigregister(OESmirnoffOutOfPlane)

class OESmirnoffNonBond(OENonBondBase):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffNonBond class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESmirnoffNonBond
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffNonBond self, OESmirnoffParams params, OENonBondIntcsOptions opts) -> OESmirnoffNonBond
        __init__(OEMolSmirnoff::OESmirnoffNonBond self, OESmirnoffParams params) -> OESmirnoffNonBond
        __init__(OEMolSmirnoff::OESmirnoffNonBond self) -> OESmirnoffNonBond
        __init__(OEMolSmirnoff::OESmirnoffNonBond self, OESmirnoffNonBond arg2) -> OESmirnoffNonBond
        """
        this = _oeff.new_OESmirnoffNonBond(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESmirnoffNonBond self, OEMolBase mol) -> bool"""
        return _oeff.OESmirnoffNonBond_Setup(self, mol)

OESmirnoffNonBond_swigregister = _oeff.OESmirnoffNonBond_swigregister
OESmirnoffNonBond_swigregister(OESmirnoffNonBond)

class OESmirnoffInterNonBond(OEInterNonBondBase):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffInterNonBond class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESmirnoffInterNonBond
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffInterNonBond self, OESmirnoffParams params, OENonBondIntcsOptions opts) -> OESmirnoffInterNonBond
        __init__(OEMolSmirnoff::OESmirnoffInterNonBond self, OESmirnoffParams params) -> OESmirnoffInterNonBond
        __init__(OEMolSmirnoff::OESmirnoffInterNonBond self) -> OESmirnoffInterNonBond
        __init__(OEMolSmirnoff::OESmirnoffInterNonBond self, OESmirnoffInterNonBond arg2) -> OESmirnoffInterNonBond
        """
        this = _oeff.new_OESmirnoffInterNonBond(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESmirnoffInterNonBond self, OEMolBase mol) -> bool"""
        return _oeff.OESmirnoffInterNonBond_Setup(self, mol)

OESmirnoffInterNonBond_swigregister = _oeff.OESmirnoffInterNonBond_swigregister
OESmirnoffInterNonBond_swigregister(OESmirnoffInterNonBond)

class OESmirnoffVdw(OESmirnoffNonBond):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffVdw class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffVdw self, OESmirnoffParams params, double const rcut=0.0) -> OESmirnoffVdw
        __init__(OEMolSmirnoff::OESmirnoffVdw self, OESmirnoffParams params) -> OESmirnoffVdw
        __init__(OEMolSmirnoff::OESmirnoffVdw self, OESmirnoffVdw arg2) -> OESmirnoffVdw
        """
        this = _oeff.new_OESmirnoffVdw(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffVdw
    __del__ = lambda self: None
OESmirnoffVdw_swigregister = _oeff.OESmirnoffVdw_swigregister
OESmirnoffVdw_swigregister(OESmirnoffVdw)

class OESmirnoffInterVdw(OESmirnoffInterNonBond):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffInterVdw class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffInterVdw self, OEMolBase host, OESmirnoffParams params, double const rcut=0.0) -> OESmirnoffInterVdw
        __init__(OEMolSmirnoff::OESmirnoffInterVdw self, OEMolBase host, OESmirnoffParams params) -> OESmirnoffInterVdw
        __init__(OEMolSmirnoff::OESmirnoffInterVdw self, OESmirnoffInterVdw arg2) -> OESmirnoffInterVdw
        """
        this = _oeff.new_OESmirnoffInterVdw(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffInterVdw
    __del__ = lambda self: None
OESmirnoffInterVdw_swigregister = _oeff.OESmirnoffInterVdw_swigregister
OESmirnoffInterVdw_swigregister(OESmirnoffInterVdw)

class OESmirnoffCoulomb(OESmirnoffNonBond):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffCoulomb class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffCoulomb self, double const rcut=0.0) -> OESmirnoffCoulomb
        __init__(OEMolSmirnoff::OESmirnoffCoulomb self) -> OESmirnoffCoulomb
        __init__(OEMolSmirnoff::OESmirnoffCoulomb self, OESmirnoffCoulomb arg2) -> OESmirnoffCoulomb
        """
        this = _oeff.new_OESmirnoffCoulomb(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffCoulomb
    __del__ = lambda self: None
OESmirnoffCoulomb_swigregister = _oeff.OESmirnoffCoulomb_swigregister
OESmirnoffCoulomb_swigregister(OESmirnoffCoulomb)

class OESmirnoffInterCoulomb(OESmirnoffInterNonBond):
    """Proxy of C++ OEMolSmirnoff::OESmirnoffInterCoulomb class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoffInterCoulomb self, double const rcut=0.0) -> OESmirnoffInterCoulomb
        __init__(OEMolSmirnoff::OESmirnoffInterCoulomb self) -> OESmirnoffInterCoulomb
        __init__(OEMolSmirnoff::OESmirnoffInterCoulomb self, OESmirnoffInterCoulomb arg2) -> OESmirnoffInterCoulomb
        """
        this = _oeff.new_OESmirnoffInterCoulomb(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffInterCoulomb
    __del__ = lambda self: None
OESmirnoffInterCoulomb_swigregister = _oeff.OESmirnoffInterCoulomb_swigregister
OESmirnoffInterCoulomb_swigregister(OESmirnoffInterCoulomb)

class OESmirnoff(OEGenericFF2):
    """Proxy of C++ OEMolSmirnoff::OESmirnoff class."""

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

    def __init__(self, *args):
        """
        __init__(OEMolSmirnoff::OESmirnoff self, double const rcut_vdw=0.0) -> OESmirnoff
        __init__(OEMolSmirnoff::OESmirnoff self) -> OESmirnoff
        __init__(OEMolSmirnoff::OESmirnoff self, OESmirnoffParams params, OENonBondIntcsOptions opts) -> OESmirnoff
        __init__(OEMolSmirnoff::OESmirnoff self, OESmirnoffParams params) -> OESmirnoff
        __init__(OEMolSmirnoff::OESmirnoff self, OESmirnoff arg2) -> OESmirnoff
        """
        this = _oeff.new_OESmirnoff(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoff
    __del__ = lambda self: None

    def GetTitle(self) -> "std::string":
        """GetTitle(OESmirnoff self) -> std::string"""
        return _oeff.OESmirnoff_GetTitle(self)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OESmirnoff self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OESmirnoff self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OESmirnoff self, OEMolBase mol) -> bool
        """
        return _oeff.OESmirnoff_PrepMol(self, mol, sweep, warnOK)


    def GetFFParams(self) -> "OEMolSmirnoff::OESmirnoffParams const *":
        """GetFFParams(OESmirnoff self) -> OESmirnoffParams"""
        return _oeff.OESmirnoff_GetFFParams(self)

OESmirnoff_swigregister = _oeff.OESmirnoff_swigregister
OESmirnoff_swigregister(OESmirnoff)

class OEMMFFAmberOptions(oechem.OEOptions):
    """Proxy of C++ OEFF::OEMMFFAmberOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFAmberOptions self) -> OEMMFFAmberOptions
        __init__(OEFF::OEMMFFAmberOptions self, OEMMFFAmberOptions arg2) -> OEMMFFAmberOptions
        """
        this = _oeff.new_OEMMFFAmberOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFAmberOptions
    __del__ = lambda self: None

    def GetUseMMFF94s(self) -> "bool":
        """GetUseMMFF94s(OEMMFFAmberOptions self) -> bool"""
        return _oeff.OEMMFFAmberOptions_GetUseMMFF94s(self)


    def SetUseMMFF94s(self, value: 'bool const') -> "bool":
        """SetUseMMFF94s(OEMMFFAmberOptions self, bool const value) -> bool"""
        return _oeff.OEMMFFAmberOptions_SetUseMMFF94s(self, value)


    def GetUseExternalCharges(self) -> "bool":
        """GetUseExternalCharges(OEMMFFAmberOptions self) -> bool"""
        return _oeff.OEMMFFAmberOptions_GetUseExternalCharges(self)


    def SetUseExternalCharges(self, value: 'bool const') -> "bool":
        """SetUseExternalCharges(OEMMFFAmberOptions self, bool const value) -> bool"""
        return _oeff.OEMMFFAmberOptions_SetUseExternalCharges(self, value)


    def GetIntermolecularVdWCutoff(self) -> "double":
        """GetIntermolecularVdWCutoff(OEMMFFAmberOptions self) -> double"""
        return _oeff.OEMMFFAmberOptions_GetIntermolecularVdWCutoff(self)


    def SetIntermolecularVdWCutoff(self, value: 'double const') -> "bool":
        """SetIntermolecularVdWCutoff(OEMMFFAmberOptions self, double const value) -> bool"""
        return _oeff.OEMMFFAmberOptions_SetIntermolecularVdWCutoff(self, value)


    def GetMMFFTerms(self) -> "unsigned int":
        """GetMMFFTerms(OEMMFFAmberOptions self) -> unsigned int"""
        return _oeff.OEMMFFAmberOptions_GetMMFFTerms(self)


    def SetMMFFTerms(self, value: 'unsigned int const') -> "bool":
        """SetMMFFTerms(OEMMFFAmberOptions self, unsigned int const value) -> bool"""
        return _oeff.OEMMFFAmberOptions_SetMMFFTerms(self, value)


    def GetAmberTerms(self) -> "unsigned int":
        """GetAmberTerms(OEMMFFAmberOptions self) -> unsigned int"""
        return _oeff.OEMMFFAmberOptions_GetAmberTerms(self)


    def SetAmberTerms(self, value: 'unsigned int const') -> "bool":
        """SetAmberTerms(OEMMFFAmberOptions self, unsigned int const value) -> bool"""
        return _oeff.OEMMFFAmberOptions_SetAmberTerms(self, value)

OEMMFFAmberOptions_swigregister = _oeff.OEMMFFAmberOptions_swigregister
OEMMFFAmberOptions_swigregister(OEMMFFAmberOptions)

class OEMMFFAmber(OEGenericFF2):
    """Proxy of C++ OEFF::OEMMFFAmber class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFAmber self, OEMolBase host) -> OEMMFFAmber
        __init__(OEFF::OEMMFFAmber self, OEMolBase host, OEMMFFAmberOptions argOptions) -> OEMMFFAmber
        """
        this = _oeff.new_OEMMFFAmber(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFAmber
    __del__ = lambda self: None

    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEMMFFAmber self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEMMFFAmber self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEMMFFAmber self, OEMolBase mol) -> bool
        """
        return _oeff.OEMMFFAmber_PrepMol(self, mol, sweep, warnOK)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFAmber self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFAmber_Setup(self, mol)

OEMMFFAmber_swigregister = _oeff.OEMMFFAmber_swigregister
OEMMFFAmber_swigregister(OEMMFFAmber)

class OEMMFFIEFFOptions(oechem.OEOptions):
    """Proxy of C++ OEFF::OEMMFFIEFFOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFIEFFOptions self) -> OEMMFFIEFFOptions
        __init__(OEFF::OEMMFFIEFFOptions self, OEMMFFIEFFOptions arg2) -> OEMMFFIEFFOptions
        """
        this = _oeff.new_OEMMFFIEFFOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFIEFFOptions
    __del__ = lambda self: None

    def GetUseMMFF94s(self) -> "bool":
        """GetUseMMFF94s(OEMMFFIEFFOptions self) -> bool"""
        return _oeff.OEMMFFIEFFOptions_GetUseMMFF94s(self)


    def SetUseMMFF94s(self, value: 'bool const') -> "bool":
        """SetUseMMFF94s(OEMMFFIEFFOptions self, bool const value) -> bool"""
        return _oeff.OEMMFFIEFFOptions_SetUseMMFF94s(self, value)


    def GetMMFFTerms(self) -> "unsigned int":
        """GetMMFFTerms(OEMMFFIEFFOptions self) -> unsigned int"""
        return _oeff.OEMMFFIEFFOptions_GetMMFFTerms(self)


    def SetMMFFTerms(self, value: 'unsigned int const') -> "bool":
        """SetMMFFTerms(OEMMFFIEFFOptions self, unsigned int const value) -> bool"""
        return _oeff.OEMMFFIEFFOptions_SetMMFFTerms(self, value)


    def GetIEFFTerms(self) -> "unsigned int":
        """GetIEFFTerms(OEMMFFIEFFOptions self) -> unsigned int"""
        return _oeff.OEMMFFIEFFOptions_GetIEFFTerms(self)


    def SetIEFFTerms(self, value: 'unsigned int const') -> "bool":
        """SetIEFFTerms(OEMMFFIEFFOptions self, unsigned int const value) -> bool"""
        return _oeff.OEMMFFIEFFOptions_SetIEFFTerms(self, value)

OEMMFFIEFFOptions_swigregister = _oeff.OEMMFFIEFFOptions_swigregister
OEMMFFIEFFOptions_swigregister(OEMMFFIEFFOptions)

class OEMMFFIEFF(OEGenericFF):
    """Proxy of C++ OEFF::OEMMFFIEFF class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFIEFF self, OEMolBase host) -> OEMMFFIEFF
        __init__(OEFF::OEMMFFIEFF self, OEMolBase host, OEMMFFIEFFOptions argOptions) -> OEMMFFIEFF
        """
        this = _oeff.new_OEMMFFIEFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFIEFF
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEMMFFIEFF self, OEMolBase mol) -> bool"""
        return _oeff.OEMMFFIEFF_Setup(self, mol)


    def __call__(self, *args) -> "double":
        """
        __call__(OEMMFFIEFF self, double const * x) -> double
        __call__(OEMMFFIEFF self, double const * x, double * g) -> double
        """
        return _oeff.OEMMFFIEFF___call__(self, *args)


    def GetFComponents(self, x: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEMMFFIEFF self, double const * x) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEMMFFIEFF_GetFComponents(self, x)


    def SetInteractionMX(self, v: 'std::vector< std::vector< bool,std::allocator< bool > >,std::allocator< std::vector< bool,std::allocator< bool > > > >') -> "void":
        """SetInteractionMX(OEMMFFIEFF self, std::vector< std::vector< bool,std::allocator< bool > >,std::allocator< std::vector< bool,std::allocator< bool > > > > v)"""
        return _oeff.OEMMFFIEFF_SetInteractionMX(self, v)

OEMMFFIEFF_swigregister = _oeff.OEMMFFIEFF_swigregister
OEMMFFIEFF_swigregister(OEMMFFIEFF)

class OEMMFFSheffieldOptions(oechem.OEOptions):
    """Proxy of C++ OEFF::OEMMFFSheffieldOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFSheffieldOptions self) -> OEMMFFSheffieldOptions
        __init__(OEFF::OEMMFFSheffieldOptions self, OEMMFFSheffieldOptions arg2) -> OEMMFFSheffieldOptions
        """
        this = _oeff.new_OEMMFFSheffieldOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFSheffieldOptions
    __del__ = lambda self: None

    def Validate(self) -> "bool":
        """Validate(OEMMFFSheffieldOptions self) -> bool"""
        return _oeff.OEMMFFSheffieldOptions_Validate(self)


    def GetDielectric(self) -> "double":
        """GetDielectric(OEMMFFSheffieldOptions self) -> double"""
        return _oeff.OEMMFFSheffieldOptions_GetDielectric(self)


    def SetDielectric(self, value: 'double const') -> "bool":
        """SetDielectric(OEMMFFSheffieldOptions self, double const value) -> bool"""
        return _oeff.OEMMFFSheffieldOptions_SetDielectric(self, value)


    def GetExponent(self) -> "double":
        """GetExponent(OEMMFFSheffieldOptions self) -> double"""
        return _oeff.OEMMFFSheffieldOptions_GetExponent(self)


    def SetExponent(self, value: 'double const') -> "bool":
        """SetExponent(OEMMFFSheffieldOptions self, double const value) -> bool"""
        return _oeff.OEMMFFSheffieldOptions_SetExponent(self, value)


    def GetForceFieldType(self) -> "unsigned int":
        """GetForceFieldType(OEMMFFSheffieldOptions self) -> unsigned int"""
        return _oeff.OEMMFFSheffieldOptions_GetForceFieldType(self)


    def SetForceFieldType(self, value: 'unsigned int const') -> "bool":
        """SetForceFieldType(OEMMFFSheffieldOptions self, unsigned int const value) -> bool"""
        return _oeff.OEMMFFSheffieldOptions_SetForceFieldType(self, value)

OEMMFFSheffieldOptions_swigregister = _oeff.OEMMFFSheffieldOptions_swigregister
OEMMFFSheffieldOptions_swigregister(OEMMFFSheffieldOptions)

class OEMMFFSheffield(OEGenericFF2):
    """Proxy of C++ OEFF::OEMMFFSheffield class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFSheffield self, OEMMFFSheffieldOptions argOpts) -> OEMMFFSheffield
        __init__(OEFF::OEMMFFSheffield self) -> OEMMFFSheffield
        __init__(OEFF::OEMMFFSheffield self, OEMMFFSheffield arg2) -> OEMMFFSheffield
        """
        this = _oeff.new_OEMMFFSheffield(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFSheffield
    __del__ = lambda self: None
OEMMFFSheffield_swigregister = _oeff.OEMMFFSheffield_swigregister
OEMMFFSheffield_swigregister(OEMMFFSheffield)


def OEGetMMFFSheffieldFFType(argFF: 'std::string const &') -> "unsigned int":
    """OEGetMMFFSheffieldFFType(std::string const & argFF) -> unsigned int"""
    return _oeff.OEGetMMFFSheffieldFFType(argFF)

def OEGetMMFFSheffieldFFName(argFF: 'unsigned int const') -> "std::string":
    """OEGetMMFFSheffieldFFName(unsigned int const argFF) -> std::string"""
    return _oeff.OEGetMMFFSheffieldFFName(argFF)

def OEIsValidMMFFSheffieldFF(*args) -> "bool":
    """
    OEIsValidMMFFSheffieldFF(std::string const & argFF) -> bool
    OEIsValidMMFFSheffieldFF(unsigned int const argFF) -> bool
    """
    return _oeff.OEIsValidMMFFSheffieldFF(*args)
class OEComplexFF(OEMolFunc1):
    """Proxy of C++ OEFF::OEComplexFF class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEComplexFF self, OEForceField ligandFF, OEForceField hostFF, OEInterMolFunc1 interFF) -> OEComplexFF
        __init__(OEFF::OEComplexFF self, OEComplexFF arg2) -> OEComplexFF
        """
        this = _oeff.new_OEComplexFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEComplexFF
    __del__ = lambda self: None

    def SetupHost(self, host: 'OEMolBase') -> "bool":
        """SetupHost(OEComplexFF self, OEMolBase host) -> bool"""
        return _oeff.OEComplexFF_SetupHost(self, host)


    def SetHostFlex(self, pred: 'OEUnaryAtomPred') -> "bool":
        """SetHostFlex(OEComplexFF self, OEUnaryAtomPred pred) -> bool"""
        return _oeff.OEComplexFF_SetHostFlex(self, pred)


    def PrepMol(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepMol(OEComplexFF self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepMol(OEComplexFF self, OEMolBase mol, bool sweep=True) -> bool
        PrepMol(OEComplexFF self, OEMolBase mol) -> bool
        """
        return _oeff.OEComplexFF_PrepMol(self, mol, sweep, warnOK)


    def PrepHost(self, mol: 'OEMolBase', sweep: 'bool'=True, warnOK: 'bool'=True) -> "bool":
        """
        PrepHost(OEComplexFF self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool
        PrepHost(OEComplexFF self, OEMolBase mol, bool sweep=True) -> bool
        PrepHost(OEComplexFF self, OEMolBase mol) -> bool
        """
        return _oeff.OEComplexFF_PrepHost(self, mol, sweep, warnOK)


    def __call__(self, *args) -> "double":
        """
        __call__(OEComplexFF self, double const * x) -> double
        __call__(OEComplexFF self, double const * x, double * g) -> double
        """
        return _oeff.OEComplexFF___call__(self, *args)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEComplexFF self) -> unsigned int"""
        return _oeff.OEComplexFF_NumVar(self)


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEComplexFF self, OEMolBase mol) -> bool"""
        return _oeff.OEComplexFF_Setup(self, mol)


    def GetFComponents(self, c: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEComplexFF self, double const * c) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OEComplexFF_GetFComponents(self, c)


    def GetVar(self, var: 'double *', x: 'double const *') -> "void":
        """GetVar(OEComplexFF self, double * var, double const * x)"""
        return _oeff.OEComplexFF_GetVar(self, var, x)


    def AdaptHostCoords(self, coords: 'double *', var: 'double const *') -> "bool":
        """AdaptHostCoords(OEComplexFF self, double * coords, double const * var) -> bool"""
        return _oeff.OEComplexFF_AdaptHostCoords(self, coords, var)

OEComplexFF_swigregister = _oeff.OEComplexFF_swigregister
OEComplexFF_swigregister(OEComplexFF)

class OEMMFFComplex(OEComplexFF):
    """Proxy of C++ OEFF::OEMMFFComplex class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEMMFFComplex self, OEMMFFParams params, OENonBondIntcsOptions opts) -> OEMMFFComplex
        __init__(OEFF::OEMMFFComplex self, OEMMFFParams params) -> OEMMFFComplex
        __init__(OEFF::OEMMFFComplex self) -> OEMMFFComplex
        __init__(OEFF::OEMMFFComplex self, OEMMFFComplex arg2) -> OEMMFFComplex
        """
        this = _oeff.new_OEMMFFComplex(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEMMFFComplex
    __del__ = lambda self: None
OEMMFFComplex_swigregister = _oeff.OEMMFFComplex_swigregister
OEMMFFComplex_swigregister(OEMMFFComplex)

class OESmirnoffComplex(OEComplexFF):
    """Proxy of C++ OEFF::OESmirnoffComplex class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OESmirnoffComplex self, OESmirnoffParams params, OENonBondIntcsOptions opts) -> OESmirnoffComplex
        __init__(OEFF::OESmirnoffComplex self, OESmirnoffParams params) -> OESmirnoffComplex
        __init__(OEFF::OESmirnoffComplex self) -> OESmirnoffComplex
        __init__(OEFF::OESmirnoffComplex self, OESmirnoffComplex arg2) -> OESmirnoffComplex
        """
        this = _oeff.new_OESmirnoffComplex(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESmirnoffComplex
    __del__ = lambda self: None
OESmirnoffComplex_swigregister = _oeff.OESmirnoffComplex_swigregister
OESmirnoffComplex_swigregister(OESmirnoffComplex)

class FFParameterPointer(oechem.OEParameter):
    """Proxy of C++ OESystem::OEPointerParameter<(OEMolPotential::OEForceField)> class."""

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

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

    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(FFParameterPointer self) -> void const *"""
        return _oeff.FFParameterPointer_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(FFParameterPointer self) -> std::string"""
        return _oeff.FFParameterPointer_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(FFParameterPointer self) -> void const *"""
        return _oeff.FFParameterPointer_FactoryTypeID(self)


    def AddLegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddLegalValue(FFParameterPointer self, std::string const & arg2) -> bool"""
        return _oeff.FFParameterPointer_AddLegalValue(self, arg2)


    def AddIllegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddIllegalValue(FFParameterPointer self, std::string const & arg2) -> bool"""
        return _oeff.FFParameterPointer_AddIllegalValue(self, arg2)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(FFParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oeff.FFParameterPointer_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(FFParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oeff.FFParameterPointer_AddIllegalRange(self, arg2, arg3)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(FFParameterPointer self, unsigned char * arg2) -> size_t"""
        return _oeff.FFParameterPointer_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(FFParameterPointer self, unsigned char const * arg2) -> size_t"""
        return _oeff.FFParameterPointer_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(FFParameterPointer self) -> size_t"""
        return _oeff.FFParameterPointer_ValueAndDefaultBinarySize(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(FFParameterPointer self) -> bool"""
        return _oeff.FFParameterPointer_LoadDefault(self)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(FFParameterPointer self, unsigned int const idx=0) -> bool
        GetHasValue(FFParameterPointer self) -> bool
        """
        return _oeff.FFParameterPointer_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(FFParameterPointer self, unsigned int const idx=0) -> bool
        GetHasDefault(FFParameterPointer self) -> bool
        """
        return _oeff.FFParameterPointer_GetHasDefault(self, idx)

FFParameterPointer_swigregister = _oeff.FFParameterPointer_swigregister
FFParameterPointer_swigregister(FFParameterPointer)

class OEForceFieldParameter(object):
    """Proxy of C++ OEFF::OEForceFieldParameter class."""

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

    def __init__(self, *args):
        """
        __init__(OEFF::OEForceFieldParameter self, std::string const & name, bool const customAllowed) -> OEForceFieldParameter
        __init__(OEFF::OEForceFieldParameter self) -> OEForceFieldParameter
        __init__(OEFF::OEForceFieldParameter self, OEForceFieldParameter arg2) -> OEForceFieldParameter
        """
        this = _oeff.new_OEForceFieldParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OEForceFieldParameter
    __del__ = lambda self: None
OEForceFieldParameter_swigregister = _oeff.OEForceFieldParameter_swigregister
OEForceFieldParameter_swigregister(OEForceFieldParameter)

OE_OEFF_VERSION = _oeff.OE_OEFF_VERSION

def OEFFGetRelease() -> "char const *":
    """OEFFGetRelease() -> char const *"""
    return _oeff.OEFFGetRelease()

def OEFFGetVersion() -> "unsigned int":
    """OEFFGetVersion() -> unsigned int"""
    return _oeff.OEFFGetVersion()

def OEFFGetArch() -> "char const *":
    """OEFFGetArch() -> char const *"""
    return _oeff.OEFFGetArch()

def OEFFGetPlatform() -> "char const *":
    """OEFFGetPlatform() -> char const *"""
    return _oeff.OEFFGetPlatform()

def OEFFIsLicensed(feature: 'char const *'=None, expdate: 'unsigned int *'=None) -> "bool":
    """
    OEFFIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool
    OEFFIsLicensed(char const * feature=None) -> bool
    OEFFIsLicensed() -> bool
    """
    return _oeff.OEFFIsLicensed(feature, expdate)

def OEFFGetLicensee(*args) -> "std::string":
    """
    OEFFGetLicensee(std::string & licensee) -> bool
    OEFFGetLicensee() -> std::string
    """
    return _oeff.OEFFGetLicensee(*args)

def OEFFGetSite(*args) -> "std::string":
    """
    OEFFGetSite(std::string & site) -> bool
    OEFFGetSite() -> std::string
    """
    return _oeff.OEFFGetSite(*args)
class OESheffieldOptions(oechem.OEOptions):
    """Proxy of C++ OESheff::OESheffieldOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OESheff::OESheffieldOptions self) -> OESheffieldOptions
        __init__(OESheff::OESheffieldOptions self, OESheffieldOptions arg2) -> OESheffieldOptions
        """
        this = _oeff.new_OESheffieldOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeff.delete_OESheffieldOptions
    __del__ = lambda self: None

    def GetA(self) -> "double":
        """GetA(OESheffieldOptions self) -> double"""
        return _oeff.OESheffieldOptions_GetA(self)


    def SetA(self, value: 'double const') -> "bool":
        """SetA(OESheffieldOptions self, double const value) -> bool"""
        return _oeff.OESheffieldOptions_SetA(self, value)


    def GetB(self) -> "double":
        """GetB(OESheffieldOptions self) -> double"""
        return _oeff.OESheffieldOptions_GetB(self)


    def SetB(self, value: 'double const') -> "bool":
        """SetB(OESheffieldOptions self, double const value) -> bool"""
        return _oeff.OESheffieldOptions_SetB(self, value)


    def GetSolventDielectricConstant(self) -> "double":
        """GetSolventDielectricConstant(OESheffieldOptions self) -> double"""
        return _oeff.OESheffieldOptions_GetSolventDielectricConstant(self)


    def SetSolventDielectricConstant(self, value: 'double const') -> "bool":
        """SetSolventDielectricConstant(OESheffieldOptions self, double const value) -> bool"""
        return _oeff.OESheffieldOptions_SetSolventDielectricConstant(self, value)


    def SetSoluteDielectricConstant(self, value: 'double const') -> "bool":
        """SetSoluteDielectricConstant(OESheffieldOptions self, double const value) -> bool"""
        return _oeff.OESheffieldOptions_SetSoluteDielectricConstant(self, value)


    def GetSoluteDielectricConstant(self) -> "double":
        """GetSoluteDielectricConstant(OESheffieldOptions self) -> double"""
        return _oeff.OESheffieldOptions_GetSoluteDielectricConstant(self)

OESheffieldOptions_swigregister = _oeff.OESheffieldOptions_swigregister
OESheffieldOptions_swigregister(OESheffieldOptions)

class OESheffield(OEMolFunc2):
    """Proxy of C++ OESheff::OESheffield class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oeff.delete_OESheffield
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OESheffield self, OEMolBase mol) -> bool"""
        return _oeff.OESheffield_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OESheffield self) -> unsigned int"""
        return _oeff.OESheffield_NumVar(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OESheffield self, double const * x) -> double
        __call__(OESheffield self, double const * x, double * g) -> double
        __call__(OESheffield self, double const * x, double * h, double * g) -> bool
        """
        return _oeff.OESheffield___call__(self, *args)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OESheffield self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeff.OESheffield_GetFComponents(self, arg2)


    def ClearPredicates(self) -> "void":
        """ClearPredicates(OESheffield self)"""
        return _oeff.OESheffield_ClearPredicates(self)


    def Clear(self) -> "void":
        """Clear(OESheffield self)"""
        return _oeff.OESheffield_Clear(self)


    def SetCharges(self, ch: 'float *') -> "void":
        """SetCharges(OESheffield self, float * ch)"""
        return _oeff.OESheffield_SetCharges(self, ch)


    def SetRadii(self, ra: 'float *') -> "void":
        """SetRadii(OESheffield self, float * ra)"""
        return _oeff.OESheffield_SetRadii(self, ra)


    def GetDielectricDerivative(self, x: 'double const *', solv_diel: 'double') -> "double":
        """GetDielectricDerivative(OESheffield self, double const * x, double solv_diel) -> double"""
        return _oeff.OESheffield_GetDielectricDerivative(self, x, solv_diel)


    def __init__(self, *args):
        """
        __init__(OESheff::OESheffield self, OESheffieldOptions argOptions) -> OESheffield
        __init__(OESheff::OESheffield self, OESheffield arg2) -> OESheffield
        __init__(OESheff::OESheffield self, double aa=1.553149, double bb=0.735694) -> OESheffield
        __init__(OESheff::OESheffield self) -> OESheffield
        """
        this = _oeff.new_OESheffield(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OESheffield_swigregister = _oeff.OESheffield_swigregister
OESheffield_swigregister(OESheffield)



