# CONFIDENTIAL. (C) 2022 Cadence Design Systems, Inc. (Cadence)
# All rights reserved.
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO CADENCE
# AND IS SUBJECT TO THE FULL PROTECTION OF COPYRIGHT AND TRADE SECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from Cadence 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 Cadence at eyesopen.com/legal if you have any questions
# about this warning.


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

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")


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

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

    _oesitehopper = libs.OEGetModule('_oesitehopper2031')
    return _oesitehopper

_oesitehopper = swig_import_helper()
del swig_import_helper

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


import weakref

import openeye.oechem as oechem
class OESiteHopperPatchOptions(oechem.OEOptions):
    r"""Proxy of C++ OESiteHopper::OESiteHopperPatchOptions class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperPatchOptions

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperPatchOptions self) -> OESiteHopperPatchOptions
        __init__(OESiteHopperPatchOptions self, OESiteHopperPatchOptions arg2) -> OESiteHopperPatchOptions
        """
        _oesitehopper.OESiteHopperPatchOptions_swiginit(self, _oesitehopper.new_OESiteHopperPatchOptions(*args))

    def CreateCopy(self) -> "OESiteHopper::OESiteHopperPatchOptions *":
        r"""CreateCopy(OESiteHopperPatchOptions self) -> OESiteHopperPatchOptions"""
        return _oesitehopper.OESiteHopperPatchOptions_CreateCopy(self)

    def GetSiteSize(self) -> "float":
        r"""GetSiteSize(OESiteHopperPatchOptions self) -> float"""
        return _oesitehopper.OESiteHopperPatchOptions_GetSiteSize(self)

    def SetSiteSize(self, value: "float const") -> "bool":
        r"""SetSiteSize(OESiteHopperPatchOptions self, float const value) -> bool"""
        return _oesitehopper.OESiteHopperPatchOptions_SetSiteSize(self, value)

    def GetResidueCutoff(self) -> "float":
        r"""GetResidueCutoff(OESiteHopperPatchOptions self) -> float"""
        return _oesitehopper.OESiteHopperPatchOptions_GetResidueCutoff(self)

    def SetResidueCutoff(self, value: "float const") -> "bool":
        r"""SetResidueCutoff(OESiteHopperPatchOptions self, float const value) -> bool"""
        return _oesitehopper.OESiteHopperPatchOptions_SetResidueCutoff(self, value)

    def GetSurfaceCutoff(self) -> "float":
        r"""GetSurfaceCutoff(OESiteHopperPatchOptions self) -> float"""
        return _oesitehopper.OESiteHopperPatchOptions_GetSurfaceCutoff(self)

    def SetSurfaceCutoff(self, value: "float const") -> "bool":
        r"""SetSurfaceCutoff(OESiteHopperPatchOptions self, float const value) -> bool"""
        return _oesitehopper.OESiteHopperPatchOptions_SetSurfaceCutoff(self, value)

    def GetScaleFactor(self) -> "unsigned int":
        r"""GetScaleFactor(OESiteHopperPatchOptions self) -> unsigned int"""
        return _oesitehopper.OESiteHopperPatchOptions_GetScaleFactor(self)

    def SetScaleFactor(self, value: "unsigned int const") -> "bool":
        r"""SetScaleFactor(OESiteHopperPatchOptions self, unsigned int const value) -> bool"""
        return _oesitehopper.OESiteHopperPatchOptions_SetScaleFactor(self, value)

    def GetUserStartsScaleFactor(self) -> "unsigned int":
        r"""GetUserStartsScaleFactor(OESiteHopperPatchOptions self) -> unsigned int"""
        return _oesitehopper.OESiteHopperPatchOptions_GetUserStartsScaleFactor(self)

    def SetUserStartsScaleFactor(self, value: "unsigned int const") -> "bool":
        r"""SetUserStartsScaleFactor(OESiteHopperPatchOptions self, unsigned int const value) -> bool"""
        return _oesitehopper.OESiteHopperPatchOptions_SetUserStartsScaleFactor(self, value)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const &":
        r"""GetColorForceField(OESiteHopperPatchOptions self) -> OEShape::OEColorForceField const &"""
        return _oesitehopper.OESiteHopperPatchOptions_GetColorForceField(self)

