# 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')

    _oequacpac = libs.OEGetModule('_oequacpac2105')
    return _oequacpac

_oequacpac = 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



def SwigNumber_Check(o: 'PyObject *') -> "double":
    return _oequacpac.SwigNumber_Check(o)
SwigNumber_Check = _oequacpac.SwigNumber_Check

def SwigNumber_AsDouble(o: 'PyObject *') -> "double":
    return _oequacpac.SwigNumber_AsDouble(o)
SwigNumber_AsDouble = _oequacpac.SwigNumber_AsDouble

def __no_op(*args) -> "void":
    return _oequacpac.__no_op(*args)
__no_op = _oequacpac.__no_op
import openeye.oechem as oechem
class OEMolFunctionBase(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEMolBase,bool,true,false)> 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__ = _oequacpac.delete_OEMolFunctionBase
    __del__ = lambda self: None

    def __call__(self, arg2: 'OEMolBase') -> "bool":
        """__call__(OEMolFunctionBase self, OEMolBase arg2) -> bool"""
        return _oequacpac.OEMolFunctionBase___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEMolBase,bool,true,false >::base_type *":
        """CreateCopy(OEMolFunctionBase self) -> OEMolFunctionBase"""
        return _oequacpac.OEMolFunctionBase_CreateCopy(self)

OEMolFunctionBase_swigregister = _oequacpac.OEMolFunctionBase_swigregister
OEMolFunctionBase_swigregister(OEMolFunctionBase)

OEMethodType_AM1 = _oequacpac.OEMethodType_AM1
OEMethodType_PM3 = _oequacpac.OEMethodType_PM3
OEBCCType_AM1 = _oequacpac.OEBCCType_AM1
OEBCCType_PM3 = _oequacpac.OEBCCType_PM3
OECharges_NoOp = _oequacpac.OECharges_NoOp
OECharges_None = _oequacpac.OECharges_None
OECharges_Formal = _oequacpac.OECharges_Formal
OECharges_Initial = _oequacpac.OECharges_Initial
OECharges_Gasteiger = _oequacpac.OECharges_Gasteiger
OECharges_MMFF94 = _oequacpac.OECharges_MMFF94
OECharges_AM1BCCNoSym = _oequacpac.OECharges_AM1BCCNoSym
OECharges_AM1BCCNoSymSPt = _oequacpac.OECharges_AM1BCCNoSymSPt
OECharges_AM1BCCSym = _oequacpac.OECharges_AM1BCCSym
OECharges_AM1BCCSymSPt = _oequacpac.OECharges_AM1BCCSymSPt

OECharges_AM1BCC = OECharges_AM1BCCNoSym


OECharges_AM1BCCSPt = OECharges_AM1BCCNoSymSPt

OECharges_OPLS = _oequacpac.OECharges_OPLS
OECharges_AM1 = _oequacpac.OECharges_AM1
OECharges_AM1SPt = _oequacpac.OECharges_AM1SPt
OECharges_AmberFF94 = _oequacpac.OECharges_AmberFF94

OECharges_AmberFF99 = OECharges_AmberFF94


OECharges_AmberFF99SB = OECharges_AmberFF94


OECharges_AmberFF99bsc0 = OECharges_AmberFF94

OECharges_FmlToPrtl = _oequacpac.OECharges_FmlToPrtl
OECharges_Combine = _oequacpac.OECharges_Combine
OECharges_ELF = _oequacpac.OECharges_ELF
OECharges_SpreadMetal = _oequacpac.OECharges_SpreadMetal
OECharges_DUCharges = _oequacpac.OECharges_DUCharges
OECharges_CmplxCharges = _oequacpac.OECharges_CmplxCharges
OECharges_Max = _oequacpac.OECharges_Max

OECharges_Default = OECharges_MMFF94

OEHybridizationLevel_Original = _oequacpac.OEHybridizationLevel_Original
OEHybridizationLevel_DoubleBondNbr = _oequacpac.OEHybridizationLevel_DoubleBondNbr
OEHybridizationLevel_EnolEnamine = _oequacpac.OEHybridizationLevel_EnolEnamine

OEHybridizationLevel_Default = OEHybridizationLevel_EnolEnamine

OERacemicType_None = _oequacpac.OERacemicType_None
OERacemicType_LocalSampled = _oequacpac.OERacemicType_LocalSampled
OERacemicType_EverSampled = _oequacpac.OERacemicType_EverSampled
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 = _oequacpac.new_OEFComponentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEFComponentIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        Push(OEFComponentIter self, OESystem::OEIterBase< OEOpt::OEFComponent > * ib)
        Push(OEFComponentIter self, OEFComponentIter iter)
        """
        return _oequacpac.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 _oequacpac.OEFComponentIter_Sort(self, sort_criterion)


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


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


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


    def IsValid(self):
      return _oequacpac.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 _oequacpac.OEFComponentIter_next(self)


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


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


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

OEFComponentIter_swigregister = _oequacpac.OEFComponentIter_swigregister
OEFComponentIter_swigregister(OEFComponentIter)

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(_oequacpac.OEFComponent_name_get, _oequacpac.OEFComponent_name_set)
    value = _swig_property(_oequacpac.OEFComponent_value_get, _oequacpac.OEFComponent_value_set)

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

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

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


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


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

    __swig_destroy__ = _oequacpac.delete_OEFunc0
    __del__ = lambda self: None
OEFunc0_swigregister = _oequacpac.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')

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

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


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


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

    __swig_destroy__ = _oequacpac.delete_OEFunc1
    __del__ = lambda self: None
OEFunc1_swigregister = _oequacpac.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')

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

    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 _oequacpac.OEFunc2___call__(self, *args)

    __swig_destroy__ = _oequacpac.delete_OEFunc2
    __del__ = lambda self: None
OEFunc2_swigregister = _oequacpac.OEFunc2_swigregister
OEFunc2_swigregister(OEFunc2)


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 _oequacpac.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 = _oequacpac.new_OEInteractionIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEInteractionIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionIter self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * ib)
        Push(OEInteractionIter self, OEInteractionIter iter)
        """
        return _oequacpac.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 _oequacpac.OEInteractionIter_Sort(self, sort_criterion)


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


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


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


    def IsValid(self):
      return _oequacpac.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 _oequacpac.OEInteractionIter_next(self)


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


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


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

