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

    _oemolprop = libs.OEGetModule('_oemolprop2546')
    return _oemolprop

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


import openeye.oechem as oechem
OEFilterType_Unknown = _oemolprop.OEFilterType_Unknown
OEFilterType_Lead = _oemolprop.OEFilterType_Lead
OEFilterType_Drug = _oemolprop.OEFilterType_Drug
OEFilterType_BlockBuster = _oemolprop.OEFilterType_BlockBuster
OEFilterType_Fragment = _oemolprop.OEFilterType_Fragment
OEFilterType_PAINS = _oemolprop.OEFilterType_PAINS
OEFilterType_Custom = _oemolprop.OEFilterType_Custom

OEFilterType_Default = OEFilterType_BlockBuster

OEFilterType_Max = _oemolprop.OEFilterType_Max
OEFilterParamSetup_Type = _oemolprop.OEFilterParamSetup_Type
OEFilterParamSetup_All = _oemolprop.OEFilterParamSetup_All
OEFilterParamName_Type = _oemolprop.OEFilterParamName_Type
class OEXLogPResult(object):
    """Proxy of C++ OEMolProp::OEXLogPResult 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__(OEMolProp::OEXLogPResult self, bool valid, float value) -> OEXLogPResult
        __init__(OEMolProp::OEXLogPResult self, OEXLogPResult rhs) -> OEXLogPResult
        """
        this = _oemolprop.new_OEXLogPResult(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self) -> "bool":
        """IsValid(OEXLogPResult self) -> bool"""
        return _oemolprop.OEXLogPResult_IsValid(self)


    def GetValue(self) -> "float":
        """GetValue(OEXLogPResult self) -> float"""
        return _oemolprop.OEXLogPResult_GetValue(self)

    __swig_destroy__ = _oemolprop.delete_OEXLogPResult
    __del__ = lambda self: None
OEXLogPResult_swigregister = _oemolprop.OEXLogPResult_swigregister
OEXLogPResult_swigregister(OEXLogPResult)


def OEGetXLogPVersion() -> "std::string":
    """OEGetXLogPVersion() -> std::string"""
    return _oemolprop.OEGetXLogPVersion()

def OEGetXLogP(mol: 'OEMolBase', atomxlogps: 'float *'=None) -> "float &":
    """
    OEGetXLogP(OEMolBase mol, float * atomxlogps=None) -> bool
    OEGetXLogP(OEMolBase mol) -> bool
    """
    return _oemolprop.OEGetXLogP(mol, atomxlogps)

def OEGetXLogPResult(mol: 'OEMolBase', atomxlogps: 'float *'=None) -> "OEMolProp::OEXLogPResult":
    """
    OEGetXLogPResult(OEMolBase mol, float * atomxlogps=None) -> OEXLogPResult
    OEGetXLogPResult(OEMolBase mol) -> OEXLogPResult
    """
    return _oemolprop.OEGetXLogPResult(mol, atomxlogps)

def OEGet2dPSAVersion() -> "std::string":
    """OEGet2dPSAVersion() -> std::string"""
    return _oemolprop.OEGet2dPSAVersion()

def OEGet2dPSA(mol: 'OEMolBase', atomPSA: 'float *'=None, SandP: 'bool'=False) -> "float &":
    """
    OEGet2dPSA(OEMolBase mol, float * atomPSA=None, bool SandP=False) -> bool
    OEGet2dPSA(OEMolBase mol, float * atomPSA=None) -> bool
    OEGet2dPSA(OEMolBase mol) -> bool
    """
    return _oemolprop.OEGet2dPSA(mol, atomPSA, SandP)

def OEGetFractionCsp3(mol: 'OEMolBase') -> "float":
    """OEGetFractionCsp3(OEMolBase mol) -> float"""
    return _oemolprop.OEGetFractionCsp3(mol)

def OEGetAromaticRingCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetAromaticRingCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetAromaticRingCount(mol)

def OEGetRotatableBondCount(mol: 'OEMolBase', adjust: 'bool'=False) -> "unsigned int":
    """
    OEGetRotatableBondCount(OEMolBase mol, bool adjust=False) -> unsigned int
    OEGetRotatableBondCount(OEMolBase mol) -> unsigned int
    """
    return _oemolprop.OEGetRotatableBondCount(mol, adjust)