# Register OESiteHopperPatchOptions in _oesitehopper:
_oesitehopper.OESiteHopperPatchOptions_swigregister(OESiteHopperPatchOptions)

class OESiteHopperDatabaseOptions(oechem.OEOptions):
    r"""Proxy of C++ OESiteHopper::OESiteHopperDatabaseOptions class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperDatabaseOptions

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperDatabaseOptions self) -> OESiteHopperDatabaseOptions
        __init__(OESiteHopperDatabaseOptions self, OESiteHopperDatabaseOptions arg2) -> OESiteHopperDatabaseOptions
        """
        _oesitehopper.OESiteHopperDatabaseOptions_swiginit(self, _oesitehopper.new_OESiteHopperDatabaseOptions(*args))

    def CreateCopy(self) -> "OESiteHopper::OESiteHopperDatabaseOptions *":
        r"""CreateCopy(OESiteHopperDatabaseOptions self) -> OESiteHopperDatabaseOptions"""
        return _oesitehopper.OESiteHopperDatabaseOptions_CreateCopy(self)

    def SetPatchOptions(self, opts: "OESiteHopperPatchOptions") -> "void":
        r"""SetPatchOptions(OESiteHopperDatabaseOptions self, OESiteHopperPatchOptions opts)"""
        return _oesitehopper.OESiteHopperDatabaseOptions_SetPatchOptions(self, opts)

    def GetPatchOptions(self, *args) -> "OESiteHopper::OESiteHopperPatchOptions const &":
        r"""
        GetPatchOptions(OESiteHopperDatabaseOptions self) -> OESiteHopperPatchOptions
        GetPatchOptions(OESiteHopperDatabaseOptions self) -> OESiteHopperPatchOptions
        """
        return _oesitehopper.OESiteHopperDatabaseOptions_GetPatchOptions(self, *args)

# Register OESiteHopperDatabaseOptions in _oesitehopper:
_oesitehopper.OESiteHopperDatabaseOptions_swigregister(OESiteHopperDatabaseOptions)

class OESiteHopperDatabase(object):
    r"""Proxy of C++ OESiteHopper::OESiteHopperDatabase class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperDatabase

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperDatabase self) -> OESiteHopperDatabase
        __init__(OESiteHopperDatabase self, OESiteHopperDatabase arg2) -> OESiteHopperDatabase
        """
        _oesitehopper.OESiteHopperDatabase_swiginit(self, _oesitehopper.new_OESiteHopperDatabase(*args))

    def Open(self, *args) -> "bool":
        r"""Open(OESiteHopperDatabase self, std::string const & dbfile, unsigned int const mode, OESiteHopperDatabaseOptions opts=OESiteHopper::OESiteHopperDatabaseOptions()) -> bool"""
        return _oesitehopper.OESiteHopperDatabase_Open(self, *args)

    def Close(self) -> "void":
        r"""Close(OESiteHopperDatabase self)"""
        return _oesitehopper.OESiteHopperDatabase_Close(self)

    def AddDirectory(self, *args) -> "bool":
        r"""AddDirectory(OESiteHopperDatabase self, std::string const & path, unsigned int ncpu=0, OETracerBase tracer=OENoTracer) -> bool"""
        return _oesitehopper.OESiteHopperDatabase_AddDirectory(self, *args)

    def Add(self, *args) -> "unsigned int":
        r"""
        Add(OESiteHopperDatabase self, std::string const & filename) -> unsigned int
        Add(OESiteHopperDatabase self, OEDesignUnit du) -> unsigned int
        """
        return _oesitehopper.OESiteHopperDatabase_Add(self, *args)

    def IsValid(self):
      return _oesitehopper.OESiteHopperDatabase___nonzero__(self)



    def LogDatabaseInfo(self) -> "void":
        r"""LogDatabaseInfo(OESiteHopperDatabase self)"""
        return _oesitehopper.OESiteHopperDatabase_LogDatabaseInfo(self)

    def GetMaxMolIdx(self) -> "unsigned int":
        r"""GetMaxMolIdx(OESiteHopperDatabase self) -> unsigned int"""
        return _oesitehopper.OESiteHopperDatabase_GetMaxMolIdx(self)

    def GetMolecule(self, mol: "OEMolBase", idx: "unsigned int") -> "bool":
        r"""GetMolecule(OESiteHopperDatabase self, OEMolBase mol, unsigned int idx) -> bool"""
        return _oesitehopper.OESiteHopperDatabase_GetMolecule(self, mol, idx)

    def GetOptions(self) -> "OESiteHopper::OESiteHopperDatabaseOptions const &":
        r"""GetOptions(OESiteHopperDatabase self) -> OESiteHopperDatabaseOptions"""
        return _oesitehopper.OESiteHopperDatabase_GetOptions(self)

    def GetDesignUnit(self, du: "OEDesignUnit", idx: "unsigned int") -> "bool":
        r"""GetDesignUnit(OESiteHopperDatabase self, OEDesignUnit du, unsigned int idx) -> bool"""
        return _oesitehopper.OESiteHopperDatabase_GetDesignUnit(self, du, idx)

    def GetIDByTitle(self, title: "std::string const &") -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        r"""GetIDByTitle(OESiteHopperDatabase self, std::string const & title) -> OEUIntVector"""
        return _oesitehopper.OESiteHopperDatabase_GetIDByTitle(self, title)

    def GetSequenceInfo(self, seq: "std::vector< std::vector< std::string,std::allocator< std::string > >,std::allocator< std::vector< std::string,std::allocator< std::string > > > > &", idx: "unsigned int") -> "bool":
        r"""GetSequenceInfo(OESiteHopperDatabase self, std::vector< std::vector< std::string,std::allocator< std::string > >,std::allocator< std::vector< std::string,std::allocator< std::string > > > > & seq, unsigned int idx) -> bool"""
        return _oesitehopper.OESiteHopperDatabase_GetSequenceInfo(self, seq, idx)

    def GetTitle(self, idx: "unsigned int") -> "std::string":
        r"""GetTitle(OESiteHopperDatabase self, unsigned int idx) -> std::string"""
        return _oesitehopper.OESiteHopperDatabase_GetTitle(self, idx)