OEInteractionIter_swigregister = _oequacpac.OEInteractionIter_swigregister
OEInteractionIter_swigregister(OEInteractionIter)

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 = _oequacpac.new_OEInteraction(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEInteraction
    __del__ = lambda self: None

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


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


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


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


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


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

OEInteraction_swigregister = _oequacpac.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')

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

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


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


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

OEMolFunc_swigregister = _oequacpac.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')

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oequacpac.delete_OEMolFunc0
    __del__ = lambda self: None
OEMolFunc0_swigregister = _oequacpac.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')

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

    def CreateCopy(self) -> "OEMolPotential::OEMolFunc1 *":
        """CreateCopy(OEMolFunc1 self) -> OEMolFunc1"""
        return _oequacpac.OEMolFunc1_CreateCopy(self)

OEMolFunc1_swigregister = _oequacpac.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')

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oequacpac.delete_OEMolFunc2
    __del__ = lambda self: None
OEMolFunc2_swigregister = _oequacpac.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__ = _oequacpac.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 _oequacpac.OEForceField_PrepMol(self, mol, sweep, warnOK)


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


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


    def CreateCopy(self) -> "OEMolPotential::OEForceField *":
        """CreateCopy(OEForceField self) -> OEForceField"""
        return _oequacpac.OEForceField_CreateCopy(self)


    def Add(self, *args) -> "bool":
        """
        Add(OEForceField self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEForceField self, OEMolFunc1 f) -> bool
        Add(OEForceField self, OEMolPotential::OEFFParams const & ffp) -> bool
        """
        return _oequacpac.OEForceField_Add(self, *args)


    def Remove(self, f: 'OEMolFunc1') -> "bool":
        """Remove(OEForceField self, OEMolFunc1 f) -> bool"""
        return _oequacpac.OEForceField_Remove(self, f)


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """GetComponentPotentials(OEForceField self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oequacpac.OEForceField_GetComponentPotentials(self)


    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        """GetParams(OEForceField self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oequacpac.OEForceField_GetParams(self)

OEForceField_swigregister = _oequacpac.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 = _oequacpac.new_OEGenericFF2(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEGenericFF2
    __del__ = lambda self: None

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


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEGenericFF2 self, OEMolBase mol) -> bool"""
        return _oequacpac.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 _oequacpac.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 _oequacpac.OEGenericFF2_GetFComponents(self, coord)


    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 _oequacpac.OEGenericFF2_GetInteractions(self, mol, coord, functype)


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


    def CreateCopy(self) -> "OEMolPotential::OEGenericFF2 *":
        """CreateCopy(OEGenericFF2 self) -> OEGenericFF2"""
        return _oequacpac.OEGenericFF2_CreateCopy(self)


    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 _oequacpac.OEGenericFF2_PrepMol(self, mol, sweep, warnOK)


    def Add(self, *args) -> "bool":
        """
        Add(OEGenericFF2 self, OEMolPotential::OEFFParams const & ffp) -> bool
        Add(OEGenericFF2 self, OEMolFunc1 func, bool own=False) -> bool
        Add(OEGenericFF2 self, OEMolFunc1 func) -> bool
        """
        return _oequacpac.OEGenericFF2_Add(self, *args)


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """GetComponentPotentials(OEGenericFF2 self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oequacpac.OEGenericFF2_GetComponentPotentials(self)


    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        """GetParams(OEGenericFF2 self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oequacpac.OEGenericFF2_GetParams(self)


    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 _oequacpac.OEGenericFF2_AddMolFunc(self, f, own)


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


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

OEGenericFF2_swigregister = _oequacpac.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 = _oequacpac.new_OEGenericFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEGenericFF
    __del__ = lambda self: None

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


    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEGenericFF self, OEMolBase mol) -> bool"""
        return _oequacpac.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 _oequacpac.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 _oequacpac.OEGenericFF_GetFComponents(self, coord)


    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 _oequacpac.OEGenericFF_GetInteractions(self, mol, coord, functype)


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


    def CreateCopy(self) -> "OEMolPotential::OEGenericFF *":
        """CreateCopy(OEGenericFF self) -> OEGenericFF"""
        return _oequacpac.OEGenericFF_CreateCopy(self)


    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 _oequacpac.OEGenericFF_PrepMol(self, mol, sweep, warnOK)


    def Add(self, *args) -> "bool":
        """
        Add(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEGenericFF self, OEMolFunc1 f) -> bool
        Add(OEGenericFF self, OEMolPotential::OEFFParams const & ffp) -> bool
        """
        return _oequacpac.OEGenericFF_Add(self, *args)


    def Remove(self, f: 'OEMolFunc1') -> "bool":
        """Remove(OEGenericFF self, OEMolFunc1 f) -> bool"""
        return _oequacpac.OEGenericFF_Remove(self, f)


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """GetComponentPotentials(OEGenericFF self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oequacpac.OEGenericFF_GetComponentPotentials(self)


    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        """GetParams(OEGenericFF self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oequacpac.OEGenericFF_GetParams(self)


    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 _oequacpac.OEGenericFF_AddMolFunc(self, f, own)


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


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

OEGenericFF_swigregister = _oequacpac.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__ = _oequacpac.delete_OEInterMolFunc1
    __del__ = lambda self: None

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


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


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


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

OEInterMolFunc1_swigregister = _oequacpac.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__ = _oequacpac.delete_OEInterMolFunc2
    __del__ = lambda self: None
OEInterMolFunc2_swigregister = _oequacpac.OEInterMolFunc2_swigregister
OEInterMolFunc2_swigregister(OEInterMolFunc2)

class OEAM1Options(oechem.OEOptions):
    """Proxy of C++ OEMolAM1::OEAM1Options 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__(OEMolAM1::OEAM1Options self) -> OEAM1Options
        __init__(OEMolAM1::OEAM1Options self, OEAM1Options arg2) -> OEAM1Options
        """
        this = _oequacpac.new_OEAM1Options(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEAM1Options
    __del__ = lambda self: None

    def GetSCFTolerance(self) -> "double":
        """GetSCFTolerance(OEAM1Options self) -> double"""
        return _oequacpac.OEAM1Options_GetSCFTolerance(self)


    def SetSCFTolerance(self, value: 'double const') -> "bool":
        """SetSCFTolerance(OEAM1Options self, double const value) -> bool"""
        return _oequacpac.OEAM1Options_SetSCFTolerance(self, value)


    def GetNumericGradDelta(self) -> "double":
        """GetNumericGradDelta(OEAM1Options self) -> double"""
        return _oequacpac.OEAM1Options_GetNumericGradDelta(self)


    def SetNumericGradDelta(self, value: 'double const') -> "bool":
        """SetNumericGradDelta(OEAM1Options self, double const value) -> bool"""
        return _oequacpac.OEAM1Options_SetNumericGradDelta(self, value)


    def GetMaxScfIter(self) -> "unsigned int":
        """GetMaxScfIter(OEAM1Options self) -> unsigned int"""
        return _oequacpac.OEAM1Options_GetMaxScfIter(self)


    def SetMaxScfIter(self, value: 'unsigned int const') -> "bool":
        """SetMaxScfIter(OEAM1Options self, unsigned int const value) -> bool"""
        return _oequacpac.OEAM1Options_SetMaxScfIter(self, value)


    def GetSemiMethod(self) -> "unsigned int":
        """GetSemiMethod(OEAM1Options self) -> unsigned int"""
        return _oequacpac.OEAM1Options_GetSemiMethod(self)


    def SetSemiMethod(self, value: 'unsigned int const') -> "bool":
        """SetSemiMethod(OEAM1Options self, unsigned int const value) -> bool"""
        return _oequacpac.OEAM1Options_SetSemiMethod(self, value)


    def CreateCopy(self) -> "OEMolAM1::OEAM1Options *":
        """CreateCopy(OEAM1Options self) -> OEAM1Options"""
        return _oequacpac.OEAM1Options_CreateCopy(self)

OEAM1Options_swigregister = _oequacpac.OEAM1Options_swigregister
OEAM1Options_swigregister(OEAM1Options)

class OEAM1Results(object):
    """Proxy of C++ OEMolAM1::OEAM1Results 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__(OEMolAM1::OEAM1Results self) -> OEAM1Results
        __init__(OEMolAM1::OEAM1Results self, OEAM1Results arg2) -> OEAM1Results
        """
        this = _oequacpac.new_OEAM1Results(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEAM1Results
    __del__ = lambda self: None

    def GetCharges(self) -> "std::vector< double,std::allocator< double > >":
        """GetCharges(OEAM1Results self) -> OEDoubleVector"""
        return _oequacpac.OEAM1Results_GetCharges(self)


    def GetBondOrders(self) -> "std::vector< double,std::allocator< double > >":
        """GetBondOrders(OEAM1Results self) -> OEDoubleVector"""
        return _oequacpac.OEAM1Results_GetBondOrders(self)


    def GetBondOrder(self, argAtom1: 'unsigned int const', argAtom2: 'unsigned int const') -> "double":
        """GetBondOrder(OEAM1Results self, unsigned int const argAtom1, unsigned int const argAtom2) -> double"""
        return _oequacpac.OEAM1Results_GetBondOrder(self, argAtom1, argAtom2)


    def GetAtomicBondOrder(self, argAtom: 'unsigned int const') -> "double":
        """GetAtomicBondOrder(OEAM1Results self, unsigned int const argAtom) -> double"""
        return _oequacpac.OEAM1Results_GetAtomicBondOrder(self, argAtom)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEAM1Results self) -> double"""
        return _oequacpac.OEAM1Results_GetEnergy(self)


    def GetNumSCFCycles(self) -> "unsigned int":
        """GetNumSCFCycles(OEAM1Results self) -> unsigned int"""
        return _oequacpac.OEAM1Results_GetNumSCFCycles(self)


    def IsConverged(self) -> "bool":
        """IsConverged(OEAM1Results self) -> bool"""
        return _oequacpac.OEAM1Results_IsConverged(self)

OEAM1Results_swigregister = _oequacpac.OEAM1Results_swigregister
OEAM1Results_swigregister(OEAM1Results)

class OEAM1(OEMolFunc1):
    """Proxy of C++ OEMolAM1::OEAM1 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__ = _oequacpac.delete_OEAM1
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEMolAM1::OEAM1 self, OEAM1Options argOptions) -> OEAM1
        __init__(OEMolAM1::OEAM1 self) -> OEAM1
        __init__(OEMolAM1::OEAM1 self, OEAM1 arg2) -> OEAM1
        """
        this = _oequacpac.new_OEAM1(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """Setup(OEAM1 self, OEMolBase mol) -> bool"""
        return _oequacpac.OEAM1_Setup(self, mol)


    def NumVar(self) -> "unsigned int":
        """NumVar(OEAM1 self) -> unsigned int"""
        return _oequacpac.OEAM1_NumVar(self)


    def SetVerbose(self, ver: 'bool') -> "void":
        """SetVerbose(OEAM1 self, bool ver)"""
        return _oequacpac.OEAM1_SetVerbose(self, ver)


    def GetFComponents(self, arg2: 'double const *') -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        """GetFComponents(OEAM1 self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oequacpac.OEAM1_GetFComponents(self, arg2)


    def __call__(self, *args) -> "double":
        """
        __call__(OEAM1 self, double const * x) -> double
        __call__(OEAM1 self, double const * x, double * g) -> double
        """
        return _oequacpac.OEAM1___call__(self, *args)


    def CreateCopy(self) -> "OEMolAM1::OEAM1 *":
        """CreateCopy(OEAM1 self) -> OEAM1"""
        return _oequacpac.OEAM1_CreateCopy(self)


    def GetOptions(self) -> "OEMolAM1::OEAM1Options const &":
        """GetOptions(OEAM1 self) -> OEAM1Options"""
        return _oequacpac.OEAM1_GetOptions(self)


    def CalcAM1(self, argResults: 'OEAM1Results', argMolecule: 'OEMolBase') -> "bool":
        """CalcAM1(OEAM1 self, OEAM1Results argResults, OEMolBase argMolecule) -> bool"""
        return _oequacpac.OEAM1_CalcAM1(self, argResults, argMolecule)


    def GetResults(self, argResults: 'OEAM1Results') -> "bool":
        """GetResults(OEAM1 self, OEAM1Results argResults) -> bool"""
        return _oequacpac.OEAM1_GetResults(self, argResults)

OEAM1_swigregister = _oequacpac.OEAM1_swigregister
OEAM1_swigregister(OEAM1)

class OEOptimizedAM1(object):
    """Proxy of C++ OEMolAM1::OEOptimizedAM1 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__(OEMolAM1::OEOptimizedAM1 self, unsigned int wvnFnType) -> OEOptimizedAM1
        __init__(OEMolAM1::OEOptimizedAM1 self) -> OEOptimizedAM1
        __init__(OEMolAM1::OEOptimizedAM1 self, OEOptimizedAM1 arg2) -> OEOptimizedAM1
        """
        this = _oequacpac.new_OEOptimizedAM1(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEOptimizedAM1
    __del__ = lambda self: None

    def CalcAM1(self, *args) -> "bool":
        """
        CalcAM1(OEOptimizedAM1 self, OEAM1Results results, OEMolBase mol) -> bool
        CalcAM1(OEOptimizedAM1 self, OEAM1Results results, OEMCMolBase mol) -> bool
        """
        return _oequacpac.OEOptimizedAM1_CalcAM1(self, *args)

OEOptimizedAM1_swigregister = _oequacpac.OEOptimizedAM1_swigregister
OEOptimizedAM1_swigregister(OEOptimizedAM1)


def OEBCCPartialCharges(*args) -> "bool":
    """
    OEBCCPartialCharges(OEMolBase mol, unsigned int BCCModel, bool permissive=False, bool verbose=False) -> bool
    OEBCCPartialCharges(OEMolBase mol, unsigned int BCCModel, bool permissive=False) -> bool
    OEBCCPartialCharges(OEMolBase mol, unsigned int BCCModel) -> bool
    OEBCCPartialCharges(OEMolBase mol) -> bool
    """
    return _oequacpac.OEBCCPartialCharges(*args)

def OESymmetrizePartialCharges(mol: 'OEMolBase') -> "bool":
    """OESymmetrizePartialCharges(OEMolBase mol) -> bool"""
    return _oequacpac.OESymmetrizePartialCharges(mol)
class OEELFOptions(oechem.OEOptions):
    """Proxy of C++ OEProton::OEELFOptions 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__(OEProton::OEELFOptions self) -> OEELFOptions
        __init__(OEProton::OEELFOptions self, OEELFOptions arg2) -> OEELFOptions
        """
        this = _oequacpac.new_OEELFOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEELFOptions
    __del__ = lambda self: None

    def GetPercent(self) -> "double":
        """GetPercent(OEELFOptions self) -> double"""
        return _oequacpac.OEELFOptions_GetPercent(self)


    def SetPercent(self, value: 'double const') -> "bool":
        """SetPercent(OEELFOptions self, double const value) -> bool"""
        return _oequacpac.OEELFOptions_SetPercent(self, value)


    def GetElfLimit(self) -> "unsigned int":
        """GetElfLimit(OEELFOptions self) -> unsigned int"""
        return _oequacpac.OEELFOptions_GetElfLimit(self)


    def SetElfLimit(self, value: 'unsigned int const') -> "bool":
        """SetElfLimit(OEELFOptions self, unsigned int const value) -> bool"""
        return _oequacpac.OEELFOptions_SetElfLimit(self, value)


    def CreateCopy(self) -> "OEProton::OEELFOptions *":
        """CreateCopy(OEELFOptions self) -> OEELFOptions"""
        return _oequacpac.OEELFOptions_CreateCopy(self)

OEELFOptions_swigregister = _oequacpac.OEELFOptions_swigregister
OEELFOptions_swigregister(OEELFOptions)

class OEELF(object):
    """Proxy of C++ OEProton::OEELF 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__(OEProton::OEELF self, OEELFOptions opts) -> OEELF
        __init__(OEProton::OEELF self) -> OEELF
        __init__(OEProton::OEELF self, OEELF arg2) -> OEELF
        """
        this = _oequacpac.new_OEELF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEELF
    __del__ = lambda self: None

    def Select(self, mol: 'OEMCMolBase') -> "bool":
        """Select(OEELF self, OEMCMolBase mol) -> bool"""
        return _oequacpac.OEELF_Select(self, mol)

OEELF_swigregister = _oequacpac.OEELF_swigregister
OEELF_swigregister(OEELF)

class OEFormalChargeOptions(object):
    """Proxy of C++ OEProton::OEFormalChargeOptions 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__(OEProton::OEFormalChargeOptions self, unsigned int maxCount=0, bool verbose=False, bool warts=True) -> OEFormalChargeOptions
        __init__(OEProton::OEFormalChargeOptions self, unsigned int maxCount=0, bool verbose=False) -> OEFormalChargeOptions
        __init__(OEProton::OEFormalChargeOptions self, unsigned int maxCount=0) -> OEFormalChargeOptions
        __init__(OEProton::OEFormalChargeOptions self) -> OEFormalChargeOptions
        __init__(OEProton::OEFormalChargeOptions self, OEFormalChargeOptions rhs) -> OEFormalChargeOptions
        """
        this = _oequacpac.new_OEFormalChargeOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEFormalChargeOptions
    __del__ = lambda self: None

    def GetMaxCount(self) -> "unsigned int":
        """GetMaxCount(OEFormalChargeOptions self) -> unsigned int"""
        return _oequacpac.OEFormalChargeOptions_GetMaxCount(self)


    def SetMaxCount(self, max: 'unsigned int') -> "void":
        """SetMaxCount(OEFormalChargeOptions self, unsigned int max)"""
        return _oequacpac.OEFormalChargeOptions_SetMaxCount(self, max)


    def GetVerbose(self) -> "bool":
        """GetVerbose(OEFormalChargeOptions self) -> bool"""
        return _oequacpac.OEFormalChargeOptions_GetVerbose(self)


    def SetVerbose(self, verbose: 'bool') -> "void":
        """SetVerbose(OEFormalChargeOptions self, bool verbose)"""
        return _oequacpac.OEFormalChargeOptions_SetVerbose(self, verbose)


    def GetWarts(self) -> "bool":
        """GetWarts(OEFormalChargeOptions self) -> bool"""
        return _oequacpac.OEFormalChargeOptions_GetWarts(self)


    def SetWarts(self, warts: 'bool') -> "void":
        """SetWarts(OEFormalChargeOptions self, bool warts)"""
        return _oequacpac.OEFormalChargeOptions_SetWarts(self, warts)

OEFormalChargeOptions_swigregister = _oequacpac.OEFormalChargeOptions_swigregister
OEFormalChargeOptions_swigregister(OEFormalChargeOptions)


def OESetNeutralpHModel(*args) -> "bool":
    """
    OESetNeutralpHModel(OEMolBase mol) -> bool
    OESetNeutralpHModel(OEMCMolBase mol) -> bool
    """
    return _oequacpac.OESetNeutralpHModel(*args)

def OERemoveFormalCharge(*args) -> "bool":
    """
    OERemoveFormalCharge(OEMolBase mol) -> bool
    OERemoveFormalCharge(OEMCMolBase mol) -> bool
    """
    return _oequacpac.OERemoveFormalCharge(*args)

def OEGetReasonableProtomer(*args) -> "bool":
    """
    OEGetReasonableProtomer(OEMolBase mol) -> bool
    OEGetReasonableProtomer(OEMCMolBase mol) -> bool
    """
    return _oequacpac.OEGetReasonableProtomer(*args)

def OEGetReasonableProtomers(*args) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
    """
    OEGetReasonableProtomers(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetReasonableProtomers(OEMCMolBase mol) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
    """
    return _oequacpac.OEGetReasonableProtomers(*args)
class OETautomerOptions(object):
    """Proxy of C++ OEProton::OETautomerOptions 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__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120, bool kekule=False, bool clearCoords=False, unsigned int hybridLevel, unsigned int maxToReturn=256, unsigned int racemicType) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120, bool kekule=False, bool clearCoords=False, unsigned int hybridLevel, unsigned int maxToReturn=256) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120, bool kekule=False, bool clearCoords=False, unsigned int hybridLevel) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120, bool kekule=False, bool clearCoords=False) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120, bool kekule=False) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70, float maxTime=120) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35, unsigned int maxTautomericAtoms=70) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False, unsigned int maxZoneSize=35) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True, bool saveStereo=False) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0, bool carbonHybrid=True) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False, unsigned int level=0) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True, bool warts=False) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096, bool rank=True) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, unsigned int maxGenerated=4096) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self) -> OETautomerOptions
        __init__(OEProton::OETautomerOptions self, OETautomerOptions rhs) -> OETautomerOptions
        """
        this = _oequacpac.new_OETautomerOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetMaxTautomersGenerated(self) -> "unsigned int":
        """GetMaxTautomersGenerated(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetMaxTautomersGenerated(self)


    def SetMaxTautomersGenerated(self, max: 'unsigned int') -> "void":
        """SetMaxTautomersGenerated(OETautomerOptions self, unsigned int max)"""
        return _oequacpac.OETautomerOptions_SetMaxTautomersGenerated(self, max)


    def GetMaxTautomersToReturn(self) -> "unsigned int":
        """GetMaxTautomersToReturn(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetMaxTautomersToReturn(self)


    def SetMaxTautomersToReturn(self, max: 'unsigned int') -> "void":
        """SetMaxTautomersToReturn(OETautomerOptions self, unsigned int max)"""
        return _oequacpac.OETautomerOptions_SetMaxTautomersToReturn(self, max)


    def GetRankTautomers(self) -> "bool":
        """GetRankTautomers(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetRankTautomers(self)


    def SetRankTautomers(self, rank: 'bool') -> "void":
        """SetRankTautomers(OETautomerOptions self, bool rank)"""
        return _oequacpac.OETautomerOptions_SetRankTautomers(self, rank)


    def GetApplyWarts(self) -> "bool":
        """GetApplyWarts(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetApplyWarts(self)


    def SetApplyWarts(self, warts: 'bool') -> "void":
        """SetApplyWarts(OETautomerOptions self, bool warts)"""
        return _oequacpac.OETautomerOptions_SetApplyWarts(self, warts)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetLevel(self)


    def SetLevel(self, level: 'unsigned int') -> "void":
        """SetLevel(OETautomerOptions self, unsigned int level)"""
        return _oequacpac.OETautomerOptions_SetLevel(self, level)


    def GetCarbonHybridization(self) -> "bool":
        """GetCarbonHybridization(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetCarbonHybridization(self)


    def SetCarbonHybridization(self, carbonHybrid: 'bool') -> "void":
        """SetCarbonHybridization(OETautomerOptions self, bool carbonHybrid)"""
        return _oequacpac.OETautomerOptions_SetCarbonHybridization(self, carbonHybrid)


    def GetHybridizationLevel(self) -> "unsigned int":
        """GetHybridizationLevel(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetHybridizationLevel(self)


    def SetHybridizationLevel(self, level: 'unsigned int') -> "void":
        """SetHybridizationLevel(OETautomerOptions self, unsigned int level)"""
        return _oequacpac.OETautomerOptions_SetHybridizationLevel(self, level)


    def GetSaveStereo(self) -> "bool":
        """GetSaveStereo(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetSaveStereo(self)


    def SetSaveStereo(self, saveStereo: 'bool') -> "void":
        """SetSaveStereo(OETautomerOptions self, bool saveStereo)"""
        return _oequacpac.OETautomerOptions_SetSaveStereo(self, saveStereo)


    def GetRacemicType(self) -> "unsigned int":
        """GetRacemicType(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetRacemicType(self)


    def SetRacemicType(self, raceType: 'unsigned int') -> "void":
        """SetRacemicType(OETautomerOptions self, unsigned int raceType)"""
        return _oequacpac.OETautomerOptions_SetRacemicType(self, raceType)


    def GetMaxZoneSize(self) -> "unsigned int":
        """GetMaxZoneSize(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetMaxZoneSize(self)


    def SetMaxZoneSize(self, maxZoneSize: 'unsigned int') -> "void":
        """SetMaxZoneSize(OETautomerOptions self, unsigned int maxZoneSize)"""
        return _oequacpac.OETautomerOptions_SetMaxZoneSize(self, maxZoneSize)


    def GetMaxTautomericAtoms(self) -> "unsigned int":
        """GetMaxTautomericAtoms(OETautomerOptions self) -> unsigned int"""
        return _oequacpac.OETautomerOptions_GetMaxTautomericAtoms(self)


    def SetMaxTautomericAtoms(self, maxTautomericAtoms: 'unsigned int') -> "void":
        """SetMaxTautomericAtoms(OETautomerOptions self, unsigned int maxTautomericAtoms)"""
        return _oequacpac.OETautomerOptions_SetMaxTautomericAtoms(self, maxTautomericAtoms)


    def GetMaxSearchTime(self) -> "float":
        """GetMaxSearchTime(OETautomerOptions self) -> float"""
        return _oequacpac.OETautomerOptions_GetMaxSearchTime(self)


    def SetMaxSearchTime(self, maxTime: 'float') -> "void":
        """SetMaxSearchTime(OETautomerOptions self, float maxTime)"""
        return _oequacpac.OETautomerOptions_SetMaxSearchTime(self, maxTime)


    def GetKekule(self) -> "bool":
        """GetKekule(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetKekule(self)


    def SetKekule(self, kekule: 'bool') -> "void":
        """SetKekule(OETautomerOptions self, bool kekule)"""
        return _oequacpac.OETautomerOptions_SetKekule(self, kekule)


    def GetClearCoords(self) -> "bool":
        """GetClearCoords(OETautomerOptions self) -> bool"""
        return _oequacpac.OETautomerOptions_GetClearCoords(self)


    def SetClearCoords(self, clearCoords: 'bool') -> "void":
        """SetClearCoords(OETautomerOptions self, bool clearCoords)"""
        return _oequacpac.OETautomerOptions_SetClearCoords(self, clearCoords)

    __swig_destroy__ = _oequacpac.delete_OETautomerOptions
    __del__ = lambda self: None
OETautomerOptions_swigregister = _oequacpac.OETautomerOptions_swigregister
OETautomerOptions_swigregister(OETautomerOptions)


def OETautomersLargestZoneSize(*args) -> "unsigned int":
    """
    OETautomersLargestZoneSize(OEMolBase mol, OETautomerOptions tautomerOptions) -> unsigned int
    OETautomersLargestZoneSize(OEMolBase inmol, unsigned int maxZone=0) -> unsigned int
    OETautomersLargestZoneSize(OEMolBase inmol) -> unsigned int
    """
    return _oequacpac.OETautomersLargestZoneSize(*args)

def OEGetReasonableTautomers(*args) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
    """
    OEGetReasonableTautomers(OEMolBase mol, OETautomerOptions opts, bool pKaNorm=True) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetReasonableTautomers(OEMolBase mol, OETautomerOptions opts) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetReasonableTautomers(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetReasonableTautomers(OEMCMolBase mol, OETautomerOptions opts, bool pKaNorm=True) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
    OEGetReasonableTautomers(OEMCMolBase mol, OETautomerOptions opts) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
    OEGetReasonableTautomers(OEMCMolBase mol) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
    """
    return _oequacpac.OEGetReasonableTautomers(*args)

def OEGetUniqueProtomer(*args) -> "bool":
    """
    OEGetUniqueProtomer(OEMolBase dst, OEMolBase mol) -> bool
    OEGetUniqueProtomer(OEMCMolBase dst, OEMCMolBase mol) -> bool
    """
    return _oequacpac.OEGetUniqueProtomer(*args)

def OEHypervalentNormalization(mol: 'OEMolBase') -> "void":
    """OEHypervalentNormalization(OEMolBase mol)"""
    return _oequacpac.OEHypervalentNormalization(mol)
class OETautomerMolFunction(OEMolFunctionBase):
    """Proxy of C++ OEProton::OETautomerMolFunction 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, ofp: 'oemolostream', arom: 'bool', ct: 'bool'=False, max: 'unsigned int'=0, mostAro: 'bool'=False, warts: 'bool'=True):
        """
        __init__(OEProton::OETautomerMolFunction self, oemolostream ofp, bool arom, bool ct=False, unsigned int max=0, bool mostAro=False, bool warts=True) -> OETautomerMolFunction
        __init__(OEProton::OETautomerMolFunction self, oemolostream ofp, bool arom, bool ct=False, unsigned int max=0, bool mostAro=False) -> OETautomerMolFunction
        __init__(OEProton::OETautomerMolFunction self, oemolostream ofp, bool arom, bool ct=False, unsigned int max=0) -> OETautomerMolFunction
        __init__(OEProton::OETautomerMolFunction self, oemolostream ofp, bool arom, bool ct=False) -> OETautomerMolFunction
        __init__(OEProton::OETautomerMolFunction self, oemolostream ofp, bool arom) -> OETautomerMolFunction
        """
        if self.__class__ == OETautomerMolFunction:
            _self = None
        else:
            _self = self
        this = _oequacpac.new_OETautomerMolFunction(_self, ofp, arom, ct, max, mostAro, warts)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OETautomerMolFunction
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEMolFunctionBase *":
        """CreateCopy(OETautomerMolFunction self) -> OEMolFunctionBase"""
        return _oequacpac.OETautomerMolFunction_CreateCopy(self)


    def __call__(self, inmol: 'OEMolBase') -> "bool":
        """__call__(OETautomerMolFunction self, OEMolBase inmol) -> bool"""
        return _oequacpac.OETautomerMolFunction___call__(self, inmol)


    def Reset(self) -> "void":
        """Reset(OETautomerMolFunction self)"""
        return _oequacpac.OETautomerMolFunction_Reset(self)


    def GetCount(self) -> "unsigned int":
        """GetCount(OETautomerMolFunction self) -> unsigned int"""
        return _oequacpac.OETautomerMolFunction_GetCount(self)


    def GetMolecule(self) -> "OEChem::OEMolBase const &":
        """GetMolecule(OETautomerMolFunction self) -> OEMolBase"""
        return _oequacpac.OETautomerMolFunction_GetMolecule(self)

    def __disown__(self):
        self.this.disown()
        _oequacpac.disown_OETautomerMolFunction(self)
        return weakref_proxy(self)
OETautomerMolFunction_swigregister = _oequacpac.OETautomerMolFunction_swigregister
OETautomerMolFunction_swigregister(OETautomerMolFunction)


def OEEnumerateTautomers(*args) -> "unsigned int":
    """
    OEEnumerateTautomers(OEMolBase mol, OETautomerOptions tautomerOptions) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEEnumerateTautomers(OEMCMolBase mol, OETautomerOptions tautomerOptions) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
    OEEnumerateTautomers(OEMolBase mol, OEMolFunctionBase mfb, unsigned int allflag=0, bool ch3flag=False, bool saveStereo=False, float maxTime=120) -> unsigned int
    OEEnumerateTautomers(OEMolBase mol, OEMolFunctionBase mfb, unsigned int allflag=0, bool ch3flag=False, bool saveStereo=False) -> unsigned int
    OEEnumerateTautomers(OEMolBase mol, OEMolFunctionBase mfb, unsigned int allflag=0, bool ch3flag=False) -> unsigned int
    OEEnumerateTautomers(OEMolBase mol, OEMolFunctionBase mfb, unsigned int allflag=0) -> unsigned int
    OEEnumerateTautomers(OEMolBase mol, OEMolFunctionBase mfb) -> unsigned int
    """
    return _oequacpac.OEEnumerateTautomers(*args)

def OEGetChargeTypeName(chargeType: 'unsigned int') -> "char const *":
    """OEGetChargeTypeName(unsigned int chargeType) -> char const *"""
    return _oequacpac.OEGetChargeTypeName(chargeType)

def OEAssignPartialCharges(*args) -> "bool":
    """
    OEAssignPartialCharges(OEMolBase mol, unsigned int method, bool noHydrogen=False, bool debug=False, bool epsilon2=False) -> bool
    OEAssignPartialCharges(OEMolBase mol, unsigned int method, bool noHydrogen=False, bool debug=False) -> bool
    OEAssignPartialCharges(OEMolBase mol, unsigned int method, bool noHydrogen=False) -> bool
    OEAssignPartialCharges(OEMolBase mol, unsigned int method) -> bool
    OEAssignPartialCharges(OEMolBase mol) -> bool
    OEAssignPartialCharges(OEMCMolBase mol, unsigned int method, bool noHydrogen=False, bool debug=False, bool epsilon2=False) -> bool
    OEAssignPartialCharges(OEMCMolBase mol, unsigned int method, bool noHydrogen=False, bool debug=False) -> bool
    OEAssignPartialCharges(OEMCMolBase mol, unsigned int method, bool noHydrogen=False) -> bool
    OEAssignPartialCharges(OEMCMolBase mol, unsigned int method) -> bool
    OEAssignPartialCharges(OEMCMolBase mol) -> bool
    """
    return _oequacpac.OEAssignPartialCharges(*args)
OE_OEQUACPAC_VERSION = _oequacpac.OE_OEQUACPAC_VERSION

def OEQuacPacGetRelease() -> "char const *":
    """OEQuacPacGetRelease() -> char const *"""
    return _oequacpac.OEQuacPacGetRelease()

def OEQuacPacGetVersion() -> "unsigned int":
    """OEQuacPacGetVersion() -> unsigned int"""
    return _oequacpac.OEQuacPacGetVersion()

def OEQuacPacGetArch() -> "char const *":
    """OEQuacPacGetArch() -> char const *"""
    return _oequacpac.OEQuacPacGetArch()

def OEQuacPacGetPlatform() -> "char const *":
    """OEQuacPacGetPlatform() -> char const *"""
    return _oequacpac.OEQuacPacGetPlatform()

def OEQuacPacIsLicensed(feature: 'char const *'=None, expdate: 'unsigned int *'=None) -> "bool":
    """
    OEQuacPacIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool
    OEQuacPacIsLicensed(char const * feature=None) -> bool
    OEQuacPacIsLicensed() -> bool
    """
    return _oequacpac.OEQuacPacIsLicensed(feature, expdate)

def OEQuacPacGetLicensee(*args) -> "std::string":
    """
    OEQuacPacGetLicensee(std::string & licensee) -> bool
    OEQuacPacGetLicensee() -> std::string
    """
    return _oequacpac.OEQuacPacGetLicensee(*args)

def OEQuacPacGetSite(*args) -> "std::string":
    """
    OEQuacPacGetSite(std::string & site) -> bool
    OEQuacPacGetSite() -> std::string
    """
    return _oequacpac.OEQuacPacGetSite(*args)
class OETyperMolFunction(OEMolFunctionBase):
    """Proxy of C++ OEProton::OETyperMolFunction 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, ofp: 'oemolostream', arom: 'bool', ct: 'bool'=False, max: 'unsigned int'=0):
        """
        __init__(OEProton::OETyperMolFunction self, oemolostream ofp, bool arom, bool ct=False, unsigned int max=0) -> OETyperMolFunction
        __init__(OEProton::OETyperMolFunction self, oemolostream ofp, bool arom, bool ct=False) -> OETyperMolFunction
        __init__(OEProton::OETyperMolFunction self, oemolostream ofp, bool arom) -> OETyperMolFunction
        """
        if self.__class__ == OETyperMolFunction:
            _self = None
        else:
            _self = self
        this = _oequacpac.new_OETyperMolFunction(_self, ofp, arom, ct, max)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Reset(self) -> "void":
        """Reset(OETyperMolFunction self)"""
        return _oequacpac.OETyperMolFunction_Reset(self)


    def __call__(self, inmol: 'OEMolBase') -> "bool":
        """__call__(OETyperMolFunction self, OEMolBase inmol) -> bool"""
        return _oequacpac.OETyperMolFunction___call__(self, inmol)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEMolBase,bool,true,false >::base_type *":
        """CreateCopy(OETyperMolFunction self) -> OEMolFunctionBase"""
        return _oequacpac.OETyperMolFunction_CreateCopy(self)

    __swig_destroy__ = _oequacpac.delete_OETyperMolFunction
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oequacpac.disown_OETyperMolFunction(self)
        return weakref_proxy(self)
OETyperMolFunction_swigregister = _oequacpac.OETyperMolFunction_swigregister
OETyperMolFunction_swigregister(OETyperMolFunction)


def OEEnumerateFormalCharges(*args) -> "unsigned int":
    """
    OEEnumerateFormalCharges(OEMolBase mol, OEFormalChargeOptions formalChargeOptions) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEEnumerateFormalCharges(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEEnumerateFormalCharges(OEMCMolBase mol, OEFormalChargeOptions formalChargeOptions) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEEnumerateFormalCharges(OEMCMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEEnumerateFormalCharges(OEMolBase mol, OEMolFunctionBase mfb, bool verbose=False) -> unsigned int
    OEEnumerateFormalCharges(OEMolBase mol, OEMolFunctionBase mfb) -> unsigned int
    """
    return _oequacpac.OEEnumerateFormalCharges(*args)
class OEChargeEngineBase(object):
    """Proxy of C++ OEProton::OEChargeEngineBase 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__ = _oequacpac.delete_OEChargeEngineBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEChargeEngineBase self) -> OEChargeEngineBase"""
        return _oequacpac.OEChargeEngineBase_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEChargeEngineBase self) -> unsigned int"""
        return _oequacpac.OEChargeEngineBase_GetChargeType(self)


    def __eq__(self, rhs: 'OEChargeEngineBase') -> "bool":
        """__eq__(OEChargeEngineBase self, OEChargeEngineBase rhs) -> bool"""
        return _oequacpac.OEChargeEngineBase___eq__(self, rhs)


    def __ne__(self, rhs: 'OEChargeEngineBase') -> "bool":
        """__ne__(OEChargeEngineBase self, OEChargeEngineBase rhs) -> bool"""
        return _oequacpac.OEChargeEngineBase___ne__(self, rhs)


    def GetName(self) -> "std::string":
        """GetName(OEChargeEngineBase self) -> std::string"""
        return _oequacpac.OEChargeEngineBase_GetName(self)


    def GetRequirements(self) -> "unsigned int":
        """GetRequirements(OEChargeEngineBase self) -> unsigned int"""
        return _oequacpac.OEChargeEngineBase_GetRequirements(self)


    def GetRepairRequestedHint(self) -> "bool":
        """GetRepairRequestedHint(OEChargeEngineBase self) -> bool"""
        return _oequacpac.OEChargeEngineBase_GetRepairRequestedHint(self)


    def GetExpectValidMol(self) -> "bool":
        """GetExpectValidMol(OEChargeEngineBase self) -> bool"""
        return _oequacpac.OEChargeEngineBase_GetExpectValidMol(self)


    def SetRepairRequestedHint(self, repair: 'bool'=True) -> "void":
        """
        SetRepairRequestedHint(OEChargeEngineBase self, bool repair=True)
        SetRepairRequestedHint(OEChargeEngineBase self)
        """
        return _oequacpac.OEChargeEngineBase_SetRepairRequestedHint(self, repair)


    def SetExpectValidMol(self, expect: 'bool'=True) -> "void":
        """
        SetExpectValidMol(OEChargeEngineBase self, bool expect=True)
        SetExpectValidMol(OEChargeEngineBase self)
        """
        return _oequacpac.OEChargeEngineBase_SetExpectValidMol(self, expect)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEChargeEngineBase self, OEMolBase mol) -> bool
        IsValid(OEChargeEngineBase self, OEMCMolBase mcMol) -> bool
        IsValid(OEChargeEngineBase self, OEDesignUnit du) -> bool
        IsValid(OEChargeEngineBase self, OEDesignUnit du) -> bool
        """
        return _oequacpac.OEChargeEngineBase_IsValid(self, *args)


    def ApplyCharges(self, du: 'OEDesignUnit') -> "bool":
        """ApplyCharges(OEChargeEngineBase self, OEDesignUnit du) -> bool"""
        return _oequacpac.OEChargeEngineBase_ApplyCharges(self, du)


    def CheckCharges(self, *args) -> "bool":
        """
        CheckCharges(OEChargeEngineBase self, OEMolBase mol) -> bool
        CheckCharges(OEChargeEngineBase self, OEMCMolBase mcMol) -> bool
        CheckCharges(OEChargeEngineBase self, OEDesignUnit du) -> bool
        """
        return _oequacpac.OEChargeEngineBase_CheckCharges(self, *args)


    def TransferCharge(self, dstAtom: 'OEAtomBase', srcAtom: 'OEAtomBase') -> "bool":
        """TransferCharge(OEChargeEngineBase self, OEAtomBase dstAtom, OEAtomBase srcAtom) -> bool"""
        return _oequacpac.OEChargeEngineBase_TransferCharge(self, dstAtom, srcAtom)

OEChargeEngineBase_swigregister = _oequacpac.OEChargeEngineBase_swigregister
OEChargeEngineBase_swigregister(OEChargeEngineBase)
cvar = _oequacpac.cvar
Nothing = cvar.Nothing
ResPerceived = cvar.ResPerceived
BondedResidues = cvar.BondedResidues
StandardResidues = cvar.StandardResidues
AltersResidueName = cvar.AltersResidueName
PDBOrder = cvar.PDBOrder
ExplicitHydrogens = cvar.ExplicitHydrogens
SetsAromaticity = cvar.SetsAromaticity
SetsType = cvar.SetsType
Parameters = cvar.Parameters
Coords3D = cvar.Coords3D
Compact = cvar.Compact
SizeWithinLimits = cvar.SizeWithinLimits
MultiConfOnly = cvar.MultiConfOnly
Precharged = cvar.Precharged
MolComplexPrep = cvar.MolComplexPrep
ReturnSelectedConfs = cvar.ReturnSelectedConfs

class OEChargeEngineNoOp(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEChargeEngineNoOp 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__(OEProton::OEChargeEngineNoOp self) -> OEChargeEngineNoOp"""
        this = _oequacpac.new_OEChargeEngineNoOp()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEChargeEngineNoOp
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEChargeEngineNoOp self) -> OEChargeEngineBase"""
        return _oequacpac.OEChargeEngineNoOp_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEChargeEngineNoOp self) -> unsigned int"""
        return _oequacpac.OEChargeEngineNoOp_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEChargeEngineNoOp self, OEMolBase mol) -> bool"""
        return _oequacpac.OEChargeEngineNoOp_IsValid(self, mol)


    def CheckCharges(self, mol: 'OEMolBase') -> "bool":
        """CheckCharges(OEChargeEngineNoOp self, OEMolBase mol) -> bool"""
        return _oequacpac.OEChargeEngineNoOp_CheckCharges(self, mol)

OEChargeEngineNoOp_swigregister = _oequacpac.OEChargeEngineNoOp_swigregister
OEChargeEngineNoOp_swigregister(OEChargeEngineNoOp)

class OEClearCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEClearCharges 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__(OEProton::OEClearCharges self) -> OEClearCharges"""
        this = _oequacpac.new_OEClearCharges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEClearCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEClearCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEClearCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEClearCharges self) -> unsigned int"""
        return _oequacpac.OEClearCharges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEClearCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEClearCharges_IsValid(self, mol)


    def CheckCharges(self, mol: 'OEMolBase') -> "bool":
        """CheckCharges(OEClearCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEClearCharges_CheckCharges(self, mol)

OEClearCharges_swigregister = _oequacpac.OEClearCharges_swigregister
OEClearCharges_swigregister(OEClearCharges)

class OEFormalToPartialCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEFormalToPartialCharges 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__(OEProton::OEFormalToPartialCharges self) -> OEFormalToPartialCharges"""
        this = _oequacpac.new_OEFormalToPartialCharges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEFormalToPartialCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEFormalToPartialCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEFormalToPartialCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEFormalToPartialCharges self) -> unsigned int"""
        return _oequacpac.OEFormalToPartialCharges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEFormalToPartialCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEFormalToPartialCharges_IsValid(self, mol)

OEFormalToPartialCharges_swigregister = _oequacpac.OEFormalToPartialCharges_swigregister
OEFormalToPartialCharges_swigregister(OEFormalToPartialCharges)

class OEInitialCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEInitialCharges 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__(OEProton::OEInitialCharges self) -> OEInitialCharges"""
        this = _oequacpac.new_OEInitialCharges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEInitialCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEInitialCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEInitialCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEInitialCharges self) -> unsigned int"""
        return _oequacpac.OEInitialCharges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEInitialCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEInitialCharges_IsValid(self, mol)

OEInitialCharges_swigregister = _oequacpac.OEInitialCharges_swigregister
OEInitialCharges_swigregister(OEInitialCharges)

class OEGasteigerCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEGasteigerCharges 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__(OEProton::OEGasteigerCharges self) -> OEGasteigerCharges"""
        this = _oequacpac.new_OEGasteigerCharges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEGasteigerCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEGasteigerCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEGasteigerCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEGasteigerCharges self) -> unsigned int"""
        return _oequacpac.OEGasteigerCharges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEGasteigerCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEGasteigerCharges_IsValid(self, mol)

OEGasteigerCharges_swigregister = _oequacpac.OEGasteigerCharges_swigregister
OEGasteigerCharges_swigregister(OEGasteigerCharges)

class OEMMFF94Charges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEMMFF94Charges 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__(OEProton::OEMMFF94Charges self) -> OEMMFF94Charges"""
        this = _oequacpac.new_OEMMFF94Charges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEMMFF94Charges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEMMFF94Charges self) -> OEChargeEngineBase"""
        return _oequacpac.OEMMFF94Charges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEMMFF94Charges self) -> unsigned int"""
        return _oequacpac.OEMMFF94Charges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEMMFF94Charges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEMMFF94Charges_IsValid(self, mol)

OEMMFF94Charges_swigregister = _oequacpac.OEMMFF94Charges_swigregister
OEMMFF94Charges_swigregister(OEMMFF94Charges)

class OEAM1Charges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEAM1Charges 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, optimize: 'bool'=True, symmetrize: 'bool'=False, maxAtoms: 'unsigned int'=300):
        """
        __init__(OEProton::OEAM1Charges self, bool optimize=True, bool symmetrize=False, unsigned int maxAtoms=300) -> OEAM1Charges
        __init__(OEProton::OEAM1Charges self, bool optimize=True, bool symmetrize=False) -> OEAM1Charges
        __init__(OEProton::OEAM1Charges self, bool optimize=True) -> OEAM1Charges
        __init__(OEProton::OEAM1Charges self) -> OEAM1Charges
        """
        this = _oequacpac.new_OEAM1Charges(optimize, symmetrize, maxAtoms)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEAM1Charges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEAM1Charges self) -> OEChargeEngineBase"""
        return _oequacpac.OEAM1Charges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEAM1Charges self) -> unsigned int"""
        return _oequacpac.OEAM1Charges_GetChargeType(self)


    def GetOptimize(self) -> "bool":
        """GetOptimize(OEAM1Charges self) -> bool"""
        return _oequacpac.OEAM1Charges_GetOptimize(self)


    def GetSymmetrize(self) -> "bool":
        """GetSymmetrize(OEAM1Charges self) -> bool"""
        return _oequacpac.OEAM1Charges_GetSymmetrize(self)


    def GetSizeLimit(self) -> "unsigned int":
        """GetSizeLimit(OEAM1Charges self) -> unsigned int"""
        return _oequacpac.OEAM1Charges_GetSizeLimit(self)


    def SetOptimize(self, optimize: 'bool'=True) -> "void":
        """
        SetOptimize(OEAM1Charges self, bool optimize=True)
        SetOptimize(OEAM1Charges self)
        """
        return _oequacpac.OEAM1Charges_SetOptimize(self, optimize)


    def SetSymmetrize(self, symmetrize: 'bool'=True) -> "void":
        """
        SetSymmetrize(OEAM1Charges self, bool symmetrize=True)
        SetSymmetrize(OEAM1Charges self)
        """
        return _oequacpac.OEAM1Charges_SetSymmetrize(self, symmetrize)


    def SetSizeLimit(self, maxAtoms: 'unsigned int') -> "void":
        """SetSizeLimit(OEAM1Charges self, unsigned int maxAtoms)"""
        return _oequacpac.OEAM1Charges_SetSizeLimit(self, maxAtoms)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEAM1Charges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEAM1Charges_IsValid(self, mol)

OEAM1Charges_swigregister = _oequacpac.OEAM1Charges_swigregister
OEAM1Charges_swigregister(OEAM1Charges)

class OEAM1BCCCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEAM1BCCCharges 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, optimize: 'bool'=True, symmetrize: 'bool'=True, permissiveBCCs: 'bool'=False, maxAtoms: 'unsigned int'=300):
        """
        __init__(OEProton::OEAM1BCCCharges self, bool optimize=True, bool symmetrize=True, bool permissiveBCCs=False, unsigned int maxAtoms=300) -> OEAM1BCCCharges
        __init__(OEProton::OEAM1BCCCharges self, bool optimize=True, bool symmetrize=True, bool permissiveBCCs=False) -> OEAM1BCCCharges
        __init__(OEProton::OEAM1BCCCharges self, bool optimize=True, bool symmetrize=True) -> OEAM1BCCCharges
        __init__(OEProton::OEAM1BCCCharges self, bool optimize=True) -> OEAM1BCCCharges
        __init__(OEProton::OEAM1BCCCharges self) -> OEAM1BCCCharges
        """
        this = _oequacpac.new_OEAM1BCCCharges(optimize, symmetrize, permissiveBCCs, maxAtoms)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEAM1BCCCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEAM1BCCCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEAM1BCCCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEAM1BCCCharges self) -> unsigned int"""
        return _oequacpac.OEAM1BCCCharges_GetChargeType(self)


    def GetOptimize(self) -> "bool":
        """GetOptimize(OEAM1BCCCharges self) -> bool"""
        return _oequacpac.OEAM1BCCCharges_GetOptimize(self)


    def GetSymmetrize(self) -> "bool":
        """GetSymmetrize(OEAM1BCCCharges self) -> bool"""
        return _oequacpac.OEAM1BCCCharges_GetSymmetrize(self)


    def GetPermissiveBCCs(self) -> "bool":
        """GetPermissiveBCCs(OEAM1BCCCharges self) -> bool"""
        return _oequacpac.OEAM1BCCCharges_GetPermissiveBCCs(self)


    def GetSizeLimit(self) -> "unsigned int":
        """GetSizeLimit(OEAM1BCCCharges self) -> unsigned int"""
        return _oequacpac.OEAM1BCCCharges_GetSizeLimit(self)


    def SetOptimize(self, optimize: 'bool'=True) -> "void":
        """
        SetOptimize(OEAM1BCCCharges self, bool optimize=True)
        SetOptimize(OEAM1BCCCharges self)
        """
        return _oequacpac.OEAM1BCCCharges_SetOptimize(self, optimize)


    def SetSymmetrize(self, symmetrize: 'bool'=True) -> "void":
        """
        SetSymmetrize(OEAM1BCCCharges self, bool symmetrize=True)
        SetSymmetrize(OEAM1BCCCharges self)
        """
        return _oequacpac.OEAM1BCCCharges_SetSymmetrize(self, symmetrize)


    def SetPermissiveBCCs(self, permissive: 'bool'=True) -> "void":
        """
        SetPermissiveBCCs(OEAM1BCCCharges self, bool permissive=True)
        SetPermissiveBCCs(OEAM1BCCCharges self)
        """
        return _oequacpac.OEAM1BCCCharges_SetPermissiveBCCs(self, permissive)


    def SetSizeLimit(self, maxAtoms: 'unsigned int') -> "void":
        """SetSizeLimit(OEAM1BCCCharges self, unsigned int maxAtoms)"""
        return _oequacpac.OEAM1BCCCharges_SetSizeLimit(self, maxAtoms)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEAM1BCCCharges self, OEMolBase mol) -> bool
        IsValid(OEAM1BCCCharges self, OEMCMolBase mcMol) -> bool
        """
        return _oequacpac.OEAM1BCCCharges_IsValid(self, *args)

OEAM1BCCCharges_swigregister = _oequacpac.OEAM1BCCCharges_swigregister
OEAM1BCCCharges_swigregister(OEAM1BCCCharges)

class OEAmberFF94Charges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEAmberFF94Charges 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__(OEProton::OEAmberFF94Charges self) -> OEAmberFF94Charges"""
        this = _oequacpac.new_OEAmberFF94Charges()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OEAmberFF94Charges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEAmberFF94Charges self) -> OEChargeEngineBase"""
        return _oequacpac.OEAmberFF94Charges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEAmberFF94Charges self) -> unsigned int"""
        return _oequacpac.OEAmberFF94Charges_GetChargeType(self)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OEAmberFF94Charges self, OEMolBase mol) -> bool"""
        return _oequacpac.OEAmberFF94Charges_IsValid(self, mol)