class OEFilter(object):
    """Proxy of C++ OEMolProp::OEFilter 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__(OEMolProp::OEFilter self, unsigned int type) -> OEFilter
        __init__(OEMolProp::OEFilter self) -> OEFilter
        __init__(OEMolProp::OEFilter self, oeistream filterstr) -> OEFilter
        __init__(OEMolProp::OEFilter self, OEFilter filter) -> OEFilter
        """
        this = _oemolprop.new_OEFilter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemolprop.delete_OEFilter
    __del__ = lambda self: None

    def GetImpl(self, *args) -> "OEMolProp::OEFilterImpl const *":
        """
        GetImpl(OEFilter self) -> OEMolProp::OEFilterImpl
        GetImpl(OEFilter self) -> OEMolProp::OEFilterImpl const *
        """
        return _oemolprop.OEFilter_GetImpl(self, *args)


    def PrintConfig(self, log: 'oeostream') -> "void":
        """PrintConfig(OEFilter self, oeostream log)"""
        return _oemolprop.OEFilter_PrintConfig(self, log)


    def GetFilterType(self) -> "unsigned int":
        """GetFilterType(OEFilter self) -> unsigned int"""
        return _oemolprop.OEFilter_GetFilterType(self)


    def __call__(self, *args) -> "bool":
        """
        __call__(OEFilter self, OEMolBase arg2) -> bool
        __call__(OEFilter self, OEMCMolBase arg2) -> bool
        """
        return _oemolprop.OEFilter___call__(self, *args)


    def IsValid(self):
      return _oemolprop.OEFilter___nonzero__(self)



    def SetTable(self, table: 'oeostream', owned: 'bool') -> "void":
        """SetTable(OEFilter self, oeostream table, bool owned)"""
        return _oemolprop.OEFilter_SetTable(self, table, owned)


    def GetTable(self) -> "OEPlatform::oeostream *":
        """GetTable(OEFilter self) -> oeostream"""
        return _oemolprop.OEFilter_GetTable(self)


    def SetFlagTableFailures(self, b: 'bool') -> "void":
        """SetFlagTableFailures(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetFlagTableFailures(self, b)


    def GetFlagTableFailures(self) -> "bool":
        """GetFlagTableFailures(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetFlagTableFailures(self)


    def SetCanonOrder(self, b: 'bool') -> "void":
        """SetCanonOrder(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetCanonOrder(self, b)


    def GetCanonOrder(self) -> "bool":
        """GetCanonOrder(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetCanonOrder(self)


    def SetpKaNormalize(self, b: 'bool') -> "void":
        """SetpKaNormalize(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetpKaNormalize(self, b)


    def GetpKaNormalize(self) -> "bool":
        """GetpKaNormalize(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetpKaNormalize(self)


    def AddNormalizationRule(self, rxn: 'OEUniMolecularRxn') -> "bool":
        """AddNormalizationRule(OEFilter self, OEUniMolecularRxn rxn) -> bool"""
        return _oemolprop.OEFilter_AddNormalizationRule(self, rxn)


    def ClearNormalizationRules(self) -> "void":
        """ClearNormalizationRules(OEFilter self)"""
        return _oemolprop.OEFilter_ClearNormalizationRules(self)


    def ParseNewRules(self, rulefile: 'oeistream') -> "bool":
        """ParseNewRules(OEFilter self, oeistream rulefile) -> bool"""
        return _oemolprop.OEFilter_ParseNewRules(self, rulefile)


    def SetTypeCheck(self, b: 'bool') -> "void":
        """SetTypeCheck(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetTypeCheck(self, b)


    def GetTypeCheck(self) -> "bool":
        """GetTypeCheck(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetTypeCheck(self)


    def SetMMFFTypeCheck(self, b: 'bool') -> "void":
        """SetMMFFTypeCheck(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetMMFFTypeCheck(self, b)


    def GetMMFFTypeCheck(self) -> "bool":
        """GetMMFFTypeCheck(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetMMFFTypeCheck(self)


    def SetSDTag(self, b: 'bool') -> "void":
        """SetSDTag(OEFilter self, bool b)"""
        return _oemolprop.OEFilter_SetSDTag(self, b)


    def GetSDTag(self) -> "bool":
        """GetSDTag(OEFilter self) -> bool"""
        return _oemolprop.OEFilter_GetSDTag(self)

OEFilter_swigregister = _oemolprop.OEFilter_swigregister
OEFilter_swigregister(OEFilter)

OE_OEMOLPROP_VERSION = _oemolprop.OE_OEMOLPROP_VERSION

def OEMolPropGetRelease() -> "char const *":
    """OEMolPropGetRelease() -> char const *"""
    return _oemolprop.OEMolPropGetRelease()

def OEMolPropGetVersion() -> "unsigned int":
    """OEMolPropGetVersion() -> unsigned int"""
    return _oemolprop.OEMolPropGetVersion()

def OEMolPropGetArch() -> "char const *":
    """OEMolPropGetArch() -> char const *"""
    return _oemolprop.OEMolPropGetArch()

def OEMolPropGetPlatform() -> "char const *":
    """OEMolPropGetPlatform() -> char const *"""
    return _oemolprop.OEMolPropGetPlatform()

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

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

def OEMolPropGetSite(*args) -> "std::string":
    """
    OEMolPropGetSite(std::string & site) -> bool
    OEMolPropGetSite() -> std::string
    """
    return _oemolprop.OEMolPropGetSite(*args)

def OEConfigureFilterParams(*args) -> "bool":
    """
    OEConfigureFilterParams(OEInterface itf, unsigned int config) -> bool
    OEConfigureFilterParams(OEInterface itf) -> bool
    """
    return _oemolprop.OEConfigureFilterParams(*args)

def OEGetFilterType(*args) -> "unsigned int":
    """
    OEGetFilterType(OEInterface itf, std::string name) -> unsigned int
    OEGetFilterType(OEInterface itf) -> unsigned int
    """
    return _oemolprop.OEGetFilterType(*args)

def OEConfigureFilterType(*args) -> "bool":
    """
    OEConfigureFilterType(OEInterface itf, std::string name, std::string alias) -> bool
    OEConfigureFilterType(OEInterface itf, std::string name) -> bool
    OEConfigureFilterType(OEInterface itf) -> bool
    """
    return _oemolprop.OEConfigureFilterType(*args)

def OEGetHalideFraction(mol: 'OEMolBase', isotopic: 'bool'=False) -> "double":
    """
    OEGetHalideFraction(OEMolBase mol, bool isotopic=False) -> double
    OEGetHalideFraction(OEMolBase mol) -> double
    """
    return _oemolprop.OEGetHalideFraction(mol, isotopic)

def OEGetHBondDonorCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetHBondDonorCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetHBondDonorCount(mol)

def OEGetHBondAcceptorCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetHBondAcceptorCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetHBondAcceptorCount(mol)

def OEGetLipinskiDonorCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetLipinskiDonorCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetLipinskiDonorCount(mol)

def OEGetLipinskiAcceptorCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetLipinskiAcceptorCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetLipinskiAcceptorCount(mol)

def OEWritePropertyDataToCSV(*args) -> "bool":
    """
    OEWritePropertyDataToCSV(std::string const & fname, oemolistream ifs, OEFilter filter) -> bool
    OEWritePropertyDataToCSV(oemolostream ofs, oemolistream ifs, OEFilter filter) -> bool
    """
    return _oemolprop.OEWritePropertyDataToCSV(*args)

def OEGetLongestUnbranchedHeavyAtomsChain(mol: 'OEMolBase') -> "unsigned int":
    """OEGetLongestUnbranchedHeavyAtomsChain(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetLongestUnbranchedHeavyAtomsChain(mol)

def OEGetLongestUnbranchedCarbonsChain(mol: 'OEMolBase') -> "unsigned int":
    """OEGetLongestUnbranchedCarbonsChain(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetLongestUnbranchedCarbonsChain(mol)

def OEGetAnionicCarbonCount(mol: 'OEMolBase') -> "unsigned int":
    """OEGetAnionicCarbonCount(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetAnionicCarbonCount(mol)

def OEGetNumUnspecifiedAtomStereos(mol: 'OEMolBase') -> "unsigned int":
    """OEGetNumUnspecifiedAtomStereos(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetNumUnspecifiedAtomStereos(mol)

def OEGetNumUnspecifiedBondStereos(mol: 'OEMolBase') -> "unsigned int":
    """OEGetNumUnspecifiedBondStereos(OEMolBase mol) -> unsigned int"""
    return _oemolprop.OEGetNumUnspecifiedBondStereos(mol)