# Register OESiteHopperDatabase in _oesitehopper:
_oesitehopper.OESiteHopperDatabase_swigregister(OESiteHopperDatabase)
cvar = _oesitehopper.cvar
UNDEFINED = cvar.UNDEFINED
CREATE = cvar.CREATE
APPEND = cvar.APPEND
SEARCH = cvar.SEARCH
READONLY = cvar.READONLY
MAX = cvar.MAX


def OEMakePatchFromDesignUnit(*args) -> "bool":
    r"""
    OEMakePatchFromDesignUnit(OEMolBase patch, OEDesignUnit du, OESiteHopperPatchOptions opts=OESiteHopper::OESiteHopperPatchOptions()) -> bool
    OEMakePatchFromDesignUnit(OEMolBase patch, OESpicoli::OESurface & outSurface, OEDesignUnit du, OESiteHopperPatchOptions opts=OESiteHopper::OESiteHopperPatchOptions()) -> bool
    """
    return _oesitehopper.OEMakePatchFromDesignUnit(*args)

def OEAddPatchSurface(*args) -> "bool":
    r"""OEAddPatchSurface(OEDesignUnit du, OESiteHopperPatchOptions opts=OESiteHopper::OESiteHopperPatchOptions()) -> bool"""
    return _oesitehopper.OEAddPatchSurface(*args)

def OEHasPatchSurface(du: "OEDesignUnit") -> "bool":
    r"""OEHasPatchSurface(OEDesignUnit du) -> bool"""
    return _oesitehopper.OEHasPatchSurface(du)

def OEGetPatchSurface(arg1: "OESpicoli::OESurface &", du: "OEDesignUnit") -> "bool":
    r"""OEGetPatchSurface(OESpicoli::OESurface & arg1, OEDesignUnit du) -> bool"""
    return _oesitehopper.OEGetPatchSurface(arg1, du)

def OESetPatchSurface(du: "OEDesignUnit", surface: "OESpicoli::OESurface const &") -> "bool":
    r"""OESetPatchSurface(OEDesignUnit du, OESpicoli::OESurface const & surface) -> bool"""
    return _oesitehopper.OESetPatchSurface(du, surface)
OESiteHopperDatabaseMode_UNDEFINED = _oesitehopper.OESiteHopperDatabaseMode_UNDEFINED