OEAmberFF94Charges_swigregister = _oequacpac.OEAmberFF94Charges_swigregister
OEAmberFF94Charges_swigregister(OEAmberFF94Charges)

class OECombineChargeEngines(OEChargeEngineBase):
    """Proxy of C++ OEProton::OECombineChargeEngines 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__ = _oequacpac.delete_OECombineChargeEngines
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEProton::OECombineChargeEngines self, OEChargeEngineBase preChargeEngine, OEChargeEngineBase adjustmentEngine) -> OECombineChargeEngines
        __init__(OEProton::OECombineChargeEngines self, OECombineChargeEngines rhs) -> OECombineChargeEngines
        """
        this = _oequacpac.new_OECombineChargeEngines(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OECombineChargeEngines self) -> OEChargeEngineBase"""
        return _oequacpac.OECombineChargeEngines_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OECombineChargeEngines self) -> unsigned int"""
        return _oequacpac.OECombineChargeEngines_GetChargeType(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OECombineChargeEngines self, OEMolBase mol) -> bool
        IsValid(OECombineChargeEngines self, OEMCMolBase mcMol) -> bool
        """
        return _oequacpac.OECombineChargeEngines_IsValid(self, *args)


    def CheckCharges(self, *args) -> "bool":
        """
        CheckCharges(OECombineChargeEngines self, OEMolBase mol) -> bool
        CheckCharges(OECombineChargeEngines self, OEMCMolBase mcMol) -> bool
        """
        return _oequacpac.OECombineChargeEngines_CheckCharges(self, *args)


    def TransferCharge(self, dstAtom: 'OEAtomBase', srcAtom: 'OEAtomBase') -> "bool":
        """TransferCharge(OECombineChargeEngines self, OEAtomBase dstAtom, OEAtomBase srcAtom) -> bool"""
        return _oequacpac.OECombineChargeEngines_TransferCharge(self, dstAtom, srcAtom)

OECombineChargeEngines_swigregister = _oequacpac.OECombineChargeEngines_swigregister
OECombineChargeEngines_swigregister(OECombineChargeEngines)

class OEELFCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEELFCharges 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__ = _oequacpac.delete_OEELFCharges
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEProton::OEELFCharges self, OEChargeEngineBase chargeEngine, unsigned int limit=10, double percentage=2.0, bool selectedConfs=False) -> OEELFCharges
        __init__(OEProton::OEELFCharges self, OEChargeEngineBase chargeEngine, unsigned int limit=10, double percentage=2.0) -> OEELFCharges
        __init__(OEProton::OEELFCharges self, OEChargeEngineBase chargeEngine, unsigned int limit=10) -> OEELFCharges
        __init__(OEProton::OEELFCharges self, OEChargeEngineBase chargeEngine) -> OEELFCharges
        __init__(OEProton::OEELFCharges self, OEELFCharges rhs) -> OEELFCharges
        """
        this = _oequacpac.new_OEELFCharges(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEELFCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEELFCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEELFCharges self) -> unsigned int"""
        return _oequacpac.OEELFCharges_GetChargeType(self)


    def GetLimit(self) -> "unsigned int":
        """GetLimit(OEELFCharges self) -> unsigned int"""
        return _oequacpac.OEELFCharges_GetLimit(self)


    def GetPercentage(self) -> "double":
        """GetPercentage(OEELFCharges self) -> double"""
        return _oequacpac.OEELFCharges_GetPercentage(self)


    def GetReturnSelectedConfs(self) -> "bool":
        """GetReturnSelectedConfs(OEELFCharges self) -> bool"""
        return _oequacpac.OEELFCharges_GetReturnSelectedConfs(self)


    def SetLimit(self, limit: 'unsigned int') -> "void":
        """SetLimit(OEELFCharges self, unsigned int limit)"""
        return _oequacpac.OEELFCharges_SetLimit(self, limit)


    def SetPercentage(self, pct: 'double') -> "void":
        """SetPercentage(OEELFCharges self, double pct)"""
        return _oequacpac.OEELFCharges_SetPercentage(self, pct)


    def SetReturnSelectedConfs(self, selected: 'bool'=True) -> "void":
        """
        SetReturnSelectedConfs(OEELFCharges self, bool selected=True)
        SetReturnSelectedConfs(OEELFCharges self)
        """
        return _oequacpac.OEELFCharges_SetReturnSelectedConfs(self, selected)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEELFCharges self, OEMolBase mol) -> bool
        IsValid(OEELFCharges self, OEMCMolBase mcMol) -> bool
        """
        return _oequacpac.OEELFCharges_IsValid(self, *args)


    def CheckCharges(self, *args) -> "bool":
        """
        CheckCharges(OEELFCharges self, OEMolBase mol) -> bool
        CheckCharges(OEELFCharges self, OEMCMolBase mcMol) -> bool
        """
        return _oequacpac.OEELFCharges_CheckCharges(self, *args)


    def TransferCharge(self, dstAtom: 'OEAtomBase', srcAtom: 'OEAtomBase') -> "bool":
        """TransferCharge(OEELFCharges self, OEAtomBase dstAtom, OEAtomBase srcAtom) -> bool"""
        return _oequacpac.OEELFCharges_TransferCharge(self, dstAtom, srcAtom)

OEELFCharges_swigregister = _oequacpac.OEELFCharges_swigregister
OEELFCharges_swigregister(OEELFCharges)

class OEAM1BCCELF10Charges(OEELFCharges):
    """Proxy of C++ OEProton::OEAM1BCCELF10Charges 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__ = _oequacpac.delete_OEAM1BCCELF10Charges
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEProton::OEAM1BCCELF10Charges self) -> OEAM1BCCELF10Charges
        __init__(OEProton::OEAM1BCCELF10Charges self, OEAM1BCCELF10Charges rhs) -> OEAM1BCCELF10Charges
        """
        this = _oequacpac.new_OEAM1BCCELF10Charges(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEAM1BCCELF10Charges self) -> OEChargeEngineBase"""
        return _oequacpac.OEAM1BCCELF10Charges_CreateCopy(self)

OEAM1BCCELF10Charges_swigregister = _oequacpac.OEAM1BCCELF10Charges_swigregister
OEAM1BCCELF10Charges_swigregister(OEAM1BCCELF10Charges)

class OESpreadMetalCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OESpreadMetalCharges 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, chargeAliquot: 'double'=0.25, radiusMargin: 'double'=0.25, maxNbrDist: 'double'=6.0):
        """
        __init__(OEProton::OESpreadMetalCharges self, double chargeAliquot=0.25, double radiusMargin=0.25, double maxNbrDist=6.0) -> OESpreadMetalCharges
        __init__(OEProton::OESpreadMetalCharges self, double chargeAliquot=0.25, double radiusMargin=0.25) -> OESpreadMetalCharges
        __init__(OEProton::OESpreadMetalCharges self, double chargeAliquot=0.25) -> OESpreadMetalCharges
        __init__(OEProton::OESpreadMetalCharges self) -> OESpreadMetalCharges
        """
        this = _oequacpac.new_OESpreadMetalCharges(chargeAliquot, radiusMargin, maxNbrDist)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oequacpac.delete_OESpreadMetalCharges
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OESpreadMetalCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OESpreadMetalCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OESpreadMetalCharges self) -> unsigned int"""
        return _oequacpac.OESpreadMetalCharges_GetChargeType(self)


    def GetChargeAliquot(self) -> "double":
        """GetChargeAliquot(OESpreadMetalCharges self) -> double"""
        return _oequacpac.OESpreadMetalCharges_GetChargeAliquot(self)


    def GetMaxNbrDist(self) -> "double":
        """GetMaxNbrDist(OESpreadMetalCharges self) -> double"""
        return _oequacpac.OESpreadMetalCharges_GetMaxNbrDist(self)


    def GetRadiusMargin(self) -> "double":
        """GetRadiusMargin(OESpreadMetalCharges self) -> double"""
        return _oequacpac.OESpreadMetalCharges_GetRadiusMargin(self)


    def SetChargeAliquot(self, aliquot: 'double') -> "void":
        """SetChargeAliquot(OESpreadMetalCharges self, double aliquot)"""
        return _oequacpac.OESpreadMetalCharges_SetChargeAliquot(self, aliquot)


    def SetMaxNbrDist(self, distance: 'double') -> "void":
        """SetMaxNbrDist(OESpreadMetalCharges self, double distance)"""
        return _oequacpac.OESpreadMetalCharges_SetMaxNbrDist(self, distance)


    def SetRadiusMargin(self, distance: 'double') -> "void":
        """SetRadiusMargin(OESpreadMetalCharges self, double distance)"""
        return _oequacpac.OESpreadMetalCharges_SetRadiusMargin(self, distance)


    def IsValid(self, mol: 'OEMolBase') -> "bool":
        """IsValid(OESpreadMetalCharges self, OEMolBase mol) -> bool"""
        return _oequacpac.OESpreadMetalCharges_IsValid(self, mol)