OESiteHopperDatabaseMode_CREATE = _oesitehopper.OESiteHopperDatabaseMode_CREATE

OESiteHopperDatabaseMode_APPEND = _oesitehopper.OESiteHopperDatabaseMode_APPEND

OESiteHopperDatabaseMode_SEARCH = _oesitehopper.OESiteHopperDatabaseMode_SEARCH


OESiteHopperDatabaseMode_READONLY = OESiteHopperDatabaseMode_SEARCH

OESiteHopperDatabaseMode_MAX = _oesitehopper.OESiteHopperDatabaseMode_MAX


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    r"""
    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(OESphere arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEReceptorProteinConstraint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEReceptorConstraintFeature 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(OESiteHopperResults const & arg, bool owned) -> PyObject *
    """
    return _oesitehopper.GetSWIG_NewPointerObj(*args)
class OESiteHopperSearchBase(object):
    r"""Proxy of C++ OESiteHopper::OESiteHopperSearchBase class."""

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

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

    def Search(self, *args) -> "OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > *":
        r"""Search(OESiteHopperSearchBase self, OEDesignUnit query, OESiteHopperSearchOptions const & options=OESiteHopperSearchOptions(), OETracerBase tracer=NullTracer) -> OESystem::OEIterBase< OESiteHopper::OESiteHopperScore >"""
        return _oesitehopper.OESiteHopperSearchBase_Search(self, *args)

    def IsValid(self):
      return _oesitehopper.OESiteHopperSearchBase___nonzero__(self)



# Register OESiteHopperSearchBase in _oesitehopper:
_oesitehopper.OESiteHopperSearchBase_swigregister(OESiteHopperSearchBase)


def ConvertFileToPatch(patch: "OEMolBase", ifs: "oeistream") -> "bool":
    r"""ConvertFileToPatch(OEMolBase patch, oeistream ifs) -> bool"""
    return _oesitehopper.ConvertFileToPatch(patch, ifs)

def OESiteHopperIsGPUReady() -> "bool":
    r"""OESiteHopperIsGPUReady() -> bool"""
    return _oesitehopper.OESiteHopperIsGPUReady()