OESpreadMetalCharges_swigregister = _oequacpac.OESpreadMetalCharges_swigregister
OESpreadMetalCharges_swigregister(OESpreadMetalCharges)

class OEDesignUnitCharges(OEChargeEngineBase):
    """Proxy of C++ OEProton::OEDesignUnitCharges 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__ = _oequacpac.delete_OEDesignUnitCharges
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEProton::OEDesignUnitCharges self) -> OEDesignUnitCharges
        __init__(OEProton::OEDesignUnitCharges self, OEDesignUnitCharges rhs) -> OEDesignUnitCharges
        """
        this = _oequacpac.new_OEDesignUnitCharges(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CreateCopy(self) -> "OEProton::OEChargeEngineBase *":
        """CreateCopy(OEDesignUnitCharges self) -> OEChargeEngineBase"""
        return _oequacpac.OEDesignUnitCharges_CreateCopy(self)


    def GetChargeType(self) -> "unsigned int":
        """GetChargeType(OEDesignUnitCharges self) -> unsigned int"""
        return _oequacpac.OEDesignUnitCharges_GetChargeType(self)


    def SetFallbackChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetFallbackChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetFallbackChargeEngine(self, chargeEngine)


    def SetProteinChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetProteinChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetProteinChargeEngine(self, chargeEngine)


    def SetProteinNonStandardChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetProteinNonStandardChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetProteinNonStandardChargeEngine(self, chargeEngine)


    def SetNucleicChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetNucleicChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetNucleicChargeEngine(self, chargeEngine)


    def SetLigandChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetLigandChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetLigandChargeEngine(self, chargeEngine)


    def SetCoFactorChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetCoFactorChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetCoFactorChargeEngine(self, chargeEngine)


    def SetSolventChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetSolventChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetSolventChargeEngine(self, chargeEngine)


    def SetMetalChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetMetalChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetMetalChargeEngine(self, chargeEngine)


    def SetOtherChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetOtherChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetOtherChargeEngine(self, chargeEngine)


    def SetFinalizationChargeEngine(self, chargeEngine: 'OEChargeEngineBase') -> "void":
        """SetFinalizationChargeEngine(OEDesignUnitCharges self, OEChargeEngineBase chargeEngine)"""
        return _oequacpac.OEDesignUnitCharges_SetFinalizationChargeEngine(self, chargeEngine)


    def UseSZMAPWaterModel(self, value: 'bool const') -> "void":
        """UseSZMAPWaterModel(OEDesignUnitCharges self, bool const value)"""
        return _oequacpac.OEDesignUnitCharges_UseSZMAPWaterModel(self, value)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEDesignUnitCharges self, OEMolBase mol) -> bool
        IsValid(OEDesignUnitCharges self, OEDesignUnit du) -> bool
        """
        return _oequacpac.OEDesignUnitCharges_IsValid(self, *args)


    def ApplyCharges(self, du: 'OEDesignUnit') -> "bool":
        """ApplyCharges(OEDesignUnitCharges self, OEDesignUnit du) -> bool"""
        return _oequacpac.OEDesignUnitCharges_ApplyCharges(self, du)


    def TransferCharge(self, dstAtom: 'OEAtomBase', srcAtom: 'OEAtomBase') -> "bool":
        """TransferCharge(OEDesignUnitCharges self, OEAtomBase dstAtom, OEAtomBase srcAtom) -> bool"""
        return _oequacpac.OEDesignUnitCharges_TransferCharge(self, dstAtom, srcAtom)

OEDesignUnitCharges_swigregister = _oequacpac.OEDesignUnitCharges_swigregister
OEDesignUnitCharges_swigregister(OEDesignUnitCharges)


def OEAssignCharges(*args) -> "bool":
    """
    OEAssignCharges(OEMolBase mol, OEChargeEngineBase chargeEngine) -> bool
    OEAssignCharges(OEMCMolBase mcMol, OEChargeEngineBase chargeEngine) -> bool
    """
    return _oequacpac.OEAssignCharges(*args)