class OESiteHopperResultsIter(object):
    r"""Proxy of C++ OESystem::OEIter< OESiteHopper::OESiteHopperResults > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperResultsIter self) -> OESiteHopperResultsIter
        __init__(OESiteHopperResultsIter self, OESiteHopperResultsIter rhs) -> OESiteHopperResultsIter
        __init__(OESiteHopperResultsIter self, OESystem::OEIterBase< OESiteHopper::OESiteHopperResults > * rhs) -> OESiteHopperResultsIter
        __init__(OESiteHopperResultsIter self, OESystem::OEIterBase< OESystem::OEIter< OESiteHopper::OESiteHopperResults >::NonConstA > * rhs) -> OESiteHopperResultsIter
        """
        _oesitehopper.OESiteHopperResultsIter_swiginit(self, _oesitehopper.new_OESiteHopperResultsIter(*args))
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperResultsIter

    def Copy(self) -> "OESystem::OEIterBase< OESiteHopper::OESiteHopperResults > *":
        r"""Copy(OESiteHopperResultsIter self) -> OESystem::OEIterBase< OESiteHopper::OESiteHopperResults > *"""
        return _oesitehopper.OESiteHopperResultsIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OESiteHopperResultsIter self, OESystem::OEIterBase< OESiteHopper::OESiteHopperResults > * ib)
        Push(OESiteHopperResultsIter self, OESiteHopperResultsIter iter)
        """
        return _oesitehopper.OESiteHopperResultsIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OESiteHopper::OESiteHopperResults,OESiteHopper::OESiteHopperResults > const &") -> "void":
        r"""Sort(OESiteHopperResultsIter self, OESystem::OEBinaryPredicate< OESiteHopper::OESiteHopperResults,OESiteHopper::OESiteHopperResults > const & sort_criterion)"""
        return _oesitehopper.OESiteHopperResultsIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OESiteHopper::OESiteHopperResults > &":
        r"""ToFirst(OESiteHopperResultsIter self) -> OESiteHopperResultsIter"""
        return _oesitehopper.OESiteHopperResultsIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OESiteHopper::OESiteHopperResults > &":
        r"""ToLast(OESiteHopperResultsIter self) -> OESiteHopperResultsIter"""
        return _oesitehopper.OESiteHopperResultsIter_ToLast(self)

    def __ref__(self) -> "OESiteHopper::OESiteHopperResults &":
        r"""__ref__(OESiteHopperResultsIter self) -> OESiteHopperResults"""
        return _oesitehopper.OESiteHopperResultsIter___ref__(self)

    def IsValid(self):
      return _oesitehopper.OESiteHopperResultsIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        r"""next(OESiteHopperResultsIter self) -> PyObject *"""
        return _oesitehopper.OESiteHopperResultsIter_next(self)

    def Target(self) -> "OESiteHopper::OESiteHopperResults &":
        r"""Target(OESiteHopperResultsIter self) -> OESiteHopperResults"""
        return _oesitehopper.OESiteHopperResultsIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OESiteHopper::OESiteHopperResults > &":
        r"""
        Next(OESiteHopperResultsIter self) -> OESiteHopperResultsIter
        Next(OESiteHopperResultsIter self, int i) -> OESiteHopperResultsIter
        """
        return _oesitehopper.OESiteHopperResultsIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OESiteHopper::OESiteHopperResults > &":
        r"""
        Prev(OESiteHopperResultsIter self) -> OESiteHopperResultsIter
        Prev(OESiteHopperResultsIter self, int i) -> OESiteHopperResultsIter
        """
        return _oesitehopper.OESiteHopperResultsIter_Prev(self, *args)

# Register OESiteHopperResultsIter in _oesitehopper:
_oesitehopper.OESiteHopperResultsIter_swigregister(OESiteHopperResultsIter)

class OESiteHopperScoreIter(object):
    r"""Proxy of C++ OESystem::OEIter< OESiteHopper::OESiteHopperScore > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperScoreIter self) -> OESiteHopperScoreIter
        __init__(OESiteHopperScoreIter self, OESiteHopperScoreIter rhs) -> OESiteHopperScoreIter
        __init__(OESiteHopperScoreIter self, OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > * rhs) -> OESiteHopperScoreIter
        __init__(OESiteHopperScoreIter self, OESystem::OEIterBase< OESystem::OEIter< OESiteHopper::OESiteHopperScore >::NonConstA > * rhs) -> OESiteHopperScoreIter
        """
        _oesitehopper.OESiteHopperScoreIter_swiginit(self, _oesitehopper.new_OESiteHopperScoreIter(*args))
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperScoreIter

    def Copy(self) -> "OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > *":
        r"""Copy(OESiteHopperScoreIter self) -> OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > *"""
        return _oesitehopper.OESiteHopperScoreIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OESiteHopperScoreIter self, OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > * ib)
        Push(OESiteHopperScoreIter self, OESiteHopperScoreIter iter)
        """
        return _oesitehopper.OESiteHopperScoreIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OESiteHopper::OESiteHopperScore,OESiteHopper::OESiteHopperScore > const &") -> "void":
        r"""Sort(OESiteHopperScoreIter self, OESystem::OEBinaryPredicate< OESiteHopper::OESiteHopperScore,OESiteHopper::OESiteHopperScore > const & sort_criterion)"""
        return _oesitehopper.OESiteHopperScoreIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OESiteHopper::OESiteHopperScore > &":
        r"""ToFirst(OESiteHopperScoreIter self) -> OESiteHopperScoreIter"""
        return _oesitehopper.OESiteHopperScoreIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OESiteHopper::OESiteHopperScore > &":
        r"""ToLast(OESiteHopperScoreIter self) -> OESiteHopperScoreIter"""
        return _oesitehopper.OESiteHopperScoreIter_ToLast(self)

    def __ref__(self) -> "OESiteHopper::OESiteHopperScore &":
        r"""__ref__(OESiteHopperScoreIter self) -> OESiteHopperScore"""
        return _oesitehopper.OESiteHopperScoreIter___ref__(self)

    def IsValid(self):
      return _oesitehopper.OESiteHopperScoreIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        r"""next(OESiteHopperScoreIter self) -> PyObject *"""
        return _oesitehopper.OESiteHopperScoreIter_next(self)

    def Target(self) -> "OESiteHopper::OESiteHopperScore &":
        r"""Target(OESiteHopperScoreIter self) -> OESiteHopperScore"""
        return _oesitehopper.OESiteHopperScoreIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OESiteHopper::OESiteHopperScore > &":
        r"""
        Next(OESiteHopperScoreIter self) -> OESiteHopperScoreIter
        Next(OESiteHopperScoreIter self, int i) -> OESiteHopperScoreIter
        """
        return _oesitehopper.OESiteHopperScoreIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OESiteHopper::OESiteHopperScore > &":
        r"""
        Prev(OESiteHopperScoreIter self) -> OESiteHopperScoreIter
        Prev(OESiteHopperScoreIter self, int i) -> OESiteHopperScoreIter
        """
        return _oesitehopper.OESiteHopperScoreIter_Prev(self, *args)

# Register OESiteHopperScoreIter in _oesitehopper:
_oesitehopper.OESiteHopperScoreIter_swigregister(OESiteHopperScoreIter)

class OESiteHopperSearch(OESiteHopperSearchBase):
    r"""Proxy of C++ OESiteHopper::OESiteHopperSearch class."""

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

    def __init__(self, shdb: "OESiteHopperDatabase"):
        r"""__init__(OESiteHopperSearch self, OESiteHopperDatabase shdb) -> OESiteHopperSearch"""
        _oesitehopper.OESiteHopperSearch_swiginit(self, _oesitehopper.new_OESiteHopperSearch(shdb))
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperSearch

    def Search(self, *args) -> "OESystem::OEIterBase< OESiteHopper::OESiteHopperScore > *":
        r"""Search(OESiteHopperSearch self, OEDesignUnit query, OESiteHopperSearchOptions options=OESiteHopper::OESiteHopperSearchOptions(), OETracerBase tracer=NullTracer) -> OESystem::OEIterBase< OESiteHopper::OESiteHopperScore >"""
        return _oesitehopper.OESiteHopperSearch_Search(self, *args)

    def IsValid(self):
      return _oesitehopper.OESiteHopperSearch___nonzero__(self)



# Register OESiteHopperSearch in _oesitehopper:
_oesitehopper.OESiteHopperSearch_swigregister(OESiteHopperSearch)

class OESiteHopperResults(object):
    r"""Proxy of C++ OESiteHopper::OESiteHopperResults class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperResults self) -> OESiteHopperResults
        __init__(OESiteHopperResults self, OESiteHopperResults rhs) -> OESiteHopperResults
        """
        _oesitehopper.OESiteHopperResults_swiginit(self, _oesitehopper.new_OESiteHopperResults(*args))

    def GetPatchScore(self) -> "float":
        r"""GetPatchScore(OESiteHopperResults self) -> float"""
        return _oesitehopper.OESiteHopperResults_GetPatchScore(self)

    def GetColorTanimoto(self) -> "float":
        r"""GetColorTanimoto(OESiteHopperResults self) -> float"""
        return _oesitehopper.OESiteHopperResults_GetColorTanimoto(self)

    def GetShapeTanimoto(self) -> "float":
        r"""GetShapeTanimoto(OESiteHopperResults self) -> float"""
        return _oesitehopper.OESiteHopperResults_GetShapeTanimoto(self)

    def GetSequenceSimilarity(self) -> "float":
        r"""GetSequenceSimilarity(OESiteHopperResults self) -> float"""
        return _oesitehopper.OESiteHopperResults_GetSequenceSimilarity(self)

    def GetColorScale(self) -> "float":
        r"""GetColorScale(OESiteHopperResults self) -> float"""
        return _oesitehopper.OESiteHopperResults_GetColorScale(self)

    def GetRank(self) -> "unsigned int":
        r"""GetRank(OESiteHopperResults self) -> unsigned int"""
        return _oesitehopper.OESiteHopperResults_GetRank(self)

    def SetColorScale(self, scale: "float") -> "void":
        r"""SetColorScale(OESiteHopperResults self, float scale)"""
        return _oesitehopper.OESiteHopperResults_SetColorScale(self, scale)

    def SetShapeTanimoto(self, score: "float") -> "void":
        r"""SetShapeTanimoto(OESiteHopperResults self, float score)"""
        return _oesitehopper.OESiteHopperResults_SetShapeTanimoto(self, score)

    def SetColorTanimoto(self, score: "float") -> "void":
        r"""SetColorTanimoto(OESiteHopperResults self, float score)"""
        return _oesitehopper.OESiteHopperResults_SetColorTanimoto(self, score)

    def SetSequenceSimilarity(self, similarity: "float") -> "void":
        r"""SetSequenceSimilarity(OESiteHopperResults self, float similarity)"""
        return _oesitehopper.OESiteHopperResults_SetSequenceSimilarity(self, similarity)

    def SetRank(self, rank: "unsigned int") -> "void":
        r"""SetRank(OESiteHopperResults self, unsigned int rank)"""
        return _oesitehopper.OESiteHopperResults_SetRank(self, rank)
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperResults

# Register OESiteHopperResults in _oesitehopper:
_oesitehopper.OESiteHopperResults_swigregister(OESiteHopperResults)

class OESiteHopperScore(OESiteHopperResults):
    r"""Proxy of C++ OESiteHopper::OESiteHopperScore class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperScore self) -> OESiteHopperScore
        __init__(OESiteHopperScore self, OESiteHopperScore rhs) -> OESiteHopperScore
        """
        _oesitehopper.OESiteHopperScore_swiginit(self, _oesitehopper.new_OESiteHopperScore(*args))

    def GetID(self) -> "unsigned int":
        r"""GetID(OESiteHopperScore self) -> unsigned int"""
        return _oesitehopper.OESiteHopperScore_GetID(self)

    def GetTitle(self) -> "std::string":
        r"""GetTitle(OESiteHopperScore self) -> std::string"""
        return _oesitehopper.OESiteHopperScore_GetTitle(self)

    def GetDesignUnit(self) -> "OEBio::OEDesignUnit":
        r"""GetDesignUnit(OESiteHopperScore self) -> OEDesignUnit"""
        return _oesitehopper.OESiteHopperScore_GetDesignUnit(self)

    def GetTransform(self) -> "OEChem::OETrans const &":
        r"""GetTransform(OESiteHopperScore self) -> OETrans"""
        return _oesitehopper.OESiteHopperScore_GetTransform(self)

    def SetID(self, id: "unsigned int const") -> "void":
        r"""SetID(OESiteHopperScore self, unsigned int const id)"""
        return _oesitehopper.OESiteHopperScore_SetID(self, id)

    def SetDesignUnit(self, du: "OEDesignUnit") -> "void":
        r"""SetDesignUnit(OESiteHopperScore self, OEDesignUnit du)"""
        return _oesitehopper.OESiteHopperScore_SetDesignUnit(self, du)

    def SetTitle(self, title: "std::string const &") -> "void":
        r"""SetTitle(OESiteHopperScore self, std::string const & title)"""
        return _oesitehopper.OESiteHopperScore_SetTitle(self, title)

    def SetTransform(self, trans: "OETrans") -> "void":
        r"""SetTransform(OESiteHopperScore self, OETrans trans)"""
        return _oesitehopper.OESiteHopperScore_SetTransform(self, trans)
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperScore

# Register OESiteHopperScore in _oesitehopper:
_oesitehopper.OESiteHopperScore_swigregister(OESiteHopperScore)


def OESetProteinSDData(du: "OEDesignUnit", score: "OESiteHopperScore") -> "void":
    r"""OESetProteinSDData(OEDesignUnit du, OESiteHopperScore score)"""
    return _oesitehopper.OESetProteinSDData(du, score)
class OESiteHopperSearchOptions(oechem.OEOptions):
    r"""Proxy of C++ OESiteHopper::OESiteHopperSearchOptions class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oesitehopper.delete_OESiteHopperSearchOptions

    def __init__(self, *args):
        r"""
        __init__(OESiteHopperSearchOptions self) -> OESiteHopperSearchOptions
        __init__(OESiteHopperSearchOptions self, OESiteHopperSearchOptions arg2) -> OESiteHopperSearchOptions
        """
        _oesitehopper.OESiteHopperSearchOptions_swiginit(self, _oesitehopper.new_OESiteHopperSearchOptions(*args))

    def CreateCopy(self) -> "OESiteHopper::OESiteHopperSearchOptions *":
        r"""CreateCopy(OESiteHopperSearchOptions self) -> OESiteHopperSearchOptions"""
        return _oesitehopper.OESiteHopperSearchOptions_CreateCopy(self)

    def GetUseGPU(self) -> "bool":
        r"""GetUseGPU(OESiteHopperSearchOptions self) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_GetUseGPU(self)

    def SetUseGPU(self, value: "bool const") -> "bool":
        r"""SetUseGPU(OESiteHopperSearchOptions self, bool const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetUseGPU(self, value)

    def GetScoreCutoff(self) -> "float":
        r"""GetScoreCutoff(OESiteHopperSearchOptions self) -> float"""
        return _oesitehopper.OESiteHopperSearchOptions_GetScoreCutoff(self)

    def SetScoreCutoff(self, value: "float const") -> "bool":
        r"""SetScoreCutoff(OESiteHopperSearchOptions self, float const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetScoreCutoff(self, value)

    def GetSequenceCutoff(self) -> "float":
        r"""GetSequenceCutoff(OESiteHopperSearchOptions self) -> float"""
        return _oesitehopper.OESiteHopperSearchOptions_GetSequenceCutoff(self)

    def SetSequenceCutoff(self, value: "float const") -> "bool":
        r"""SetSequenceCutoff(OESiteHopperSearchOptions self, float const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetSequenceCutoff(self, value)

    def GetMaxHits(self) -> "unsigned int":
        r"""GetMaxHits(OESiteHopperSearchOptions self) -> unsigned int"""
        return _oesitehopper.OESiteHopperSearchOptions_GetMaxHits(self)

    def SetMaxHits(self, value: "unsigned int const") -> "bool":
        r"""SetMaxHits(OESiteHopperSearchOptions self, unsigned int const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetMaxHits(self, value)

    def GetNormalizeAndRescore(self) -> "bool":
        r"""GetNormalizeAndRescore(OESiteHopperSearchOptions self) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_GetNormalizeAndRescore(self)

    def SetNormalizeAndRescore(self, value: "bool const") -> "bool":
        r"""SetNormalizeAndRescore(OESiteHopperSearchOptions self, bool const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetNormalizeAndRescore(self, value)

    def GetNCPU(self) -> "unsigned int":
        r"""GetNCPU(OESiteHopperSearchOptions self) -> unsigned int"""
        return _oesitehopper.OESiteHopperSearchOptions_GetNCPU(self)

    def SetNCPU(self, value: "unsigned int const") -> "bool":
        r"""SetNCPU(OESiteHopperSearchOptions self, unsigned int const value) -> bool"""
        return _oesitehopper.OESiteHopperSearchOptions_SetNCPU(self, value)

# Register OESiteHopperSearchOptions in _oesitehopper:
_oesitehopper.OESiteHopperSearchOptions_swigregister(OESiteHopperSearchOptions)

OE_OESITEHOPPER_VERSION = _oesitehopper.OE_OESITEHOPPER_VERSION


def OESiteHopperGetRelease() -> "char const *":
    r"""OESiteHopperGetRelease() -> char const *"""
    return _oesitehopper.OESiteHopperGetRelease()

def OESiteHopperGetVersion() -> "unsigned int":
    r"""OESiteHopperGetVersion() -> unsigned int"""
    return _oesitehopper.OESiteHopperGetVersion()

def OESiteHopperGetArch() -> "char const *":
    r"""OESiteHopperGetArch() -> char const *"""
    return _oesitehopper.OESiteHopperGetArch()

def OESiteHopperGetPlatform() -> "char const *":
    r"""OESiteHopperGetPlatform() -> char const *"""
    return _oesitehopper.OESiteHopperGetPlatform()

def OESiteHopperIsLicensed(feature: "char const *"=None, expdate: "unsigned int *"=None) -> "bool":
    r"""OESiteHopperIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool"""
    return _oesitehopper.OESiteHopperIsLicensed(feature, expdate)

def OESiteHopperGetLicensee(*args) -> "std::string":
    r"""
    OESiteHopperGetLicensee(std::string & licensee) -> bool
    OESiteHopperGetLicensee() -> std::string
    """
    return _oesitehopper.OESiteHopperGetLicensee(*args)

def OESiteHopperGetSite(*args) -> "std::string":
    r"""
    OESiteHopperGetSite(std::string & site) -> bool
    OESiteHopperGetSite() -> std::string
    """
    return _oesitehopper.OESiteHopperGetSite(*args)


