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

    _oechem = libs.OEGetModule('_oechem3016')
    return _oechem

_oechem = swig_import_helper()
del swig_import_helper
del _swig_python_version_info

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


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


class SwigPyIterator(object):
    """Proxy of C++ swig::SwigPyIterator 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__ = _oechem.delete_SwigPyIterator
    __del__ = lambda self: None

    def value(self) -> "PyObject *":
        """value(SwigPyIterator self) -> PyObject *"""
        return _oechem.SwigPyIterator_value(self)


    def incr(self, n: 'size_t'=1) -> "swig::SwigPyIterator *":
        """
        incr(SwigPyIterator self, size_t n=1) -> SwigPyIterator
        incr(SwigPyIterator self) -> SwigPyIterator
        """
        return _oechem.SwigPyIterator_incr(self, n)


    def decr(self, n: 'size_t'=1) -> "swig::SwigPyIterator *":
        """
        decr(SwigPyIterator self, size_t n=1) -> SwigPyIterator
        decr(SwigPyIterator self) -> SwigPyIterator
        """
        return _oechem.SwigPyIterator_decr(self, n)


    def distance(self, x: 'SwigPyIterator') -> "ptrdiff_t":
        """distance(SwigPyIterator self, SwigPyIterator x) -> ptrdiff_t"""
        return _oechem.SwigPyIterator_distance(self, x)


    def equal(self, x: 'SwigPyIterator') -> "bool":
        """equal(SwigPyIterator self, SwigPyIterator x) -> bool"""
        return _oechem.SwigPyIterator_equal(self, x)


    def copy(self) -> "swig::SwigPyIterator *":
        """copy(SwigPyIterator self) -> SwigPyIterator"""
        return _oechem.SwigPyIterator_copy(self)


    def next(self) -> "PyObject *":
        """next(SwigPyIterator self) -> PyObject *"""
        return _oechem.SwigPyIterator_next(self)


    def __next__(self) -> "PyObject *":
        """__next__(SwigPyIterator self) -> PyObject *"""
        return _oechem.SwigPyIterator___next__(self)


    def previous(self) -> "PyObject *":
        """previous(SwigPyIterator self) -> PyObject *"""
        return _oechem.SwigPyIterator_previous(self)


    def advance(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator *":
        """advance(SwigPyIterator self, ptrdiff_t n) -> SwigPyIterator"""
        return _oechem.SwigPyIterator_advance(self, n)


    def __eq__(self, x: 'SwigPyIterator') -> "bool":
        """__eq__(SwigPyIterator self, SwigPyIterator x) -> bool"""
        return _oechem.SwigPyIterator___eq__(self, x)


    def __ne__(self, x: 'SwigPyIterator') -> "bool":
        """__ne__(SwigPyIterator self, SwigPyIterator x) -> bool"""
        return _oechem.SwigPyIterator___ne__(self, x)


    def __iadd__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator &":
        """__iadd__(SwigPyIterator self, ptrdiff_t n) -> SwigPyIterator"""
        return _oechem.SwigPyIterator___iadd__(self, n)


    def __isub__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator &":
        """__isub__(SwigPyIterator self, ptrdiff_t n) -> SwigPyIterator"""
        return _oechem.SwigPyIterator___isub__(self, n)


    def __add__(self, n: 'ptrdiff_t') -> "swig::SwigPyIterator *":
        """__add__(SwigPyIterator self, ptrdiff_t n) -> SwigPyIterator"""
        return _oechem.SwigPyIterator___add__(self, n)


    def __sub__(self, *args) -> "ptrdiff_t":
        """
        __sub__(SwigPyIterator self, ptrdiff_t n) -> SwigPyIterator
        __sub__(SwigPyIterator self, SwigPyIterator x) -> ptrdiff_t
        """
        return _oechem.SwigPyIterator___sub__(self, *args)

    def __iter__(self):
        return self
SwigPyIterator_swigregister = _oechem.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

OEErrorLevel_Undefined = _oechem.OEErrorLevel_Undefined
OEErrorLevel_Debug = _oechem.OEErrorLevel_Debug
OEErrorLevel_Verbose = _oechem.OEErrorLevel_Verbose
OEErrorLevel_Info = _oechem.OEErrorLevel_Info
OEErrorLevel_Warning = _oechem.OEErrorLevel_Warning
OEErrorLevel_Error = _oechem.OEErrorLevel_Error
OEErrorLevel_Fatal = _oechem.OEErrorLevel_Fatal
OEErrorLevel_Usage = _oechem.OEErrorLevel_Usage
OEErrorLevel_Quiet = _oechem.OEErrorLevel_Quiet
OEErrorLevel_MAX = _oechem.OEErrorLevel_MAX
OEErrorLevel_MIN = _oechem.OEErrorLevel_MIN

OEErrorLevel_Default = OEErrorLevel_Info

OEBDictionary_OEBinaryTagMaxLength = _oechem.OEBDictionary_OEBinaryTagMaxLength
OEBDictionary_UDT = _oechem.OEBDictionary_UDT
OEBDictionary_UserDefinedTag = _oechem.OEBDictionary_UserDefinedTag
OEBDictionary_OEBasePOD = _oechem.OEBDictionary_OEBasePOD
OEBReturnCode_Success = _oechem.OEBReturnCode_Success
OEBReturnCode_NoParentClass = _oechem.OEBReturnCode_NoParentClass
OEBReturnCode_CheckFailed = _oechem.OEBReturnCode_CheckFailed
OEBReturnCode_StreamFailed = _oechem.OEBReturnCode_StreamFailed
OEBReturnCode_IncorrectSize = _oechem.OEBReturnCode_IncorrectSize
OEBReturnCode_Continue = _oechem.OEBReturnCode_Continue
OEBReturnCode_ReadTagFailed = _oechem.OEBReturnCode_ReadTagFailed
OEBReturnCode_CorruptHeader = _oechem.OEBReturnCode_CorruptHeader
OEBReturnCode_EndOfFile = _oechem.OEBReturnCode_EndOfFile
OEBReturnCode_ReadLengthFailed = _oechem.OEBReturnCode_ReadLengthFailed
OEBReturnCode_TypeCheckFailed = _oechem.OEBReturnCode_TypeCheckFailed
OEBReturnCode_IncorrectHandlerType = _oechem.OEBReturnCode_IncorrectHandlerType
OEParamVisibility_Simple = _oechem.OEParamVisibility_Simple
OEParamVisibility_Normal = _oechem.OEParamVisibility_Normal
OEParamVisibility_Hidden = _oechem.OEParamVisibility_Hidden
OEParamVisibility_MAX = _oechem.OEParamVisibility_MAX
OEMemPoolMode_SingleThreaded = _oechem.OEMemPoolMode_SingleThreaded
OEMemPoolMode_Mutexed = _oechem.OEMemPoolMode_Mutexed
OEMemPoolMode_ThreadLocal = _oechem.OEMemPoolMode_ThreadLocal
OEMemPoolMode_BoundedCache = _oechem.OEMemPoolMode_BoundedCache
OEMemPoolMode_UnboundedCache = _oechem.OEMemPoolMode_UnboundedCache
OEMemPoolMode_System = _oechem.OEMemPoolMode_System
OEMemPoolMode_Spinlocked = _oechem.OEMemPoolMode_Spinlocked

OEMemPoolMode_Default = OEMemPoolMode_ThreadLocal|OEMemPoolMode_UnboundedCache

OEAltLocFactOption_None = _oechem.OEAltLocFactOption_None
OEAltLocFactOption_TrustInputBonds = _oechem.OEAltLocFactOption_TrustInputBonds
OEMakeAltMolOption_None = _oechem.OEMakeAltMolOption_None
OEMakeAltMolOption_RemoveAltCodes = _oechem.OEMakeAltMolOption_RemoveAltCodes
OEAroModel_Undefined = _oechem.OEAroModel_Undefined
OEAroModel_Daylight = _oechem.OEAroModel_Daylight
OEAroModel_OpenEye = _oechem.OEAroModel_OpenEye
OEAroModel_Tripos = _oechem.OEAroModel_Tripos
OEAroModel_MMFF = _oechem.OEAroModel_MMFF
OEAroModel_MDL = _oechem.OEAroModel_MDL
OETriposType_Du = _oechem.OETriposType_Du
OETriposType_Al = _oechem.OETriposType_Al
OETriposType_Br = _oechem.OETriposType_Br
OETriposType_C1 = _oechem.OETriposType_C1
OETriposType_C2 = _oechem.OETriposType_C2
OETriposType_C3 = _oechem.OETriposType_C3
OETriposType_Car = _oechem.OETriposType_Car
OETriposType_Ccat = _oechem.OETriposType_Ccat
OETriposType_Ca = _oechem.OETriposType_Ca
OETriposType_Cl = _oechem.OETriposType_Cl
OETriposType_F = _oechem.OETriposType_F
OETriposType_H = _oechem.OETriposType_H
OETriposType_I = _oechem.OETriposType_I
OETriposType_K = _oechem.OETriposType_K
OETriposType_Li = _oechem.OETriposType_Li
OETriposType_Lp = _oechem.OETriposType_Lp
OETriposType_N1 = _oechem.OETriposType_N1
OETriposType_N2 = _oechem.OETriposType_N2
OETriposType_N3 = _oechem.OETriposType_N3
OETriposType_N4 = _oechem.OETriposType_N4
OETriposType_Nam = _oechem.OETriposType_Nam
OETriposType_Nar = _oechem.OETriposType_Nar
OETriposType_Npl3 = _oechem.OETriposType_Npl3
OETriposType_Na = _oechem.OETriposType_Na
OETriposType_O2 = _oechem.OETriposType_O2
OETriposType_O3 = _oechem.OETriposType_O3
OETriposType_Oco2 = _oechem.OETriposType_Oco2
OETriposType_P3 = _oechem.OETriposType_P3
OETriposType_S2 = _oechem.OETriposType_S2
OETriposType_S3 = _oechem.OETriposType_S3
OETriposType_So = _oechem.OETriposType_So
OETriposType_So2 = _oechem.OETriposType_So2
OETriposType_Si = _oechem.OETriposType_Si
OETriposType_Cu = _oechem.OETriposType_Cu
OETriposType_Cooh = _oechem.OETriposType_Cooh
OETriposType_Croh = _oechem.OETriposType_Croh
OETriposType_Crth = _oechem.OETriposType_Crth
OETriposType_Fe = _oechem.OETriposType_Fe
OETriposType_Mg = _oechem.OETriposType_Mg
OETriposType_Mn = _oechem.OETriposType_Mn
OETriposType_Mo = _oechem.OETriposType_Mo
OETriposType_Se = _oechem.OETriposType_Se
OETriposType_Sn = _oechem.OETriposType_Sn
OETriposType_Zn = _oechem.OETriposType_Zn
OETriposType_MAXTYPE = _oechem.OETriposType_MAXTYPE
OEMModType_C1 = _oechem.OEMModType_C1
OEMModType_C2 = _oechem.OEMModType_C2
OEMModType_C3 = _oechem.OEMModType_C3
OEMModType_CA = _oechem.OEMModType_CA
OEMModType_CB = _oechem.OEMModType_CB
OEMModType_CC = _oechem.OEMModType_CC
OEMModType_CD = _oechem.OEMModType_CD
OEMModType_CE = _oechem.OEMModType_CE
OEMModType_CF = _oechem.OEMModType_CF
OEMModType_CM = _oechem.OEMModType_CM
OEMModType_CP = _oechem.OEMModType_CP
OEMModType_CR = _oechem.OEMModType_CR
OEMModType_C0 = _oechem.OEMModType_C0
OEMModType_O2 = _oechem.OEMModType_O2
OEMModType_O3 = _oechem.OEMModType_O3
OEMModType_OA = _oechem.OEMModType_OA
OEMModType_OM = _oechem.OEMModType_OM
OEMModType_OW = _oechem.OEMModType_OW
OEMModType_OP = _oechem.OEMModType_OP
OEMModType_OQ = _oechem.OEMModType_OQ
OEMModType_O0 = _oechem.OEMModType_O0
OEMModType_N1 = _oechem.OEMModType_N1
OEMModType_N2 = _oechem.OEMModType_N2
OEMModType_N3 = _oechem.OEMModType_N3
OEMModType_NA = _oechem.OEMModType_NA
OEMModType_NB = _oechem.OEMModType_NB
OEMModType_NC = _oechem.OEMModType_NC
OEMModType_ND = _oechem.OEMModType_ND
OEMModType_N4 = _oechem.OEMModType_N4
OEMModType_N5 = _oechem.OEMModType_N5
OEMModType_NE = _oechem.OEMModType_NE
OEMModType_NF = _oechem.OEMModType_NF
OEMModType_NG = _oechem.OEMModType_NG
OEMModType_NH = _oechem.OEMModType_NH
OEMModType_NI = _oechem.OEMModType_NI
OEMModType_NM = _oechem.OEMModType_NM
OEMModType_NP = _oechem.OEMModType_NP
OEMModType_N0 = _oechem.OEMModType_N0
OEMModType_H1 = _oechem.OEMModType_H1
OEMModType_H2 = _oechem.OEMModType_H2
OEMModType_H3 = _oechem.OEMModType_H3
OEMModType_H4 = _oechem.OEMModType_H4
OEMModType_H5 = _oechem.OEMModType_H5
OEMModType_H0 = _oechem.OEMModType_H0
OEMModType_S1 = _oechem.OEMModType_S1
OEMModType_SA = _oechem.OEMModType_SA
OEMModType_SM = _oechem.OEMModType_SM
OEMModType_S0 = _oechem.OEMModType_S0
OEMModType_P0 = _oechem.OEMModType_P0
OEMModType_B2 = _oechem.OEMModType_B2
OEMModType_B3 = _oechem.OEMModType_B3
OEMModType_F0 = _oechem.OEMModType_F0
OEMModType_Cl = _oechem.OEMModType_Cl
OEMModType_Br = _oechem.OEMModType_Br
OEMModType_I0 = _oechem.OEMModType_I0
OEMModType_Si = _oechem.OEMModType_Si
OEMModType_Du = _oechem.OEMModType_Du
OEMModType_Z0 = _oechem.OEMModType_Z0
OEMModType_Lp = _oechem.OEMModType_Lp
OEMModType_Li = _oechem.OEMModType_Li
OEMModType_Na = _oechem.OEMModType_Na
OEMModType_K0 = _oechem.OEMModType_K0
OEMModType_Rb = _oechem.OEMModType_Rb
OEMModType_Cs = _oechem.OEMModType_Cs
OEMModType_Ca = _oechem.OEMModType_Ca
OEMModType_Ba = _oechem.OEMModType_Ba
OEMModType_Mg = _oechem.OEMModType_Mg
OEMModType_M2 = _oechem.OEMModType_M2
OEMModType_M3 = _oechem.OEMModType_M3
OEMModType_M4 = _oechem.OEMModType_M4
OEMModType_M5 = _oechem.OEMModType_M5
OEMModType_M6 = _oechem.OEMModType_M6
OEMModType_M7 = _oechem.OEMModType_M7
OEMModType_f2 = _oechem.OEMModType_f2
OEMModType_f3 = _oechem.OEMModType_f3
OEMModType_o2 = _oechem.OEMModType_o2
OEMModType_o3 = _oechem.OEMModType_o3
OEMModType_n2 = _oechem.OEMModType_n2
OEMModType_n3 = _oechem.OEMModType_n3
OEMModType_c1 = _oechem.OEMModType_c1
OEMModType_c2 = _oechem.OEMModType_c2
OEMModType_Zn = _oechem.OEMModType_Zn
OEMModType_m3 = _oechem.OEMModType_m3
OEMModType_m4 = _oechem.OEMModType_m4
OEMModType_m5 = _oechem.OEMModType_m5
OEMModType_m6 = _oechem.OEMModType_m6
OEMModType_SP = _oechem.OEMModType_SP
OEMModType_S2 = _oechem.OEMModType_S2
OEMModType_Cm = _oechem.OEMModType_Cm
OEMModType_MAXTYPE = _oechem.OEMModType_MAXTYPE
OECIPAtomStereo_NotStereo = _oechem.OECIPAtomStereo_NotStereo
OECIPAtomStereo_S = _oechem.OECIPAtomStereo_S
OECIPAtomStereo_R = _oechem.OECIPAtomStereo_R
OECIPAtomStereo_UnspecStereo = _oechem.OECIPAtomStereo_UnspecStereo
OECIPBondStereo_NotStereo = _oechem.OECIPBondStereo_NotStereo
OECIPBondStereo_E = _oechem.OECIPBondStereo_E
OECIPBondStereo_Z = _oechem.OECIPBondStereo_Z
OECIPBondStereo_UnspecStereo = _oechem.OECIPBondStereo_UnspecStereo
OENearestNbrsMethod_Auto = _oechem.OENearestNbrsMethod_Auto
OENearestNbrsMethod_AllByAll = _oechem.OENearestNbrsMethod_AllByAll
OENearestNbrsMethod_ZCoordSort = _oechem.OENearestNbrsMethod_ZCoordSort
OENearestNbrsMethod_LocalHash = _oechem.OENearestNbrsMethod_LocalHash

OENearestNbrsMethod_Default = OENearestNbrsMethod_Auto

OEZap9Version_Undefined = _oechem.OEZap9Version_Undefined
OEZap9Version_JMC2008 = _oechem.OEZap9Version_JMC2008
OEZap9Version_JCAMD2010 = _oechem.OEZap9Version_JCAMD2010

OEZap9Version_Default = OEZap9Version_JCAMD2010

OEZap7Version_Undefined = _oechem.OEZap7Version_Undefined
OEZap7Version_CarbonylOxygen = _oechem.OEZap7Version_CarbonylOxygen
OEZap7Version_DoublyBondedOxygen = _oechem.OEZap7Version_DoublyBondedOxygen

OEZap7Version_Default = OEZap7Version_CarbonylOxygen

OEElemNo_H = _oechem.OEElemNo_H
OEElemNo_He = _oechem.OEElemNo_He
OEElemNo_Li = _oechem.OEElemNo_Li
OEElemNo_Be = _oechem.OEElemNo_Be
OEElemNo_B = _oechem.OEElemNo_B
OEElemNo_C = _oechem.OEElemNo_C
OEElemNo_N = _oechem.OEElemNo_N
OEElemNo_O = _oechem.OEElemNo_O
OEElemNo_F = _oechem.OEElemNo_F
OEElemNo_Ne = _oechem.OEElemNo_Ne
OEElemNo_Na = _oechem.OEElemNo_Na
OEElemNo_Mg = _oechem.OEElemNo_Mg
OEElemNo_Al = _oechem.OEElemNo_Al
OEElemNo_Si = _oechem.OEElemNo_Si
OEElemNo_P = _oechem.OEElemNo_P
OEElemNo_S = _oechem.OEElemNo_S
OEElemNo_Cl = _oechem.OEElemNo_Cl
OEElemNo_Ar = _oechem.OEElemNo_Ar
OEElemNo_K = _oechem.OEElemNo_K
OEElemNo_Ca = _oechem.OEElemNo_Ca
OEElemNo_Sc = _oechem.OEElemNo_Sc
OEElemNo_Ti = _oechem.OEElemNo_Ti
OEElemNo_V = _oechem.OEElemNo_V
OEElemNo_Cr = _oechem.OEElemNo_Cr
OEElemNo_Mn = _oechem.OEElemNo_Mn
OEElemNo_Fe = _oechem.OEElemNo_Fe
OEElemNo_Co = _oechem.OEElemNo_Co
OEElemNo_Ni = _oechem.OEElemNo_Ni
OEElemNo_Cu = _oechem.OEElemNo_Cu
OEElemNo_Zn = _oechem.OEElemNo_Zn
OEElemNo_Ga = _oechem.OEElemNo_Ga
OEElemNo_Ge = _oechem.OEElemNo_Ge
OEElemNo_As = _oechem.OEElemNo_As
OEElemNo_Se = _oechem.OEElemNo_Se
OEElemNo_Br = _oechem.OEElemNo_Br
OEElemNo_Kr = _oechem.OEElemNo_Kr
OEElemNo_Rb = _oechem.OEElemNo_Rb
OEElemNo_Sr = _oechem.OEElemNo_Sr
OEElemNo_Y = _oechem.OEElemNo_Y
OEElemNo_Zr = _oechem.OEElemNo_Zr
OEElemNo_Nb = _oechem.OEElemNo_Nb
OEElemNo_Mo = _oechem.OEElemNo_Mo
OEElemNo_Tc = _oechem.OEElemNo_Tc
OEElemNo_Ru = _oechem.OEElemNo_Ru
OEElemNo_Rh = _oechem.OEElemNo_Rh
OEElemNo_Pd = _oechem.OEElemNo_Pd
OEElemNo_Ag = _oechem.OEElemNo_Ag
OEElemNo_Cd = _oechem.OEElemNo_Cd
OEElemNo_In = _oechem.OEElemNo_In
OEElemNo_Sn = _oechem.OEElemNo_Sn
OEElemNo_Sb = _oechem.OEElemNo_Sb
OEElemNo_Te = _oechem.OEElemNo_Te
OEElemNo_I = _oechem.OEElemNo_I
OEElemNo_Xe = _oechem.OEElemNo_Xe
OEElemNo_Cs = _oechem.OEElemNo_Cs
OEElemNo_Ba = _oechem.OEElemNo_Ba
OEElemNo_La = _oechem.OEElemNo_La
OEElemNo_Ce = _oechem.OEElemNo_Ce
OEElemNo_Pr = _oechem.OEElemNo_Pr
OEElemNo_Nd = _oechem.OEElemNo_Nd
OEElemNo_Pm = _oechem.OEElemNo_Pm
OEElemNo_Sm = _oechem.OEElemNo_Sm
OEElemNo_Eu = _oechem.OEElemNo_Eu
OEElemNo_Gd = _oechem.OEElemNo_Gd
OEElemNo_Tb = _oechem.OEElemNo_Tb
OEElemNo_Dy = _oechem.OEElemNo_Dy
OEElemNo_Ho = _oechem.OEElemNo_Ho
OEElemNo_Er = _oechem.OEElemNo_Er
OEElemNo_Tm = _oechem.OEElemNo_Tm
OEElemNo_Yb = _oechem.OEElemNo_Yb
OEElemNo_Lu = _oechem.OEElemNo_Lu
OEElemNo_Hf = _oechem.OEElemNo_Hf
OEElemNo_Ta = _oechem.OEElemNo_Ta
OEElemNo_W = _oechem.OEElemNo_W
OEElemNo_Re = _oechem.OEElemNo_Re
OEElemNo_Os = _oechem.OEElemNo_Os
OEElemNo_Ir = _oechem.OEElemNo_Ir
OEElemNo_Pt = _oechem.OEElemNo_Pt
OEElemNo_Au = _oechem.OEElemNo_Au
OEElemNo_Hg = _oechem.OEElemNo_Hg
OEElemNo_Tl = _oechem.OEElemNo_Tl
OEElemNo_Pb = _oechem.OEElemNo_Pb
OEElemNo_Bi = _oechem.OEElemNo_Bi
OEElemNo_Po = _oechem.OEElemNo_Po
OEElemNo_At = _oechem.OEElemNo_At
OEElemNo_Rn = _oechem.OEElemNo_Rn
OEElemNo_Fr = _oechem.OEElemNo_Fr
OEElemNo_Ra = _oechem.OEElemNo_Ra
OEElemNo_Ac = _oechem.OEElemNo_Ac
OEElemNo_Th = _oechem.OEElemNo_Th
OEElemNo_Pa = _oechem.OEElemNo_Pa
OEElemNo_U = _oechem.OEElemNo_U
OEElemNo_Np = _oechem.OEElemNo_Np
OEElemNo_Pu = _oechem.OEElemNo_Pu
OEElemNo_Am = _oechem.OEElemNo_Am
OEElemNo_Cm = _oechem.OEElemNo_Cm
OEElemNo_Bk = _oechem.OEElemNo_Bk
OEElemNo_Cf = _oechem.OEElemNo_Cf
OEElemNo_Es = _oechem.OEElemNo_Es
OEElemNo_Fm = _oechem.OEElemNo_Fm
OEElemNo_Md = _oechem.OEElemNo_Md
OEElemNo_No = _oechem.OEElemNo_No
OEElemNo_Lr = _oechem.OEElemNo_Lr
OEElemNo_Rf = _oechem.OEElemNo_Rf
OEElemNo_Db = _oechem.OEElemNo_Db
OEElemNo_Sg = _oechem.OEElemNo_Sg
OEElemNo_Bh = _oechem.OEElemNo_Bh
OEElemNo_Hs = _oechem.OEElemNo_Hs
OEElemNo_Mt = _oechem.OEElemNo_Mt
OEElemNo_Ds = _oechem.OEElemNo_Ds
OEElemNo_Rg = _oechem.OEElemNo_Rg
OEElemNo_Cn = _oechem.OEElemNo_Cn
OEElemNo_Nh = _oechem.OEElemNo_Nh
OEElemNo_Fl = _oechem.OEElemNo_Fl
OEElemNo_Mc = _oechem.OEElemNo_Mc
OEElemNo_Lv = _oechem.OEElemNo_Lv
OEElemNo_Ts = _oechem.OEElemNo_Ts
OEElemNo_Og = _oechem.OEElemNo_Og
OEElemNo_MAXELEM = _oechem.OEElemNo_MAXELEM
OEElemNo_Du = _oechem.OEElemNo_Du
OEElemNo_Lp = _oechem.OEElemNo_Lp
OEElemNo_Xx = _oechem.OEElemNo_Xx
OEElemNo_D = _oechem.OEElemNo_D
OEElemNo_T = _oechem.OEElemNo_T
OEMDLQueryOpts_SuppressExplicitH = _oechem.OEMDLQueryOpts_SuppressExplicitH
OEMDLQueryOpts_AddBondAliphaticConstraint = _oechem.OEMDLQueryOpts_AddBondAliphaticConstraint
OEMDLQueryOpts_AddBondTopologyConstraint = _oechem.OEMDLQueryOpts_AddBondTopologyConstraint
OEMDLQueryOpts_ReactionQuery = _oechem.OEMDLQueryOpts_ReactionQuery
OEMDLQueryOpts_MatchIsotope = _oechem.OEMDLQueryOpts_MatchIsotope
OEMDLQueryOpts_MatchAtomStereo = _oechem.OEMDLQueryOpts_MatchAtomStereo
OEMDLQueryOpts_Optimize = _oechem.OEMDLQueryOpts_Optimize

OEMDLQueryOpts_Default = OEMDLQueryOpts_Optimize

OEFormat_UNDEFINED = _oechem.OEFormat_UNDEFINED
OEFormat_SMI = _oechem.OEFormat_SMI
OEFormat_MDL = _oechem.OEFormat_MDL
OEFormat_PDB = _oechem.OEFormat_PDB
OEFormat_MOL2 = _oechem.OEFormat_MOL2
OEFormat_USM = _oechem.OEFormat_USM
OEFormat_ISM = _oechem.OEFormat_ISM
OEFormat_MOL2H = _oechem.OEFormat_MOL2H
OEFormat_SDF = _oechem.OEFormat_SDF
OEFormat_CAN = _oechem.OEFormat_CAN
OEFormat_MF = _oechem.OEFormat_MF
OEFormat_XYZ = _oechem.OEFormat_XYZ
OEFormat_FASTA = _oechem.OEFormat_FASTA
OEFormat_MOPAC = _oechem.OEFormat_MOPAC
OEFormat_OEB = _oechem.OEFormat_OEB
OEFormat_MMOD = _oechem.OEFormat_MMOD
OEFormat_SLN = _oechem.OEFormat_SLN
OEFormat_RDF = _oechem.OEFormat_RDF
OEFormat_CDX = _oechem.OEFormat_CDX
OEFormat_SKC = _oechem.OEFormat_SKC
OEFormat_INCHI = _oechem.OEFormat_INCHI
OEFormat_INCHIKEY = _oechem.OEFormat_INCHIKEY
OEFormat_CSV = _oechem.OEFormat_CSV
OEFormat_JSON = _oechem.OEFormat_JSON
OEFormat_CIF = _oechem.OEFormat_CIF
OEFormat_OEZ = _oechem.OEFormat_OEZ
OEFormat_MMCIF = _oechem.OEFormat_MMCIF
OEFormat_MAXFORMAT = _oechem.OEFormat_MAXFORMAT
OEFormat_Default = _oechem.OEFormat_Default
OEIFlavor_Generic_OEAroModelDaylight = _oechem.OEIFlavor_Generic_OEAroModelDaylight
OEIFlavor_Generic_OEAroModelOpenEye = _oechem.OEIFlavor_Generic_OEAroModelOpenEye
OEIFlavor_Generic_OEAroModelTripos = _oechem.OEIFlavor_Generic_OEAroModelTripos
OEIFlavor_Generic_OEAroModelMMFF = _oechem.OEIFlavor_Generic_OEAroModelMMFF
OEIFlavor_Generic_OEAroModelMDL = _oechem.OEIFlavor_Generic_OEAroModelMDL
OEIFlavor_Generic_AroMask = _oechem.OEIFlavor_Generic_AroMask
OEIFlavor_Generic_Rings = _oechem.OEIFlavor_Generic_Rings
OEIFlavor_Generic_GenericMask = _oechem.OEIFlavor_Generic_GenericMask
OEIFlavor_Generic_SpecificMask = _oechem.OEIFlavor_Generic_SpecificMask
OEIFlavor_Generic_DEFAULT = _oechem.OEIFlavor_Generic_DEFAULT

OEIFlavor_Generic_Default = OEIFlavor_Generic_DEFAULT

OEIFlavor_SMI_Strict = _oechem.OEIFlavor_SMI_Strict
OEIFlavor_SMI_Canon = _oechem.OEIFlavor_SMI_Canon
OEIFlavor_SMI_DEFAULT = _oechem.OEIFlavor_SMI_DEFAULT

OEIFlavor_SMI_Default = OEIFlavor_SMI_DEFAULT

OEIFlavor_MDL_Default = _oechem.OEIFlavor_MDL_Default
OEIFlavor_MDL_FixBondMarks = _oechem.OEIFlavor_MDL_FixBondMarks
OEIFlavor_MDL_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_MDL_SuppressImp2ExpENHSTE
OEIFlavor_MDL_SuppressEmptyMolSkip = _oechem.OEIFlavor_MDL_SuppressEmptyMolSkip
OEIFlavor_MMCIF_DEFAULT = _oechem.OEIFlavor_MMCIF_DEFAULT

OEIFlavor_MMCIF_Default = OEIFlavor_MMCIF_DEFAULT

OEIFlavor_MMCIF_NoAltLoc = _oechem.OEIFlavor_MMCIF_NoAltLoc
OEIFlavor_PDB_TER = _oechem.OEIFlavor_PDB_TER
OEIFlavor_PDB_END = _oechem.OEIFlavor_PDB_END
OEIFlavor_PDB_ENDM = _oechem.OEIFlavor_PDB_ENDM

OEIFlavor_PDB_TerMask = OEIFlavor_PDB_ENDM|OEIFlavor_PDB_END|OEIFlavor_PDB_TER

OEIFlavor_PDB_ALL = _oechem.OEIFlavor_PDB_ALL
OEIFlavor_PDB_DATA = _oechem.OEIFlavor_PDB_DATA
OEIFlavor_PDB_CHARGE = _oechem.OEIFlavor_PDB_CHARGE
OEIFlavor_PDB_RADIUS = _oechem.OEIFlavor_PDB_RADIUS

OEIFlavor_PDB_DELPHI = OEIFlavor_PDB_RADIUS|OEIFlavor_PDB_CHARGE

OEIFlavor_PDB_FORMALCHARGE = _oechem.OEIFlavor_PDB_FORMALCHARGE
OEIFlavor_PDB_BasicMask = _oechem.OEIFlavor_PDB_BasicMask
OEIFlavor_PDB_FormalCrg = _oechem.OEIFlavor_PDB_FormalCrg
OEIFlavor_PDB_ImplicitH = _oechem.OEIFlavor_PDB_ImplicitH
OEIFlavor_PDB_BondOrder = _oechem.OEIFlavor_PDB_BondOrder
OEIFlavor_PDB_Rings = _oechem.OEIFlavor_PDB_Rings
OEIFlavor_PDB_Connect = _oechem.OEIFlavor_PDB_Connect
OEIFlavor_PDB_SecStruct = _oechem.OEIFlavor_PDB_SecStruct
OEIFlavor_PDB_ExtraMask = _oechem.OEIFlavor_PDB_ExtraMask
OEIFlavor_PDB_AllMask = _oechem.OEIFlavor_PDB_AllMask

OEIFlavor_PDB_DEFAULT = OEIFlavor_PDB_Connect|OEIFlavor_PDB_Rings|OEIFlavor_PDB_BondOrder|OEIFlavor_PDB_ImplicitH|OEIFlavor_PDB_FormalCrg|OEIFlavor_PDB_SecStruct|OEIFlavor_PDB_ENDM|OEIFlavor_PDB_END


OEIFlavor_PDB_Default = OEIFlavor_PDB_DEFAULT

OEIFlavor_PDB_ALTLOC = _oechem.OEIFlavor_PDB_ALTLOC
OEIFlavor_MOL2_M2H = _oechem.OEIFlavor_MOL2_M2H
OEIFlavor_MOL2_Forcefield = _oechem.OEIFlavor_MOL2_Forcefield
OEIFlavor_MOL2_AllMask = _oechem.OEIFlavor_MOL2_AllMask
OEIFlavor_MOL2_DEFAULT = _oechem.OEIFlavor_MOL2_DEFAULT

OEIFlavor_MOL2_Default = OEIFlavor_MOL2_DEFAULT

OEIFlavor_BIN_Default = _oechem.OEIFlavor_BIN_Default
OEIFlavor_USM_Default = _oechem.OEIFlavor_USM_Default
OEIFlavor_ISM_Default = _oechem.OEIFlavor_ISM_Default
OEIFlavor_MOL2H_M2H = _oechem.OEIFlavor_MOL2H_M2H
OEIFlavor_MOL2H_AllMask = _oechem.OEIFlavor_MOL2H_AllMask
OEIFlavor_MOL2H_DEFAULT = _oechem.OEIFlavor_MOL2H_DEFAULT

OEIFlavor_MOL2H_Default = OEIFlavor_MOL2H_DEFAULT

OEIFlavor_SDF_Default = _oechem.OEIFlavor_SDF_Default
OEIFlavor_SDF_FixBondMarks = _oechem.OEIFlavor_SDF_FixBondMarks
OEIFlavor_SDF_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_SDF_SuppressImp2ExpENHSTE
OEIFlavor_SDF_SuppressEmptyMolSkip = _oechem.OEIFlavor_SDF_SuppressEmptyMolSkip
OEIFlavor_CAN_Default = _oechem.OEIFlavor_CAN_Default
OEIFlavor_MF_Default = _oechem.OEIFlavor_MF_Default
OEIFlavor_CIF_FormalCrg = _oechem.OEIFlavor_CIF_FormalCrg
OEIFlavor_CIF_ImplicitH = _oechem.OEIFlavor_CIF_ImplicitH
OEIFlavor_CIF_BondOrder = _oechem.OEIFlavor_CIF_BondOrder
OEIFlavor_CIF_Rings = _oechem.OEIFlavor_CIF_Rings
OEIFlavor_CIF_OccFilterOneHalf = _oechem.OEIFlavor_CIF_OccFilterOneHalf
OEIFlavor_CIF_RemovePBCImages = _oechem.OEIFlavor_CIF_RemovePBCImages
OEIFlavor_CIF_NormalizeHydPos = _oechem.OEIFlavor_CIF_NormalizeHydPos
OEIFlavor_CIF_BondHydToClosest = _oechem.OEIFlavor_CIF_BondHydToClosest
OEIFlavor_CIF_RemoveQuestionMarkInLabel = _oechem.OEIFlavor_CIF_RemoveQuestionMarkInLabel

OEIFlavor_CIF_DEFAULT = OEIFlavor_CIF_FormalCrg|OEIFlavor_CIF_ImplicitH|OEIFlavor_CIF_BondOrder|OEIFlavor_CIF_Rings|OEIFlavor_CIF_OccFilterOneHalf|OEIFlavor_CIF_RemovePBCImages|OEIFlavor_CIF_NormalizeHydPos|OEIFlavor_CIF_BondHydToClosest|OEIFlavor_CIF_RemoveQuestionMarkInLabel


OEIFlavor_CIF_Default = OEIFlavor_CIF_DEFAULT

OEIFlavor_XYZ_FormalCrg = _oechem.OEIFlavor_XYZ_FormalCrg
OEIFlavor_XYZ_ImplicitH = _oechem.OEIFlavor_XYZ_ImplicitH
OEIFlavor_XYZ_BondOrder = _oechem.OEIFlavor_XYZ_BondOrder
OEIFlavor_XYZ_Rings = _oechem.OEIFlavor_XYZ_Rings
OEIFlavor_XYZ_Connect = _oechem.OEIFlavor_XYZ_Connect
OEIFlavor_XYZ_ExtraMask = _oechem.OEIFlavor_XYZ_ExtraMask
OEIFlavor_XYZ_Default = _oechem.OEIFlavor_XYZ_Default
OEIFlavor_FASTA_Default = _oechem.OEIFlavor_FASTA_Default
OEIFlavor_FASTA_CustomResidues = _oechem.OEIFlavor_FASTA_CustomResidues
OEIFlavor_FASTA_EmbeddedSMILES = _oechem.OEIFlavor_FASTA_EmbeddedSMILES
OEIFlavor_FASTA_AllMask = _oechem.OEIFlavor_FASTA_AllMask
OEIFlavor_MOPAC_Default = _oechem.OEIFlavor_MOPAC_Default
OEIFlavor_OEB_Default = _oechem.OEIFlavor_OEB_Default
OEIFlavor_OEZ_Default = _oechem.OEIFlavor_OEZ_Default
OEIFlavor_MMOD_FormalCrg = _oechem.OEIFlavor_MMOD_FormalCrg
OEIFlavor_MMOD_Default = _oechem.OEIFlavor_MMOD_Default
OEIFlavor_SLN_Default = _oechem.OEIFlavor_SLN_Default
OEIFlavor_RDF_Default = _oechem.OEIFlavor_RDF_Default
OEIFlavor_RDF_FixBondMarks = _oechem.OEIFlavor_RDF_FixBondMarks
OEIFlavor_RDF_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_RDF_SuppressImp2ExpENHSTE
OEIFlavor_RDF_SuppressEmptyMolSkip = _oechem.OEIFlavor_RDF_SuppressEmptyMolSkip
OEIFlavor_CDX_SuperAtom = _oechem.OEIFlavor_CDX_SuperAtom
OEIFlavor_CDX_DEFAULT = _oechem.OEIFlavor_CDX_DEFAULT

OEIFlavor_CDX_Default = OEIFlavor_CDX_DEFAULT

OEIFlavor_SKC_Default = _oechem.OEIFlavor_SKC_Default
OEIFlavor_INCHI_Default = _oechem.OEIFlavor_INCHI_Default
OEIFlavor_CSV_Header = _oechem.OEIFlavor_CSV_Header

OEIFlavor_CSV_Default = OEIFlavor_CSV_Header


OEIFlavor_CSV_DEFAULT = OEIFlavor_CSV_Default

OEIFlavor_JSON_Default = _oechem.OEIFlavor_JSON_Default
OEIFlavor_JSONSurface_Default = _oechem.OEIFlavor_JSONSurface_Default
OEOFlavor_Generic_OEAroModelDaylight = _oechem.OEOFlavor_Generic_OEAroModelDaylight
OEOFlavor_Generic_OEAroModelOpenEye = _oechem.OEOFlavor_Generic_OEAroModelOpenEye
OEOFlavor_Generic_OEAroModelTripos = _oechem.OEOFlavor_Generic_OEAroModelTripos
OEOFlavor_Generic_OEAroModelMMFF = _oechem.OEOFlavor_Generic_OEAroModelMMFF
OEOFlavor_Generic_OEAroModelMDL = _oechem.OEOFlavor_Generic_OEAroModelMDL
OEOFlavor_Generic_AroMask = _oechem.OEOFlavor_Generic_AroMask
OEOFlavor_Generic_Rings = _oechem.OEOFlavor_Generic_Rings
OEOFlavor_Generic_GenericMask = _oechem.OEOFlavor_Generic_GenericMask
OEOFlavor_Generic_SpecificMask = _oechem.OEOFlavor_Generic_SpecificMask
OEOFlavor_Generic_DEFAULT = _oechem.OEOFlavor_Generic_DEFAULT

OEOFlavor_Generic_Default = OEOFlavor_Generic_DEFAULT

OEOFlavor_SMI_Isotopes = _oechem.OEOFlavor_SMI_Isotopes
OEOFlavor_SMI_Hydrogens = _oechem.OEOFlavor_SMI_Hydrogens
OEOFlavor_SMI_RGroups = _oechem.OEOFlavor_SMI_RGroups
OEOFlavor_SMI_AtomStereo = _oechem.OEOFlavor_SMI_AtomStereo
OEOFlavor_SMI_BondStereo = _oechem.OEOFlavor_SMI_BondStereo
OEOFlavor_SMI_AtomMaps = _oechem.OEOFlavor_SMI_AtomMaps
OEOFlavor_SMI_Canonical = _oechem.OEOFlavor_SMI_Canonical
OEOFlavor_SMI_Kekule = _oechem.OEOFlavor_SMI_Kekule
OEOFlavor_SMI_SuperAtoms = _oechem.OEOFlavor_SMI_SuperAtoms
OEOFlavor_SMI_ExtBonds = _oechem.OEOFlavor_SMI_ExtBonds
OEOFlavor_SMI_ImpHCount = _oechem.OEOFlavor_SMI_ImpHCount
OEOFlavor_SMI_AllBonds = _oechem.OEOFlavor_SMI_AllBonds
OEOFlavor_SMI_SmiMask = _oechem.OEOFlavor_SMI_SmiMask
OEOFlavor_SMI_DEFAULT = _oechem.OEOFlavor_SMI_DEFAULT

OEOFlavor_SMI_Default = OEOFlavor_SMI_DEFAULT

OEOFlavor_MDL_MCHG = _oechem.OEOFlavor_MDL_MCHG
OEOFlavor_MDL_MISO = _oechem.OEOFlavor_MDL_MISO
OEOFlavor_MDL_MRGP = _oechem.OEOFlavor_MDL_MRGP
OEOFlavor_MDL_MV30 = _oechem.OEOFlavor_MDL_MV30
OEOFlavor_MDL_MDLParity = _oechem.OEOFlavor_MDL_MDLParity
OEOFlavor_MDL_NoParity = _oechem.OEOFlavor_MDL_NoParity
OEOFlavor_MDL_CurrentParity = _oechem.OEOFlavor_MDL_CurrentParity
OEOFlavor_MDL_MMask = _oechem.OEOFlavor_MDL_MMask
OEOFlavor_MDL_PMask = _oechem.OEOFlavor_MDL_PMask
OEOFlavor_MDL_Add2D = _oechem.OEOFlavor_MDL_Add2D
OEOFlavor_MDL_UnsetBad2DStereo = _oechem.OEOFlavor_MDL_UnsetBad2DStereo
OEOFlavor_MDL_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_MDL_SuppressImp2ExpENHSTE
OEOFlavor_MDL_SuppressTimestamps = _oechem.OEOFlavor_MDL_SuppressTimestamps
OEOFlavor_MDL_DEFAULT = _oechem.OEOFlavor_MDL_DEFAULT

OEOFlavor_MDL_Default = OEOFlavor_MDL_DEFAULT

OEOFlavor_MMCIF_DEFAULT = _oechem.OEOFlavor_MMCIF_DEFAULT

OEOFlavor_MMCIF_Default = OEOFlavor_MMCIF_DEFAULT

OEOFlavor_PDB_BONDS = _oechem.OEOFlavor_PDB_BONDS
OEOFlavor_PDB_ORDERS = _oechem.OEOFlavor_PDB_ORDERS
OEOFlavor_PDB_BOTH = _oechem.OEOFlavor_PDB_BOTH
OEOFlavor_PDB_CHARGE = _oechem.OEOFlavor_PDB_CHARGE
OEOFlavor_PDB_RADIUS = _oechem.OEOFlavor_PDB_RADIUS
OEOFlavor_PDB_TER = _oechem.OEOFlavor_PDB_TER
OEOFlavor_PDB_DELPHI = _oechem.OEOFlavor_PDB_DELPHI
OEOFlavor_PDB_ELEMENT = _oechem.OEOFlavor_PDB_ELEMENT
OEOFlavor_PDB_FormalCrg = _oechem.OEOFlavor_PDB_FormalCrg
OEOFlavor_PDB_FORMALCHARGE = _oechem.OEOFlavor_PDB_FORMALCHARGE
OEOFlavor_PDB_HETBONDS = _oechem.OEOFlavor_PDB_HETBONDS
OEOFlavor_PDB_BasicMask = _oechem.OEOFlavor_PDB_BasicMask
OEOFlavor_PDB_OEResidues = _oechem.OEOFlavor_PDB_OEResidues
OEOFlavor_PDB_NoResidues = _oechem.OEOFlavor_PDB_NoResidues
OEOFlavor_PDB_CurrentResidues = _oechem.OEOFlavor_PDB_CurrentResidues
OEOFlavor_PDB_OrderAtoms = _oechem.OEOFlavor_PDB_OrderAtoms
OEOFlavor_PDB_AllMask = _oechem.OEOFlavor_PDB_AllMask
OEOFlavor_PDB_DEFAULT = _oechem.OEOFlavor_PDB_DEFAULT

OEOFlavor_PDB_Default = OEOFlavor_PDB_DEFAULT

OEOFlavor_MOL2_AtomTypeNames = _oechem.OEOFlavor_MOL2_AtomTypeNames
OEOFlavor_MOL2_BondTypeNames = _oechem.OEOFlavor_MOL2_BondTypeNames
OEOFlavor_MOL2_AtomNames = _oechem.OEOFlavor_MOL2_AtomNames
OEOFlavor_MOL2_OrderAtoms = _oechem.OEOFlavor_MOL2_OrderAtoms
OEOFlavor_MOL2_Hydrogens = _oechem.OEOFlavor_MOL2_Hydrogens
OEOFlavor_MOL2_Substructure = _oechem.OEOFlavor_MOL2_Substructure
OEOFlavor_MOL2_ChargePrecision = _oechem.OEOFlavor_MOL2_ChargePrecision
OEOFlavor_MOL2_GeneralFFFormat = _oechem.OEOFlavor_MOL2_GeneralFFFormat
OEOFlavor_MOL2_Forcefield = _oechem.OEOFlavor_MOL2_Forcefield
OEOFlavor_MOL2_NameMask = _oechem.OEOFlavor_MOL2_NameMask
OEOFlavor_MOL2_AllMask = _oechem.OEOFlavor_MOL2_AllMask
OEOFlavor_MOL2_DEFAULT = _oechem.OEOFlavor_MOL2_DEFAULT

OEOFlavor_MOL2_Default = OEOFlavor_MOL2_DEFAULT

OEOFlavor_BIN_Default = _oechem.OEOFlavor_BIN_Default
OEOFlavor_USM_Isotopes = _oechem.OEOFlavor_USM_Isotopes
OEOFlavor_USM_Hydrogens = _oechem.OEOFlavor_USM_Hydrogens
OEOFlavor_USM_RGroups = _oechem.OEOFlavor_USM_RGroups
OEOFlavor_USM_AtomStereo = _oechem.OEOFlavor_USM_AtomStereo
OEOFlavor_USM_BondStereo = _oechem.OEOFlavor_USM_BondStereo
OEOFlavor_USM_AtomMaps = _oechem.OEOFlavor_USM_AtomMaps
OEOFlavor_USM_Canonical = _oechem.OEOFlavor_USM_Canonical
OEOFlavor_USM_Kekule = _oechem.OEOFlavor_USM_Kekule
OEOFlavor_USM_SuperAtoms = _oechem.OEOFlavor_USM_SuperAtoms
OEOFlavor_USM_ExtBonds = _oechem.OEOFlavor_USM_ExtBonds
OEOFlavor_USM_ImpHCount = _oechem.OEOFlavor_USM_ImpHCount
OEOFlavor_USM_AllBonds = _oechem.OEOFlavor_USM_AllBonds
OEOFlavor_USM_SmiMask = _oechem.OEOFlavor_USM_SmiMask
OEOFlavor_USM_DEFAULT = _oechem.OEOFlavor_USM_DEFAULT

OEOFlavor_USM_Default = OEOFlavor_USM_DEFAULT

OEOFlavor_ISM_Isotopes = _oechem.OEOFlavor_ISM_Isotopes
OEOFlavor_ISM_Hydrogens = _oechem.OEOFlavor_ISM_Hydrogens
OEOFlavor_ISM_RGroups = _oechem.OEOFlavor_ISM_RGroups
OEOFlavor_ISM_AtomStereo = _oechem.OEOFlavor_ISM_AtomStereo
OEOFlavor_ISM_BondStereo = _oechem.OEOFlavor_ISM_BondStereo
OEOFlavor_ISM_AtomMaps = _oechem.OEOFlavor_ISM_AtomMaps
OEOFlavor_ISM_Canonical = _oechem.OEOFlavor_ISM_Canonical
OEOFlavor_ISM_Kekule = _oechem.OEOFlavor_ISM_Kekule
OEOFlavor_ISM_SuperAtoms = _oechem.OEOFlavor_ISM_SuperAtoms
OEOFlavor_ISM_ExtBonds = _oechem.OEOFlavor_ISM_ExtBonds
OEOFlavor_ISM_ImpHCount = _oechem.OEOFlavor_ISM_ImpHCount
OEOFlavor_ISM_AllBonds = _oechem.OEOFlavor_ISM_AllBonds
OEOFlavor_ISM_SmiMask = _oechem.OEOFlavor_ISM_SmiMask
OEOFlavor_ISM_DEFAULT = _oechem.OEOFlavor_ISM_DEFAULT

OEOFlavor_ISM_Default = OEOFlavor_ISM_DEFAULT

OEOFlavor_MOL2H_AtomTypeNames = _oechem.OEOFlavor_MOL2H_AtomTypeNames
OEOFlavor_MOL2H_BondTypeNames = _oechem.OEOFlavor_MOL2H_BondTypeNames
OEOFlavor_MOL2H_AtomNames = _oechem.OEOFlavor_MOL2H_AtomNames
OEOFlavor_MOL2H_OrderAtoms = _oechem.OEOFlavor_MOL2H_OrderAtoms
OEOFlavor_MOL2H_Hydrogens = _oechem.OEOFlavor_MOL2H_Hydrogens
OEOFlavor_MOL2H_Substructure = _oechem.OEOFlavor_MOL2H_Substructure
OEOFlavor_MOL2H_NameMask = _oechem.OEOFlavor_MOL2H_NameMask
OEOFlavor_MOL2H_AllMask = _oechem.OEOFlavor_MOL2H_AllMask
OEOFlavor_MOL2H_DEFAULT = _oechem.OEOFlavor_MOL2H_DEFAULT

OEOFlavor_MOL2H_Default = OEOFlavor_MOL2H_DEFAULT

OEOFlavor_SDF_MCHG = _oechem.OEOFlavor_SDF_MCHG
OEOFlavor_SDF_MISO = _oechem.OEOFlavor_SDF_MISO
OEOFlavor_SDF_MRGP = _oechem.OEOFlavor_SDF_MRGP
OEOFlavor_SDF_MV30 = _oechem.OEOFlavor_SDF_MV30
OEOFlavor_SDF_MDLParity = _oechem.OEOFlavor_SDF_MDLParity
OEOFlavor_SDF_NoParity = _oechem.OEOFlavor_SDF_NoParity
OEOFlavor_SDF_CurrentParity = _oechem.OEOFlavor_SDF_CurrentParity
OEOFlavor_SDF_MMask = _oechem.OEOFlavor_SDF_MMask
OEOFlavor_SDF_PMask = _oechem.OEOFlavor_SDF_PMask
OEOFlavor_SDF_Add2D = _oechem.OEOFlavor_SDF_Add2D
OEOFlavor_SDF_UnsetBad2DStereo = _oechem.OEOFlavor_SDF_UnsetBad2DStereo
OEOFlavor_SDF_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_SDF_SuppressImp2ExpENHSTE
OEOFlavor_SDF_SuppressTimestamps = _oechem.OEOFlavor_SDF_SuppressTimestamps
OEOFlavor_SDF_DEFAULT = _oechem.OEOFlavor_SDF_DEFAULT

OEOFlavor_SDF_Default = OEOFlavor_SDF_DEFAULT

OEOFlavor_CAN_Isotopes = _oechem.OEOFlavor_CAN_Isotopes
OEOFlavor_CAN_Hydrogens = _oechem.OEOFlavor_CAN_Hydrogens
OEOFlavor_CAN_RGroups = _oechem.OEOFlavor_CAN_RGroups
OEOFlavor_CAN_AtomStereo = _oechem.OEOFlavor_CAN_AtomStereo
OEOFlavor_CAN_BondStereo = _oechem.OEOFlavor_CAN_BondStereo
OEOFlavor_CAN_AtomMaps = _oechem.OEOFlavor_CAN_AtomMaps
OEOFlavor_CAN_Canonical = _oechem.OEOFlavor_CAN_Canonical
OEOFlavor_CAN_Kekule = _oechem.OEOFlavor_CAN_Kekule
OEOFlavor_CAN_SuperAtoms = _oechem.OEOFlavor_CAN_SuperAtoms
OEOFlavor_CAN_ExtBonds = _oechem.OEOFlavor_CAN_ExtBonds
OEOFlavor_CAN_ImpHCount = _oechem.OEOFlavor_CAN_ImpHCount
OEOFlavor_CAN_AllBonds = _oechem.OEOFlavor_CAN_AllBonds
OEOFlavor_CAN_SmiMask = _oechem.OEOFlavor_CAN_SmiMask
OEOFlavor_CAN_DEFAULT = _oechem.OEOFlavor_CAN_DEFAULT

OEOFlavor_CAN_Default = OEOFlavor_CAN_DEFAULT

OEOFlavor_CIF_DEFAULT = _oechem.OEOFlavor_CIF_DEFAULT

OEOFlavor_CIF_Default = OEOFlavor_CIF_DEFAULT

OEOFlavor_MF_Title = _oechem.OEOFlavor_MF_Title
OEOFlavor_MF_DEFAULT = _oechem.OEOFlavor_MF_DEFAULT

OEOFlavor_MF_Default = OEOFlavor_MF_DEFAULT

OEOFlavor_XYZ_Charges = _oechem.OEOFlavor_XYZ_Charges
OEOFlavor_XYZ_Symbols = _oechem.OEOFlavor_XYZ_Symbols
OEOFlavor_XYZ_SinglePrecision = _oechem.OEOFlavor_XYZ_SinglePrecision
OEOFlavor_XYZ_DoublePrecision = _oechem.OEOFlavor_XYZ_DoublePrecision

OEOFlavor_XYZ_Default = OEOFlavor_XYZ_Charges|OEOFlavor_XYZ_Symbols


OEOFlavor_XYZ_AllMask = OEOFlavor_XYZ_Charges|OEOFlavor_XYZ_Symbols|OEOFlavor_XYZ_SinglePrecision|OEOFlavor_XYZ_DoublePrecision

OEOFlavor_FASTA_Default = _oechem.OEOFlavor_FASTA_Default
OEOFlavor_MOPAC_XYZ = _oechem.OEOFlavor_MOPAC_XYZ
OEOFlavor_MOPAC_CHARGES = _oechem.OEOFlavor_MOPAC_CHARGES
OEOFlavor_MOPAC_AllMask = _oechem.OEOFlavor_MOPAC_AllMask
OEOFlavor_MOPAC_DEFAULT = _oechem.OEOFlavor_MOPAC_DEFAULT

OEOFlavor_MOPAC_Default = OEOFlavor_MOPAC_DEFAULT

OEOFlavor_OEB_Default = _oechem.OEOFlavor_OEB_Default
OEOFlavor_OEZ_Default = _oechem.OEOFlavor_OEZ_Default
OEOFlavor_MMOD_AtomTypes = _oechem.OEOFlavor_MMOD_AtomTypes
OEOFlavor_MMOD_DEFAULT = _oechem.OEOFlavor_MMOD_DEFAULT

OEOFlavor_MMOD_Default = OEOFlavor_MMOD_DEFAULT

OEOFlavor_SLN_Default = _oechem.OEOFlavor_SLN_Default
OEOFlavor_RDF_MCHG = _oechem.OEOFlavor_RDF_MCHG
OEOFlavor_RDF_MISO = _oechem.OEOFlavor_RDF_MISO
OEOFlavor_RDF_MRGP = _oechem.OEOFlavor_RDF_MRGP
OEOFlavor_RDF_MV30 = _oechem.OEOFlavor_RDF_MV30
OEOFlavor_RDF_MDLParity = _oechem.OEOFlavor_RDF_MDLParity
OEOFlavor_RDF_NoParity = _oechem.OEOFlavor_RDF_NoParity
OEOFlavor_RDF_CurrentParity = _oechem.OEOFlavor_RDF_CurrentParity
OEOFlavor_RDF_MMask = _oechem.OEOFlavor_RDF_MMask
OEOFlavor_RDF_PMask = _oechem.OEOFlavor_RDF_PMask
OEOFlavor_RDF_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_RDF_SuppressImp2ExpENHSTE
OEOFlavor_RDF_DEFAULT = _oechem.OEOFlavor_RDF_DEFAULT

OEOFlavor_RDF_Default = OEOFlavor_RDF_DEFAULT

OEOFlavor_CDX_Add2D = _oechem.OEOFlavor_CDX_Add2D
OEOFlavor_CDX_UnsetBad2DStereo = _oechem.OEOFlavor_CDX_UnsetBad2DStereo
OEOFlavor_CDX_Default = _oechem.OEOFlavor_CDX_Default
OEOFlavor_SKC_Default = _oechem.OEOFlavor_SKC_Default
OEOFlavor_INCHI_Hydrogens = _oechem.OEOFlavor_INCHI_Hydrogens
OEOFlavor_INCHI_Stereo = _oechem.OEOFlavor_INCHI_Stereo
OEOFlavor_INCHI_Chiral = _oechem.OEOFlavor_INCHI_Chiral
OEOFlavor_INCHI_FixedHLayer = _oechem.OEOFlavor_INCHI_FixedHLayer
OEOFlavor_INCHI_ReconnectedMetals = _oechem.OEOFlavor_INCHI_ReconnectedMetals
OEOFlavor_INCHI_RelativeStereo = _oechem.OEOFlavor_INCHI_RelativeStereo
OEOFlavor_INCHI_RacemicStereo = _oechem.OEOFlavor_INCHI_RacemicStereo
OEOFlavor_INCHI_Title = _oechem.OEOFlavor_INCHI_Title

OEOFlavor_INCHI_Default = OEOFlavor_INCHI_Stereo|OEOFlavor_INCHI_Title

OEOFlavor_INCHI_INCHIMask = _oechem.OEOFlavor_INCHI_INCHIMask
OEOFlavor_INCHIKEY_Hydrogens = _oechem.OEOFlavor_INCHIKEY_Hydrogens
OEOFlavor_INCHIKEY_Stereo = _oechem.OEOFlavor_INCHIKEY_Stereo
OEOFlavor_INCHIKEY_Chiral = _oechem.OEOFlavor_INCHIKEY_Chiral
OEOFlavor_INCHIKEY_FixedHLayer = _oechem.OEOFlavor_INCHIKEY_FixedHLayer
OEOFlavor_INCHIKEY_ReconnectedMetals = _oechem.OEOFlavor_INCHIKEY_ReconnectedMetals
OEOFlavor_INCHIKEY_RelativeStereo = _oechem.OEOFlavor_INCHIKEY_RelativeStereo
OEOFlavor_INCHIKEY_RacemicStereo = _oechem.OEOFlavor_INCHIKEY_RacemicStereo
OEOFlavor_INCHIKEY_Title = _oechem.OEOFlavor_INCHIKEY_Title

OEOFlavor_INCHIKEY_Default = OEOFlavor_INCHIKEY_Stereo|OEOFlavor_INCHIKEY_Title

OEOFlavor_INCHIKEY_INCHIKEYMask = _oechem.OEOFlavor_INCHIKEY_INCHIKEYMask
OEOFlavor_CSV_Header = _oechem.OEOFlavor_CSV_Header

OEOFlavor_CSV_Default = OEOFlavor_CSV_Header


OEOFlavor_CSV_DEFAULT = OEOFlavor_CSV_Default

OEOFlavor_JSON_Structure = _oechem.OEOFlavor_JSON_Structure
OEOFlavor_JSON_Coords = _oechem.OEOFlavor_JSON_Coords
OEOFlavor_JSON_Residues = _oechem.OEOFlavor_JSON_Residues
OEOFlavor_JSON_PartialCharges = _oechem.OEOFlavor_JSON_PartialCharges
OEOFlavor_JSON_AtomNames = _oechem.OEOFlavor_JSON_AtomNames
OEOFlavor_JSON_Styles = _oechem.OEOFlavor_JSON_Styles
OEOFlavor_JSON_Interactions = _oechem.OEOFlavor_JSON_Interactions
OEOFlavor_JSON_RGroups = _oechem.OEOFlavor_JSON_RGroups
OEOFlavor_JSON_SDData = _oechem.OEOFlavor_JSON_SDData
OEOFlavor_JSON_UserData = _oechem.OEOFlavor_JSON_UserData
OEOFlavor_JSON_Smiles = _oechem.OEOFlavor_JSON_Smiles
OEOFlavor_JSON_Reaction = _oechem.OEOFlavor_JSON_Reaction
OEOFlavor_JSON_EscapeData = _oechem.OEOFlavor_JSON_EscapeData
OEOFlavor_JSON_Packed = _oechem.OEOFlavor_JSON_Packed
OEOFlavor_JSON_Normals = _oechem.OEOFlavor_JSON_Normals

OEOFlavor_JSON_Default = OEOFlavor_JSON_Structure|OEOFlavor_JSON_Coords|OEOFlavor_JSON_RGroups|OEOFlavor_JSON_SDData|OEOFlavor_JSON_UserData|OEOFlavor_JSON_Residues|OEOFlavor_JSON_AtomNames|OEOFlavor_JSON_Reaction


OEOFlavor_JSON_All = OEOFlavor_JSON_Structure|OEOFlavor_JSON_Coords|OEOFlavor_JSON_Residues|OEOFlavor_JSON_PartialCharges|OEOFlavor_JSON_AtomNames|OEOFlavor_JSON_Styles|OEOFlavor_JSON_Interactions|OEOFlavor_JSON_RGroups|OEOFlavor_JSON_SDData|OEOFlavor_JSON_UserData|OEOFlavor_JSON_Smiles|OEOFlavor_JSON_Packed|OEOFlavor_JSON_Reaction

OEOFlavor_JSONSurface_UserData = _oechem.OEOFlavor_JSONSurface_UserData
OEOFlavor_JSONSurface_EscapeData = _oechem.OEOFlavor_JSONSurface_EscapeData
OEOFlavor_JSONSurface_Packed = _oechem.OEOFlavor_JSONSurface_Packed
OEOFlavor_JSONSurface_Normals = _oechem.OEOFlavor_JSONSurface_Normals

OEOFlavor_JSONSurface_Default = OEOFlavor_JSONSurface_UserData


OEOFlavor_JSONSurface_All = OEOFlavor_JSONSurface_UserData|OEOFlavor_JSONSurface_Packed|OEOFlavor_JSONSurface_Normals


OEWriteMolReturnCode_Success = 0


OEWriteMolReturnCode_NoParentClass = 1


OEWriteMolReturnCode_CheckFailed = 2


OEWriteMolReturnCode_StreamFailed = 3


OEWriteMolReturnCode_IncorrectSize = 4


OEWriteMolReturnCode_Continue = 5


OEWriteMolReturnCode_ReadTagFailed = 6


OEWriteMolReturnCode_CorruptHeader = 7


OEWriteMolReturnCode_EndOfFile = 8


OEWriteMolReturnCode_ReadLengthFailed = 9


OEWriteMolReturnCode_TypeCheckFailed = 10


OEWriteMolReturnCode_IncorrectHandlerType = 11

OEWriteMolReturnCode_TooManyAtoms = _oechem.OEWriteMolReturnCode_TooManyAtoms
OEWriteMolReturnCode_OEBWriteFailure = _oechem.OEWriteMolReturnCode_OEBWriteFailure
OEWriteMolReturnCode_FormatNotWritable = _oechem.OEWriteMolReturnCode_FormatNotWritable
OEWriteMolReturnCode_NoConformer = _oechem.OEWriteMolReturnCode_NoConformer
OEMDLOFlag_MCHG = _oechem.OEMDLOFlag_MCHG
OEMDLOFlag_MISO = _oechem.OEMDLOFlag_MISO
OEMDLOFlag_MRGP = _oechem.OEMDLOFlag_MRGP
OEMDLOFlag_MV30 = _oechem.OEMDLOFlag_MV30
OEMDLOFlag_DEFAULT = _oechem.OEMDLOFlag_DEFAULT
OEPDBIFlag_TER = _oechem.OEPDBIFlag_TER
OEPDBIFlag_END = _oechem.OEPDBIFlag_END
OEPDBIFlag_ENDM = _oechem.OEPDBIFlag_ENDM
OEPDBIFlag_ALL = _oechem.OEPDBIFlag_ALL
OEPDBIFlag_DATA = _oechem.OEPDBIFlag_DATA
OEPDBIFlag_CHARGE = _oechem.OEPDBIFlag_CHARGE
OEPDBIFlag_RADIUS = _oechem.OEPDBIFlag_RADIUS
OEPDBIFlag_DELPHI = _oechem.OEPDBIFlag_DELPHI
OEPDBIFlag_DEFAULT = _oechem.OEPDBIFlag_DEFAULT
OEPDBOFlag_BONDS = _oechem.OEPDBOFlag_BONDS
OEPDBOFlag_ORDERS = _oechem.OEPDBOFlag_ORDERS
OEPDBOFlag_BOTH = _oechem.OEPDBOFlag_BOTH
OEPDBOFlag_CHARGE = _oechem.OEPDBOFlag_CHARGE
OEPDBOFlag_RADIUS = _oechem.OEPDBOFlag_RADIUS
OEPDBOFlag_TER = _oechem.OEPDBOFlag_TER
OEPDBOFlag_ELEMENT = _oechem.OEPDBOFlag_ELEMENT
OEPDBOFlag_FORMALCHARGE = _oechem.OEPDBOFlag_FORMALCHARGE
OEPDBOFlag_HETBONDS = _oechem.OEPDBOFlag_HETBONDS
OEPDBOFlag_DELPHI = _oechem.OEPDBOFlag_DELPHI
OEPDBOFlag_DEFAULT = _oechem.OEPDBOFlag_DEFAULT
OEMOPACOFlag_XYZ = _oechem.OEMOPACOFlag_XYZ
OEMOPACOFlag_CHARGES = _oechem.OEMOPACOFlag_CHARGES
OEMOPACOFlag_DEFAULT = _oechem.OEMOPACOFlag_DEFAULT
OEProperty_Undefined = _oechem.OEProperty_Undefined
OEProperty_Aromatic = _oechem.OEProperty_Aromatic
OEProperty_Ring = _oechem.OEProperty_Ring
OEProperty_Donor = _oechem.OEProperty_Donor
OEProperty_Acceptor = _oechem.OEProperty_Acceptor
OEProperty_Both = _oechem.OEProperty_Both
OEProperty_Chiral = _oechem.OEProperty_Chiral
OEProperty_Exo = _oechem.OEProperty_Exo
OEProperty_Endo = _oechem.OEProperty_Endo
OEProperty_StereoDefined = _oechem.OEProperty_StereoDefined
OEProperty_Visit = _oechem.OEProperty_Visit
OEProperty_Deleted = _oechem.OEProperty_Deleted
OEProperty_Single = _oechem.OEProperty_Single
OEProperty_Double = _oechem.OEProperty_Double
OEProperty_Triple = _oechem.OEProperty_Triple
OEProperty_Closure = _oechem.OEProperty_Closure
OEProperty_Rotor = _oechem.OEProperty_Rotor
OEProperty_RingAtomsAndBonds = _oechem.OEProperty_RingAtomsAndBonds
OEProperty_ClosureBonds = _oechem.OEProperty_ClosureBonds
OEProperty_Chirality = _oechem.OEProperty_Chirality
OEProperty_Hybridization = _oechem.OEProperty_Hybridization
OEProperty_Kekule = _oechem.OEProperty_Kekule
OEProperty_Degree = _oechem.OEProperty_Degree
OEProperty_Valence = _oechem.OEProperty_Valence
OEProperty_PhCorrected = _oechem.OEProperty_PhCorrected
OEProperty_AtomTypes = _oechem.OEProperty_AtomTypes
OEProperty_Residue = _oechem.OEProperty_Residue
OEProperty_BondOrders = _oechem.OEProperty_BondOrders
OEProperty_HydrogenMode = _oechem.OEProperty_HydrogenMode
OEProperty_DeletedAtoms = _oechem.OEProperty_DeletedAtoms
OEProperty_DeletedBonds = _oechem.OEProperty_DeletedBonds
OEProperty_AtomTypeString = _oechem.OEProperty_AtomTypeString
OEProperty_BondTypeString = _oechem.OEProperty_BondTypeString
OEProperty_Isotope = _oechem.OEProperty_Isotope
OEProperty_PartialCharge = _oechem.OEProperty_PartialCharge
OEProperty_AtomTypeInt = _oechem.OEProperty_AtomTypeInt
OEProperty_AtomName = _oechem.OEProperty_AtomName
OEProperty_X = _oechem.OEProperty_X
OEProperty_Y = _oechem.OEProperty_Y
OEProperty_Z = _oechem.OEProperty_Z
OEProperty_MatchOrder = _oechem.OEProperty_MatchOrder
OEProperty_OEBase = _oechem.OEProperty_OEBase
OEProperty_Rxn = _oechem.OEProperty_Rxn
OEProperty_RxnRole = _oechem.OEProperty_RxnRole
OEProperty_AtomMemberPred = _oechem.OEProperty_AtomMemberPred
OEProperty_BondMemberPred = _oechem.OEProperty_BondMemberPred
OEProperty_BondStereo = _oechem.OEProperty_BondStereo
OEProperty_Component = _oechem.OEProperty_Component
OEProperty_AroModel = _oechem.OEProperty_AroModel
OEProperty_PartialChargeModel = _oechem.OEProperty_PartialChargeModel
OEProperty_Dimension = _oechem.OEProperty_Dimension
OEProperty_Perceived = _oechem.OEProperty_Perceived
OEProperty_MapIdx = _oechem.OEProperty_MapIdx
OEProperty_SymClass = _oechem.OEProperty_SymClass
OEProperty_All = _oechem.OEProperty_All
OEProperty_Radius = _oechem.OEProperty_Radius
OEProperty_Anisou = _oechem.OEProperty_Anisou
OEProperty_MolDBIdx = _oechem.OEProperty_MolDBIdx
OERxnRole_None = _oechem.OERxnRole_None
OERxnRole_Reactant = _oechem.OERxnRole_Reactant
OERxnRole_Agent = _oechem.OERxnRole_Agent
OERxnRole_Product = _oechem.OERxnRole_Product
OERxnRole_Catalyst = _oechem.OERxnRole_Catalyst
OECounts_Undefined = _oechem.OECounts_Undefined
OECounts_Atoms = _oechem.OECounts_Atoms
OECounts_Bonds = _oechem.OECounts_Bonds
OECounts_Conformers = _oechem.OECounts_Conformers
OECounts_Poses = _oechem.OECounts_Poses
OECounts_Rotors = _oechem.OECounts_Rotors
OEFuzzVal_False = _oechem.OEFuzzVal_False
OEFuzzVal_True = _oechem.OEFuzzVal_True
OEFuzzVal_Maybe = _oechem.OEFuzzVal_Maybe
OEGroupType_Undefined = _oechem.OEGroupType_Undefined
OEGroupType_MDLAbsStereo = _oechem.OEGroupType_MDLAbsStereo
OEGroupType_MDLOrStereo = _oechem.OEGroupType_MDLOrStereo
OEGroupType_MDLAndStereo = _oechem.OEGroupType_MDLAndStereo
OEGroupType_Component = _oechem.OEGroupType_Component
OEGroupType_UserDefined = _oechem.OEGroupType_UserDefined
OEHybridization_Unknown = _oechem.OEHybridization_Unknown
OEHybridization_sp = _oechem.OEHybridization_sp
OEHybridization_sp2 = _oechem.OEHybridization_sp2
OEHybridization_sp3 = _oechem.OEHybridization_sp3
OEHybridization_sp3d = _oechem.OEHybridization_sp3d
OEHybridization_sp3d2 = _oechem.OEHybridization_sp3d2
OELingoType_Undefined = _oechem.OELingoType_Undefined
OELingoType_IsoSmiMap = _oechem.OELingoType_IsoSmiMap
OELingoType_Default = _oechem.OELingoType_Default
OEMCSType_Exhaustive = _oechem.OEMCSType_Exhaustive
OEMCSType_Approximate = _oechem.OEMCSType_Approximate

OEMCSType_Default = OEMCSType_Exhaustive

OEMMFFType_UNK = _oechem.OEMMFFType_UNK
OEMMFFType_CR = _oechem.OEMMFFType_CR
OEMMFFType_CC = _oechem.OEMMFFType_CC
OEMMFFType_CSP2 = _oechem.OEMMFFType_CSP2
OEMMFFType_CO = _oechem.OEMMFFType_CO
OEMMFFType_CN = _oechem.OEMMFFType_CN
OEMMFFType_CGD = _oechem.OEMMFFType_CGD
OEMMFFType_COR = _oechem.OEMMFFType_COR
OEMMFFType_CON = _oechem.OEMMFFType_CON
OEMMFFType_COO = _oechem.OEMMFFType_COO
OEMMFFType_COON = _oechem.OEMMFFType_COON
OEMMFFType_COOO = _oechem.OEMMFFType_COOO
OEMMFFType_COS = _oechem.OEMMFFType_COS
OEMMFFType_CS = _oechem.OEMMFFType_CS
OEMMFFType_CSN = _oechem.OEMMFFType_CSN
OEMMFFType_CSO2 = _oechem.OEMMFFType_CSO2
OEMMFFType_CSO = _oechem.OEMMFFType_CSO
OEMMFFType_CSS = _oechem.OEMMFFType_CSS
OEMMFFType_CP = _oechem.OEMMFFType_CP
OEMMFFType_CSP = _oechem.OEMMFFType_CSP
OEMMFFType_C = _oechem.OEMMFFType_C
OEMMFFType_HC = _oechem.OEMMFFType_HC
OEMMFFType_HSI = _oechem.OEMMFFType_HSI
OEMMFFType_O = _oechem.OEMMFFType_O
OEMMFFType_OR = _oechem.OEMMFFType_OR
OEMMFFType_OCO = _oechem.OEMMFFType_OCO
OEMMFFType_OCC = _oechem.OEMMFFType_OCC
OEMMFFType_OCN = _oechem.OEMMFFType_OCN
OEMMFFType_OCS = _oechem.OEMMFFType_OCS
OEMMFFType_ONO2 = _oechem.OEMMFFType_ONO2
OEMMFFType_ONO = _oechem.OEMMFFType_ONO
OEMMFFType_OSO3 = _oechem.OEMMFFType_OSO3
OEMMFFType_OSO2 = _oechem.OEMMFFType_OSO2
OEMMFFType_OSO = _oechem.OEMMFFType_OSO
OEMMFFType_OSO_ = _oechem.OEMMFFType_OSO_
OEMMFFType_OS = _oechem.OEMMFFType_OS
OEMMFFType_OPO3 = _oechem.OEMMFFType_OPO3
OEMMFFType_OPO2 = _oechem.OEMMFFType_OPO2
OEMMFFType_OPO = _oechem.OEMMFFType_OPO
OEMMFFType_OP = _oechem.OEMMFFType_OP
OEMMFFType_OC = _oechem.OEMMFFType_OC
OEMMFFType_OCN_ = _oechem.OEMMFFType_OCN_
OEMMFFType_OCR = _oechem.OEMMFFType_OCR
OEMMFFType_OCO_ = _oechem.OEMMFFType_OCO_
OEMMFFType_ON = _oechem.OEMMFFType_ON
OEMMFFType_OS_ = _oechem.OEMMFFType_OS_
OEMMFFType_OS__ = _oechem.OEMMFFType_OS__
OEMMFFType_NR = _oechem.OEMMFFType_NR
OEMMFFType_NC = _oechem.OEMMFFType_NC
OEMMFFType_NN = _oechem.OEMMFFType_NN
OEMMFFType_NCO = _oechem.OEMMFFType_NCO
OEMMFFType_NCS = _oechem.OEMMFFType_NCS
OEMMFFType_NNC = _oechem.OEMMFFType_NNC
OEMMFFType_NNN = _oechem.OEMMFFType_NNN
OEMMFFType_F = _oechem.OEMMFFType_F
OEMMFFType_CL = _oechem.OEMMFFType_CL
OEMMFFType_Cl = _oechem.OEMMFFType_Cl
OEMMFFType_BR = _oechem.OEMMFFType_BR
OEMMFFType_Br = _oechem.OEMMFFType_Br
OEMMFFType_I = _oechem.OEMMFFType_I
OEMMFFType_S = _oechem.OEMMFFType_S
OEMMFFType_SC = _oechem.OEMMFFType_SC
OEMMFFType_SO = _oechem.OEMMFFType_SO
OEMMFFType_SN = _oechem.OEMMFFType_SN
OEMMFFType_SO2 = _oechem.OEMMFFType_SO2
OEMMFFType_SO2N = _oechem.OEMMFFType_SO2N
OEMMFFType_SO3 = _oechem.OEMMFFType_SO3
OEMMFFType_SO4 = _oechem.OEMMFFType_SO4
OEMMFFType_SO2_ = _oechem.OEMMFFType_SO2_
OEMMFFType_SNO = _oechem.OEMMFFType_SNO
OEMMFFType_SI = _oechem.OEMMFFType_SI
OEMMFFType_CR4R = _oechem.OEMMFFType_CR4R
OEMMFFType_HOR = _oechem.OEMMFFType_HOR
OEMMFFType_HO = _oechem.OEMMFFType_HO
OEMMFFType_CR3R = _oechem.OEMMFFType_CR3R
OEMMFFType_HNR = _oechem.OEMMFFType_HNR
OEMMFFType_HPYL = _oechem.OEMMFFType_HPYL
OEMMFFType_H3N = _oechem.OEMMFFType_H3N
OEMMFFType_HNOX = _oechem.OEMMFFType_HNOX
OEMMFFType_HOCO = _oechem.OEMMFFType_HOCO
OEMMFFType_HOP = _oechem.OEMMFFType_HOP
OEMMFFType_PO4 = _oechem.OEMMFFType_PO4
OEMMFFType_PO3 = _oechem.OEMMFFType_PO3
OEMMFFType_PO2 = _oechem.OEMMFFType_PO2
OEMMFFType_PO = _oechem.OEMMFFType_PO
OEMMFFType_PTET = _oechem.OEMMFFType_PTET
OEMMFFType_P = _oechem.OEMMFFType_P
OEMMFFType_HNC = _oechem.OEMMFFType_HNC
OEMMFFType_HNN = _oechem.OEMMFFType_HNN
OEMMFFType_HNCO = _oechem.OEMMFFType_HNCO
OEMMFFType_HNCS = _oechem.OEMMFFType_HNCS
OEMMFFType_HNCC = _oechem.OEMMFFType_HNCC
OEMMFFType_HNCN = _oechem.OEMMFFType_HNCN
OEMMFFType_HNNC = _oechem.OEMMFFType_HNNC
OEMMFFType_HNNN = _oechem.OEMMFFType_HNNN
OEMMFFType_HNSO = _oechem.OEMMFFType_HNSO
OEMMFFType_HNC_ = _oechem.OEMMFFType_HNC_
OEMMFFType_HSP2 = _oechem.OEMMFFType_HSP2
OEMMFFType_HOCC = _oechem.OEMMFFType_HOCC
OEMMFFType_HOCN = _oechem.OEMMFFType_HOCN
OEMMFFType_CR4E = _oechem.OEMMFFType_CR4E
OEMMFFType_HOH = _oechem.OEMMFFType_HOH
OEMMFFType_O2CM = _oechem.OEMMFFType_O2CM
OEMMFFType_OXN = _oechem.OEMMFFType_OXN
OEMMFFType_ON_ = _oechem.OEMMFFType_ON_
OEMMFFType_O2N = _oechem.OEMMFFType_O2N
OEMMFFType_O2NO = _oechem.OEMMFFType_O2NO
OEMMFFType_O3N = _oechem.OEMMFFType_O3N
OEMMFFType_OS___ = _oechem.OEMMFFType_OS___
OEMMFFType_O2S = _oechem.OEMMFFType_O2S
OEMMFFType_O3S = _oechem.OEMMFFType_O3S
OEMMFFType_O4S = _oechem.OEMMFFType_O4S
OEMMFFType_OSMS = _oechem.OEMMFFType_OSMS
OEMMFFType_OP_ = _oechem.OEMMFFType_OP_
OEMMFFType_O2P = _oechem.OEMMFFType_O2P
OEMMFFType_O3P = _oechem.OEMMFFType_O3P
OEMMFFType_O4P = _oechem.OEMMFFType_O4P
OEMMFFType_O4CL = _oechem.OEMMFFType_O4CL
OEMMFFType_O4Cl = _oechem.OEMMFFType_O4Cl
OEMMFFType_HOS = _oechem.OEMMFFType_HOS
OEMMFFType_NR_ = _oechem.OEMMFFType_NR_
OEMMFFType_OM = _oechem.OEMMFFType_OM
OEMMFFType_OM2 = _oechem.OEMMFFType_OM2
OEMMFFType_HNR_ = _oechem.OEMMFFType_HNR_
OEMMFFType_HIM = _oechem.OEMMFFType_HIM
OEMMFFType_HPD_ = _oechem.OEMMFFType_HPD_
OEMMFFType_HNN_ = _oechem.OEMMFFType_HNN_
OEMMFFType_HNC__ = _oechem.OEMMFFType_HNC__
OEMMFFType_HGD_ = _oechem.OEMMFFType_HGD_
OEMMFFType_CB = _oechem.OEMMFFType_CB
OEMMFFType_NPYD = _oechem.OEMMFFType_NPYD
OEMMFFType_NPYL = _oechem.OEMMFFType_NPYL
OEMMFFType_NCC = _oechem.OEMMFFType_NCC
OEMMFFType_NCN = _oechem.OEMMFFType_NCN
OEMMFFType_NCP = _oechem.OEMMFFType_NCP
OEMMFFType_NCC_ = _oechem.OEMMFFType_NCC_
OEMMFFType_CO2M = _oechem.OEMMFFType_CO2M
OEMMFFType_CS2M = _oechem.OEMMFFType_CS2M
OEMMFFType_NSP = _oechem.OEMMFFType_NSP
OEMMFFType_NSO2 = _oechem.OEMMFFType_NSO2
OEMMFFType_NSO3 = _oechem.OEMMFFType_NSO3
OEMMFFType_NCN_ = _oechem.OEMMFFType_NCN_
OEMMFFType_STHI = _oechem.OEMMFFType_STHI
OEMMFFType_NO2 = _oechem.OEMMFFType_NO2
OEMMFFType_NO3 = _oechem.OEMMFFType_NO3
OEMMFFType_NO = _oechem.OEMMFFType_NO
OEMMFFType_NAZT = _oechem.OEMMFFType_NAZT
OEMMFFType_NSO = _oechem.OEMMFFType_NSO
OEMMFFType_O_ = _oechem.OEMMFFType_O_
OEMMFFType_HO_ = _oechem.OEMMFFType_HO_
OEMMFFType_O__ = _oechem.OEMMFFType_O__
OEMMFFType_HO__ = _oechem.OEMMFFType_HO__
OEMMFFType_N_ = _oechem.OEMMFFType_N_
OEMMFFType_NC_ = _oechem.OEMMFFType_NC_
OEMMFFType_NN_ = _oechem.OEMMFFType_NN_
OEMMFFType_NCN__ = _oechem.OEMMFFType_NCN__
OEMMFFType_NGD_ = _oechem.OEMMFFType_NGD_
OEMMFFType_CGD_ = _oechem.OEMMFFType_CGD_
OEMMFFType_CNN_ = _oechem.OEMMFFType_CNN_
OEMMFFType_NPD_ = _oechem.OEMMFFType_NPD_
OEMMFFType_OFUR = _oechem.OEMMFFType_OFUR
OEMMFFType_C__ = _oechem.OEMMFFType_C__
OEMMFFType_NR__ = _oechem.OEMMFFType_NR__
OEMMFFType_NM = _oechem.OEMMFFType_NM
OEMMFFType_C5A = _oechem.OEMMFFType_C5A
OEMMFFType_C5B = _oechem.OEMMFFType_C5B
OEMMFFType_N5A = _oechem.OEMMFFType_N5A
OEMMFFType_N5B = _oechem.OEMMFFType_N5B
OEMMFFType_N2OX = _oechem.OEMMFFType_N2OX
OEMMFFType_N3OX = _oechem.OEMMFFType_N3OX
OEMMFFType_NPOX = _oechem.OEMMFFType_NPOX
OEMMFFType_OH2 = _oechem.OEMMFFType_OH2
OEMMFFType_HS = _oechem.OEMMFFType_HS
OEMMFFType_HSN = _oechem.OEMMFFType_HSN
OEMMFFType_HP = _oechem.OEMMFFType_HP
OEMMFFType_SP = _oechem.OEMMFFType_SP
OEMMFFType_SM = _oechem.OEMMFFType_SM
OEMMFFType_SSMO = _oechem.OEMMFFType_SSMO
OEMMFFType_SO2M = _oechem.OEMMFFType_SO2M
OEMMFFType_SSOM = _oechem.OEMMFFType_SSOM
OEMMFFType_SO_ = _oechem.OEMMFFType_SO_
OEMMFFType_PC = _oechem.OEMMFFType_PC
OEMMFFType_N5M = _oechem.OEMMFFType_N5M
OEMMFFType_CLO4 = _oechem.OEMMFFType_CLO4
OEMMFFType_C5 = _oechem.OEMMFFType_C5
OEMMFFType_N5 = _oechem.OEMMFFType_N5
OEMMFFType_CIM = _oechem.OEMMFFType_CIM
OEMMFFType_NIM = _oechem.OEMMFFType_NIM
OEMMFFType_N5A_ = _oechem.OEMMFFType_N5A_
OEMMFFType_N5B_ = _oechem.OEMMFFType_N5B_
OEMMFFType_N5_ = _oechem.OEMMFFType_N5_
OEMMFFType_N5AX = _oechem.OEMMFFType_N5AX
OEMMFFType_N5BX = _oechem.OEMMFFType_N5BX
OEMMFFType_N5OX = _oechem.OEMMFFType_N5OX
OEMMFFType_FE2 = _oechem.OEMMFFType_FE2
OEMMFFType_FE3 = _oechem.OEMMFFType_FE3
OEMMFFType_F_ = _oechem.OEMMFFType_F_
OEMMFFType_CL_ = _oechem.OEMMFFType_CL_
OEMMFFType_BR_ = _oechem.OEMMFFType_BR_
OEMMFFType_LI = _oechem.OEMMFFType_LI
OEMMFFType_NA = _oechem.OEMMFFType_NA
OEMMFFType_K = _oechem.OEMMFFType_K
OEMMFFType_ZN2 = _oechem.OEMMFFType_ZN2
OEMMFFType_CA2 = _oechem.OEMMFFType_CA2
OEMMFFType_CU1 = _oechem.OEMMFFType_CU1
OEMMFFType_CU2 = _oechem.OEMMFFType_CU2
OEMMFFType_MG2 = _oechem.OEMMFFType_MG2
OEMMFFType_HOM = _oechem.OEMMFFType_HOM
OEMMFFType_HOCS = _oechem.OEMMFFType_HOCS
OEMMFFType_HON = _oechem.OEMMFFType_HON
OEMMFFType_HX = _oechem.OEMMFFType_HX
OEMMFFType_HNO = _oechem.OEMMFFType_HNO
OEMMFFType_HN5_ = _oechem.OEMMFFType_HN5_
OEMMFFType_NPO2 = _oechem.OEMMFFType_NPO2
OEMMFFType_NPO3 = _oechem.OEMMFFType_NPO3
OEMMFFType_HNPO = _oechem.OEMMFFType_HNPO
OEMMFFType_HNO2 = _oechem.OEMMFFType_HNO2
OEMMFFType_HNM = _oechem.OEMMFFType_HNM
OEMMFFType_CONN = _oechem.OEMMFFType_CONN
OEMMFFType_S2CM = _oechem.OEMMFFType_S2CM
OEMMFFType_SE = _oechem.OEMMFFType_SE
OEMMFFType_Se = _oechem.OEMMFFType_Se
OEMMFFType_B = _oechem.OEMMFFType_B
OEMMFFType_HSE = _oechem.OEMMFFType_HSE
OEMMFFType_HSe = _oechem.OEMMFFType_HSe
OEMMFFType_B_ = _oechem.OEMMFFType_B_
OEMMFFType_HB = _oechem.OEMMFFType_HB
OEMMFFType_DUMMY = _oechem.OEMMFFType_DUMMY
OEMMFFType_MAXTYPE = _oechem.OEMMFFType_MAXTYPE
OEPerceived_RingAtomsAndBonds = _oechem.OEPerceived_RingAtomsAndBonds
OEPerceived_Aromaticity = _oechem.OEPerceived_Aromaticity
OEPerceived_AtomStereo = _oechem.OEPerceived_AtomStereo
OEPerceived_BondStereo = _oechem.OEPerceived_BondStereo
OEPerceived_Chiral = _oechem.OEPerceived_Chiral
OEPerceived_PartialCharges = _oechem.OEPerceived_PartialCharges
OEPerceived_Chains = _oechem.OEPerceived_Chains
OEPerceived_Hybridization = _oechem.OEPerceived_Hybridization
OEPerceived_Energy = _oechem.OEPerceived_Energy
OEPerceived_SecondaryStructure = _oechem.OEPerceived_SecondaryStructure
OEMolBaseType_Undefined = _oechem.OEMolBaseType_Undefined
OEMolBaseType_OEDefault = _oechem.OEMolBaseType_OEDefault
OEMolBaseType_OEDBMol = _oechem.OEMolBaseType_OEDBMol
OEMolBaseType_OEMiniMol = _oechem.OEMolBaseType_OEMiniMol
OEMolBaseType_MaxType = _oechem.OEMolBaseType_MaxType
OEMCMolType_Undefined = _oechem.OEMCMolType_Undefined
OEMCMolType_Cartesian = _oechem.OEMCMolType_Cartesian

OEMCMolType_FloatCartesian = OEMCMolType_Cartesian

OEMCMolType_DoubleCartesian = _oechem.OEMCMolType_DoubleCartesian
OEMCMolType_LongDoubleCartesian = _oechem.OEMCMolType_LongDoubleCartesian
OEMCMolType_HalfFloatCartesian = _oechem.OEMCMolType_HalfFloatCartesian
OEMCMolType_OEDBMCMol = _oechem.OEMCMolType_OEDBMCMol
OEMCMolType_MaxType = _oechem.OEMCMolType_MaxType

OEMCMolType_OEDefault = OEMCMolType_FloatCartesian

OEQMolType_Undefined = _oechem.OEQMolType_Undefined
OEQMolType_OEDefault = _oechem.OEQMolType_OEDefault
OEQMolType_MaxType = _oechem.OEQMolType_MaxType

OEGraphMolType_Undefined = 0


OEGraphMolType_OEDefault = 1


OEGraphMolType_OEDBMol = 2


OEGraphMolType_OEMiniMol = 3


OEGraphMolType_MaxType = 4


OEMolType_Undefined = 0


OEMolType_Cartesian = 1


OEMolType_FloatCartesian = OEMCMolType_Cartesian


OEMolType_DoubleCartesian = 2


OEMolType_LongDoubleCartesian = 3


OEMolType_HalfFloatCartesian = 4


OEMolType_OEDBMCMol = 5


OEMolType_MaxType = 6


OEMolType_OEDefault = OEMCMolType_FloatCartesian

OESLNFlag_Isotopes = _oechem.OESLNFlag_Isotopes
OESLNFlag_Hydrogens = _oechem.OESLNFlag_Hydrogens
OESLNFlag_Canonical = _oechem.OESLNFlag_Canonical
OESLNFlag_Kekule = _oechem.OESLNFlag_Kekule
OESLNFlag_Name = _oechem.OESLNFlag_Name
OESLNFlag_FCharge = _oechem.OESLNFlag_FCharge
OESLNFlag_Coords2D = _oechem.OESLNFlag_Coords2D
OESLNFlag_Coords3D = _oechem.OESLNFlag_Coords3D
OESLNFlag_DEFAULT = _oechem.OESLNFlag_DEFAULT
OESMILESFlag_Isotopes = _oechem.OESMILESFlag_Isotopes
OESMILESFlag_Hydrogens = _oechem.OESMILESFlag_Hydrogens
OESMILESFlag_RGroups = _oechem.OESMILESFlag_RGroups
OESMILESFlag_AtomStereo = _oechem.OESMILESFlag_AtomStereo
OESMILESFlag_BondStereo = _oechem.OESMILESFlag_BondStereo
OESMILESFlag_AtomMaps = _oechem.OESMILESFlag_AtomMaps
OESMILESFlag_Canonical = _oechem.OESMILESFlag_Canonical
OESMILESFlag_Kekule = _oechem.OESMILESFlag_Kekule
OESMILESFlag_SuperAtoms = _oechem.OESMILESFlag_SuperAtoms
OESMILESFlag_ExtBonds = _oechem.OESMILESFlag_ExtBonds
OESMILESFlag_ImpHCount = _oechem.OESMILESFlag_ImpHCount
OESMILESFlag_AllBonds = _oechem.OESMILESFlag_AllBonds
OESMILESFlag_DEFAULT = _oechem.OESMILESFlag_DEFAULT
OESMILESFlag_ISOMERIC = _oechem.OESMILESFlag_ISOMERIC
OENormType_Undefined = _oechem.OENormType_Undefined
OENormType_TableLen = _oechem.OENormType_TableLen
OENormType_Azide = _oechem.OENormType_Azide
OENormType_Carboxylate = _oechem.OENormType_Carboxylate
OENormType_Nitro = _oechem.OENormType_Nitro
OENormType_Noxide = _oechem.OENormType_Noxide
OENormType_Phosphate = _oechem.OENormType_Phosphate
OENormType_Sulfate = _oechem.OENormType_Sulfate
OENormType_Hydrogens = _oechem.OENormType_Hydrogens
OENormType_MAXTYPE = _oechem.OENormType_MAXTYPE
OEBinaryOpts_Readers = _oechem.OEBinaryOpts_Readers
OEBinaryOpts_Writers = _oechem.OEBinaryOpts_Writers
OEBinaryOpts_OEBase = _oechem.OEBinaryOpts_OEBase
OEBinaryOpts_OEMolBase = _oechem.OEBinaryOpts_OEMolBase
OEBinaryOpts_OEMCMolBase = _oechem.OEBinaryOpts_OEMCMolBase
OEBinaryOpts_OEQMol = _oechem.OEBinaryOpts_OEQMol
OEBinaryOpts_GZipCompress = _oechem.OEBinaryOpts_GZipCompress
OEBinaryOpts_RotCompress = _oechem.OEBinaryOpts_RotCompress
OEBinaryOpts_OEMolAtomIntType = _oechem.OEBinaryOpts_OEMolAtomIntType
OEBinaryOpts_OEMolBondIntType = _oechem.OEBinaryOpts_OEMolBondIntType
OEBinaryOpts_IntGrid = _oechem.OEBinaryOpts_IntGrid
OEBinaryOpts_IntMultiGrid = _oechem.OEBinaryOpts_IntMultiGrid
OEBinaryOpts_FloatGrid = _oechem.OEBinaryOpts_FloatGrid
OEBinaryOpts_FloatMultiGrid = _oechem.OEBinaryOpts_FloatMultiGrid
OEBinaryOpts_FloatFixedMultiGrid = _oechem.OEBinaryOpts_FloatFixedMultiGrid
OEBinaryOpts_CompressedConfTorsions = _oechem.OEBinaryOpts_CompressedConfTorsions
OEBinaryOpts_ZstdCompress = _oechem.OEBinaryOpts_ZstdCompress
OESmartsParseOpts_None = _oechem.OESmartsParseOpts_None
OESmartsParseOpts_RingConstraint = _oechem.OESmartsParseOpts_RingConstraint
OESmartsParseOpts_Optimize = _oechem.OESmartsParseOpts_Optimize

OESmartsParseOpts_Default = OESmartsParseOpts_Optimize|OESmartsParseOpts_RingConstraint

OEResidueIndex_ALA = _oechem.OEResidueIndex_ALA
OEResidueIndex_ARG = _oechem.OEResidueIndex_ARG
OEResidueIndex_ASN = _oechem.OEResidueIndex_ASN
OEResidueIndex_ASP = _oechem.OEResidueIndex_ASP
OEResidueIndex_CYS = _oechem.OEResidueIndex_CYS
OEResidueIndex_GLN = _oechem.OEResidueIndex_GLN
OEResidueIndex_GLU = _oechem.OEResidueIndex_GLU
OEResidueIndex_GLY = _oechem.OEResidueIndex_GLY
OEResidueIndex_HIS = _oechem.OEResidueIndex_HIS
OEResidueIndex_ILE = _oechem.OEResidueIndex_ILE
OEResidueIndex_LEU = _oechem.OEResidueIndex_LEU
OEResidueIndex_LYS = _oechem.OEResidueIndex_LYS
OEResidueIndex_MET = _oechem.OEResidueIndex_MET
OEResidueIndex_PHE = _oechem.OEResidueIndex_PHE
OEResidueIndex_PRO = _oechem.OEResidueIndex_PRO
OEResidueIndex_SER = _oechem.OEResidueIndex_SER
OEResidueIndex_THR = _oechem.OEResidueIndex_THR
OEResidueIndex_TRP = _oechem.OEResidueIndex_TRP
OEResidueIndex_TYR = _oechem.OEResidueIndex_TYR
OEResidueIndex_VAL = _oechem.OEResidueIndex_VAL
OEResidueIndex_UNK = _oechem.OEResidueIndex_UNK
OEResidueIndex_ASX = _oechem.OEResidueIndex_ASX
OEResidueIndex_GLX = _oechem.OEResidueIndex_GLX
OEResidueIndex_ASH = _oechem.OEResidueIndex_ASH
OEResidueIndex_CYX = _oechem.OEResidueIndex_CYX
OEResidueIndex_CYH = _oechem.OEResidueIndex_CYH
OEResidueIndex_CYM = _oechem.OEResidueIndex_CYM
OEResidueIndex_GLH = _oechem.OEResidueIndex_GLH
OEResidueIndex_HID = _oechem.OEResidueIndex_HID
OEResidueIndex_HIE = _oechem.OEResidueIndex_HIE
OEResidueIndex_HIP = _oechem.OEResidueIndex_HIP
OEResidueIndex_LYN = _oechem.OEResidueIndex_LYN
OEResidueIndex_TYM = _oechem.OEResidueIndex_TYM
OEResidueIndex_A = _oechem.OEResidueIndex_A
OEResidueIndex_C = _oechem.OEResidueIndex_C
OEResidueIndex_G = _oechem.OEResidueIndex_G
OEResidueIndex_I = _oechem.OEResidueIndex_I
OEResidueIndex_T = _oechem.OEResidueIndex_T
OEResidueIndex_U = _oechem.OEResidueIndex_U
OEResidueIndex_DA = _oechem.OEResidueIndex_DA
OEResidueIndex_DC = _oechem.OEResidueIndex_DC
OEResidueIndex_DG = _oechem.OEResidueIndex_DG
OEResidueIndex_DI = _oechem.OEResidueIndex_DI
OEResidueIndex_DT = _oechem.OEResidueIndex_DT
OEResidueIndex_DU = _oechem.OEResidueIndex_DU
OEResidueIndex__1MA = _oechem.OEResidueIndex__1MA
OEResidueIndex__2MG = _oechem.OEResidueIndex__2MG
OEResidueIndex__5MC = _oechem.OEResidueIndex__5MC
OEResidueIndex__5MU = _oechem.OEResidueIndex__5MU
OEResidueIndex__7MG = _oechem.OEResidueIndex__7MG
OEResidueIndex_H2U = _oechem.OEResidueIndex_H2U
OEResidueIndex_M2G = _oechem.OEResidueIndex_M2G
OEResidueIndex_OMC = _oechem.OEResidueIndex_OMC
OEResidueIndex_OMG = _oechem.OEResidueIndex_OMG
OEResidueIndex_PSU = _oechem.OEResidueIndex_PSU
OEResidueIndex_YG = _oechem.OEResidueIndex_YG
OEResidueIndex_ABA = _oechem.OEResidueIndex_ABA
OEResidueIndex_ACE = _oechem.OEResidueIndex_ACE
OEResidueIndex_CGU = _oechem.OEResidueIndex_CGU
OEResidueIndex_CME = _oechem.OEResidueIndex_CME
OEResidueIndex_CSD = _oechem.OEResidueIndex_CSD
OEResidueIndex_FOR = _oechem.OEResidueIndex_FOR
OEResidueIndex_HSE = _oechem.OEResidueIndex_HSE
OEResidueIndex_HYP = _oechem.OEResidueIndex_HYP
OEResidueIndex_HYL = _oechem.OEResidueIndex_HYL
OEResidueIndex_LYZ = _oechem.OEResidueIndex_LYZ
OEResidueIndex_MEN = _oechem.OEResidueIndex_MEN
OEResidueIndex_MLE = _oechem.OEResidueIndex_MLE
OEResidueIndex_MLY = _oechem.OEResidueIndex_MLY
OEResidueIndex_MSE = _oechem.OEResidueIndex_MSE
OEResidueIndex_ORN = _oechem.OEResidueIndex_ORN
OEResidueIndex_PCA = _oechem.OEResidueIndex_PCA
OEResidueIndex_PTR = _oechem.OEResidueIndex_PTR
OEResidueIndex_SAR = _oechem.OEResidueIndex_SAR
OEResidueIndex_SEP = _oechem.OEResidueIndex_SEP
OEResidueIndex_TAU = _oechem.OEResidueIndex_TAU
OEResidueIndex_TPO = _oechem.OEResidueIndex_TPO
OEResidueIndex_LIG = _oechem.OEResidueIndex_LIG
OEResidueIndex_MOL = _oechem.OEResidueIndex_MOL
OEResidueIndex_UNL = _oechem.OEResidueIndex_UNL
OEResidueIndex_BR = _oechem.OEResidueIndex_BR
OEResidueIndex_CL = _oechem.OEResidueIndex_CL
OEResidueIndex_ADP = _oechem.OEResidueIndex_ADP
OEResidueIndex_AF3 = _oechem.OEResidueIndex_AF3
OEResidueIndex_ALF = _oechem.OEResidueIndex_ALF
OEResidueIndex_ATP = _oechem.OEResidueIndex_ATP
OEResidueIndex_BME = _oechem.OEResidueIndex_BME
OEResidueIndex_DMS = _oechem.OEResidueIndex_DMS
OEResidueIndex_EDO = _oechem.OEResidueIndex_EDO
OEResidueIndex_EOH = _oechem.OEResidueIndex_EOH
OEResidueIndex_FAD = _oechem.OEResidueIndex_FAD
OEResidueIndex_GOL = _oechem.OEResidueIndex_GOL
OEResidueIndex_HEM = _oechem.OEResidueIndex_HEM
OEResidueIndex_HOH = _oechem.OEResidueIndex_HOH
OEResidueIndex_IOD = _oechem.OEResidueIndex_IOD
OEResidueIndex_MOH = _oechem.OEResidueIndex_MOH
OEResidueIndex_NAD = _oechem.OEResidueIndex_NAD
OEResidueIndex_NAG = _oechem.OEResidueIndex_NAG
OEResidueIndex_PEO = _oechem.OEResidueIndex_PEO
OEResidueIndex_PER = _oechem.OEResidueIndex_PER
OEResidueIndex_PO2 = _oechem.OEResidueIndex_PO2
OEResidueIndex_PO4 = _oechem.OEResidueIndex_PO4
OEResidueIndex_SO2 = _oechem.OEResidueIndex_SO2
OEResidueIndex_SO4 = _oechem.OEResidueIndex_SO4
OEResidueIndex_SX = _oechem.OEResidueIndex_SX
OEResidueIndex_NME = _oechem.OEResidueIndex_NME
OEResidueIndex_NHE = _oechem.OEResidueIndex_NHE
OEResidueIndex_CIP = _oechem.OEResidueIndex_CIP
OEResidueIndex_CIM = _oechem.OEResidueIndex_CIM
OEResidueIndex_RU = _oechem.OEResidueIndex_RU
OEResidueIndex_SB = _oechem.OEResidueIndex_SB
OEResidueIndex_V = _oechem.OEResidueIndex_V
OEResidueIndex_MN = _oechem.OEResidueIndex_MN
OEResidueIndex_MN3 = _oechem.OEResidueIndex_MN3
OEResidueIndex_FE = _oechem.OEResidueIndex_FE
OEResidueIndex_FE2 = _oechem.OEResidueIndex_FE2
OEResidueIndex_CO = _oechem.OEResidueIndex_CO
OEResidueIndex_CO3 = _oechem.OEResidueIndex_CO3
OEResidueIndex_NI = _oechem.OEResidueIndex_NI
OEResidueIndex__3NI = _oechem.OEResidueIndex__3NI
OEResidueIndex_CU1 = _oechem.OEResidueIndex_CU1
OEResidueIndex_CU = _oechem.OEResidueIndex_CU
OEResidueIndex_Y1 = _oechem.OEResidueIndex_Y1
OEResidueIndex_YT3 = _oechem.OEResidueIndex_YT3
OEResidueIndex__4MO = _oechem.OEResidueIndex__4MO
OEResidueIndex__6MO = _oechem.OEResidueIndex__6MO
OEResidueIndex_EU = _oechem.OEResidueIndex_EU
OEResidueIndex_EU3 = _oechem.OEResidueIndex_EU3
OEResidueIndex_AU = _oechem.OEResidueIndex_AU
OEResidueIndex_AU3 = _oechem.OEResidueIndex_AU3
OEResidueIndex_PT4 = _oechem.OEResidueIndex_PT4
OEResidueIndex_PT = _oechem.OEResidueIndex_PT
OEResidueIndex_IR3 = _oechem.OEResidueIndex_IR3
OEResidueIndex_IR = _oechem.OEResidueIndex_IR
OEResidueIndex_OS = _oechem.OEResidueIndex_OS
OEResidueIndex_OS4 = _oechem.OEResidueIndex_OS4
OEResidueIndex_YB = _oechem.OEResidueIndex_YB
OEResidueIndex_YB2 = _oechem.OEResidueIndex_YB2
OEResidueIndex__4TI = _oechem.OEResidueIndex__4TI
OEPDBAtomName_UNK = _oechem.OEPDBAtomName_UNK
OEPDBAtomName_N = _oechem.OEPDBAtomName_N
OEPDBAtomName_CA = _oechem.OEPDBAtomName_CA
OEPDBAtomName_C = _oechem.OEPDBAtomName_C
OEPDBAtomName_O = _oechem.OEPDBAtomName_O
OEPDBAtomName_CB = _oechem.OEPDBAtomName_CB
OEPDBAtomName_CG = _oechem.OEPDBAtomName_CG
OEPDBAtomName_OG = _oechem.OEPDBAtomName_OG
OEPDBAtomName_SG = _oechem.OEPDBAtomName_SG
OEPDBAtomName_CG1 = _oechem.OEPDBAtomName_CG1
OEPDBAtomName_OG1 = _oechem.OEPDBAtomName_OG1
OEPDBAtomName_CG2 = _oechem.OEPDBAtomName_CG2
OEPDBAtomName_CD = _oechem.OEPDBAtomName_CD
OEPDBAtomName_OD = _oechem.OEPDBAtomName_OD
OEPDBAtomName_SD = _oechem.OEPDBAtomName_SD
OEPDBAtomName_CD1 = _oechem.OEPDBAtomName_CD1
OEPDBAtomName_ND1 = _oechem.OEPDBAtomName_ND1
OEPDBAtomName_OD1 = _oechem.OEPDBAtomName_OD1
OEPDBAtomName_CD2 = _oechem.OEPDBAtomName_CD2
OEPDBAtomName_ND2 = _oechem.OEPDBAtomName_ND2
OEPDBAtomName_OD2 = _oechem.OEPDBAtomName_OD2
OEPDBAtomName_SE_ = _oechem.OEPDBAtomName_SE_
OEPDBAtomName_CE = _oechem.OEPDBAtomName_CE
OEPDBAtomName_NE = _oechem.OEPDBAtomName_NE
OEPDBAtomName_OE = _oechem.OEPDBAtomName_OE
OEPDBAtomName_CE1 = _oechem.OEPDBAtomName_CE1
OEPDBAtomName_NE1 = _oechem.OEPDBAtomName_NE1
OEPDBAtomName_OE1 = _oechem.OEPDBAtomName_OE1
OEPDBAtomName_CE2 = _oechem.OEPDBAtomName_CE2
OEPDBAtomName_NE2 = _oechem.OEPDBAtomName_NE2
OEPDBAtomName_OE2 = _oechem.OEPDBAtomName_OE2
OEPDBAtomName_CE3 = _oechem.OEPDBAtomName_CE3
OEPDBAtomName_OE3 = _oechem.OEPDBAtomName_OE3
OEPDBAtomName_OE4 = _oechem.OEPDBAtomName_OE4
OEPDBAtomName_CZ = _oechem.OEPDBAtomName_CZ
OEPDBAtomName_NZ = _oechem.OEPDBAtomName_NZ
OEPDBAtomName_CZ2 = _oechem.OEPDBAtomName_CZ2
OEPDBAtomName_CZ3 = _oechem.OEPDBAtomName_CZ3
OEPDBAtomName_OH = _oechem.OEPDBAtomName_OH
OEPDBAtomName_CH1 = _oechem.OEPDBAtomName_CH1
OEPDBAtomName_NH1 = _oechem.OEPDBAtomName_NH1
OEPDBAtomName_CH2 = _oechem.OEPDBAtomName_CH2
OEPDBAtomName_NH2 = _oechem.OEPDBAtomName_NH2
OEPDBAtomName_CH3 = _oechem.OEPDBAtomName_CH3
OEPDBAtomName_OXT = _oechem.OEPDBAtomName_OXT
OEPDBAtomName_P = _oechem.OEPDBAtomName_P
OEPDBAtomName_O1P = _oechem.OEPDBAtomName_O1P
OEPDBAtomName_O2P = _oechem.OEPDBAtomName_O2P
OEPDBAtomName_O5_ = _oechem.OEPDBAtomName_O5_
OEPDBAtomName_C5_ = _oechem.OEPDBAtomName_C5_
OEPDBAtomName_C4_ = _oechem.OEPDBAtomName_C4_
OEPDBAtomName_O4_ = _oechem.OEPDBAtomName_O4_
OEPDBAtomName_C3_ = _oechem.OEPDBAtomName_C3_
OEPDBAtomName_O3_ = _oechem.OEPDBAtomName_O3_
OEPDBAtomName_C2_ = _oechem.OEPDBAtomName_C2_
OEPDBAtomName_O2_ = _oechem.OEPDBAtomName_O2_
OEPDBAtomName_C2A = _oechem.OEPDBAtomName_C2A
OEPDBAtomName_C1_ = _oechem.OEPDBAtomName_C1_
OEPDBAtomName_N9 = _oechem.OEPDBAtomName_N9
OEPDBAtomName_C8 = _oechem.OEPDBAtomName_C8
OEPDBAtomName_N7 = _oechem.OEPDBAtomName_N7
OEPDBAtomName_C5 = _oechem.OEPDBAtomName_C5
OEPDBAtomName_C6 = _oechem.OEPDBAtomName_C6
OEPDBAtomName_O6 = _oechem.OEPDBAtomName_O6
OEPDBAtomName_N6 = _oechem.OEPDBAtomName_N6
OEPDBAtomName_N1 = _oechem.OEPDBAtomName_N1
OEPDBAtomName_C2 = _oechem.OEPDBAtomName_C2
OEPDBAtomName_O2 = _oechem.OEPDBAtomName_O2
OEPDBAtomName_N2 = _oechem.OEPDBAtomName_N2
OEPDBAtomName_CM5 = _oechem.OEPDBAtomName_CM5
OEPDBAtomName_N3 = _oechem.OEPDBAtomName_N3
OEPDBAtomName_C3 = _oechem.OEPDBAtomName_C3
OEPDBAtomName_C4 = _oechem.OEPDBAtomName_C4
OEPDBAtomName_O4 = _oechem.OEPDBAtomName_O4
OEPDBAtomName_N4 = _oechem.OEPDBAtomName_N4
OEPDBAtomName_CM7 = _oechem.OEPDBAtomName_CM7
OEPDBAtomName_C5M = _oechem.OEPDBAtomName_C5M
OEPDBAtomName_O3P = _oechem.OEPDBAtomName_O3P
OEPDBAtomName_CM1 = _oechem.OEPDBAtomName_CM1
OEPDBAtomName_CM2 = _oechem.OEPDBAtomName_CM2
OEPDBAtomName_C10 = _oechem.OEPDBAtomName_C10
OEPDBAtomName_C11 = _oechem.OEPDBAtomName_C11
OEPDBAtomName_C12 = _oechem.OEPDBAtomName_C12
OEPDBAtomName_C13 = _oechem.OEPDBAtomName_C13
OEPDBAtomName_C14 = _oechem.OEPDBAtomName_C14
OEPDBAtomName_C15 = _oechem.OEPDBAtomName_C15
OEPDBAtomName_C16 = _oechem.OEPDBAtomName_C16
OEPDBAtomName_O17 = _oechem.OEPDBAtomName_O17
OEPDBAtomName_O18 = _oechem.OEPDBAtomName_O18
OEPDBAtomName_C19 = _oechem.OEPDBAtomName_C19
OEPDBAtomName_N20 = _oechem.OEPDBAtomName_N20
OEPDBAtomName_C21 = _oechem.OEPDBAtomName_C21
OEPDBAtomName_O22 = _oechem.OEPDBAtomName_O22
OEPDBAtomName_O23 = _oechem.OEPDBAtomName_O23
OEPDBAtomName_C24 = _oechem.OEPDBAtomName_C24
OEPDBAtomName_Cprev = _oechem.OEPDBAtomName_Cprev
OEPDBAtomName_Nnext = _oechem.OEPDBAtomName_Nnext
OEPDBAtomName_CAnext = _oechem.OEPDBAtomName_CAnext
OEPDBAtomName_H = _oechem.OEPDBAtomName_H
OEPDBAtomName_H1 = _oechem.OEPDBAtomName_H1
OEPDBAtomName_H2 = _oechem.OEPDBAtomName_H2
OEPDBAtomName_H3 = _oechem.OEPDBAtomName_H3
OEPDBAtomName_HA = _oechem.OEPDBAtomName_HA
OEPDBAtomName_HA2 = _oechem.OEPDBAtomName_HA2
OEPDBAtomName_HA3 = _oechem.OEPDBAtomName_HA3
OEPDBAtomName_HB = _oechem.OEPDBAtomName_HB
OEPDBAtomName_HB1 = _oechem.OEPDBAtomName_HB1
OEPDBAtomName_HB2 = _oechem.OEPDBAtomName_HB2
OEPDBAtomName_HB3 = _oechem.OEPDBAtomName_HB3
OEPDBAtomName_HG = _oechem.OEPDBAtomName_HG
OEPDBAtomName_HG1 = _oechem.OEPDBAtomName_HG1
OEPDBAtomName_HG2 = _oechem.OEPDBAtomName_HG2
OEPDBAtomName_HG3 = _oechem.OEPDBAtomName_HG3
OEPDBAtomName_HG11 = _oechem.OEPDBAtomName_HG11
OEPDBAtomName_HG12 = _oechem.OEPDBAtomName_HG12
OEPDBAtomName_HG13 = _oechem.OEPDBAtomName_HG13
OEPDBAtomName_HG21 = _oechem.OEPDBAtomName_HG21
OEPDBAtomName_HG22 = _oechem.OEPDBAtomName_HG22
OEPDBAtomName_HG23 = _oechem.OEPDBAtomName_HG23
OEPDBAtomName_HD = _oechem.OEPDBAtomName_HD
OEPDBAtomName_HD1 = _oechem.OEPDBAtomName_HD1
OEPDBAtomName_HD2 = _oechem.OEPDBAtomName_HD2
OEPDBAtomName_HD3 = _oechem.OEPDBAtomName_HD3
OEPDBAtomName_HD11 = _oechem.OEPDBAtomName_HD11
OEPDBAtomName_HD12 = _oechem.OEPDBAtomName_HD12
OEPDBAtomName_HD13 = _oechem.OEPDBAtomName_HD13
OEPDBAtomName_HD21 = _oechem.OEPDBAtomName_HD21
OEPDBAtomName_HD22 = _oechem.OEPDBAtomName_HD22
OEPDBAtomName_HD23 = _oechem.OEPDBAtomName_HD23
OEPDBAtomName_HE = _oechem.OEPDBAtomName_HE
OEPDBAtomName_HE1 = _oechem.OEPDBAtomName_HE1
OEPDBAtomName_HE2 = _oechem.OEPDBAtomName_HE2
OEPDBAtomName_HE3 = _oechem.OEPDBAtomName_HE3
OEPDBAtomName_HE11 = _oechem.OEPDBAtomName_HE11
OEPDBAtomName_HE12 = _oechem.OEPDBAtomName_HE12
OEPDBAtomName_HE21 = _oechem.OEPDBAtomName_HE21
OEPDBAtomName_HE22 = _oechem.OEPDBAtomName_HE22
OEPDBAtomName_HZ = _oechem.OEPDBAtomName_HZ
OEPDBAtomName_HZ1 = _oechem.OEPDBAtomName_HZ1
OEPDBAtomName_HZ2 = _oechem.OEPDBAtomName_HZ2
OEPDBAtomName_HZ3 = _oechem.OEPDBAtomName_HZ3
OEPDBAtomName_HH = _oechem.OEPDBAtomName_HH
OEPDBAtomName_HH2 = _oechem.OEPDBAtomName_HH2
OEPDBAtomName_HH11 = _oechem.OEPDBAtomName_HH11
OEPDBAtomName_HH12 = _oechem.OEPDBAtomName_HH12
OEPDBAtomName_HH21 = _oechem.OEPDBAtomName_HH21
OEPDBAtomName_HH22 = _oechem.OEPDBAtomName_HH22
OEPDBAtomName_HH31 = _oechem.OEPDBAtomName_HH31
OEPDBAtomName_HH32 = _oechem.OEPDBAtomName_HH32
OEPDBAtomName_HH33 = _oechem.OEPDBAtomName_HH33
OEPDBAtomName_HN1 = _oechem.OEPDBAtomName_HN1
OEPDBAtomName_HN2 = _oechem.OEPDBAtomName_HN2
OEPDBAtomName_Hpr = _oechem.OEPDBAtomName_Hpr
OEPDBAtomName_H1P = _oechem.OEPDBAtomName_H1P
OEPDBAtomName_H2P = _oechem.OEPDBAtomName_H2P
OEPDBAtomName_H3P = _oechem.OEPDBAtomName_H3P
OEPDBAtomName_NA = _oechem.OEPDBAtomName_NA
OEPDBAtomName_CL = _oechem.OEPDBAtomName_CL
OEPreserveResInfo_None = _oechem.OEPreserveResInfo_None
OEPreserveResInfo_ChainID = _oechem.OEPreserveResInfo_ChainID
OEPreserveResInfo_ResidueNumber = _oechem.OEPreserveResInfo_ResidueNumber
OEPreserveResInfo_ResidueName = _oechem.OEPreserveResInfo_ResidueName
OEPreserveResInfo_SerialNumber = _oechem.OEPreserveResInfo_SerialNumber
OEPreserveResInfo_AlternateLocation = _oechem.OEPreserveResInfo_AlternateLocation
OEPreserveResInfo_InsertCode = _oechem.OEPreserveResInfo_InsertCode
OEPreserveResInfo_HetAtom = _oechem.OEPreserveResInfo_HetAtom
OEPreserveResInfo_AtomName = _oechem.OEPreserveResInfo_AtomName
OEPreserveResInfo_FragmentNumber = _oechem.OEPreserveResInfo_FragmentNumber
OEPreserveResInfo_BFactor = _oechem.OEPreserveResInfo_BFactor
OEPreserveResInfo_Occupancy = _oechem.OEPreserveResInfo_Occupancy
OEPreserveResInfo_Default = _oechem.OEPreserveResInfo_Default
OEPreserveResInfo_All = _oechem.OEPreserveResInfo_All
OEPDBHydrogenStyle_Classic = _oechem.OEPDBHydrogenStyle_Classic
OEPDBHydrogenStyle_Markley = _oechem.OEPDBHydrogenStyle_Markley

OEPDBHydrogenStyle_Modern = OEPDBHydrogenStyle_Markley


OEPDBHydrogenStyle_Default = OEPDBHydrogenStyle_Markley

OEAssumptionImpl_None = _oechem.OEAssumptionImpl_None
OEAssumptionImpl_PDBOrder = _oechem.OEAssumptionImpl_PDBOrder
OEAssumptionImpl_BondedResidue = _oechem.OEAssumptionImpl_BondedResidue
OEAssumptionImpl_ResPerceived = _oechem.OEAssumptionImpl_ResPerceived
OEAssumptionImpl_Default = _oechem.OEAssumptionImpl_Default
OESubSearchScreenType_Unknown = _oechem.OESubSearchScreenType_Unknown
OESubSearchScreenType_Molecule = _oechem.OESubSearchScreenType_Molecule
OESubSearchScreenType_MDL = _oechem.OESubSearchScreenType_MDL
OESubSearchScreenType_SMARTS = _oechem.OESubSearchScreenType_SMARTS

OESubSearchScreenType_Default = OESubSearchScreenType_MDL

OESubSearchStatus_Uninitialized = _oechem.OESubSearchStatus_Uninitialized
OESubSearchStatus_InProgress = _oechem.OESubSearchStatus_InProgress
OESubSearchStatus_Finished = _oechem.OESubSearchStatus_Finished
OESubSearchStatus_Canceled = _oechem.OESubSearchStatus_Canceled
OESubSearchDatabaseType_InMemoryMultiThreaded = _oechem.OESubSearchDatabaseType_InMemoryMultiThreaded
OESubSearchDatabaseType_MolDatabaseMultiThreaded = _oechem.OESubSearchDatabaseType_MolDatabaseMultiThreaded

OESubSearchDatabaseType_Default = OESubSearchDatabaseType_InMemoryMultiThreaded

OEAtomStereo_Undefined = _oechem.OEAtomStereo_Undefined
OEAtomStereo_Right = _oechem.OEAtomStereo_Right
OEAtomStereo_RightHanded = _oechem.OEAtomStereo_RightHanded
OEAtomStereo_Left = _oechem.OEAtomStereo_Left
OEAtomStereo_LeftHanded = _oechem.OEAtomStereo_LeftHanded
OEAtomStereo_Tetra = _oechem.OEAtomStereo_Tetra
OEAtomStereo_Tetrahedral = _oechem.OEAtomStereo_Tetrahedral
OEAtomStereo_All = _oechem.OEAtomStereo_All
OEBondStereo_Undefined = _oechem.OEBondStereo_Undefined
OEBondStereo_Hash = _oechem.OEBondStereo_Hash
OEBondStereo_Wedge = _oechem.OEBondStereo_Wedge
OEBondStereo_Cis = _oechem.OEBondStereo_Cis
OEBondStereo_Trans = _oechem.OEBondStereo_Trans
OEBondStereo_Wavy = _oechem.OEBondStereo_Wavy
OEBondStereo_DoubleEither = _oechem.OEBondStereo_DoubleEither
OEBondStereo_CisTrans = _oechem.OEBondStereo_CisTrans
OEBondStereo_All = _oechem.OEBondStereo_All
OEAtomStyle_BEGIN = _oechem.OEAtomStyle_BEGIN
OEAtomStyle_BallAndStick = _oechem.OEAtomStyle_BallAndStick
OEAtomStyle_CPK = _oechem.OEAtomStyle_CPK
OEAtomStyle_Wireframe = _oechem.OEAtomStyle_Wireframe
OEAtomStyle_Stick = _oechem.OEAtomStyle_Stick
OEAtomStyle_Stars = _oechem.OEAtomStyle_Stars
OEAtomStyle_Hidden = _oechem.OEAtomStyle_Hidden
OEAtomStyle_END = _oechem.OEAtomStyle_END
OEBaseColorScheme_BEGIN = _oechem.OEBaseColorScheme_BEGIN
OEBaseColorScheme_Solid = _oechem.OEBaseColorScheme_Solid
OEBaseColorScheme_GenericData = _oechem.OEBaseColorScheme_GenericData
OEBaseColorScheme_END = _oechem.OEBaseColorScheme_END
OEAtomColorScheme_BEGIN = _oechem.OEAtomColorScheme_BEGIN
OEAtomColorScheme_Solid = _oechem.OEAtomColorScheme_Solid
OEAtomColorScheme_GenericData = _oechem.OEAtomColorScheme_GenericData
OEAtomColorScheme_Amino = _oechem.OEAtomColorScheme_Amino
OEAtomColorScheme_BFactor = _oechem.OEAtomColorScheme_BFactor
OEAtomColorScheme_Chain = _oechem.OEAtomColorScheme_Chain
OEAtomColorScheme_Element = _oechem.OEAtomColorScheme_Element
OEAtomColorScheme_FormalCharge = _oechem.OEAtomColorScheme_FormalCharge
OEAtomColorScheme_Occupancy = _oechem.OEAtomColorScheme_Occupancy
OEAtomColorScheme_PartialCharge = _oechem.OEAtomColorScheme_PartialCharge
OEAtomColorScheme_ProteinSequence = _oechem.OEAtomColorScheme_ProteinSequence
OEAtomColorScheme_Residue = _oechem.OEAtomColorScheme_Residue
OEAtomColorScheme_Shapely = _oechem.OEAtomColorScheme_Shapely
OEAtomColorScheme_AltLocation = _oechem.OEAtomColorScheme_AltLocation
OEAtomColorScheme_SecondaryStructure = _oechem.OEAtomColorScheme_SecondaryStructure
OEAtomColorScheme_ResidueHydrophobicity = _oechem.OEAtomColorScheme_ResidueHydrophobicity
OEAtomColorScheme_END = _oechem.OEAtomColorScheme_END
OEHydrogenVisibility_BEGIN = _oechem.OEHydrogenVisibility_BEGIN
OEHydrogenVisibility_Off = _oechem.OEHydrogenVisibility_Off
OEHydrogenVisibility_Polar = _oechem.OEHydrogenVisibility_Polar
OEHydrogenVisibility_All = _oechem.OEHydrogenVisibility_All
OEHydrogenVisibility_END = _oechem.OEHydrogenVisibility_END
OEInteractionStyle_BEGIN = _oechem.OEInteractionStyle_BEGIN
OEInteractionStyle_Off = _oechem.OEInteractionStyle_Off
OEInteractionStyle_IntermolecularHBonds = _oechem.OEInteractionStyle_IntermolecularHBonds
OEInteractionStyle_IntramolecularHBonds = _oechem.OEInteractionStyle_IntramolecularHBonds
OEInteractionStyle_UnsatisfiedHBonds = _oechem.OEInteractionStyle_UnsatisfiedHBonds
OEInteractionStyle_Bumps = _oechem.OEInteractionStyle_Bumps
OEInteractionStyle_END = _oechem.OEInteractionStyle_END
OEProteinStyle_BEGIN = _oechem.OEProteinStyle_BEGIN
OEProteinStyle_Off = _oechem.OEProteinStyle_Off
OEProteinStyle_Ribbons = _oechem.OEProteinStyle_Ribbons
OEProteinStyle_CAlpha = _oechem.OEProteinStyle_CAlpha
OEProteinStyle_Backbone = _oechem.OEProteinStyle_Backbone
OEProteinStyle_END = _oechem.OEProteinStyle_END
OESurfaceType_BEGIN = _oechem.OESurfaceType_BEGIN
OESurfaceType_Off = _oechem.OESurfaceType_Off
OESurfaceType_Molecular = _oechem.OESurfaceType_Molecular
OESurfaceType_Accessible = _oechem.OESurfaceType_Accessible
OESurfaceType_VDW = _oechem.OESurfaceType_VDW
OESurfaceType_END = _oechem.OESurfaceType_END
OESurfaceStyle_BEGIN = _oechem.OESurfaceStyle_BEGIN
OESurfaceStyle_Solid = _oechem.OESurfaceStyle_Solid
OESurfaceStyle_Mesh = _oechem.OESurfaceStyle_Mesh
OESurfaceStyle_Points = _oechem.OESurfaceStyle_Points
OESurfaceStyle_END = _oechem.OESurfaceStyle_END
OESurfaceColorScheme_Solid = _oechem.OESurfaceColorScheme_Solid
OESurfaceColorScheme_GenericData = _oechem.OESurfaceColorScheme_GenericData
OESurfaceColorScheme_BEGIN = _oechem.OESurfaceColorScheme_BEGIN
OESurfaceColorScheme_Concavity = _oechem.OESurfaceColorScheme_Concavity
OESurfaceColorScheme_Curvature = _oechem.OESurfaceColorScheme_Curvature
OESurfaceColorScheme_Distance = _oechem.OESurfaceColorScheme_Distance
OESurfaceColorScheme_Electrostatic = _oechem.OESurfaceColorScheme_Electrostatic
OESurfaceColorScheme_Grid = _oechem.OESurfaceColorScheme_Grid
OESurfaceColorScheme_HBondPotential = _oechem.OESurfaceColorScheme_HBondPotential
OESurfaceColorScheme_Hydrophobicity = _oechem.OESurfaceColorScheme_Hydrophobicity
OESurfaceColorScheme_SurfacePotential = _oechem.OESurfaceColorScheme_SurfacePotential
OESurfaceColorScheme_AtomColor = _oechem.OESurfaceColorScheme_AtomColor
OESurfaceColorScheme_END = _oechem.OESurfaceColorScheme_END
OEProteinColorScheme_BEGIN = _oechem.OEProteinColorScheme_BEGIN
OEProteinColorScheme_AtomColor = _oechem.OEProteinColorScheme_AtomColor
OEProteinColorScheme_END = _oechem.OEProteinColorScheme_END
OEStyleGridType_BEGIN = _oechem.OEStyleGridType_BEGIN
OEStyleGridType_Electrostatic = _oechem.OEStyleGridType_Electrostatic
OEStyleGridType_END = _oechem.OEStyleGridType_END
OEContourStyle_BEGIN = _oechem.OEContourStyle_BEGIN
OEContourStyle_Hidden = _oechem.OEContourStyle_Hidden
OEContourStyle_Solid = _oechem.OEContourStyle_Solid
OEContourStyle_Mesh = _oechem.OEContourStyle_Mesh
OEContourStyle_Cloud = _oechem.OEContourStyle_Cloud
OEContourStyle_END = _oechem.OEContourStyle_END
OEAtomLabelScheme_BEGIN = _oechem.OEAtomLabelScheme_BEGIN
OEAtomLabelScheme_Off = _oechem.OEAtomLabelScheme_Off
OEAtomLabelScheme_Index = _oechem.OEAtomLabelScheme_Index
OEAtomLabelScheme_Element = _oechem.OEAtomLabelScheme_Element
OEAtomLabelScheme_Isotope = _oechem.OEAtomLabelScheme_Isotope
OEAtomLabelScheme_Type = _oechem.OEAtomLabelScheme_Type
OEAtomLabelScheme_IntegerType = _oechem.OEAtomLabelScheme_IntegerType
OEAtomLabelScheme_MMFFType = _oechem.OEAtomLabelScheme_MMFFType
OEAtomLabelScheme_ImplicitHCount = _oechem.OEAtomLabelScheme_ImplicitHCount
OEAtomLabelScheme_MapIdx = _oechem.OEAtomLabelScheme_MapIdx
OEAtomLabelScheme_PartialCharge = _oechem.OEAtomLabelScheme_PartialCharge
OEAtomLabelScheme_FormalCharge = _oechem.OEAtomLabelScheme_FormalCharge
OEAtomLabelScheme_Radius = _oechem.OEAtomLabelScheme_Radius
OEAtomLabelScheme_ResidueInfo = _oechem.OEAtomLabelScheme_ResidueInfo
OEAtomLabelScheme_ResidueInfoCA = _oechem.OEAtomLabelScheme_ResidueInfoCA
OEAtomLabelScheme_AltLocation = _oechem.OEAtomLabelScheme_AltLocation
OEAtomLabelScheme_BFactor = _oechem.OEAtomLabelScheme_BFactor
OEAtomLabelScheme_Occupancy = _oechem.OEAtomLabelScheme_Occupancy
OEAtomLabelScheme_Degree = _oechem.OEAtomLabelScheme_Degree
OEAtomLabelScheme_IsChiral = _oechem.OEAtomLabelScheme_IsChiral
OEAtomLabelScheme_Chirality = _oechem.OEAtomLabelScheme_Chirality
OEAtomLabelScheme_Hybridization = _oechem.OEAtomLabelScheme_Hybridization
OEAtomLabelScheme_Symmetry = _oechem.OEAtomLabelScheme_Symmetry
OEAtomLabelScheme_HasStereoSpecified = _oechem.OEAtomLabelScheme_HasStereoSpecified
OEAtomLabelScheme_IsInRing = _oechem.OEAtomLabelScheme_IsInRing
OEAtomLabelScheme_OEChemIdx = _oechem.OEAtomLabelScheme_OEChemIdx
OEAtomLabelScheme_GenericData = _oechem.OEAtomLabelScheme_GenericData
OEAtomLabelScheme_User = _oechem.OEAtomLabelScheme_User
OEAtomLabelScheme_END = _oechem.OEAtomLabelScheme_END
OEColorerType_Integer = _oechem.OEColorerType_Integer
OEColorerType_Double = _oechem.OEColorerType_Double
OEColorerType_String = _oechem.OEColorerType_String
OEColorerType_All = _oechem.OEColorerType_All
OEExprFlag_Unspec = _oechem.OEExprFlag_Unspec
OEExprFlag_Unspecified = _oechem.OEExprFlag_Unspecified
OEExprFlag_Undefined = _oechem.OEExprFlag_Undefined
OEExprFlag_Up = _oechem.OEExprFlag_Up
OEExprFlag_Down = _oechem.OEExprFlag_Down
OEExprFlag_Cis = _oechem.OEExprFlag_Cis
OEExprFlag_Trans = _oechem.OEExprFlag_Trans
OEExprFlag_UpOrUnspec = _oechem.OEExprFlag_UpOrUnspec
OEExprFlag_DownOrUnspec = _oechem.OEExprFlag_DownOrUnspec
OEExprFlag_CisOrUnspec = _oechem.OEExprFlag_CisOrUnspec
OEExprFlag_TransOrUnspec = _oechem.OEExprFlag_TransOrUnspec
OEExprFlag_TetraLeft = _oechem.OEExprFlag_TetraLeft
OEExprFlag_TetraRight = _oechem.OEExprFlag_TetraRight
OEExprType_Undefined = _oechem.OEExprType_Undefined
OEExprType_And = _oechem.OEExprType_And
OEExprType_Or = _oechem.OEExprType_Or
OEExprType_Not = _oechem.OEExprType_Not
OEExprType_Const = _oechem.OEExprType_Const
OEExprType_Element = _oechem.OEExprType_Element
OEExprType_AromElem = _oechem.OEExprType_AromElem
OEExprType_Aromatic = _oechem.OEExprType_Aromatic
OEExprType_Mass = _oechem.OEExprType_Mass
OEExprType_HCount = _oechem.OEExprType_HCount
OEExprType_MinHCount = _oechem.OEExprType_MinHCount
OEExprType_Charge = _oechem.OEExprType_Charge
OEExprType_Connect = _oechem.OEExprType_Connect
OEExprType_Degree = _oechem.OEExprType_Degree
OEExprType_MinDegree = _oechem.OEExprType_MinDegree
OEExprType_Implicit = _oechem.OEExprType_Implicit
OEExprType_Ring = _oechem.OEExprType_Ring
OEExprType_Size = _oechem.OEExprType_Size
OEExprType_RingBondCount = _oechem.OEExprType_RingBondCount
OEExprType_Valence = _oechem.OEExprType_Valence
OEExprType_Hyb = _oechem.OEExprType_Hyb
OEExprType_Recurs = _oechem.OEExprType_Recurs
OEExprType_Chiral = _oechem.OEExprType_Chiral
OEExprType_Stereo = _oechem.OEExprType_Stereo
OEExprType_DefaultEdge = _oechem.OEExprType_DefaultEdge
OEExprType_BondOrder = _oechem.OEExprType_BondOrder
OEExprType_Metal = _oechem.OEExprType_Metal
OEExprType_Halogen = _oechem.OEExprType_Halogen
OEExprType_IntType = _oechem.OEExprType_IntType
OEExprType_StringType = _oechem.OEExprType_StringType
OEExprType_SymmetryClass = _oechem.OEExprType_SymmetryClass
OEExprType_Saturation = _oechem.OEExprType_Saturation
OEExprType_AllowedElements = _oechem.OEExprType_AllowedElements
OEExprType_TerminalAtom = _oechem.OEExprType_TerminalAtom
OEExprType_SingleAromBond = _oechem.OEExprType_SingleAromBond
OEExprType_DoubleAromBond = _oechem.OEExprType_DoubleAromBond
OEExprType_RingElem = _oechem.OEExprType_RingElem
OEExprType_AromRingElem = _oechem.OEExprType_AromRingElem
OEExprType_ElemMinHCount = _oechem.OEExprType_ElemMinHCount
OEExprType_ElemCharge = _oechem.OEExprType_ElemCharge
OEExprType_ElemMinDegree = _oechem.OEExprType_ElemMinDegree
OEExprType_AromElemMinDegree = _oechem.OEExprType_AromElemMinDegree
OEExprType_RingBondOrder = _oechem.OEExprType_RingBondOrder
OEExprType_AromBondOrder = _oechem.OEExprType_AromBondOrder
OEExprType_AromOrBondOrder = _oechem.OEExprType_AromOrBondOrder
OEExprType_RingDefaultEdge = _oechem.OEExprType_RingDefaultEdge
OEExprType_AromRingBondOrder = _oechem.OEExprType_AromRingBondOrder
OEExprOpts_Mass = _oechem.OEExprOpts_Mass
OEExprOpts_HCount = _oechem.OEExprOpts_HCount
OEExprOpts_ImplicitHCount = _oechem.OEExprOpts_ImplicitHCount
OEExprOpts_FormalCharge = _oechem.OEExprOpts_FormalCharge
OEExprOpts_StrictFormalCharge = _oechem.OEExprOpts_StrictFormalCharge
OEExprOpts_Degree = _oechem.OEExprOpts_Degree
OEExprOpts_ExplicitDegree = _oechem.OEExprOpts_ExplicitDegree
OEExprOpts_HvyDegree = _oechem.OEExprOpts_HvyDegree
OEExprOpts_Valence = _oechem.OEExprOpts_Valence
OEExprOpts_Hybridization = _oechem.OEExprOpts_Hybridization
OEExprOpts_AtomicNumber = _oechem.OEExprOpts_AtomicNumber
OEExprOpts_EqMetal = _oechem.OEExprOpts_EqMetal
OEExprOpts_EqHalogen = _oechem.OEExprOpts_EqHalogen
OEExprOpts_EqON = _oechem.OEExprOpts_EqON
OEExprOpts_EqONS = _oechem.OEExprOpts_EqONS
OEExprOpts_EqPS = _oechem.OEExprOpts_EqPS
OEExprOpts_EqAromatic = _oechem.OEExprOpts_EqAromatic
OEExprOpts_EqCHalogen = _oechem.OEExprOpts_EqCHalogen
OEExprOpts_EqCAliphaticONS = _oechem.OEExprOpts_EqCAliphaticONS
OEExprOpts_EqCPSAcidRoot = _oechem.OEExprOpts_EqCPSAcidRoot
OEExprOpts_EqKetoneSulfoneRoot = _oechem.OEExprOpts_EqKetoneSulfoneRoot
OEExprOpts_BondOrder = _oechem.OEExprOpts_BondOrder
OEExprOpts_EqSingleDouble = _oechem.OEExprOpts_EqSingleDouble
OEExprOpts_EqDoubleTriple = _oechem.OEExprOpts_EqDoubleTriple
OEExprOpts_EqNotAromatic = _oechem.OEExprOpts_EqNotAromatic
OEExprOpts_Aromaticity = _oechem.OEExprOpts_Aromaticity
OEExprOpts_RingMember = _oechem.OEExprOpts_RingMember
OEExprOpts_Chiral = _oechem.OEExprOpts_Chiral
OEExprOpts_IntType = _oechem.OEExprOpts_IntType
OEExprOpts_StringType = _oechem.OEExprOpts_StringType
OEExprOpts_SymmetryClass = _oechem.OEExprOpts_SymmetryClass

OEExprOpts_DefaultAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_FormalCharge


OEExprOpts_DefaultBonds = OEExprOpts_BondOrder|OEExprOpts_Aromaticity


OEExprOpts_ExactAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_StrictFormalCharge|OEExprOpts_Degree|OEExprOpts_HCount|OEExprOpts_Chiral|OEExprOpts_Mass|OEExprOpts_RingMember


OEExprOpts_ExactBonds = OEExprOpts_BondOrder|OEExprOpts_Aromaticity|OEExprOpts_RingMember|OEExprOpts_Chiral


OEExprOpts_AutomorphAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_RingMember|OEExprOpts_HvyDegree


OEExprOpts_AutomorphBonds = OEExprOpts_Aromaticity

OERadiiType_Default = _oechem.OERadiiType_Default
OERadiiType_None = _oechem.OERadiiType_None
OERadiiType_Covalent = _oechem.OERadiiType_Covalent
OERadiiType_Delphi = _oechem.OERadiiType_Delphi
OERadiiType_Delphi_Robust = _oechem.OERadiiType_Delphi_Robust
OERadiiType_BondiVdw = _oechem.OERadiiType_BondiVdw
OERadiiType_BondiHVdw = _oechem.OERadiiType_BondiHVdw
OERadiiType_PaulingVdw = _oechem.OERadiiType_PaulingVdw
OERadiiType_PaulingVdw_Robust = _oechem.OERadiiType_PaulingVdw_Robust
OERadiiType_HonigIonicCavity = _oechem.OERadiiType_HonigIonicCavity
OERadiiType_HonigIonicCavity_Robust = _oechem.OERadiiType_HonigIonicCavity_Robust
OERadiiType_Zap9_JMC2008 = _oechem.OERadiiType_Zap9_JMC2008
OERadiiType_Zap9_JCAMD2010 = _oechem.OERadiiType_Zap9_JCAMD2010

OERadiiType_Zap9 = OERadiiType_Zap9_JCAMD2010

OERadiiType_Zap7_CarbonylOxygen = _oechem.OERadiiType_Zap7_CarbonylOxygen
OERadiiType_Zap7_DoublyBondedOxygen = _oechem.OERadiiType_Zap7_DoublyBondedOxygen

OERadiiType_Zap7 = OERadiiType_Zap7_CarbonylOxygen

OERadiiType_Max = _oechem.OERadiiType_Max
OESecondaryStructure_Unassigned = _oechem.OESecondaryStructure_Unassigned
OESecondaryStructure_Helix = _oechem.OESecondaryStructure_Helix
OESecondaryStructure_Helix310 = _oechem.OESecondaryStructure_Helix310
OESecondaryStructure_HelixAlpha = _oechem.OESecondaryStructure_HelixAlpha
OESecondaryStructure_HelixPi = _oechem.OESecondaryStructure_HelixPi
OESecondaryStructure_Turn = _oechem.OESecondaryStructure_Turn
OESecondaryStructure_Turn3 = _oechem.OESecondaryStructure_Turn3
OESecondaryStructure_Turn4 = _oechem.OESecondaryStructure_Turn4
OESecondaryStructure_Turn5 = _oechem.OESecondaryStructure_Turn5
OESecondaryStructure_Sheet = _oechem.OESecondaryStructure_Sheet
OESecondaryStructure_StrandSense = _oechem.OESecondaryStructure_StrandSense
OESecondaryStructure_HelixLeft = _oechem.OESecondaryStructure_HelixLeft
OESecondaryStructure_SheetMask = _oechem.OESecondaryStructure_SheetMask
OESecondaryStructure_Any = _oechem.OESecondaryStructure_Any
OEUncolorStrategy_UncolorNone = _oechem.OEUncolorStrategy_UncolorNone
OEUncolorStrategy_ConvertAtomTypeToC = _oechem.OEUncolorStrategy_ConvertAtomTypeToC
OEUncolorStrategy_ConvertBondTypeToSingle = _oechem.OEUncolorStrategy_ConvertBondTypeToSingle
OEUncolorStrategy_RemoveAtomStereo = _oechem.OEUncolorStrategy_RemoveAtomStereo
OEUncolorStrategy_RemoveBondStereo = _oechem.OEUncolorStrategy_RemoveBondStereo
OEUncolorStrategy_RemoveAtomProperties = _oechem.OEUncolorStrategy_RemoveAtomProperties
OEUncolorStrategy_RemoveGroupStereo = _oechem.OEUncolorStrategy_RemoveGroupStereo
OEUncolorStrategy_RemoveDimension = _oechem.OEUncolorStrategy_RemoveDimension

OEUncolorStrategy_BemisMurcko = OEUncolorStrategy_ConvertAtomTypeToC|OEUncolorStrategy_RemoveAtomProperties|OEUncolorStrategy_RemoveAtomStereo|OEUncolorStrategy_ConvertBondTypeToSingle|OEUncolorStrategy_RemoveBondStereo

OEUncolorStrategy_UncolorMask = _oechem.OEUncolorStrategy_UncolorMask

OEUncolorStrategy_DEFAULT = OEUncolorStrategy_BemisMurcko|OEUncolorStrategy_RemoveDimension


OEUncolorStrategy_Default = OEUncolorStrategy_DEFAULT

OEOptsConfigureStatus_Success = _oechem.OEOptsConfigureStatus_Success
OEOptsConfigureStatus_Help = _oechem.OEOptsConfigureStatus_Help
OEOptsConfigureStatus_Failed = _oechem.OEOptsConfigureStatus_Failed

OEAssumption_None = 0


OEAssumption_PDBOrder = 1


OEAssumption_BondedResidue = 2


OEAssumption_ResPerceived = 4


OEAssumption_Default = 15

OEProtTorType_Unknown = _oechem.OEProtTorType_Unknown
OEProtTorType_Phi = _oechem.OEProtTorType_Phi
OEProtTorType_Psi = _oechem.OEProtTorType_Psi
OEProtTorType_Omega = _oechem.OEProtTorType_Omega
OEProtTorType_Chi1 = _oechem.OEProtTorType_Chi1
OEProtTorType_Chi2 = _oechem.OEProtTorType_Chi2
OEProtTorType_Chi3 = _oechem.OEProtTorType_Chi3
OEProtTorType_Chi4 = _oechem.OEProtTorType_Chi4
OEProtTorType_Chi5 = _oechem.OEProtTorType_Chi5
OEProtTorType_Max = _oechem.OEProtTorType_Max
OERotamerLibrary_Dunbrack = _oechem.OERotamerLibrary_Dunbrack
OERotamerLibrary_Richardson = _oechem.OERotamerLibrary_Richardson
OERotamerLibrary_Richardson2016 = _oechem.OERotamerLibrary_Richardson2016
OERotamerLibrary_Default = _oechem.OERotamerLibrary_Default
OESeqAlignmentMethod_None = _oechem.OESeqAlignmentMethod_None
OESeqAlignmentMethod_Identity = _oechem.OESeqAlignmentMethod_Identity
OESeqAlignmentMethod_PAM250 = _oechem.OESeqAlignmentMethod_PAM250
OESeqAlignmentMethod_BLOSUM62 = _oechem.OESeqAlignmentMethod_BLOSUM62
OESeqAlignmentMethod_GONNET = _oechem.OESeqAlignmentMethod_GONNET
OEHBondInteractionHintType_LigandAccepts = _oechem.OEHBondInteractionHintType_LigandAccepts
OEHBondInteractionHintType_LigandDonates = _oechem.OEHBondInteractionHintType_LigandDonates

OEHBondInteractionHintType_ProteinDonates = OEHBondInteractionHintType_LigandAccepts


OEHBondInteractionHintType_ProteinAccepts = OEHBondInteractionHintType_LigandDonates

OEHBondInteractionHintType_IntramolecularLigand = _oechem.OEHBondInteractionHintType_IntramolecularLigand
OEHBondInteractionHintType_IntramolecularProtein = _oechem.OEHBondInteractionHintType_IntramolecularProtein
OEHBondInteractionHintType_NonIdealLigandAccepts = _oechem.OEHBondInteractionHintType_NonIdealLigandAccepts
OEHBondInteractionHintType_NonIdealLigandDonates = _oechem.OEHBondInteractionHintType_NonIdealLigandDonates

OEHBondInteractionHintType_NonIdealProteinDonates = OEHBondInteractionHintType_NonIdealLigandAccepts


OEHBondInteractionHintType_NonIdealProteinAccepts = OEHBondInteractionHintType_NonIdealLigandDonates

OEHBondInteractionHintType_UnpairedLigandDonor = _oechem.OEHBondInteractionHintType_UnpairedLigandDonor
OEHBondInteractionHintType_UnpairedLigandAcceptor = _oechem.OEHBondInteractionHintType_UnpairedLigandAcceptor
OEHBondInteractionHintType_UnpairedProteinDonor = _oechem.OEHBondInteractionHintType_UnpairedProteinDonor
OEHBondInteractionHintType_UnpairedProteinAcceptor = _oechem.OEHBondInteractionHintType_UnpairedProteinAcceptor
OEHBondInteractionHintType_ClashAcceptorAcceptor = _oechem.OEHBondInteractionHintType_ClashAcceptorAcceptor
OEHBondInteractionHintType_ClashDonorDonor = _oechem.OEHBondInteractionHintType_ClashDonorDonor
OEHBondInteractionHintType_Clash = _oechem.OEHBondInteractionHintType_Clash
OEChelatorInteractionHintType_LigandChelates = _oechem.OEChelatorInteractionHintType_LigandChelates
OEChelatorInteractionHintType_ProteinChelates = _oechem.OEChelatorInteractionHintType_ProteinChelates
OEChelatorInteractionHintType_IntramolecularLigand = _oechem.OEChelatorInteractionHintType_IntramolecularLigand
OEChelatorInteractionHintType_IntramolecularProtein = _oechem.OEChelatorInteractionHintType_IntramolecularProtein
OESaltBridgeInteractionHintType_LigandNegative = _oechem.OESaltBridgeInteractionHintType_LigandNegative
OESaltBridgeInteractionHintType_LigandPositive = _oechem.OESaltBridgeInteractionHintType_LigandPositive

OESaltBridgeInteractionHintType_ProteinNegative = OESaltBridgeInteractionHintType_LigandPositive


OESaltBridgeInteractionHintType_ProteinPositive = OESaltBridgeInteractionHintType_LigandNegative

OESaltBridgeInteractionHintType_Clash = _oechem.OESaltBridgeInteractionHintType_Clash
OESaltBridgeInteractionHintType_UnpairedLigandPositive = _oechem.OESaltBridgeInteractionHintType_UnpairedLigandPositive
OESaltBridgeInteractionHintType_UnpairedLigandNegative = _oechem.OESaltBridgeInteractionHintType_UnpairedLigandNegative
OESaltBridgeInteractionHintType_UnpairedProteinPositive = _oechem.OESaltBridgeInteractionHintType_UnpairedProteinPositive
OESaltBridgeInteractionHintType_UnpairedProteinNegative = _oechem.OESaltBridgeInteractionHintType_UnpairedProteinNegative
OESaltBridgeInteractionHintType_UnpairedLigand = _oechem.OESaltBridgeInteractionHintType_UnpairedLigand
OESaltBridgeInteractionHintType_UnpairedProtein = _oechem.OESaltBridgeInteractionHintType_UnpairedProtein
OEStackingInteractionHintType_Pi = _oechem.OEStackingInteractionHintType_Pi
OEStackingInteractionHintType_T = _oechem.OEStackingInteractionHintType_T
OECationPiInteractionHintType_LigandPi = _oechem.OECationPiInteractionHintType_LigandPi
OECationPiInteractionHintType_ProteinPi = _oechem.OECationPiInteractionHintType_ProteinPi

OECationPiInteractionHintType_LigandCation = OECationPiInteractionHintType_ProteinPi


OECationPiInteractionHintType_ProteinCation = OECationPiInteractionHintType_LigandPi

OEHalogenBondInteractionHintType_LigandElectrophile = _oechem.OEHalogenBondInteractionHintType_LigandElectrophile
OEHalogenBondInteractionHintType_LigandNucleophile = _oechem.OEHalogenBondInteractionHintType_LigandNucleophile
OEHalogenBondInteractionHintType_ProteinElectrophile = _oechem.OEHalogenBondInteractionHintType_ProteinElectrophile
OEHalogenBondInteractionHintType_ProteinNucleophile = _oechem.OEHalogenBondInteractionHintType_ProteinNucleophile
OEResidueDatabaseCategory_Ligand = _oechem.OEResidueDatabaseCategory_Ligand
OEResidueDatabaseCategory_Cofactor = _oechem.OEResidueDatabaseCategory_Cofactor
OEResidueDatabaseCategory_CofactorAndLigand = _oechem.OEResidueDatabaseCategory_CofactorAndLigand
OEResidueDatabaseCategory_AminoAcid = _oechem.OEResidueDatabaseCategory_AminoAcid
OEResidueDatabaseCategory_NucleicAcid = _oechem.OEResidueDatabaseCategory_NucleicAcid
OEResidueDatabaseCategory_Saccharide = _oechem.OEResidueDatabaseCategory_Saccharide
OEResidueDatabaseCategory_Metal = _oechem.OEResidueDatabaseCategory_Metal
OEResidueDatabaseCategory_Misc = _oechem.OEResidueDatabaseCategory_Misc
OEResidueDatabaseCategory_Polymer = _oechem.OEResidueDatabaseCategory_Polymer
OEResidueDatabaseCategory_Lipid = _oechem.OEResidueDatabaseCategory_Lipid
OEResidueDatabaseCategory_Max = _oechem.OEResidueDatabaseCategory_Max
OEMolComplexFilterCategory_Unknown = _oechem.OEMolComplexFilterCategory_Unknown
OEMolComplexFilterCategory_Protein = _oechem.OEMolComplexFilterCategory_Protein
OEMolComplexFilterCategory_Ligand = _oechem.OEMolComplexFilterCategory_Ligand
OEMolComplexFilterCategory_Water = _oechem.OEMolComplexFilterCategory_Water
OEMolComplexFilterCategory_Saccharide = _oechem.OEMolComplexFilterCategory_Saccharide
OEMolComplexFilterCategory_Cofactor = _oechem.OEMolComplexFilterCategory_Cofactor
OEMolComplexFilterCategory_CofactorAndLigand = _oechem.OEMolComplexFilterCategory_CofactorAndLigand
OEMolComplexFilterCategory_Metal = _oechem.OEMolComplexFilterCategory_Metal
OEMolComplexFilterCategory_CounterIon = _oechem.OEMolComplexFilterCategory_CounterIon
OEMolComplexFilterCategory_ProtComplex = _oechem.OEMolComplexFilterCategory_ProtComplex
OEMolComplexFilterCategory_Peptide = _oechem.OEMolComplexFilterCategory_Peptide
OEMolComplexFilterCategory_DNA_RNA = _oechem.OEMolComplexFilterCategory_DNA_RNA
OEMolComplexFilterCategory_Nucleotide = _oechem.OEMolComplexFilterCategory_Nucleotide
OEMolComplexFilterCategory_Covalent = _oechem.OEMolComplexFilterCategory_Covalent
OEMolComplexFilterCategory_Solution = _oechem.OEMolComplexFilterCategory_Solution
OEMolComplexFilterCategory_Misc = _oechem.OEMolComplexFilterCategory_Misc
OEMolComplexFilterCategory_Underdefined = _oechem.OEMolComplexFilterCategory_Underdefined
OEMolComplexFilterCategory_Site1 = _oechem.OEMolComplexFilterCategory_Site1
OEMolComplexFilterCategory_SurfaceWaters1 = _oechem.OEMolComplexFilterCategory_SurfaceWaters1
OEMolComplexFilterCategory_Model1 = _oechem.OEMolComplexFilterCategory_Model1
OEMolComplexFilterCategory_ChainA = _oechem.OEMolComplexFilterCategory_ChainA
OEMolComplexFilterCategory_Anything = _oechem.OEMolComplexFilterCategory_Anything
OEMolComplexFilterCategory_Nothing = _oechem.OEMolComplexFilterCategory_Nothing
OEMolComplexFilterCategory_Lipid = _oechem.OEMolComplexFilterCategory_Lipid
OESplitMolComplexSetup_LigName = _oechem.OESplitMolComplexSetup_LigName
OESplitMolComplexSetup_SiteNum = _oechem.OESplitMolComplexSetup_SiteNum
OESplitMolComplexSetup_SurfWat = _oechem.OESplitMolComplexSetup_SurfWat
OESplitMolComplexSetup_CovLig = _oechem.OESplitMolComplexSetup_CovLig
OESplitMolComplexSetup_CovCofactor = _oechem.OESplitMolComplexSetup_CovCofactor
OESplitMolComplexSetup_SeparateRes = _oechem.OESplitMolComplexSetup_SeparateRes
OESplitMolComplexSetup_MaxSiteDist = _oechem.OESplitMolComplexSetup_MaxSiteDist
OESplitMolComplexSetup_MaxSurfDist = _oechem.OESplitMolComplexSetup_MaxSurfDist
OESplitMolComplexSetup_CovBondTreatment = _oechem.OESplitMolComplexSetup_CovBondTreatment
OESplitMolComplexSetup_ModelNum = _oechem.OESplitMolComplexSetup_ModelNum
OESplitMolComplexSetup_LigFilter = _oechem.OESplitMolComplexSetup_LigFilter
OESplitMolComplexSetup_ProtFilter = _oechem.OESplitMolComplexSetup_ProtFilter
OESplitMolComplexSetup_WatFilter = _oechem.OESplitMolComplexSetup_WatFilter
OESplitMolComplexSetup_All = _oechem.OESplitMolComplexSetup_All
OESplitMolComplexParam_DoNotOverride = _oechem.OESplitMolComplexParam_DoNotOverride
OEMolComplexData_SDTagPrefix = _oechem.OEMolComplexData_SDTagPrefix
OEMolComplexData_CovalentSDTag = _oechem.OEMolComplexData_CovalentSDTag

OEMolComplexData_CovalentLigandSDTag = OEMolComplexData_CovalentSDTag

OEMolComplexData_PartOrderSDTag = _oechem.OEMolComplexData_PartOrderSDTag
OEMolComplexData_SiteNumberSDTag = _oechem.OEMolComplexData_SiteNumberSDTag
OEMolComplexData_SurfaceWatersNumberSDTag = _oechem.OEMolComplexData_SurfaceWatersNumberSDTag
OEPlaceHydrogensMoverClass_Background = _oechem.OEPlaceHydrogensMoverClass_Background
OEPlaceHydrogensMoverClass_DH = _oechem.OEPlaceHydrogensMoverClass_DH
OEPlaceHydrogensMoverClass_NH3 = _oechem.OEPlaceHydrogensMoverClass_NH3
OEPlaceHydrogensMoverClass_NH2 = _oechem.OEPlaceHydrogensMoverClass_NH2
OEPlaceHydrogensMoverClass_NHsp2Only = _oechem.OEPlaceHydrogensMoverClass_NHsp2Only
OEPlaceHydrogensMoverClass_NHsp3Only = _oechem.OEPlaceHydrogensMoverClass_NHsp3Only
OEPlaceHydrogensMoverClass_NHsp2sp3 = _oechem.OEPlaceHydrogensMoverClass_NHsp2sp3
OEPlaceHydrogensMoverClass_N = _oechem.OEPlaceHydrogensMoverClass_N
OEPlaceHydrogensMoverClass_AroN = _oechem.OEPlaceHydrogensMoverClass_AroN
OEPlaceHydrogensMoverClass_SCH3 = _oechem.OEPlaceHydrogensMoverClass_SCH3
OEPlaceHydrogensMoverClass_AroCH3 = _oechem.OEPlaceHydrogensMoverClass_AroCH3
OEPlaceHydrogensMoverClass_Imidazole = _oechem.OEPlaceHydrogensMoverClass_Imidazole
OEPlaceHydrogensMoverClass_AmideNO = _oechem.OEPlaceHydrogensMoverClass_AmideNO
OEPlaceHydrogensMoverClass_COOH = _oechem.OEPlaceHydrogensMoverClass_COOH
OEPlaceHydrogensMoverClass_Water = _oechem.OEPlaceHydrogensMoverClass_Water
OEPlaceHydrogensMoverClass_analinicNH2 = _oechem.OEPlaceHydrogensMoverClass_analinicNH2
OEPlaceHydrogensMoverClass_AspDyad = _oechem.OEPlaceHydrogensMoverClass_AspDyad
OEPlaceHydrogensMoverClass_Max = _oechem.OEPlaceHydrogensMoverClass_Max
OEPlaceHydrogensWaterProcessing_Ignore = _oechem.OEPlaceHydrogensWaterProcessing_Ignore
OEPlaceHydrogensWaterProcessing_Focused = _oechem.OEPlaceHydrogensWaterProcessing_Focused
OEPlaceHydrogensWaterProcessing_FullSearch = _oechem.OEPlaceHydrogensWaterProcessing_FullSearch

OEPlaceHydrogensWaterProcessing_Default = OEPlaceHydrogensWaterProcessing_FullSearch

OERamaCategory_Unknown = _oechem.OERamaCategory_Unknown
OERamaCategory_Favored = _oechem.OERamaCategory_Favored
OERamaCategory_Allowed = _oechem.OERamaCategory_Allowed
OERamaCategory_Outlier = _oechem.OERamaCategory_Outlier
OERamaCategory_Max = _oechem.OERamaCategory_Max
OERamaType_Unknown = _oechem.OERamaType_Unknown
OERamaType_General = _oechem.OERamaType_General
OERamaType_Glycine = _oechem.OERamaType_Glycine
OERamaType_CisPro = _oechem.OERamaType_CisPro
OERamaType_TransPro = _oechem.OERamaType_TransPro
OERamaType_PrePro = _oechem.OERamaType_PrePro
OERamaType_IleVal = _oechem.OERamaType_IleVal
OERamaType_Max = _oechem.OERamaType_Max
OEDesignUnitComponents_Unknown = _oechem.OEDesignUnitComponents_Unknown
OEDesignUnitComponents_Protein = _oechem.OEDesignUnitComponents_Protein
OEDesignUnitComponents_Nucleic = _oechem.OEDesignUnitComponents_Nucleic
OEDesignUnitComponents_Ligand = _oechem.OEDesignUnitComponents_Ligand
OEDesignUnitComponents_Cofactors = _oechem.OEDesignUnitComponents_Cofactors
OEDesignUnitComponents_Solvent = _oechem.OEDesignUnitComponents_Solvent
OEDesignUnitComponents_Metals = _oechem.OEDesignUnitComponents_Metals
OEDesignUnitComponents_CounterIons = _oechem.OEDesignUnitComponents_CounterIons
OEDesignUnitComponents_Lipids = _oechem.OEDesignUnitComponents_Lipids
OEDesignUnitComponents_PackingResidues = _oechem.OEDesignUnitComponents_PackingResidues
OEDesignUnitComponents_Excipients = _oechem.OEDesignUnitComponents_Excipients
OEDesignUnitComponents_Sugars = _oechem.OEDesignUnitComponents_Sugars
OEDesignUnitComponents_Polymers = _oechem.OEDesignUnitComponents_Polymers
OEDesignUnitComponents_PostTranslational = _oechem.OEDesignUnitComponents_PostTranslational
OEDesignUnitComponents_OtherProteins = _oechem.OEDesignUnitComponents_OtherProteins
OEDesignUnitComponents_OtherNucleics = _oechem.OEDesignUnitComponents_OtherNucleics
OEDesignUnitComponents_OtherLigands = _oechem.OEDesignUnitComponents_OtherLigands
OEDesignUnitComponents_OtherCofactors = _oechem.OEDesignUnitComponents_OtherCofactors

OEDesignUnitComponents_OEMax = OEDesignUnitComponents_OtherCofactors

OEDesignUnitComponents_OEAll = _oechem.OEDesignUnitComponents_OEAll
OEDesignUnitComponents_User1 = _oechem.OEDesignUnitComponents_User1
OEDesignUnitComponents_User2 = _oechem.OEDesignUnitComponents_User2
OEDesignUnitComponents_User3 = _oechem.OEDesignUnitComponents_User3
OEDesignUnitComponents_User4 = _oechem.OEDesignUnitComponents_User4
OEDesignUnitComponents_User5 = _oechem.OEDesignUnitComponents_User5

OEDesignUnitComponents_UserMin = OEDesignUnitComponents_User1


OEDesignUnitComponents_UserMax = OEDesignUnitComponents_User5

OEDesignUnitComponents_Undefined = _oechem.OEDesignUnitComponents_Undefined

OEDesignUnitComponents_UserComponents = OEDesignUnitComponents_User1|OEDesignUnitComponents_User2|OEDesignUnitComponents_User3|OEDesignUnitComponents_User4|OEDesignUnitComponents_User5


OEDesignUnitComponents_MolComponents = OEDesignUnitComponents_Protein|OEDesignUnitComponents_Nucleic|OEDesignUnitComponents_Ligand|OEDesignUnitComponents_Solvent|OEDesignUnitComponents_Metals|OEDesignUnitComponents_CounterIons|OEDesignUnitComponents_Lipids|OEDesignUnitComponents_PackingResidues|OEDesignUnitComponents_Undefined|OEDesignUnitComponents_UserComponents


OEDesignUnitComponents_ListComponents = OEDesignUnitComponents_Cofactors|OEDesignUnitComponents_Excipients|OEDesignUnitComponents_Sugars|OEDesignUnitComponents_Polymers|OEDesignUnitComponents_PostTranslational|OEDesignUnitComponents_OtherProteins|OEDesignUnitComponents_OtherNucleics|OEDesignUnitComponents_OtherLigands|OEDesignUnitComponents_OtherCofactors


OEDesignUnitComponents_Default = OEDesignUnitComponents_Protein|OEDesignUnitComponents_Nucleic|OEDesignUnitComponents_Ligand|OEDesignUnitComponents_Cofactors|OEDesignUnitComponents_Solvent|OEDesignUnitComponents_Metals|OEDesignUnitComponents_CounterIons|OEDesignUnitComponents_Lipids


OEDesignUnitComponents_All = OEDesignUnitComponents_MolComponents|OEDesignUnitComponents_ListComponents

OEDesignUnitFileType_Undefined = _oechem.OEDesignUnitFileType_Undefined
OEDesignUnitFileType_OEMol = _oechem.OEDesignUnitFileType_OEMol
OEDesignUnitFileType_OEDesignUnit = _oechem.OEDesignUnitFileType_OEDesignUnit
OEIridiumCategory_NA = _oechem.OEIridiumCategory_NA
OEIridiumCategory_NT = _oechem.OEIridiumCategory_NT
OEIridiumCategory_MT = _oechem.OEIridiumCategory_MT
OEIridiumCategory_HT = _oechem.OEIridiumCategory_HT
class OEUCharArray(object):
    """Proxy of C++ ArrayT<(unsigned char)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEUCharArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(unsigned char)> self, Py_ssize_t n) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, unsigned char const * d, Py_ssize_t n) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, unsigned char const * d, Py_ssize_t n, bool o) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, PyObject * input) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, OEUCharArray rhs) -> OEUCharArray
        """
        this = _oechem.new_OEUCharArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEUCharArray') -> "bool":
        """__eq__(OEUCharArray self, OEUCharArray other) -> bool"""
        return _oechem.OEUCharArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUCharArray self, double arg2, unsigned char arg3)
        __setitem__(OEUCharArray self, Py_ssize_t n, unsigned char value)
        """
        return _oechem.OEUCharArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEUCharArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEUCharArray self) -> PyObject *"""
        return _oechem.OEUCharArray___repr__(self)


    def PtrCast(self, *args) -> "unsigned char const *":
        """
        PtrCast(OEUCharArray self) -> unsigned char
        PtrCast(OEUCharArray self) -> unsigned char const *
        """
        return _oechem.OEUCharArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEUCharArray self) -> Py_ssize_t"""
        return _oechem.OEUCharArray___len__(self)

OEUCharArray_swigregister = _oechem.OEUCharArray_swigregister
OEUCharArray_swigregister(OEUCharArray)

class OEUIntArray(object):
    """Proxy of C++ ArrayT<(unsigned int)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEUIntArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(unsigned int)> self, Py_ssize_t n) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, unsigned int const * d, Py_ssize_t n) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, unsigned int const * d, Py_ssize_t n, bool o) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, PyObject * input) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, OEUIntArray rhs) -> OEUIntArray
        """
        this = _oechem.new_OEUIntArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEUIntArray') -> "bool":
        """__eq__(OEUIntArray self, OEUIntArray other) -> bool"""
        return _oechem.OEUIntArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUIntArray self, double arg2, unsigned int arg3)
        __setitem__(OEUIntArray self, Py_ssize_t n, unsigned int value)
        """
        return _oechem.OEUIntArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEUIntArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEUIntArray self) -> PyObject *"""
        return _oechem.OEUIntArray___repr__(self)


    def PtrCast(self, *args) -> "unsigned int const *":
        """
        PtrCast(OEUIntArray self) -> unsigned int
        PtrCast(OEUIntArray self) -> unsigned int const *
        """
        return _oechem.OEUIntArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEUIntArray self) -> Py_ssize_t"""
        return _oechem.OEUIntArray___len__(self)

OEUIntArray_swigregister = _oechem.OEUIntArray_swigregister
OEUIntArray_swigregister(OEUIntArray)

class OEIntArray(object):
    """Proxy of C++ ArrayT<(int)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEIntArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(int)> self, Py_ssize_t n) -> OEIntArray
        __init__(ArrayT<(int)> self, int const * d, Py_ssize_t n) -> OEIntArray
        __init__(ArrayT<(int)> self, int const * d, Py_ssize_t n, bool o) -> OEIntArray
        __init__(ArrayT<(int)> self, PyObject * input) -> OEIntArray
        __init__(ArrayT<(int)> self, OEIntArray rhs) -> OEIntArray
        """
        this = _oechem.new_OEIntArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEIntArray') -> "bool":
        """__eq__(OEIntArray self, OEIntArray other) -> bool"""
        return _oechem.OEIntArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEIntArray self, double arg2, int arg3)
        __setitem__(OEIntArray self, Py_ssize_t n, int value)
        """
        return _oechem.OEIntArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEIntArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEIntArray self) -> PyObject *"""
        return _oechem.OEIntArray___repr__(self)


    def PtrCast(self, *args) -> "int const *":
        """
        PtrCast(OEIntArray self) -> int
        PtrCast(OEIntArray self) -> int const *
        """
        return _oechem.OEIntArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEIntArray self) -> Py_ssize_t"""
        return _oechem.OEIntArray___len__(self)

OEIntArray_swigregister = _oechem.OEIntArray_swigregister
OEIntArray_swigregister(OEIntArray)

class OEFloatArray(object):
    """Proxy of C++ ArrayT<(float)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEFloatArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(float)> self, Py_ssize_t n) -> OEFloatArray
        __init__(ArrayT<(float)> self, float const * d, Py_ssize_t n) -> OEFloatArray
        __init__(ArrayT<(float)> self, float const * d, Py_ssize_t n, bool o) -> OEFloatArray
        __init__(ArrayT<(float)> self, PyObject * input) -> OEFloatArray
        __init__(ArrayT<(float)> self, OEFloatArray rhs) -> OEFloatArray
        """
        this = _oechem.new_OEFloatArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEFloatArray') -> "bool":
        """__eq__(OEFloatArray self, OEFloatArray other) -> bool"""
        return _oechem.OEFloatArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEFloatArray self, double arg2, float arg3)
        __setitem__(OEFloatArray self, Py_ssize_t n, float value)
        """
        return _oechem.OEFloatArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEFloatArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEFloatArray self) -> PyObject *"""
        return _oechem.OEFloatArray___repr__(self)


    def PtrCast(self, *args) -> "float const *":
        """
        PtrCast(OEFloatArray self) -> float
        PtrCast(OEFloatArray self) -> float const *
        """
        return _oechem.OEFloatArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEFloatArray self) -> Py_ssize_t"""
        return _oechem.OEFloatArray___len__(self)

OEFloatArray_swigregister = _oechem.OEFloatArray_swigregister
OEFloatArray_swigregister(OEFloatArray)

class OEDoubleArray(object):
    """Proxy of C++ ArrayT<(double)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEDoubleArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(double)> self, Py_ssize_t n) -> OEDoubleArray
        __init__(ArrayT<(double)> self, double const * d, Py_ssize_t n) -> OEDoubleArray
        __init__(ArrayT<(double)> self, double const * d, Py_ssize_t n, bool o) -> OEDoubleArray
        __init__(ArrayT<(double)> self, PyObject * input) -> OEDoubleArray
        __init__(ArrayT<(double)> self, OEDoubleArray rhs) -> OEDoubleArray
        """
        this = _oechem.new_OEDoubleArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEDoubleArray') -> "bool":
        """__eq__(OEDoubleArray self, OEDoubleArray other) -> bool"""
        return _oechem.OEDoubleArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEDoubleArray self, double arg2, double arg3)
        __setitem__(OEDoubleArray self, Py_ssize_t n, double value)
        """
        return _oechem.OEDoubleArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEDoubleArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEDoubleArray self) -> PyObject *"""
        return _oechem.OEDoubleArray___repr__(self)


    def PtrCast(self, *args) -> "double const *":
        """
        PtrCast(OEDoubleArray self) -> double
        PtrCast(OEDoubleArray self) -> double const *
        """
        return _oechem.OEDoubleArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEDoubleArray self) -> Py_ssize_t"""
        return _oechem.OEDoubleArray___len__(self)

OEDoubleArray_swigregister = _oechem.OEDoubleArray_swigregister
OEDoubleArray_swigregister(OEDoubleArray)

class OEBoolArray(object):
    """Proxy of C++ ArrayT<(bool)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEBoolArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(bool)> self, Py_ssize_t n) -> OEBoolArray
        __init__(ArrayT<(bool)> self, bool const * d, Py_ssize_t n) -> OEBoolArray
        __init__(ArrayT<(bool)> self, bool const * d, Py_ssize_t n, bool o) -> OEBoolArray
        __init__(ArrayT<(bool)> self, PyObject * input) -> OEBoolArray
        __init__(ArrayT<(bool)> self, OEBoolArray rhs) -> OEBoolArray
        """
        this = _oechem.new_OEBoolArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEBoolArray') -> "bool":
        """__eq__(OEBoolArray self, OEBoolArray other) -> bool"""
        return _oechem.OEBoolArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEBoolArray self, double arg2, bool arg3)
        __setitem__(OEBoolArray self, Py_ssize_t n, bool value)
        """
        return _oechem.OEBoolArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEBoolArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEBoolArray self) -> PyObject *"""
        return _oechem.OEBoolArray___repr__(self)


    def PtrCast(self, *args) -> "bool const *":
        """
        PtrCast(OEBoolArray self) -> bool
        PtrCast(OEBoolArray self) -> bool const *
        """
        return _oechem.OEBoolArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEBoolArray self) -> Py_ssize_t"""
        return _oechem.OEBoolArray___len__(self)

OEBoolArray_swigregister = _oechem.OEBoolArray_swigregister
OEBoolArray_swigregister(OEBoolArray)

class OEUIntVector(object):
    """Proxy of C++ std::vector<(unsigned int)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEUIntVector self) -> SwigPyIterator"""
        return _oechem.OEUIntVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEUIntVector self) -> bool"""
        return _oechem.OEUIntVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEUIntVector self) -> bool"""
        return _oechem.OEUIntVector___bool__(self)


    def __len__(self) -> "std::vector< unsigned int >::size_type":
        """__len__(OEUIntVector self) -> std::vector< unsigned int >::size_type"""
        return _oechem.OEUIntVector___len__(self)


    def __getslice__(self, i: 'std::vector< unsigned int >::difference_type', j: 'std::vector< unsigned int >::difference_type') -> "std::vector< unsigned int,std::allocator< unsigned int > > *":
        """__getslice__(OEUIntVector self, std::vector< unsigned int >::difference_type i, std::vector< unsigned int >::difference_type j) -> OEUIntVector"""
        return _oechem.OEUIntVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEUIntVector self, std::vector< unsigned int >::difference_type i, std::vector< unsigned int >::difference_type j)
        __setslice__(OEUIntVector self, std::vector< unsigned int >::difference_type i, std::vector< unsigned int >::difference_type j, OEUIntVector v)
        """
        return _oechem.OEUIntVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< unsigned int >::difference_type', j: 'std::vector< unsigned int >::difference_type') -> "void":
        """__delslice__(OEUIntVector self, std::vector< unsigned int >::difference_type i, std::vector< unsigned int >::difference_type j)"""
        return _oechem.OEUIntVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEUIntVector self, std::vector< unsigned int >::difference_type i)
        __delitem__(OEUIntVector self, PySliceObject * slice)
        """
        return _oechem.OEUIntVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< unsigned int >::value_type const &":
        """
        __getitem__(OEUIntVector self, PySliceObject * slice) -> OEUIntVector
        __getitem__(OEUIntVector self, std::vector< unsigned int >::difference_type i) -> std::vector< unsigned int >::value_type const &
        """
        return _oechem.OEUIntVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUIntVector self, PySliceObject * slice, OEUIntVector v)
        __setitem__(OEUIntVector self, PySliceObject * slice)
        __setitem__(OEUIntVector self, std::vector< unsigned int >::difference_type i, std::vector< unsigned int >::value_type const & x)
        """
        return _oechem.OEUIntVector___setitem__(self, *args)


    def pop(self) -> "std::vector< unsigned int >::value_type":
        """pop(OEUIntVector self) -> std::vector< unsigned int >::value_type"""
        return _oechem.OEUIntVector_pop(self)


    def append(self, x: 'std::vector< unsigned int >::value_type const &') -> "void":
        """append(OEUIntVector self, std::vector< unsigned int >::value_type const & x)"""
        return _oechem.OEUIntVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEUIntVector self) -> bool"""
        return _oechem.OEUIntVector_empty(self)


    def size(self) -> "std::vector< unsigned int >::size_type":
        """size(OEUIntVector self) -> std::vector< unsigned int >::size_type"""
        return _oechem.OEUIntVector_size(self)


    def swap(self, v: 'OEUIntVector') -> "void":
        """swap(OEUIntVector self, OEUIntVector v)"""
        return _oechem.OEUIntVector_swap(self, v)


    def begin(self) -> "std::vector< unsigned int >::iterator":
        """begin(OEUIntVector self) -> std::vector< unsigned int >::iterator"""
        return _oechem.OEUIntVector_begin(self)


    def end(self) -> "std::vector< unsigned int >::iterator":
        """end(OEUIntVector self) -> std::vector< unsigned int >::iterator"""
        return _oechem.OEUIntVector_end(self)


    def rbegin(self) -> "std::vector< unsigned int >::reverse_iterator":
        """rbegin(OEUIntVector self) -> std::vector< unsigned int >::reverse_iterator"""
        return _oechem.OEUIntVector_rbegin(self)


    def rend(self) -> "std::vector< unsigned int >::reverse_iterator":
        """rend(OEUIntVector self) -> std::vector< unsigned int >::reverse_iterator"""
        return _oechem.OEUIntVector_rend(self)


    def clear(self) -> "void":
        """clear(OEUIntVector self)"""
        return _oechem.OEUIntVector_clear(self)


    def get_allocator(self) -> "std::vector< unsigned int >::allocator_type":
        """get_allocator(OEUIntVector self) -> std::vector< unsigned int >::allocator_type"""
        return _oechem.OEUIntVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEUIntVector self)"""
        return _oechem.OEUIntVector_pop_back(self)


    def erase(self, *args) -> "std::vector< unsigned int >::iterator":
        """
        erase(OEUIntVector self, std::vector< unsigned int >::iterator pos) -> std::vector< unsigned int >::iterator
        erase(OEUIntVector self, std::vector< unsigned int >::iterator first, std::vector< unsigned int >::iterator last) -> std::vector< unsigned int >::iterator
        """
        return _oechem.OEUIntVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(unsigned int)> self) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self, OEUIntVector arg2) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self, std::vector< unsigned int >::size_type size) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self, std::vector< unsigned int >::size_type size, std::vector< unsigned int >::value_type const & value) -> OEUIntVector
        """
        this = _oechem.new_OEUIntVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< unsigned int >::value_type const &') -> "void":
        """push_back(OEUIntVector self, std::vector< unsigned int >::value_type const & x)"""
        return _oechem.OEUIntVector_push_back(self, x)


    def front(self) -> "std::vector< unsigned int >::value_type const &":
        """front(OEUIntVector self) -> std::vector< unsigned int >::value_type const &"""
        return _oechem.OEUIntVector_front(self)


    def back(self) -> "std::vector< unsigned int >::value_type const &":
        """back(OEUIntVector self) -> std::vector< unsigned int >::value_type const &"""
        return _oechem.OEUIntVector_back(self)


    def assign(self, n: 'std::vector< unsigned int >::size_type', x: 'std::vector< unsigned int >::value_type const &') -> "void":
        """assign(OEUIntVector self, std::vector< unsigned int >::size_type n, std::vector< unsigned int >::value_type const & x)"""
        return _oechem.OEUIntVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEUIntVector self, std::vector< unsigned int >::size_type new_size)
        resize(OEUIntVector self, std::vector< unsigned int >::size_type new_size, std::vector< unsigned int >::value_type const & x)
        """
        return _oechem.OEUIntVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEUIntVector self, std::vector< unsigned int >::iterator pos, std::vector< unsigned int >::value_type const & x) -> std::vector< unsigned int >::iterator
        insert(OEUIntVector self, std::vector< unsigned int >::iterator pos, std::vector< unsigned int >::size_type n, std::vector< unsigned int >::value_type const & x)
        """
        return _oechem.OEUIntVector_insert(self, *args)


    def reserve(self, n: 'std::vector< unsigned int >::size_type') -> "void":
        """reserve(OEUIntVector self, std::vector< unsigned int >::size_type n)"""
        return _oechem.OEUIntVector_reserve(self, n)


    def capacity(self) -> "std::vector< unsigned int >::size_type":
        """capacity(OEUIntVector self) -> std::vector< unsigned int >::size_type"""
        return _oechem.OEUIntVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEUIntVector
    __del__ = lambda self: None
OEUIntVector_swigregister = _oechem.OEUIntVector_swigregister
OEUIntVector_swigregister(OEUIntVector)

class OEIntVector(object):
    """Proxy of C++ std::vector<(int)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEIntVector self) -> SwigPyIterator"""
        return _oechem.OEIntVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEIntVector self) -> bool"""
        return _oechem.OEIntVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEIntVector self) -> bool"""
        return _oechem.OEIntVector___bool__(self)


    def __len__(self) -> "std::vector< int >::size_type":
        """__len__(OEIntVector self) -> std::vector< int >::size_type"""
        return _oechem.OEIntVector___len__(self)


    def __getslice__(self, i: 'std::vector< int >::difference_type', j: 'std::vector< int >::difference_type') -> "std::vector< int,std::allocator< int > > *":
        """__getslice__(OEIntVector self, std::vector< int >::difference_type i, std::vector< int >::difference_type j) -> OEIntVector"""
        return _oechem.OEIntVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEIntVector self, std::vector< int >::difference_type i, std::vector< int >::difference_type j)
        __setslice__(OEIntVector self, std::vector< int >::difference_type i, std::vector< int >::difference_type j, OEIntVector v)
        """
        return _oechem.OEIntVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< int >::difference_type', j: 'std::vector< int >::difference_type') -> "void":
        """__delslice__(OEIntVector self, std::vector< int >::difference_type i, std::vector< int >::difference_type j)"""
        return _oechem.OEIntVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEIntVector self, std::vector< int >::difference_type i)
        __delitem__(OEIntVector self, PySliceObject * slice)
        """
        return _oechem.OEIntVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< int >::value_type const &":
        """
        __getitem__(OEIntVector self, PySliceObject * slice) -> OEIntVector
        __getitem__(OEIntVector self, std::vector< int >::difference_type i) -> std::vector< int >::value_type const &
        """
        return _oechem.OEIntVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEIntVector self, PySliceObject * slice, OEIntVector v)
        __setitem__(OEIntVector self, PySliceObject * slice)
        __setitem__(OEIntVector self, std::vector< int >::difference_type i, std::vector< int >::value_type const & x)
        """
        return _oechem.OEIntVector___setitem__(self, *args)


    def pop(self) -> "std::vector< int >::value_type":
        """pop(OEIntVector self) -> std::vector< int >::value_type"""
        return _oechem.OEIntVector_pop(self)


    def append(self, x: 'std::vector< int >::value_type const &') -> "void":
        """append(OEIntVector self, std::vector< int >::value_type const & x)"""
        return _oechem.OEIntVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEIntVector self) -> bool"""
        return _oechem.OEIntVector_empty(self)


    def size(self) -> "std::vector< int >::size_type":
        """size(OEIntVector self) -> std::vector< int >::size_type"""
        return _oechem.OEIntVector_size(self)


    def swap(self, v: 'OEIntVector') -> "void":
        """swap(OEIntVector self, OEIntVector v)"""
        return _oechem.OEIntVector_swap(self, v)


    def begin(self) -> "std::vector< int >::iterator":
        """begin(OEIntVector self) -> std::vector< int >::iterator"""
        return _oechem.OEIntVector_begin(self)


    def end(self) -> "std::vector< int >::iterator":
        """end(OEIntVector self) -> std::vector< int >::iterator"""
        return _oechem.OEIntVector_end(self)


    def rbegin(self) -> "std::vector< int >::reverse_iterator":
        """rbegin(OEIntVector self) -> std::vector< int >::reverse_iterator"""
        return _oechem.OEIntVector_rbegin(self)


    def rend(self) -> "std::vector< int >::reverse_iterator":
        """rend(OEIntVector self) -> std::vector< int >::reverse_iterator"""
        return _oechem.OEIntVector_rend(self)


    def clear(self) -> "void":
        """clear(OEIntVector self)"""
        return _oechem.OEIntVector_clear(self)


    def get_allocator(self) -> "std::vector< int >::allocator_type":
        """get_allocator(OEIntVector self) -> std::vector< int >::allocator_type"""
        return _oechem.OEIntVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEIntVector self)"""
        return _oechem.OEIntVector_pop_back(self)


    def erase(self, *args) -> "std::vector< int >::iterator":
        """
        erase(OEIntVector self, std::vector< int >::iterator pos) -> std::vector< int >::iterator
        erase(OEIntVector self, std::vector< int >::iterator first, std::vector< int >::iterator last) -> std::vector< int >::iterator
        """
        return _oechem.OEIntVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(int)> self) -> OEIntVector
        __init__(std::vector<(int)> self, OEIntVector arg2) -> OEIntVector
        __init__(std::vector<(int)> self, std::vector< int >::size_type size) -> OEIntVector
        __init__(std::vector<(int)> self, std::vector< int >::size_type size, std::vector< int >::value_type const & value) -> OEIntVector
        """
        this = _oechem.new_OEIntVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< int >::value_type const &') -> "void":
        """push_back(OEIntVector self, std::vector< int >::value_type const & x)"""
        return _oechem.OEIntVector_push_back(self, x)


    def front(self) -> "std::vector< int >::value_type const &":
        """front(OEIntVector self) -> std::vector< int >::value_type const &"""
        return _oechem.OEIntVector_front(self)


    def back(self) -> "std::vector< int >::value_type const &":
        """back(OEIntVector self) -> std::vector< int >::value_type const &"""
        return _oechem.OEIntVector_back(self)


    def assign(self, n: 'std::vector< int >::size_type', x: 'std::vector< int >::value_type const &') -> "void":
        """assign(OEIntVector self, std::vector< int >::size_type n, std::vector< int >::value_type const & x)"""
        return _oechem.OEIntVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEIntVector self, std::vector< int >::size_type new_size)
        resize(OEIntVector self, std::vector< int >::size_type new_size, std::vector< int >::value_type const & x)
        """
        return _oechem.OEIntVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEIntVector self, std::vector< int >::iterator pos, std::vector< int >::value_type const & x) -> std::vector< int >::iterator
        insert(OEIntVector self, std::vector< int >::iterator pos, std::vector< int >::size_type n, std::vector< int >::value_type const & x)
        """
        return _oechem.OEIntVector_insert(self, *args)


    def reserve(self, n: 'std::vector< int >::size_type') -> "void":
        """reserve(OEIntVector self, std::vector< int >::size_type n)"""
        return _oechem.OEIntVector_reserve(self, n)


    def capacity(self) -> "std::vector< int >::size_type":
        """capacity(OEIntVector self) -> std::vector< int >::size_type"""
        return _oechem.OEIntVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEIntVector
    __del__ = lambda self: None
OEIntVector_swigregister = _oechem.OEIntVector_swigregister
OEIntVector_swigregister(OEIntVector)

class OELongVector(object):
    """Proxy of C++ std::vector<(long)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OELongVector self) -> SwigPyIterator"""
        return _oechem.OELongVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OELongVector self) -> bool"""
        return _oechem.OELongVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OELongVector self) -> bool"""
        return _oechem.OELongVector___bool__(self)


    def __len__(self) -> "std::vector< long >::size_type":
        """__len__(OELongVector self) -> std::vector< long >::size_type"""
        return _oechem.OELongVector___len__(self)


    def __getslice__(self, i: 'std::vector< long >::difference_type', j: 'std::vector< long >::difference_type') -> "std::vector< long,std::allocator< long > > *":
        """__getslice__(OELongVector self, std::vector< long >::difference_type i, std::vector< long >::difference_type j) -> OELongVector"""
        return _oechem.OELongVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OELongVector self, std::vector< long >::difference_type i, std::vector< long >::difference_type j)
        __setslice__(OELongVector self, std::vector< long >::difference_type i, std::vector< long >::difference_type j, OELongVector v)
        """
        return _oechem.OELongVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< long >::difference_type', j: 'std::vector< long >::difference_type') -> "void":
        """__delslice__(OELongVector self, std::vector< long >::difference_type i, std::vector< long >::difference_type j)"""
        return _oechem.OELongVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OELongVector self, std::vector< long >::difference_type i)
        __delitem__(OELongVector self, PySliceObject * slice)
        """
        return _oechem.OELongVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< long >::value_type const &":
        """
        __getitem__(OELongVector self, PySliceObject * slice) -> OELongVector
        __getitem__(OELongVector self, std::vector< long >::difference_type i) -> std::vector< long >::value_type const &
        """
        return _oechem.OELongVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OELongVector self, PySliceObject * slice, OELongVector v)
        __setitem__(OELongVector self, PySliceObject * slice)
        __setitem__(OELongVector self, std::vector< long >::difference_type i, std::vector< long >::value_type const & x)
        """
        return _oechem.OELongVector___setitem__(self, *args)


    def pop(self) -> "std::vector< long >::value_type":
        """pop(OELongVector self) -> std::vector< long >::value_type"""
        return _oechem.OELongVector_pop(self)


    def append(self, x: 'std::vector< long >::value_type const &') -> "void":
        """append(OELongVector self, std::vector< long >::value_type const & x)"""
        return _oechem.OELongVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OELongVector self) -> bool"""
        return _oechem.OELongVector_empty(self)


    def size(self) -> "std::vector< long >::size_type":
        """size(OELongVector self) -> std::vector< long >::size_type"""
        return _oechem.OELongVector_size(self)


    def swap(self, v: 'OELongVector') -> "void":
        """swap(OELongVector self, OELongVector v)"""
        return _oechem.OELongVector_swap(self, v)


    def begin(self) -> "std::vector< long >::iterator":
        """begin(OELongVector self) -> std::vector< long >::iterator"""
        return _oechem.OELongVector_begin(self)


    def end(self) -> "std::vector< long >::iterator":
        """end(OELongVector self) -> std::vector< long >::iterator"""
        return _oechem.OELongVector_end(self)


    def rbegin(self) -> "std::vector< long >::reverse_iterator":
        """rbegin(OELongVector self) -> std::vector< long >::reverse_iterator"""
        return _oechem.OELongVector_rbegin(self)


    def rend(self) -> "std::vector< long >::reverse_iterator":
        """rend(OELongVector self) -> std::vector< long >::reverse_iterator"""
        return _oechem.OELongVector_rend(self)


    def clear(self) -> "void":
        """clear(OELongVector self)"""
        return _oechem.OELongVector_clear(self)


    def get_allocator(self) -> "std::vector< long >::allocator_type":
        """get_allocator(OELongVector self) -> std::vector< long >::allocator_type"""
        return _oechem.OELongVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OELongVector self)"""
        return _oechem.OELongVector_pop_back(self)


    def erase(self, *args) -> "std::vector< long >::iterator":
        """
        erase(OELongVector self, std::vector< long >::iterator pos) -> std::vector< long >::iterator
        erase(OELongVector self, std::vector< long >::iterator first, std::vector< long >::iterator last) -> std::vector< long >::iterator
        """
        return _oechem.OELongVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(long)> self) -> OELongVector
        __init__(std::vector<(long)> self, OELongVector arg2) -> OELongVector
        __init__(std::vector<(long)> self, std::vector< long >::size_type size) -> OELongVector
        __init__(std::vector<(long)> self, std::vector< long >::size_type size, std::vector< long >::value_type const & value) -> OELongVector
        """
        this = _oechem.new_OELongVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< long >::value_type const &') -> "void":
        """push_back(OELongVector self, std::vector< long >::value_type const & x)"""
        return _oechem.OELongVector_push_back(self, x)


    def front(self) -> "std::vector< long >::value_type const &":
        """front(OELongVector self) -> std::vector< long >::value_type const &"""
        return _oechem.OELongVector_front(self)


    def back(self) -> "std::vector< long >::value_type const &":
        """back(OELongVector self) -> std::vector< long >::value_type const &"""
        return _oechem.OELongVector_back(self)


    def assign(self, n: 'std::vector< long >::size_type', x: 'std::vector< long >::value_type const &') -> "void":
        """assign(OELongVector self, std::vector< long >::size_type n, std::vector< long >::value_type const & x)"""
        return _oechem.OELongVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OELongVector self, std::vector< long >::size_type new_size)
        resize(OELongVector self, std::vector< long >::size_type new_size, std::vector< long >::value_type const & x)
        """
        return _oechem.OELongVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OELongVector self, std::vector< long >::iterator pos, std::vector< long >::value_type const & x) -> std::vector< long >::iterator
        insert(OELongVector self, std::vector< long >::iterator pos, std::vector< long >::size_type n, std::vector< long >::value_type const & x)
        """
        return _oechem.OELongVector_insert(self, *args)


    def reserve(self, n: 'std::vector< long >::size_type') -> "void":
        """reserve(OELongVector self, std::vector< long >::size_type n)"""
        return _oechem.OELongVector_reserve(self, n)


    def capacity(self) -> "std::vector< long >::size_type":
        """capacity(OELongVector self) -> std::vector< long >::size_type"""
        return _oechem.OELongVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OELongVector
    __del__ = lambda self: None
OELongVector_swigregister = _oechem.OELongVector_swigregister
OELongVector_swigregister(OELongVector)

class OECharVector(object):
    """Proxy of C++ std::vector<(char)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OECharVector self) -> SwigPyIterator"""
        return _oechem.OECharVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OECharVector self) -> bool"""
        return _oechem.OECharVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OECharVector self) -> bool"""
        return _oechem.OECharVector___bool__(self)


    def __len__(self) -> "std::vector< char >::size_type":
        """__len__(OECharVector self) -> std::vector< char >::size_type"""
        return _oechem.OECharVector___len__(self)


    def __getslice__(self, i: 'std::vector< char >::difference_type', j: 'std::vector< char >::difference_type') -> "std::vector< char,std::allocator< char > > *":
        """__getslice__(OECharVector self, std::vector< char >::difference_type i, std::vector< char >::difference_type j) -> OECharVector"""
        return _oechem.OECharVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OECharVector self, std::vector< char >::difference_type i, std::vector< char >::difference_type j)
        __setslice__(OECharVector self, std::vector< char >::difference_type i, std::vector< char >::difference_type j, OECharVector v)
        """
        return _oechem.OECharVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< char >::difference_type', j: 'std::vector< char >::difference_type') -> "void":
        """__delslice__(OECharVector self, std::vector< char >::difference_type i, std::vector< char >::difference_type j)"""
        return _oechem.OECharVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OECharVector self, std::vector< char >::difference_type i)
        __delitem__(OECharVector self, PySliceObject * slice)
        """
        return _oechem.OECharVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< char >::value_type const &":
        """
        __getitem__(OECharVector self, PySliceObject * slice) -> OECharVector
        __getitem__(OECharVector self, std::vector< char >::difference_type i) -> std::vector< char >::value_type const &
        """
        return _oechem.OECharVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OECharVector self, PySliceObject * slice, OECharVector v)
        __setitem__(OECharVector self, PySliceObject * slice)
        __setitem__(OECharVector self, std::vector< char >::difference_type i, std::vector< char >::value_type const & x)
        """
        return _oechem.OECharVector___setitem__(self, *args)


    def pop(self) -> "std::vector< char >::value_type":
        """pop(OECharVector self) -> std::vector< char >::value_type"""
        return _oechem.OECharVector_pop(self)


    def append(self, x: 'std::vector< char >::value_type const &') -> "void":
        """append(OECharVector self, std::vector< char >::value_type const & x)"""
        return _oechem.OECharVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OECharVector self) -> bool"""
        return _oechem.OECharVector_empty(self)


    def size(self) -> "std::vector< char >::size_type":
        """size(OECharVector self) -> std::vector< char >::size_type"""
        return _oechem.OECharVector_size(self)


    def swap(self, v: 'OECharVector') -> "void":
        """swap(OECharVector self, OECharVector v)"""
        return _oechem.OECharVector_swap(self, v)


    def begin(self) -> "std::vector< char >::iterator":
        """begin(OECharVector self) -> std::vector< char >::iterator"""
        return _oechem.OECharVector_begin(self)


    def end(self) -> "std::vector< char >::iterator":
        """end(OECharVector self) -> std::vector< char >::iterator"""
        return _oechem.OECharVector_end(self)


    def rbegin(self) -> "std::vector< char >::reverse_iterator":
        """rbegin(OECharVector self) -> std::vector< char >::reverse_iterator"""
        return _oechem.OECharVector_rbegin(self)


    def rend(self) -> "std::vector< char >::reverse_iterator":
        """rend(OECharVector self) -> std::vector< char >::reverse_iterator"""
        return _oechem.OECharVector_rend(self)


    def clear(self) -> "void":
        """clear(OECharVector self)"""
        return _oechem.OECharVector_clear(self)


    def get_allocator(self) -> "std::vector< char >::allocator_type":
        """get_allocator(OECharVector self) -> std::vector< char >::allocator_type"""
        return _oechem.OECharVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OECharVector self)"""
        return _oechem.OECharVector_pop_back(self)


    def erase(self, *args) -> "std::vector< char >::iterator":
        """
        erase(OECharVector self, std::vector< char >::iterator pos) -> std::vector< char >::iterator
        erase(OECharVector self, std::vector< char >::iterator first, std::vector< char >::iterator last) -> std::vector< char >::iterator
        """
        return _oechem.OECharVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(char)> self) -> OECharVector
        __init__(std::vector<(char)> self, OECharVector arg2) -> OECharVector
        __init__(std::vector<(char)> self, std::vector< char >::size_type size) -> OECharVector
        __init__(std::vector<(char)> self, std::vector< char >::size_type size, std::vector< char >::value_type const & value) -> OECharVector
        """
        this = _oechem.new_OECharVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< char >::value_type const &') -> "void":
        """push_back(OECharVector self, std::vector< char >::value_type const & x)"""
        return _oechem.OECharVector_push_back(self, x)


    def front(self) -> "std::vector< char >::value_type const &":
        """front(OECharVector self) -> std::vector< char >::value_type const &"""
        return _oechem.OECharVector_front(self)


    def back(self) -> "std::vector< char >::value_type const &":
        """back(OECharVector self) -> std::vector< char >::value_type const &"""
        return _oechem.OECharVector_back(self)


    def assign(self, n: 'std::vector< char >::size_type', x: 'std::vector< char >::value_type const &') -> "void":
        """assign(OECharVector self, std::vector< char >::size_type n, std::vector< char >::value_type const & x)"""
        return _oechem.OECharVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OECharVector self, std::vector< char >::size_type new_size)
        resize(OECharVector self, std::vector< char >::size_type new_size, std::vector< char >::value_type const & x)
        """
        return _oechem.OECharVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OECharVector self, std::vector< char >::iterator pos, std::vector< char >::value_type const & x) -> std::vector< char >::iterator
        insert(OECharVector self, std::vector< char >::iterator pos, std::vector< char >::size_type n, std::vector< char >::value_type const & x)
        """
        return _oechem.OECharVector_insert(self, *args)


    def reserve(self, n: 'std::vector< char >::size_type') -> "void":
        """reserve(OECharVector self, std::vector< char >::size_type n)"""
        return _oechem.OECharVector_reserve(self, n)


    def capacity(self) -> "std::vector< char >::size_type":
        """capacity(OECharVector self) -> std::vector< char >::size_type"""
        return _oechem.OECharVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OECharVector
    __del__ = lambda self: None
OECharVector_swigregister = _oechem.OECharVector_swigregister
OECharVector_swigregister(OECharVector)

class OEUCharVector(object):
    """Proxy of C++ std::vector<(unsigned char)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEUCharVector self) -> SwigPyIterator"""
        return _oechem.OEUCharVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEUCharVector self) -> bool"""
        return _oechem.OEUCharVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEUCharVector self) -> bool"""
        return _oechem.OEUCharVector___bool__(self)


    def __len__(self) -> "std::vector< unsigned char >::size_type":
        """__len__(OEUCharVector self) -> std::vector< unsigned char >::size_type"""
        return _oechem.OEUCharVector___len__(self)


    def __getslice__(self, i: 'std::vector< unsigned char >::difference_type', j: 'std::vector< unsigned char >::difference_type') -> "std::vector< unsigned char,std::allocator< unsigned char > > *":
        """__getslice__(OEUCharVector self, std::vector< unsigned char >::difference_type i, std::vector< unsigned char >::difference_type j) -> OEUCharVector"""
        return _oechem.OEUCharVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEUCharVector self, std::vector< unsigned char >::difference_type i, std::vector< unsigned char >::difference_type j)
        __setslice__(OEUCharVector self, std::vector< unsigned char >::difference_type i, std::vector< unsigned char >::difference_type j, OEUCharVector v)
        """
        return _oechem.OEUCharVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< unsigned char >::difference_type', j: 'std::vector< unsigned char >::difference_type') -> "void":
        """__delslice__(OEUCharVector self, std::vector< unsigned char >::difference_type i, std::vector< unsigned char >::difference_type j)"""
        return _oechem.OEUCharVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEUCharVector self, std::vector< unsigned char >::difference_type i)
        __delitem__(OEUCharVector self, PySliceObject * slice)
        """
        return _oechem.OEUCharVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< unsigned char >::value_type const &":
        """
        __getitem__(OEUCharVector self, PySliceObject * slice) -> OEUCharVector
        __getitem__(OEUCharVector self, std::vector< unsigned char >::difference_type i) -> std::vector< unsigned char >::value_type const &
        """
        return _oechem.OEUCharVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUCharVector self, PySliceObject * slice, OEUCharVector v)
        __setitem__(OEUCharVector self, PySliceObject * slice)
        __setitem__(OEUCharVector self, std::vector< unsigned char >::difference_type i, std::vector< unsigned char >::value_type const & x)
        """
        return _oechem.OEUCharVector___setitem__(self, *args)


    def pop(self) -> "std::vector< unsigned char >::value_type":
        """pop(OEUCharVector self) -> std::vector< unsigned char >::value_type"""
        return _oechem.OEUCharVector_pop(self)


    def append(self, x: 'std::vector< unsigned char >::value_type const &') -> "void":
        """append(OEUCharVector self, std::vector< unsigned char >::value_type const & x)"""
        return _oechem.OEUCharVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEUCharVector self) -> bool"""
        return _oechem.OEUCharVector_empty(self)


    def size(self) -> "std::vector< unsigned char >::size_type":
        """size(OEUCharVector self) -> std::vector< unsigned char >::size_type"""
        return _oechem.OEUCharVector_size(self)


    def swap(self, v: 'OEUCharVector') -> "void":
        """swap(OEUCharVector self, OEUCharVector v)"""
        return _oechem.OEUCharVector_swap(self, v)


    def begin(self) -> "std::vector< unsigned char >::iterator":
        """begin(OEUCharVector self) -> std::vector< unsigned char >::iterator"""
        return _oechem.OEUCharVector_begin(self)


    def end(self) -> "std::vector< unsigned char >::iterator":
        """end(OEUCharVector self) -> std::vector< unsigned char >::iterator"""
        return _oechem.OEUCharVector_end(self)


    def rbegin(self) -> "std::vector< unsigned char >::reverse_iterator":
        """rbegin(OEUCharVector self) -> std::vector< unsigned char >::reverse_iterator"""
        return _oechem.OEUCharVector_rbegin(self)


    def rend(self) -> "std::vector< unsigned char >::reverse_iterator":
        """rend(OEUCharVector self) -> std::vector< unsigned char >::reverse_iterator"""
        return _oechem.OEUCharVector_rend(self)


    def clear(self) -> "void":
        """clear(OEUCharVector self)"""
        return _oechem.OEUCharVector_clear(self)


    def get_allocator(self) -> "std::vector< unsigned char >::allocator_type":
        """get_allocator(OEUCharVector self) -> std::vector< unsigned char >::allocator_type"""
        return _oechem.OEUCharVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEUCharVector self)"""
        return _oechem.OEUCharVector_pop_back(self)


    def erase(self, *args) -> "std::vector< unsigned char >::iterator":
        """
        erase(OEUCharVector self, std::vector< unsigned char >::iterator pos) -> std::vector< unsigned char >::iterator
        erase(OEUCharVector self, std::vector< unsigned char >::iterator first, std::vector< unsigned char >::iterator last) -> std::vector< unsigned char >::iterator
        """
        return _oechem.OEUCharVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(unsigned char)> self) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self, OEUCharVector arg2) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self, std::vector< unsigned char >::size_type size) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self, std::vector< unsigned char >::size_type size, std::vector< unsigned char >::value_type const & value) -> OEUCharVector
        """
        this = _oechem.new_OEUCharVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< unsigned char >::value_type const &') -> "void":
        """push_back(OEUCharVector self, std::vector< unsigned char >::value_type const & x)"""
        return _oechem.OEUCharVector_push_back(self, x)


    def front(self) -> "std::vector< unsigned char >::value_type const &":
        """front(OEUCharVector self) -> std::vector< unsigned char >::value_type const &"""
        return _oechem.OEUCharVector_front(self)


    def back(self) -> "std::vector< unsigned char >::value_type const &":
        """back(OEUCharVector self) -> std::vector< unsigned char >::value_type const &"""
        return _oechem.OEUCharVector_back(self)


    def assign(self, n: 'std::vector< unsigned char >::size_type', x: 'std::vector< unsigned char >::value_type const &') -> "void":
        """assign(OEUCharVector self, std::vector< unsigned char >::size_type n, std::vector< unsigned char >::value_type const & x)"""
        return _oechem.OEUCharVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEUCharVector self, std::vector< unsigned char >::size_type new_size)
        resize(OEUCharVector self, std::vector< unsigned char >::size_type new_size, std::vector< unsigned char >::value_type const & x)
        """
        return _oechem.OEUCharVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEUCharVector self, std::vector< unsigned char >::iterator pos, std::vector< unsigned char >::value_type const & x) -> std::vector< unsigned char >::iterator
        insert(OEUCharVector self, std::vector< unsigned char >::iterator pos, std::vector< unsigned char >::size_type n, std::vector< unsigned char >::value_type const & x)
        """
        return _oechem.OEUCharVector_insert(self, *args)


    def reserve(self, n: 'std::vector< unsigned char >::size_type') -> "void":
        """reserve(OEUCharVector self, std::vector< unsigned char >::size_type n)"""
        return _oechem.OEUCharVector_reserve(self, n)


    def capacity(self) -> "std::vector< unsigned char >::size_type":
        """capacity(OEUCharVector self) -> std::vector< unsigned char >::size_type"""
        return _oechem.OEUCharVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEUCharVector
    __del__ = lambda self: None
OEUCharVector_swigregister = _oechem.OEUCharVector_swigregister
OEUCharVector_swigregister(OEUCharVector)

class OEFloatVector(object):
    """Proxy of C++ std::vector<(float)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEFloatVector self) -> SwigPyIterator"""
        return _oechem.OEFloatVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEFloatVector self) -> bool"""
        return _oechem.OEFloatVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEFloatVector self) -> bool"""
        return _oechem.OEFloatVector___bool__(self)


    def __len__(self) -> "std::vector< float >::size_type":
        """__len__(OEFloatVector self) -> std::vector< float >::size_type"""
        return _oechem.OEFloatVector___len__(self)


    def __getslice__(self, i: 'std::vector< float >::difference_type', j: 'std::vector< float >::difference_type') -> "std::vector< float,std::allocator< float > > *":
        """__getslice__(OEFloatVector self, std::vector< float >::difference_type i, std::vector< float >::difference_type j) -> OEFloatVector"""
        return _oechem.OEFloatVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEFloatVector self, std::vector< float >::difference_type i, std::vector< float >::difference_type j)
        __setslice__(OEFloatVector self, std::vector< float >::difference_type i, std::vector< float >::difference_type j, OEFloatVector v)
        """
        return _oechem.OEFloatVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< float >::difference_type', j: 'std::vector< float >::difference_type') -> "void":
        """__delslice__(OEFloatVector self, std::vector< float >::difference_type i, std::vector< float >::difference_type j)"""
        return _oechem.OEFloatVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEFloatVector self, std::vector< float >::difference_type i)
        __delitem__(OEFloatVector self, PySliceObject * slice)
        """
        return _oechem.OEFloatVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< float >::value_type const &":
        """
        __getitem__(OEFloatVector self, PySliceObject * slice) -> OEFloatVector
        __getitem__(OEFloatVector self, std::vector< float >::difference_type i) -> std::vector< float >::value_type const &
        """
        return _oechem.OEFloatVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEFloatVector self, PySliceObject * slice, OEFloatVector v)
        __setitem__(OEFloatVector self, PySliceObject * slice)
        __setitem__(OEFloatVector self, std::vector< float >::difference_type i, std::vector< float >::value_type const & x)
        """
        return _oechem.OEFloatVector___setitem__(self, *args)


    def pop(self) -> "std::vector< float >::value_type":
        """pop(OEFloatVector self) -> std::vector< float >::value_type"""
        return _oechem.OEFloatVector_pop(self)


    def append(self, x: 'std::vector< float >::value_type const &') -> "void":
        """append(OEFloatVector self, std::vector< float >::value_type const & x)"""
        return _oechem.OEFloatVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEFloatVector self) -> bool"""
        return _oechem.OEFloatVector_empty(self)


    def size(self) -> "std::vector< float >::size_type":
        """size(OEFloatVector self) -> std::vector< float >::size_type"""
        return _oechem.OEFloatVector_size(self)


    def swap(self, v: 'OEFloatVector') -> "void":
        """swap(OEFloatVector self, OEFloatVector v)"""
        return _oechem.OEFloatVector_swap(self, v)


    def begin(self) -> "std::vector< float >::iterator":
        """begin(OEFloatVector self) -> std::vector< float >::iterator"""
        return _oechem.OEFloatVector_begin(self)


    def end(self) -> "std::vector< float >::iterator":
        """end(OEFloatVector self) -> std::vector< float >::iterator"""
        return _oechem.OEFloatVector_end(self)


    def rbegin(self) -> "std::vector< float >::reverse_iterator":
        """rbegin(OEFloatVector self) -> std::vector< float >::reverse_iterator"""
        return _oechem.OEFloatVector_rbegin(self)


    def rend(self) -> "std::vector< float >::reverse_iterator":
        """rend(OEFloatVector self) -> std::vector< float >::reverse_iterator"""
        return _oechem.OEFloatVector_rend(self)


    def clear(self) -> "void":
        """clear(OEFloatVector self)"""
        return _oechem.OEFloatVector_clear(self)


    def get_allocator(self) -> "std::vector< float >::allocator_type":
        """get_allocator(OEFloatVector self) -> std::vector< float >::allocator_type"""
        return _oechem.OEFloatVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEFloatVector self)"""
        return _oechem.OEFloatVector_pop_back(self)


    def erase(self, *args) -> "std::vector< float >::iterator":
        """
        erase(OEFloatVector self, std::vector< float >::iterator pos) -> std::vector< float >::iterator
        erase(OEFloatVector self, std::vector< float >::iterator first, std::vector< float >::iterator last) -> std::vector< float >::iterator
        """
        return _oechem.OEFloatVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(float)> self) -> OEFloatVector
        __init__(std::vector<(float)> self, OEFloatVector arg2) -> OEFloatVector
        __init__(std::vector<(float)> self, std::vector< float >::size_type size) -> OEFloatVector
        __init__(std::vector<(float)> self, std::vector< float >::size_type size, std::vector< float >::value_type const & value) -> OEFloatVector
        """
        this = _oechem.new_OEFloatVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< float >::value_type const &') -> "void":
        """push_back(OEFloatVector self, std::vector< float >::value_type const & x)"""
        return _oechem.OEFloatVector_push_back(self, x)


    def front(self) -> "std::vector< float >::value_type const &":
        """front(OEFloatVector self) -> std::vector< float >::value_type const &"""
        return _oechem.OEFloatVector_front(self)


    def back(self) -> "std::vector< float >::value_type const &":
        """back(OEFloatVector self) -> std::vector< float >::value_type const &"""
        return _oechem.OEFloatVector_back(self)


    def assign(self, n: 'std::vector< float >::size_type', x: 'std::vector< float >::value_type const &') -> "void":
        """assign(OEFloatVector self, std::vector< float >::size_type n, std::vector< float >::value_type const & x)"""
        return _oechem.OEFloatVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEFloatVector self, std::vector< float >::size_type new_size)
        resize(OEFloatVector self, std::vector< float >::size_type new_size, std::vector< float >::value_type const & x)
        """
        return _oechem.OEFloatVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEFloatVector self, std::vector< float >::iterator pos, std::vector< float >::value_type const & x) -> std::vector< float >::iterator
        insert(OEFloatVector self, std::vector< float >::iterator pos, std::vector< float >::size_type n, std::vector< float >::value_type const & x)
        """
        return _oechem.OEFloatVector_insert(self, *args)


    def reserve(self, n: 'std::vector< float >::size_type') -> "void":
        """reserve(OEFloatVector self, std::vector< float >::size_type n)"""
        return _oechem.OEFloatVector_reserve(self, n)


    def capacity(self) -> "std::vector< float >::size_type":
        """capacity(OEFloatVector self) -> std::vector< float >::size_type"""
        return _oechem.OEFloatVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEFloatVector
    __del__ = lambda self: None
OEFloatVector_swigregister = _oechem.OEFloatVector_swigregister
OEFloatVector_swigregister(OEFloatVector)

class OEDoubleVector(object):
    """Proxy of C++ std::vector<(double)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEDoubleVector self) -> SwigPyIterator"""
        return _oechem.OEDoubleVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEDoubleVector self) -> bool"""
        return _oechem.OEDoubleVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEDoubleVector self) -> bool"""
        return _oechem.OEDoubleVector___bool__(self)


    def __len__(self) -> "std::vector< double >::size_type":
        """__len__(OEDoubleVector self) -> std::vector< double >::size_type"""
        return _oechem.OEDoubleVector___len__(self)


    def __getslice__(self, i: 'std::vector< double >::difference_type', j: 'std::vector< double >::difference_type') -> "std::vector< double,std::allocator< double > > *":
        """__getslice__(OEDoubleVector self, std::vector< double >::difference_type i, std::vector< double >::difference_type j) -> OEDoubleVector"""
        return _oechem.OEDoubleVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEDoubleVector self, std::vector< double >::difference_type i, std::vector< double >::difference_type j)
        __setslice__(OEDoubleVector self, std::vector< double >::difference_type i, std::vector< double >::difference_type j, OEDoubleVector v)
        """
        return _oechem.OEDoubleVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< double >::difference_type', j: 'std::vector< double >::difference_type') -> "void":
        """__delslice__(OEDoubleVector self, std::vector< double >::difference_type i, std::vector< double >::difference_type j)"""
        return _oechem.OEDoubleVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEDoubleVector self, std::vector< double >::difference_type i)
        __delitem__(OEDoubleVector self, PySliceObject * slice)
        """
        return _oechem.OEDoubleVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< double >::value_type const &":
        """
        __getitem__(OEDoubleVector self, PySliceObject * slice) -> OEDoubleVector
        __getitem__(OEDoubleVector self, std::vector< double >::difference_type i) -> std::vector< double >::value_type const &
        """
        return _oechem.OEDoubleVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEDoubleVector self, PySliceObject * slice, OEDoubleVector v)
        __setitem__(OEDoubleVector self, PySliceObject * slice)
        __setitem__(OEDoubleVector self, std::vector< double >::difference_type i, std::vector< double >::value_type const & x)
        """
        return _oechem.OEDoubleVector___setitem__(self, *args)


    def pop(self) -> "std::vector< double >::value_type":
        """pop(OEDoubleVector self) -> std::vector< double >::value_type"""
        return _oechem.OEDoubleVector_pop(self)


    def append(self, x: 'std::vector< double >::value_type const &') -> "void":
        """append(OEDoubleVector self, std::vector< double >::value_type const & x)"""
        return _oechem.OEDoubleVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEDoubleVector self) -> bool"""
        return _oechem.OEDoubleVector_empty(self)


    def size(self) -> "std::vector< double >::size_type":
        """size(OEDoubleVector self) -> std::vector< double >::size_type"""
        return _oechem.OEDoubleVector_size(self)


    def swap(self, v: 'OEDoubleVector') -> "void":
        """swap(OEDoubleVector self, OEDoubleVector v)"""
        return _oechem.OEDoubleVector_swap(self, v)


    def begin(self) -> "std::vector< double >::iterator":
        """begin(OEDoubleVector self) -> std::vector< double >::iterator"""
        return _oechem.OEDoubleVector_begin(self)


    def end(self) -> "std::vector< double >::iterator":
        """end(OEDoubleVector self) -> std::vector< double >::iterator"""
        return _oechem.OEDoubleVector_end(self)


    def rbegin(self) -> "std::vector< double >::reverse_iterator":
        """rbegin(OEDoubleVector self) -> std::vector< double >::reverse_iterator"""
        return _oechem.OEDoubleVector_rbegin(self)


    def rend(self) -> "std::vector< double >::reverse_iterator":
        """rend(OEDoubleVector self) -> std::vector< double >::reverse_iterator"""
        return _oechem.OEDoubleVector_rend(self)


    def clear(self) -> "void":
        """clear(OEDoubleVector self)"""
        return _oechem.OEDoubleVector_clear(self)


    def get_allocator(self) -> "std::vector< double >::allocator_type":
        """get_allocator(OEDoubleVector self) -> std::vector< double >::allocator_type"""
        return _oechem.OEDoubleVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEDoubleVector self)"""
        return _oechem.OEDoubleVector_pop_back(self)


    def erase(self, *args) -> "std::vector< double >::iterator":
        """
        erase(OEDoubleVector self, std::vector< double >::iterator pos) -> std::vector< double >::iterator
        erase(OEDoubleVector self, std::vector< double >::iterator first, std::vector< double >::iterator last) -> std::vector< double >::iterator
        """
        return _oechem.OEDoubleVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(double)> self) -> OEDoubleVector
        __init__(std::vector<(double)> self, OEDoubleVector arg2) -> OEDoubleVector
        __init__(std::vector<(double)> self, std::vector< double >::size_type size) -> OEDoubleVector
        __init__(std::vector<(double)> self, std::vector< double >::size_type size, std::vector< double >::value_type const & value) -> OEDoubleVector
        """
        this = _oechem.new_OEDoubleVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< double >::value_type const &') -> "void":
        """push_back(OEDoubleVector self, std::vector< double >::value_type const & x)"""
        return _oechem.OEDoubleVector_push_back(self, x)


    def front(self) -> "std::vector< double >::value_type const &":
        """front(OEDoubleVector self) -> std::vector< double >::value_type const &"""
        return _oechem.OEDoubleVector_front(self)


    def back(self) -> "std::vector< double >::value_type const &":
        """back(OEDoubleVector self) -> std::vector< double >::value_type const &"""
        return _oechem.OEDoubleVector_back(self)


    def assign(self, n: 'std::vector< double >::size_type', x: 'std::vector< double >::value_type const &') -> "void":
        """assign(OEDoubleVector self, std::vector< double >::size_type n, std::vector< double >::value_type const & x)"""
        return _oechem.OEDoubleVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEDoubleVector self, std::vector< double >::size_type new_size)
        resize(OEDoubleVector self, std::vector< double >::size_type new_size, std::vector< double >::value_type const & x)
        """
        return _oechem.OEDoubleVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEDoubleVector self, std::vector< double >::iterator pos, std::vector< double >::value_type const & x) -> std::vector< double >::iterator
        insert(OEDoubleVector self, std::vector< double >::iterator pos, std::vector< double >::size_type n, std::vector< double >::value_type const & x)
        """
        return _oechem.OEDoubleVector_insert(self, *args)


    def reserve(self, n: 'std::vector< double >::size_type') -> "void":
        """reserve(OEDoubleVector self, std::vector< double >::size_type n)"""
        return _oechem.OEDoubleVector_reserve(self, n)


    def capacity(self) -> "std::vector< double >::size_type":
        """capacity(OEDoubleVector self) -> std::vector< double >::size_type"""
        return _oechem.OEDoubleVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEDoubleVector
    __del__ = lambda self: None
OEDoubleVector_swigregister = _oechem.OEDoubleVector_swigregister
OEDoubleVector_swigregister(OEDoubleVector)

class OEStringVector(object):
    """Proxy of C++ std::vector<(std::string)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEStringVector self) -> SwigPyIterator"""
        return _oechem.OEStringVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEStringVector self) -> bool"""
        return _oechem.OEStringVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEStringVector self) -> bool"""
        return _oechem.OEStringVector___bool__(self)


    def __len__(self) -> "std::vector< std::string >::size_type":
        """__len__(OEStringVector self) -> std::vector< std::string >::size_type"""
        return _oechem.OEStringVector___len__(self)


    def __getslice__(self, i: 'std::vector< std::string >::difference_type', j: 'std::vector< std::string >::difference_type') -> "std::vector< std::string,std::allocator< std::string > > *":
        """__getslice__(OEStringVector self, std::vector< std::string >::difference_type i, std::vector< std::string >::difference_type j) -> OEStringVector"""
        return _oechem.OEStringVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEStringVector self, std::vector< std::string >::difference_type i, std::vector< std::string >::difference_type j)
        __setslice__(OEStringVector self, std::vector< std::string >::difference_type i, std::vector< std::string >::difference_type j, OEStringVector v)
        """
        return _oechem.OEStringVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< std::string >::difference_type', j: 'std::vector< std::string >::difference_type') -> "void":
        """__delslice__(OEStringVector self, std::vector< std::string >::difference_type i, std::vector< std::string >::difference_type j)"""
        return _oechem.OEStringVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEStringVector self, std::vector< std::string >::difference_type i)
        __delitem__(OEStringVector self, PySliceObject * slice)
        """
        return _oechem.OEStringVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< std::string >::value_type const &":
        """
        __getitem__(OEStringVector self, PySliceObject * slice) -> OEStringVector
        __getitem__(OEStringVector self, std::vector< std::string >::difference_type i) -> std::vector< std::string >::value_type const &
        """
        return _oechem.OEStringVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEStringVector self, PySliceObject * slice, OEStringVector v)
        __setitem__(OEStringVector self, PySliceObject * slice)
        __setitem__(OEStringVector self, std::vector< std::string >::difference_type i, std::vector< std::string >::value_type const & x)
        """
        return _oechem.OEStringVector___setitem__(self, *args)


    def pop(self) -> "std::vector< std::string >::value_type":
        """pop(OEStringVector self) -> std::vector< std::string >::value_type"""
        return _oechem.OEStringVector_pop(self)


    def append(self, x: 'std::vector< std::string >::value_type const &') -> "void":
        """append(OEStringVector self, std::vector< std::string >::value_type const & x)"""
        return _oechem.OEStringVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEStringVector self) -> bool"""
        return _oechem.OEStringVector_empty(self)


    def size(self) -> "std::vector< std::string >::size_type":
        """size(OEStringVector self) -> std::vector< std::string >::size_type"""
        return _oechem.OEStringVector_size(self)


    def swap(self, v: 'OEStringVector') -> "void":
        """swap(OEStringVector self, OEStringVector v)"""
        return _oechem.OEStringVector_swap(self, v)


    def begin(self) -> "std::vector< std::string >::iterator":
        """begin(OEStringVector self) -> std::vector< std::string >::iterator"""
        return _oechem.OEStringVector_begin(self)


    def end(self) -> "std::vector< std::string >::iterator":
        """end(OEStringVector self) -> std::vector< std::string >::iterator"""
        return _oechem.OEStringVector_end(self)


    def rbegin(self) -> "std::vector< std::string >::reverse_iterator":
        """rbegin(OEStringVector self) -> std::vector< std::string >::reverse_iterator"""
        return _oechem.OEStringVector_rbegin(self)


    def rend(self) -> "std::vector< std::string >::reverse_iterator":
        """rend(OEStringVector self) -> std::vector< std::string >::reverse_iterator"""
        return _oechem.OEStringVector_rend(self)


    def clear(self) -> "void":
        """clear(OEStringVector self)"""
        return _oechem.OEStringVector_clear(self)


    def get_allocator(self) -> "std::vector< std::string >::allocator_type":
        """get_allocator(OEStringVector self) -> std::vector< std::string >::allocator_type"""
        return _oechem.OEStringVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEStringVector self)"""
        return _oechem.OEStringVector_pop_back(self)


    def erase(self, *args) -> "std::vector< std::string >::iterator":
        """
        erase(OEStringVector self, std::vector< std::string >::iterator pos) -> std::vector< std::string >::iterator
        erase(OEStringVector self, std::vector< std::string >::iterator first, std::vector< std::string >::iterator last) -> std::vector< std::string >::iterator
        """
        return _oechem.OEStringVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(std::string)> self) -> OEStringVector
        __init__(std::vector<(std::string)> self, OEStringVector arg2) -> OEStringVector
        __init__(std::vector<(std::string)> self, std::vector< std::string >::size_type size) -> OEStringVector
        __init__(std::vector<(std::string)> self, std::vector< std::string >::size_type size, std::vector< std::string >::value_type const & value) -> OEStringVector
        """
        this = _oechem.new_OEStringVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'std::vector< std::string >::value_type const &') -> "void":
        """push_back(OEStringVector self, std::vector< std::string >::value_type const & x)"""
        return _oechem.OEStringVector_push_back(self, x)


    def front(self) -> "std::vector< std::string >::value_type const &":
        """front(OEStringVector self) -> std::vector< std::string >::value_type const &"""
        return _oechem.OEStringVector_front(self)


    def back(self) -> "std::vector< std::string >::value_type const &":
        """back(OEStringVector self) -> std::vector< std::string >::value_type const &"""
        return _oechem.OEStringVector_back(self)


    def assign(self, n: 'std::vector< std::string >::size_type', x: 'std::vector< std::string >::value_type const &') -> "void":
        """assign(OEStringVector self, std::vector< std::string >::size_type n, std::vector< std::string >::value_type const & x)"""
        return _oechem.OEStringVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEStringVector self, std::vector< std::string >::size_type new_size)
        resize(OEStringVector self, std::vector< std::string >::size_type new_size, std::vector< std::string >::value_type const & x)
        """
        return _oechem.OEStringVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEStringVector self, std::vector< std::string >::iterator pos, std::vector< std::string >::value_type const & x) -> std::vector< std::string >::iterator
        insert(OEStringVector self, std::vector< std::string >::iterator pos, std::vector< std::string >::size_type n, std::vector< std::string >::value_type const & x)
        """
        return _oechem.OEStringVector_insert(self, *args)


    def reserve(self, n: 'std::vector< std::string >::size_type') -> "void":
        """reserve(OEStringVector self, std::vector< std::string >::size_type n)"""
        return _oechem.OEStringVector_reserve(self, n)


    def capacity(self) -> "std::vector< std::string >::size_type":
        """capacity(OEStringVector self) -> std::vector< std::string >::size_type"""
        return _oechem.OEStringVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEStringVector
    __del__ = lambda self: None
OEStringVector_swigregister = _oechem.OEStringVector_swigregister
OEStringVector_swigregister(OEStringVector)

OE_PYTHON_SWIG = _oechem.OE_PYTHON_SWIG


def _isAtomList(alist):
  if isinstance(alist, list):
    for item in alist:
      if not isinstance(item, OEAtomBase):
        return False
    return True
  else:
    return False

def _isBondList(alist):
  if isinstance(alist, list):
    for item in alist:
      if not isinstance(item, OEBondBase):
        return False
    return True
  else:
    return False

def NewGroup(self, type, *args):
  argcount = len(args)
  if argcount == 1:
    if _isAtomList(args[0]) or isinstance(args[0], OEAtomVector):
      return self._NewGroup_Atoms(type, args[0])
    elif _isBondList(args[0]) or isinstance(args[0], OEBondVector):
      return self._NewGroup_Bonds(type, args[0])
    elif isinstance(args[0], OEAtomBondSet):
      return self._NewGroup_AtomBondSet(type, args[0])
    else:
      return
  elif argcount == 2:
    return self._NewGroup_AtomsBonds(type, args[0], args[1])
  else:
    return


def PopEmptyIter() -> "void *":
    """PopEmptyIter() -> void *"""
    return _oechem.PopEmptyIter()

def PushEmptyIter(arg1: 'void *') -> "void":
    """PushEmptyIter(void * arg1)"""
    return _oechem.PushEmptyIter(arg1)


IntArray = OEIntArray
FloatArray = OEFloatArray
DoubleArray = OEDoubleArray


class OEResidueVector(object):
    """Proxy of C++ std::vector<(OEChem::OEResidue)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEResidueVector self) -> SwigPyIterator"""
        return _oechem.OEResidueVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEResidueVector self) -> bool"""
        return _oechem.OEResidueVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEResidueVector self) -> bool"""
        return _oechem.OEResidueVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OEResidue >::size_type":
        """__len__(OEResidueVector self) -> std::vector< OEChem::OEResidue >::size_type"""
        return _oechem.OEResidueVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OEResidue >::difference_type', j: 'std::vector< OEChem::OEResidue >::difference_type') -> "std::vector< OEChem::OEResidue,std::allocator< OEChem::OEResidue > > *":
        """__getslice__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i, std::vector< OEChem::OEResidue >::difference_type j) -> OEResidueVector"""
        return _oechem.OEResidueVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i, std::vector< OEChem::OEResidue >::difference_type j)
        __setslice__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i, std::vector< OEChem::OEResidue >::difference_type j, OEResidueVector v)
        """
        return _oechem.OEResidueVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OEResidue >::difference_type', j: 'std::vector< OEChem::OEResidue >::difference_type') -> "void":
        """__delslice__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i, std::vector< OEChem::OEResidue >::difference_type j)"""
        return _oechem.OEResidueVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i)
        __delitem__(OEResidueVector self, PySliceObject * slice)
        """
        return _oechem.OEResidueVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OEResidue >::value_type const &":
        """
        __getitem__(OEResidueVector self, PySliceObject * slice) -> OEResidueVector
        __getitem__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i) -> OEResidue
        """
        return _oechem.OEResidueVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEResidueVector self, PySliceObject * slice, OEResidueVector v)
        __setitem__(OEResidueVector self, PySliceObject * slice)
        __setitem__(OEResidueVector self, std::vector< OEChem::OEResidue >::difference_type i, OEResidue x)
        """
        return _oechem.OEResidueVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OEResidue >::value_type":
        """pop(OEResidueVector self) -> OEResidue"""
        return _oechem.OEResidueVector_pop(self)


    def append(self, x: 'OEResidue') -> "void":
        """append(OEResidueVector self, OEResidue x)"""
        return _oechem.OEResidueVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEResidueVector self) -> bool"""
        return _oechem.OEResidueVector_empty(self)


    def size(self) -> "std::vector< OEChem::OEResidue >::size_type":
        """size(OEResidueVector self) -> std::vector< OEChem::OEResidue >::size_type"""
        return _oechem.OEResidueVector_size(self)


    def swap(self, v: 'OEResidueVector') -> "void":
        """swap(OEResidueVector self, OEResidueVector v)"""
        return _oechem.OEResidueVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OEResidue >::iterator":
        """begin(OEResidueVector self) -> std::vector< OEChem::OEResidue >::iterator"""
        return _oechem.OEResidueVector_begin(self)


    def end(self) -> "std::vector< OEChem::OEResidue >::iterator":
        """end(OEResidueVector self) -> std::vector< OEChem::OEResidue >::iterator"""
        return _oechem.OEResidueVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OEResidue >::reverse_iterator":
        """rbegin(OEResidueVector self) -> std::vector< OEChem::OEResidue >::reverse_iterator"""
        return _oechem.OEResidueVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OEResidue >::reverse_iterator":
        """rend(OEResidueVector self) -> std::vector< OEChem::OEResidue >::reverse_iterator"""
        return _oechem.OEResidueVector_rend(self)


    def clear(self) -> "void":
        """clear(OEResidueVector self)"""
        return _oechem.OEResidueVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OEResidue >::allocator_type":
        """get_allocator(OEResidueVector self) -> std::vector< OEChem::OEResidue >::allocator_type"""
        return _oechem.OEResidueVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEResidueVector self)"""
        return _oechem.OEResidueVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OEResidue >::iterator":
        """
        erase(OEResidueVector self, std::vector< OEChem::OEResidue >::iterator pos) -> std::vector< OEChem::OEResidue >::iterator
        erase(OEResidueVector self, std::vector< OEChem::OEResidue >::iterator first, std::vector< OEChem::OEResidue >::iterator last) -> std::vector< OEChem::OEResidue >::iterator
        """
        return _oechem.OEResidueVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(OEChem::OEResidue)> self) -> OEResidueVector
        __init__(std::vector<(OEChem::OEResidue)> self, OEResidueVector arg2) -> OEResidueVector
        __init__(std::vector<(OEChem::OEResidue)> self, std::vector< OEChem::OEResidue >::size_type size) -> OEResidueVector
        __init__(std::vector<(OEChem::OEResidue)> self, std::vector< OEChem::OEResidue >::size_type size, OEResidue value) -> OEResidueVector
        """
        this = _oechem.new_OEResidueVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEResidue') -> "void":
        """push_back(OEResidueVector self, OEResidue x)"""
        return _oechem.OEResidueVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OEResidue >::value_type const &":
        """front(OEResidueVector self) -> OEResidue"""
        return _oechem.OEResidueVector_front(self)


    def back(self) -> "std::vector< OEChem::OEResidue >::value_type const &":
        """back(OEResidueVector self) -> OEResidue"""
        return _oechem.OEResidueVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OEResidue >::size_type', x: 'OEResidue') -> "void":
        """assign(OEResidueVector self, std::vector< OEChem::OEResidue >::size_type n, OEResidue x)"""
        return _oechem.OEResidueVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEResidueVector self, std::vector< OEChem::OEResidue >::size_type new_size)
        resize(OEResidueVector self, std::vector< OEChem::OEResidue >::size_type new_size, OEResidue x)
        """
        return _oechem.OEResidueVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEResidueVector self, std::vector< OEChem::OEResidue >::iterator pos, OEResidue x) -> std::vector< OEChem::OEResidue >::iterator
        insert(OEResidueVector self, std::vector< OEChem::OEResidue >::iterator pos, std::vector< OEChem::OEResidue >::size_type n, OEResidue x)
        """
        return _oechem.OEResidueVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OEResidue >::size_type') -> "void":
        """reserve(OEResidueVector self, std::vector< OEChem::OEResidue >::size_type n)"""
        return _oechem.OEResidueVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OEResidue >::size_type":
        """capacity(OEResidueVector self) -> std::vector< OEChem::OEResidue >::size_type"""
        return _oechem.OEResidueVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEResidueVector
    __del__ = lambda self: None
OEResidueVector_swigregister = _oechem.OEResidueVector_swigregister
OEResidueVector_swigregister(OEResidueVector)

class OEAtomVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEAtomBase)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEAtomVector self) -> SwigPyIterator"""
        return _oechem.OEAtomVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEAtomVector self) -> bool"""
        return _oechem.OEAtomVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEAtomVector self) -> bool"""
        return _oechem.OEAtomVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OEAtomBase * >::size_type":
        """__len__(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::size_type"""
        return _oechem.OEAtomVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OEAtomBase * >::difference_type', j: 'std::vector< OEChem::OEAtomBase * >::difference_type') -> "std::vector< OEChem::OEAtomBase *,std::allocator< OEChem::OEAtomBase * > > *":
        """__getslice__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i, std::vector< OEChem::OEAtomBase * >::difference_type j) -> OEAtomVector"""
        return _oechem.OEAtomVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i, std::vector< OEChem::OEAtomBase * >::difference_type j)
        __setslice__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i, std::vector< OEChem::OEAtomBase * >::difference_type j, OEAtomVector v)
        """
        return _oechem.OEAtomVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OEAtomBase * >::difference_type', j: 'std::vector< OEChem::OEAtomBase * >::difference_type') -> "void":
        """__delslice__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i, std::vector< OEChem::OEAtomBase * >::difference_type j)"""
        return _oechem.OEAtomVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i)
        __delitem__(OEAtomVector self, PySliceObject * slice)
        """
        return _oechem.OEAtomVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OEAtomBase * >::value_type":
        """
        __getitem__(OEAtomVector self, PySliceObject * slice) -> OEAtomVector
        __getitem__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i) -> OEAtomBase
        """
        return _oechem.OEAtomVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEAtomVector self, PySliceObject * slice, OEAtomVector v)
        __setitem__(OEAtomVector self, PySliceObject * slice)
        __setitem__(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::difference_type i, OEAtomBase x)
        """
        return _oechem.OEAtomVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OEAtomBase * >::value_type":
        """pop(OEAtomVector self) -> OEAtomBase"""
        return _oechem.OEAtomVector_pop(self)


    def append(self, x: 'OEAtomBase') -> "void":
        """append(OEAtomVector self, OEAtomBase x)"""
        return _oechem.OEAtomVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEAtomVector self) -> bool"""
        return _oechem.OEAtomVector_empty(self)


    def size(self) -> "std::vector< OEChem::OEAtomBase * >::size_type":
        """size(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::size_type"""
        return _oechem.OEAtomVector_size(self)


    def swap(self, v: 'OEAtomVector') -> "void":
        """swap(OEAtomVector self, OEAtomVector v)"""
        return _oechem.OEAtomVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OEAtomBase * >::iterator":
        """begin(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::iterator"""
        return _oechem.OEAtomVector_begin(self)


    def end(self) -> "std::vector< OEChem::OEAtomBase * >::iterator":
        """end(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::iterator"""
        return _oechem.OEAtomVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OEAtomBase * >::reverse_iterator":
        """rbegin(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::reverse_iterator"""
        return _oechem.OEAtomVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OEAtomBase * >::reverse_iterator":
        """rend(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::reverse_iterator"""
        return _oechem.OEAtomVector_rend(self)


    def clear(self) -> "void":
        """clear(OEAtomVector self)"""
        return _oechem.OEAtomVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OEAtomBase * >::allocator_type":
        """get_allocator(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::allocator_type"""
        return _oechem.OEAtomVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEAtomVector self)"""
        return _oechem.OEAtomVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OEAtomBase * >::iterator":
        """
        erase(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::iterator pos) -> std::vector< OEChem::OEAtomBase * >::iterator
        erase(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::iterator first, std::vector< OEChem::OEAtomBase * >::iterator last) -> std::vector< OEChem::OEAtomBase * >::iterator
        """
        return _oechem.OEAtomVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEChem::OEAtomBase)> self) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self, OEAtomVector arg2) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self, std::vector< OEChem::OEAtomBase * >::size_type size) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self, std::vector< OEChem::OEAtomBase * >::size_type size, OEAtomBase value) -> OEAtomVector
        """
        this = _oechem.new_OEAtomVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEAtomBase') -> "void":
        """push_back(OEAtomVector self, OEAtomBase x)"""
        return _oechem.OEAtomVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OEAtomBase * >::value_type":
        """front(OEAtomVector self) -> OEAtomBase"""
        return _oechem.OEAtomVector_front(self)


    def back(self) -> "std::vector< OEChem::OEAtomBase * >::value_type":
        """back(OEAtomVector self) -> OEAtomBase"""
        return _oechem.OEAtomVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OEAtomBase * >::size_type', x: 'OEAtomBase') -> "void":
        """assign(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::size_type n, OEAtomBase x)"""
        return _oechem.OEAtomVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::size_type new_size)
        resize(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::size_type new_size, OEAtomBase x)
        """
        return _oechem.OEAtomVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::iterator pos, OEAtomBase x) -> std::vector< OEChem::OEAtomBase * >::iterator
        insert(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::iterator pos, std::vector< OEChem::OEAtomBase * >::size_type n, OEAtomBase x)
        """
        return _oechem.OEAtomVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OEAtomBase * >::size_type') -> "void":
        """reserve(OEAtomVector self, std::vector< OEChem::OEAtomBase * >::size_type n)"""
        return _oechem.OEAtomVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OEAtomBase * >::size_type":
        """capacity(OEAtomVector self) -> std::vector< OEChem::OEAtomBase * >::size_type"""
        return _oechem.OEAtomVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEAtomVector
    __del__ = lambda self: None
OEAtomVector_swigregister = _oechem.OEAtomVector_swigregister
OEAtomVector_swigregister(OEAtomVector)

class OEBondVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEBondBase)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEBondVector self) -> SwigPyIterator"""
        return _oechem.OEBondVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEBondVector self) -> bool"""
        return _oechem.OEBondVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEBondVector self) -> bool"""
        return _oechem.OEBondVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OEBondBase * >::size_type":
        """__len__(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::size_type"""
        return _oechem.OEBondVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OEBondBase * >::difference_type', j: 'std::vector< OEChem::OEBondBase * >::difference_type') -> "std::vector< OEChem::OEBondBase *,std::allocator< OEChem::OEBondBase * > > *":
        """__getslice__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i, std::vector< OEChem::OEBondBase * >::difference_type j) -> OEBondVector"""
        return _oechem.OEBondVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i, std::vector< OEChem::OEBondBase * >::difference_type j)
        __setslice__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i, std::vector< OEChem::OEBondBase * >::difference_type j, OEBondVector v)
        """
        return _oechem.OEBondVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OEBondBase * >::difference_type', j: 'std::vector< OEChem::OEBondBase * >::difference_type') -> "void":
        """__delslice__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i, std::vector< OEChem::OEBondBase * >::difference_type j)"""
        return _oechem.OEBondVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i)
        __delitem__(OEBondVector self, PySliceObject * slice)
        """
        return _oechem.OEBondVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OEBondBase * >::value_type":
        """
        __getitem__(OEBondVector self, PySliceObject * slice) -> OEBondVector
        __getitem__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i) -> OEBondBase
        """
        return _oechem.OEBondVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEBondVector self, PySliceObject * slice, OEBondVector v)
        __setitem__(OEBondVector self, PySliceObject * slice)
        __setitem__(OEBondVector self, std::vector< OEChem::OEBondBase * >::difference_type i, OEBondBase x)
        """
        return _oechem.OEBondVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OEBondBase * >::value_type":
        """pop(OEBondVector self) -> OEBondBase"""
        return _oechem.OEBondVector_pop(self)


    def append(self, x: 'OEBondBase') -> "void":
        """append(OEBondVector self, OEBondBase x)"""
        return _oechem.OEBondVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEBondVector self) -> bool"""
        return _oechem.OEBondVector_empty(self)


    def size(self) -> "std::vector< OEChem::OEBondBase * >::size_type":
        """size(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::size_type"""
        return _oechem.OEBondVector_size(self)


    def swap(self, v: 'OEBondVector') -> "void":
        """swap(OEBondVector self, OEBondVector v)"""
        return _oechem.OEBondVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OEBondBase * >::iterator":
        """begin(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::iterator"""
        return _oechem.OEBondVector_begin(self)


    def end(self) -> "std::vector< OEChem::OEBondBase * >::iterator":
        """end(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::iterator"""
        return _oechem.OEBondVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OEBondBase * >::reverse_iterator":
        """rbegin(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::reverse_iterator"""
        return _oechem.OEBondVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OEBondBase * >::reverse_iterator":
        """rend(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::reverse_iterator"""
        return _oechem.OEBondVector_rend(self)


    def clear(self) -> "void":
        """clear(OEBondVector self)"""
        return _oechem.OEBondVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OEBondBase * >::allocator_type":
        """get_allocator(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::allocator_type"""
        return _oechem.OEBondVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEBondVector self)"""
        return _oechem.OEBondVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OEBondBase * >::iterator":
        """
        erase(OEBondVector self, std::vector< OEChem::OEBondBase * >::iterator pos) -> std::vector< OEChem::OEBondBase * >::iterator
        erase(OEBondVector self, std::vector< OEChem::OEBondBase * >::iterator first, std::vector< OEChem::OEBondBase * >::iterator last) -> std::vector< OEChem::OEBondBase * >::iterator
        """
        return _oechem.OEBondVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEChem::OEBondBase)> self) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self, OEBondVector arg2) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self, std::vector< OEChem::OEBondBase * >::size_type size) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self, std::vector< OEChem::OEBondBase * >::size_type size, OEBondBase value) -> OEBondVector
        """
        this = _oechem.new_OEBondVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEBondBase') -> "void":
        """push_back(OEBondVector self, OEBondBase x)"""
        return _oechem.OEBondVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OEBondBase * >::value_type":
        """front(OEBondVector self) -> OEBondBase"""
        return _oechem.OEBondVector_front(self)


    def back(self) -> "std::vector< OEChem::OEBondBase * >::value_type":
        """back(OEBondVector self) -> OEBondBase"""
        return _oechem.OEBondVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OEBondBase * >::size_type', x: 'OEBondBase') -> "void":
        """assign(OEBondVector self, std::vector< OEChem::OEBondBase * >::size_type n, OEBondBase x)"""
        return _oechem.OEBondVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEBondVector self, std::vector< OEChem::OEBondBase * >::size_type new_size)
        resize(OEBondVector self, std::vector< OEChem::OEBondBase * >::size_type new_size, OEBondBase x)
        """
        return _oechem.OEBondVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEBondVector self, std::vector< OEChem::OEBondBase * >::iterator pos, OEBondBase x) -> std::vector< OEChem::OEBondBase * >::iterator
        insert(OEBondVector self, std::vector< OEChem::OEBondBase * >::iterator pos, std::vector< OEChem::OEBondBase * >::size_type n, OEBondBase x)
        """
        return _oechem.OEBondVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OEBondBase * >::size_type') -> "void":
        """reserve(OEBondVector self, std::vector< OEChem::OEBondBase * >::size_type n)"""
        return _oechem.OEBondVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OEBondBase * >::size_type":
        """capacity(OEBondVector self) -> std::vector< OEChem::OEBondBase * >::size_type"""
        return _oechem.OEBondVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEBondVector
    __del__ = lambda self: None
OEBondVector_swigregister = _oechem.OEBondVector_swigregister
OEBondVector_swigregister(OEBondVector)

class OEAtomBondSetVector(object):
    """Proxy of C++ std::vector<(OEChem::OEAtomBondSet)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEAtomBondSetVector self) -> SwigPyIterator"""
        return _oechem.OEAtomBondSetVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEAtomBondSetVector self) -> bool"""
        return _oechem.OEAtomBondSetVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEAtomBondSetVector self) -> bool"""
        return _oechem.OEAtomBondSetVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OEAtomBondSet >::size_type":
        """__len__(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::size_type"""
        return _oechem.OEAtomBondSetVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OEAtomBondSet >::difference_type', j: 'std::vector< OEChem::OEAtomBondSet >::difference_type') -> "std::vector< OEChem::OEAtomBondSet,std::allocator< OEChem::OEAtomBondSet > > *":
        """__getslice__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i, std::vector< OEChem::OEAtomBondSet >::difference_type j) -> OEAtomBondSetVector"""
        return _oechem.OEAtomBondSetVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i, std::vector< OEChem::OEAtomBondSet >::difference_type j)
        __setslice__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i, std::vector< OEChem::OEAtomBondSet >::difference_type j, OEAtomBondSetVector v)
        """
        return _oechem.OEAtomBondSetVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OEAtomBondSet >::difference_type', j: 'std::vector< OEChem::OEAtomBondSet >::difference_type') -> "void":
        """__delslice__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i, std::vector< OEChem::OEAtomBondSet >::difference_type j)"""
        return _oechem.OEAtomBondSetVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i)
        __delitem__(OEAtomBondSetVector self, PySliceObject * slice)
        """
        return _oechem.OEAtomBondSetVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OEAtomBondSet >::value_type const &":
        """
        __getitem__(OEAtomBondSetVector self, PySliceObject * slice) -> OEAtomBondSetVector
        __getitem__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i) -> OEAtomBondSet
        """
        return _oechem.OEAtomBondSetVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEAtomBondSetVector self, PySliceObject * slice, OEAtomBondSetVector v)
        __setitem__(OEAtomBondSetVector self, PySliceObject * slice)
        __setitem__(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::difference_type i, OEAtomBondSet x)
        """
        return _oechem.OEAtomBondSetVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OEAtomBondSet >::value_type":
        """pop(OEAtomBondSetVector self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetVector_pop(self)


    def append(self, x: 'OEAtomBondSet') -> "void":
        """append(OEAtomBondSetVector self, OEAtomBondSet x)"""
        return _oechem.OEAtomBondSetVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEAtomBondSetVector self) -> bool"""
        return _oechem.OEAtomBondSetVector_empty(self)


    def size(self) -> "std::vector< OEChem::OEAtomBondSet >::size_type":
        """size(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::size_type"""
        return _oechem.OEAtomBondSetVector_size(self)


    def swap(self, v: 'OEAtomBondSetVector') -> "void":
        """swap(OEAtomBondSetVector self, OEAtomBondSetVector v)"""
        return _oechem.OEAtomBondSetVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OEAtomBondSet >::iterator":
        """begin(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::iterator"""
        return _oechem.OEAtomBondSetVector_begin(self)


    def end(self) -> "std::vector< OEChem::OEAtomBondSet >::iterator":
        """end(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::iterator"""
        return _oechem.OEAtomBondSetVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OEAtomBondSet >::reverse_iterator":
        """rbegin(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::reverse_iterator"""
        return _oechem.OEAtomBondSetVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OEAtomBondSet >::reverse_iterator":
        """rend(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::reverse_iterator"""
        return _oechem.OEAtomBondSetVector_rend(self)


    def clear(self) -> "void":
        """clear(OEAtomBondSetVector self)"""
        return _oechem.OEAtomBondSetVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OEAtomBondSet >::allocator_type":
        """get_allocator(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::allocator_type"""
        return _oechem.OEAtomBondSetVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEAtomBondSetVector self)"""
        return _oechem.OEAtomBondSetVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OEAtomBondSet >::iterator":
        """
        erase(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::iterator pos) -> std::vector< OEChem::OEAtomBondSet >::iterator
        erase(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::iterator first, std::vector< OEChem::OEAtomBondSet >::iterator last) -> std::vector< OEChem::OEAtomBondSet >::iterator
        """
        return _oechem.OEAtomBondSetVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(OEChem::OEAtomBondSet)> self) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self, OEAtomBondSetVector arg2) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self, std::vector< OEChem::OEAtomBondSet >::size_type size) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self, std::vector< OEChem::OEAtomBondSet >::size_type size, OEAtomBondSet value) -> OEAtomBondSetVector
        """
        this = _oechem.new_OEAtomBondSetVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEAtomBondSet') -> "void":
        """push_back(OEAtomBondSetVector self, OEAtomBondSet x)"""
        return _oechem.OEAtomBondSetVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OEAtomBondSet >::value_type const &":
        """front(OEAtomBondSetVector self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetVector_front(self)


    def back(self) -> "std::vector< OEChem::OEAtomBondSet >::value_type const &":
        """back(OEAtomBondSetVector self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OEAtomBondSet >::size_type', x: 'OEAtomBondSet') -> "void":
        """assign(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::size_type n, OEAtomBondSet x)"""
        return _oechem.OEAtomBondSetVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::size_type new_size)
        resize(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::size_type new_size, OEAtomBondSet x)
        """
        return _oechem.OEAtomBondSetVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::iterator pos, OEAtomBondSet x) -> std::vector< OEChem::OEAtomBondSet >::iterator
        insert(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::iterator pos, std::vector< OEChem::OEAtomBondSet >::size_type n, OEAtomBondSet x)
        """
        return _oechem.OEAtomBondSetVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OEAtomBondSet >::size_type') -> "void":
        """reserve(OEAtomBondSetVector self, std::vector< OEChem::OEAtomBondSet >::size_type n)"""
        return _oechem.OEAtomBondSetVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OEAtomBondSet >::size_type":
        """capacity(OEAtomBondSetVector self) -> std::vector< OEChem::OEAtomBondSet >::size_type"""
        return _oechem.OEAtomBondSetVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEAtomBondSetVector
    __del__ = lambda self: None
OEAtomBondSetVector_swigregister = _oechem.OEAtomBondSetVector_swigregister
OEAtomBondSetVector_swigregister(OEAtomBondSetVector)

class OESubSearchVector(object):
    """Proxy of C++ std::vector<(OEChem::OESubSearch)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OESubSearchVector self) -> SwigPyIterator"""
        return _oechem.OESubSearchVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OESubSearchVector self) -> bool"""
        return _oechem.OESubSearchVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OESubSearchVector self) -> bool"""
        return _oechem.OESubSearchVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OESubSearch >::size_type":
        """__len__(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::size_type"""
        return _oechem.OESubSearchVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OESubSearch >::difference_type', j: 'std::vector< OEChem::OESubSearch >::difference_type') -> "std::vector< OEChem::OESubSearch,std::allocator< OEChem::OESubSearch > > *":
        """__getslice__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i, std::vector< OEChem::OESubSearch >::difference_type j) -> OESubSearchVector"""
        return _oechem.OESubSearchVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i, std::vector< OEChem::OESubSearch >::difference_type j)
        __setslice__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i, std::vector< OEChem::OESubSearch >::difference_type j, OESubSearchVector v)
        """
        return _oechem.OESubSearchVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OESubSearch >::difference_type', j: 'std::vector< OEChem::OESubSearch >::difference_type') -> "void":
        """__delslice__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i, std::vector< OEChem::OESubSearch >::difference_type j)"""
        return _oechem.OESubSearchVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i)
        __delitem__(OESubSearchVector self, PySliceObject * slice)
        """
        return _oechem.OESubSearchVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OESubSearch >::value_type const &":
        """
        __getitem__(OESubSearchVector self, PySliceObject * slice) -> OESubSearchVector
        __getitem__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i) -> OESubSearch
        """
        return _oechem.OESubSearchVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OESubSearchVector self, PySliceObject * slice, OESubSearchVector v)
        __setitem__(OESubSearchVector self, PySliceObject * slice)
        __setitem__(OESubSearchVector self, std::vector< OEChem::OESubSearch >::difference_type i, OESubSearch x)
        """
        return _oechem.OESubSearchVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OESubSearch >::value_type":
        """pop(OESubSearchVector self) -> OESubSearch"""
        return _oechem.OESubSearchVector_pop(self)


    def append(self, x: 'OESubSearch') -> "void":
        """append(OESubSearchVector self, OESubSearch x)"""
        return _oechem.OESubSearchVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OESubSearchVector self) -> bool"""
        return _oechem.OESubSearchVector_empty(self)


    def size(self) -> "std::vector< OEChem::OESubSearch >::size_type":
        """size(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::size_type"""
        return _oechem.OESubSearchVector_size(self)


    def swap(self, v: 'OESubSearchVector') -> "void":
        """swap(OESubSearchVector self, OESubSearchVector v)"""
        return _oechem.OESubSearchVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OESubSearch >::iterator":
        """begin(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::iterator"""
        return _oechem.OESubSearchVector_begin(self)


    def end(self) -> "std::vector< OEChem::OESubSearch >::iterator":
        """end(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::iterator"""
        return _oechem.OESubSearchVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OESubSearch >::reverse_iterator":
        """rbegin(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::reverse_iterator"""
        return _oechem.OESubSearchVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OESubSearch >::reverse_iterator":
        """rend(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::reverse_iterator"""
        return _oechem.OESubSearchVector_rend(self)


    def clear(self) -> "void":
        """clear(OESubSearchVector self)"""
        return _oechem.OESubSearchVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OESubSearch >::allocator_type":
        """get_allocator(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::allocator_type"""
        return _oechem.OESubSearchVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OESubSearchVector self)"""
        return _oechem.OESubSearchVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OESubSearch >::iterator":
        """
        erase(OESubSearchVector self, std::vector< OEChem::OESubSearch >::iterator pos) -> std::vector< OEChem::OESubSearch >::iterator
        erase(OESubSearchVector self, std::vector< OEChem::OESubSearch >::iterator first, std::vector< OEChem::OESubSearch >::iterator last) -> std::vector< OEChem::OESubSearch >::iterator
        """
        return _oechem.OESubSearchVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(OEChem::OESubSearch)> self) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self, OESubSearchVector arg2) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self, std::vector< OEChem::OESubSearch >::size_type size) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self, std::vector< OEChem::OESubSearch >::size_type size, OESubSearch value) -> OESubSearchVector
        """
        this = _oechem.new_OESubSearchVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OESubSearch') -> "void":
        """push_back(OESubSearchVector self, OESubSearch x)"""
        return _oechem.OESubSearchVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OESubSearch >::value_type const &":
        """front(OESubSearchVector self) -> OESubSearch"""
        return _oechem.OESubSearchVector_front(self)


    def back(self) -> "std::vector< OEChem::OESubSearch >::value_type const &":
        """back(OESubSearchVector self) -> OESubSearch"""
        return _oechem.OESubSearchVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OESubSearch >::size_type', x: 'OESubSearch') -> "void":
        """assign(OESubSearchVector self, std::vector< OEChem::OESubSearch >::size_type n, OESubSearch x)"""
        return _oechem.OESubSearchVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OESubSearchVector self, std::vector< OEChem::OESubSearch >::size_type new_size)
        resize(OESubSearchVector self, std::vector< OEChem::OESubSearch >::size_type new_size, OESubSearch x)
        """
        return _oechem.OESubSearchVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OESubSearchVector self, std::vector< OEChem::OESubSearch >::iterator pos, OESubSearch x) -> std::vector< OEChem::OESubSearch >::iterator
        insert(OESubSearchVector self, std::vector< OEChem::OESubSearch >::iterator pos, std::vector< OEChem::OESubSearch >::size_type n, OESubSearch x)
        """
        return _oechem.OESubSearchVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OESubSearch >::size_type') -> "void":
        """reserve(OESubSearchVector self, std::vector< OEChem::OESubSearch >::size_type n)"""
        return _oechem.OESubSearchVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OESubSearch >::size_type":
        """capacity(OESubSearchVector self) -> std::vector< OEChem::OESubSearch >::size_type"""
        return _oechem.OESubSearchVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OESubSearchVector
    __del__ = lambda self: None
OESubSearchVector_swigregister = _oechem.OESubSearchVector_swigregister
OESubSearchVector_swigregister(OESubSearchVector)

class OEAtomArray(object):
    """Proxy of C++ ArrayT<(p.OEChem::OEAtomBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEAtomArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, Py_ssize_t n) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEChem::OEAtomBase *const * d, Py_ssize_t n) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEChem::OEAtomBase *const * d, Py_ssize_t n, bool o) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, PyObject * input) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEAtomArray rhs) -> OEAtomArray
        """
        this = _oechem.new_OEAtomArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEAtomArray') -> "bool":
        """__eq__(OEAtomArray self, OEAtomArray other) -> bool"""
        return _oechem.OEAtomArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEAtomArray self, double arg2, OEAtomBase arg3)
        __setitem__(OEAtomArray self, Py_ssize_t n, OEAtomBase value)
        """
        return _oechem.OEAtomArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEAtomArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEAtomArray self) -> PyObject *"""
        return _oechem.OEAtomArray___repr__(self)


    def PtrCast(self, *args) -> "OEChem::OEAtomBase *const *":
        """
        PtrCast(OEAtomArray self) -> OEAtomBase
        PtrCast(OEAtomArray self) -> OEChem::OEAtomBase *const *
        """
        return _oechem.OEAtomArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEAtomArray self) -> Py_ssize_t"""
        return _oechem.OEAtomArray___len__(self)

OEAtomArray_swigregister = _oechem.OEAtomArray_swigregister
OEAtomArray_swigregister(OEAtomArray)

class OEBondArray(object):
    """Proxy of C++ ArrayT<(p.OEChem::OEBondBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEBondArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, Py_ssize_t n) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEChem::OEBondBase *const * d, Py_ssize_t n) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEChem::OEBondBase *const * d, Py_ssize_t n, bool o) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, PyObject * input) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEBondArray rhs) -> OEBondArray
        """
        this = _oechem.new_OEBondArray(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, other: 'OEBondArray') -> "bool":
        """__eq__(OEBondArray self, OEBondArray other) -> bool"""
        return _oechem.OEBondArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEBondArray self, double arg2, OEBondBase arg3)
        __setitem__(OEBondArray self, Py_ssize_t n, OEBondBase value)
        """
        return _oechem.OEBondArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEBondArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEBondArray self) -> PyObject *"""
        return _oechem.OEBondArray___repr__(self)


    def PtrCast(self, *args) -> "OEChem::OEBondBase *const *":
        """
        PtrCast(OEBondArray self) -> OEBondBase
        PtrCast(OEBondArray self) -> OEChem::OEBondBase *const *
        """
        return _oechem.OEBondArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEBondArray self) -> Py_ssize_t"""
        return _oechem.OEBondArray___len__(self)

OEBondArray_swigregister = _oechem.OEBondArray_swigregister
OEBondArray_swigregister(OEBondArray)



IntVector = OEIntVector
FloatVector = OEFloatVector
DoubleVector = OEDoubleVector
AtomVector = OEAtomVector
BondVector = OEBondVector


class OEOptionalUInt(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(unsigned int)> 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__(OEStdOptionalNamespace::optional<(unsigned int)> self) -> OEOptionalUInt
        __init__(OEStdOptionalNamespace::optional<(unsigned int)> self, unsigned int const & value) -> OEOptionalUInt
        __init__(OEStdOptionalNamespace::optional<(unsigned int)> self, OEOptionalUInt other) -> OEOptionalUInt
        """
        this = _oechem.new_OEOptionalUInt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalUInt___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalUInt self) -> bool"""
        return _oechem.OEOptionalUInt_has_value(self)


    def value(self) -> "unsigned int const &":
        """value(OEOptionalUInt self) -> unsigned int const &"""
        return _oechem.OEOptionalUInt_value(self)


    def value_or(self, arg2: 'unsigned int const &') -> "unsigned int":
        """value_or(OEOptionalUInt self, unsigned int const & arg2) -> unsigned int"""
        return _oechem.OEOptionalUInt_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalUInt
    __del__ = lambda self: None
OEOptionalUInt_swigregister = _oechem.OEOptionalUInt_swigregister
OEOptionalUInt_swigregister(OEOptionalUInt)

class OEOptionalInt(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(int)> 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__(OEStdOptionalNamespace::optional<(int)> self) -> OEOptionalInt
        __init__(OEStdOptionalNamespace::optional<(int)> self, int const & value) -> OEOptionalInt
        __init__(OEStdOptionalNamespace::optional<(int)> self, OEOptionalInt other) -> OEOptionalInt
        """
        this = _oechem.new_OEOptionalInt(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalInt___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalInt self) -> bool"""
        return _oechem.OEOptionalInt_has_value(self)


    def value(self) -> "int const &":
        """value(OEOptionalInt self) -> int const &"""
        return _oechem.OEOptionalInt_value(self)


    def value_or(self, arg2: 'int const &') -> "int":
        """value_or(OEOptionalInt self, int const & arg2) -> int"""
        return _oechem.OEOptionalInt_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalInt
    __del__ = lambda self: None
OEOptionalInt_swigregister = _oechem.OEOptionalInt_swigregister
OEOptionalInt_swigregister(OEOptionalInt)

class OEOptionalLong(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(long)> 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__(OEStdOptionalNamespace::optional<(long)> self) -> OEOptionalLong
        __init__(OEStdOptionalNamespace::optional<(long)> self, long const & value) -> OEOptionalLong
        __init__(OEStdOptionalNamespace::optional<(long)> self, OEOptionalLong other) -> OEOptionalLong
        """
        this = _oechem.new_OEOptionalLong(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalLong___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalLong self) -> bool"""
        return _oechem.OEOptionalLong_has_value(self)


    def value(self) -> "long const &":
        """value(OEOptionalLong self) -> long const &"""
        return _oechem.OEOptionalLong_value(self)


    def value_or(self, arg2: 'long const &') -> "long":
        """value_or(OEOptionalLong self, long const & arg2) -> long"""
        return _oechem.OEOptionalLong_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalLong
    __del__ = lambda self: None
OEOptionalLong_swigregister = _oechem.OEOptionalLong_swigregister
OEOptionalLong_swigregister(OEOptionalLong)

class OEOptionalChar(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(char)> 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__(OEStdOptionalNamespace::optional<(char)> self) -> OEOptionalChar
        __init__(OEStdOptionalNamespace::optional<(char)> self, char const & value) -> OEOptionalChar
        __init__(OEStdOptionalNamespace::optional<(char)> self, OEOptionalChar other) -> OEOptionalChar
        """
        this = _oechem.new_OEOptionalChar(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalChar___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalChar self) -> bool"""
        return _oechem.OEOptionalChar_has_value(self)


    def value(self) -> "char const &":
        """value(OEOptionalChar self) -> char const &"""
        return _oechem.OEOptionalChar_value(self)


    def value_or(self, arg2: 'char const &') -> "char":
        """value_or(OEOptionalChar self, char const & arg2) -> char"""
        return _oechem.OEOptionalChar_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalChar
    __del__ = lambda self: None
OEOptionalChar_swigregister = _oechem.OEOptionalChar_swigregister
OEOptionalChar_swigregister(OEOptionalChar)

class OEOptionalString(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::string)> 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__(OEStdOptionalNamespace::optional<(std::string)> self) -> OEOptionalString
        __init__(OEStdOptionalNamespace::optional<(std::string)> self, std::string const & value) -> OEOptionalString
        __init__(OEStdOptionalNamespace::optional<(std::string)> self, OEOptionalString other) -> OEOptionalString
        """
        this = _oechem.new_OEOptionalString(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalString___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalString self) -> bool"""
        return _oechem.OEOptionalString_has_value(self)


    def value(self) -> "std::string const &":
        """value(OEOptionalString self) -> std::string const &"""
        return _oechem.OEOptionalString_value(self)


    def value_or(self, arg2: 'std::string const &') -> "std::string":
        """value_or(OEOptionalString self, std::string const & arg2) -> std::string"""
        return _oechem.OEOptionalString_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalString
    __del__ = lambda self: None
OEOptionalString_swigregister = _oechem.OEOptionalString_swigregister
OEOptionalString_swigregister(OEOptionalString)

class OEOptionalUChar(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(unsigned char)> 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__(OEStdOptionalNamespace::optional<(unsigned char)> self) -> OEOptionalUChar
        __init__(OEStdOptionalNamespace::optional<(unsigned char)> self, unsigned char const & value) -> OEOptionalUChar
        __init__(OEStdOptionalNamespace::optional<(unsigned char)> self, OEOptionalUChar other) -> OEOptionalUChar
        """
        this = _oechem.new_OEOptionalUChar(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalUChar___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalUChar self) -> bool"""
        return _oechem.OEOptionalUChar_has_value(self)


    def value(self) -> "unsigned char const &":
        """value(OEOptionalUChar self) -> unsigned char const &"""
        return _oechem.OEOptionalUChar_value(self)


    def value_or(self, arg2: 'unsigned char const &') -> "unsigned char":
        """value_or(OEOptionalUChar self, unsigned char const & arg2) -> unsigned char"""
        return _oechem.OEOptionalUChar_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalUChar
    __del__ = lambda self: None
OEOptionalUChar_swigregister = _oechem.OEOptionalUChar_swigregister
OEOptionalUChar_swigregister(OEOptionalUChar)

class OEOptionalFloat(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(float)> 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__(OEStdOptionalNamespace::optional<(float)> self) -> OEOptionalFloat
        __init__(OEStdOptionalNamespace::optional<(float)> self, float const & value) -> OEOptionalFloat
        __init__(OEStdOptionalNamespace::optional<(float)> self, OEOptionalFloat other) -> OEOptionalFloat
        """
        this = _oechem.new_OEOptionalFloat(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalFloat___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalFloat self) -> bool"""
        return _oechem.OEOptionalFloat_has_value(self)


    def value(self) -> "float const &":
        """value(OEOptionalFloat self) -> float const &"""
        return _oechem.OEOptionalFloat_value(self)


    def value_or(self, arg2: 'float const &') -> "float":
        """value_or(OEOptionalFloat self, float const & arg2) -> float"""
        return _oechem.OEOptionalFloat_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalFloat
    __del__ = lambda self: None
OEOptionalFloat_swigregister = _oechem.OEOptionalFloat_swigregister
OEOptionalFloat_swigregister(OEOptionalFloat)

class OEOptionalDouble(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(double)> 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__(OEStdOptionalNamespace::optional<(double)> self) -> OEOptionalDouble
        __init__(OEStdOptionalNamespace::optional<(double)> self, double const & value) -> OEOptionalDouble
        __init__(OEStdOptionalNamespace::optional<(double)> self, OEOptionalDouble other) -> OEOptionalDouble
        """
        this = _oechem.new_OEOptionalDouble(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalDouble___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalDouble self) -> bool"""
        return _oechem.OEOptionalDouble_has_value(self)


    def value(self) -> "double const &":
        """value(OEOptionalDouble self) -> double const &"""
        return _oechem.OEOptionalDouble_value(self)


    def value_or(self, arg2: 'double const &') -> "double":
        """value_or(OEOptionalDouble self, double const & arg2) -> double"""
        return _oechem.OEOptionalDouble_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalDouble
    __del__ = lambda self: None
OEOptionalDouble_swigregister = _oechem.OEOptionalDouble_swigregister
OEOptionalDouble_swigregister(OEOptionalDouble)

class OEOptionalUIntVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(unsigned int)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(unsigned int)>)> self) -> OEOptionalUIntVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(unsigned int)>)> self, OEUIntVector value) -> OEOptionalUIntVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(unsigned int)>)> self, OEOptionalUIntVector other) -> OEOptionalUIntVector
        """
        this = _oechem.new_OEOptionalUIntVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalUIntVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalUIntVector self) -> bool"""
        return _oechem.OEOptionalUIntVector_has_value(self)


    def value(self) -> "std::vector< unsigned int,std::allocator< unsigned int > > const &":
        """value(OEOptionalUIntVector self) -> OEUIntVector"""
        return _oechem.OEOptionalUIntVector_value(self)


    def value_or(self, arg2: 'OEUIntVector') -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        """value_or(OEOptionalUIntVector self, OEUIntVector arg2) -> OEUIntVector"""
        return _oechem.OEOptionalUIntVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalUIntVector
    __del__ = lambda self: None
OEOptionalUIntVector_swigregister = _oechem.OEOptionalUIntVector_swigregister
OEOptionalUIntVector_swigregister(OEOptionalUIntVector)

class OEOptionalIntVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(int)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(int)>)> self) -> OEOptionalIntVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(int)>)> self, OEIntVector value) -> OEOptionalIntVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(int)>)> self, OEOptionalIntVector other) -> OEOptionalIntVector
        """
        this = _oechem.new_OEOptionalIntVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalIntVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalIntVector self) -> bool"""
        return _oechem.OEOptionalIntVector_has_value(self)


    def value(self) -> "std::vector< int,std::allocator< int > > const &":
        """value(OEOptionalIntVector self) -> OEIntVector"""
        return _oechem.OEOptionalIntVector_value(self)


    def value_or(self, arg2: 'OEIntVector') -> "std::vector< int,std::allocator< int > >":
        """value_or(OEOptionalIntVector self, OEIntVector arg2) -> OEIntVector"""
        return _oechem.OEOptionalIntVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalIntVector
    __del__ = lambda self: None
OEOptionalIntVector_swigregister = _oechem.OEOptionalIntVector_swigregister
OEOptionalIntVector_swigregister(OEOptionalIntVector)

class OEOptionalLongVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(long)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(long)>)> self) -> OEOptionalLongVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(long)>)> self, OELongVector value) -> OEOptionalLongVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(long)>)> self, OEOptionalLongVector other) -> OEOptionalLongVector
        """
        this = _oechem.new_OEOptionalLongVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalLongVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalLongVector self) -> bool"""
        return _oechem.OEOptionalLongVector_has_value(self)


    def value(self) -> "std::vector< long,std::allocator< long > > const &":
        """value(OEOptionalLongVector self) -> OELongVector"""
        return _oechem.OEOptionalLongVector_value(self)


    def value_or(self, arg2: 'OELongVector') -> "std::vector< long,std::allocator< long > >":
        """value_or(OEOptionalLongVector self, OELongVector arg2) -> OELongVector"""
        return _oechem.OEOptionalLongVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalLongVector
    __del__ = lambda self: None
OEOptionalLongVector_swigregister = _oechem.OEOptionalLongVector_swigregister
OEOptionalLongVector_swigregister(OEOptionalLongVector)

class OEOptionalCharVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(char)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(char)>)> self) -> OEOptionalCharVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(char)>)> self, OECharVector value) -> OEOptionalCharVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(char)>)> self, OEOptionalCharVector other) -> OEOptionalCharVector
        """
        this = _oechem.new_OEOptionalCharVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalCharVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalCharVector self) -> bool"""
        return _oechem.OEOptionalCharVector_has_value(self)


    def value(self) -> "std::vector< char,std::allocator< char > > const &":
        """value(OEOptionalCharVector self) -> OECharVector"""
        return _oechem.OEOptionalCharVector_value(self)


    def value_or(self, arg2: 'OECharVector') -> "std::vector< char,std::allocator< char > >":
        """value_or(OEOptionalCharVector self, OECharVector arg2) -> OECharVector"""
        return _oechem.OEOptionalCharVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalCharVector
    __del__ = lambda self: None
OEOptionalCharVector_swigregister = _oechem.OEOptionalCharVector_swigregister
OEOptionalCharVector_swigregister(OEOptionalCharVector)

class OEOptionalUCharVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(unsigned char)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(unsigned char)>)> self) -> OEOptionalUCharVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(unsigned char)>)> self, OEUCharVector value) -> OEOptionalUCharVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(unsigned char)>)> self, OEOptionalUCharVector other) -> OEOptionalUCharVector
        """
        this = _oechem.new_OEOptionalUCharVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalUCharVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalUCharVector self) -> bool"""
        return _oechem.OEOptionalUCharVector_has_value(self)


    def value(self) -> "std::vector< unsigned char,std::allocator< unsigned char > > const &":
        """value(OEOptionalUCharVector self) -> OEUCharVector"""
        return _oechem.OEOptionalUCharVector_value(self)


    def value_or(self, arg2: 'OEUCharVector') -> "std::vector< unsigned char,std::allocator< unsigned char > >":
        """value_or(OEOptionalUCharVector self, OEUCharVector arg2) -> OEUCharVector"""
        return _oechem.OEOptionalUCharVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalUCharVector
    __del__ = lambda self: None
OEOptionalUCharVector_swigregister = _oechem.OEOptionalUCharVector_swigregister
OEOptionalUCharVector_swigregister(OEOptionalUCharVector)

class OEOptionalFloatVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(float)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(float)>)> self) -> OEOptionalFloatVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(float)>)> self, OEFloatVector value) -> OEOptionalFloatVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(float)>)> self, OEOptionalFloatVector other) -> OEOptionalFloatVector
        """
        this = _oechem.new_OEOptionalFloatVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalFloatVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalFloatVector self) -> bool"""
        return _oechem.OEOptionalFloatVector_has_value(self)


    def value(self) -> "std::vector< float,std::allocator< float > > const &":
        """value(OEOptionalFloatVector self) -> OEFloatVector"""
        return _oechem.OEOptionalFloatVector_value(self)


    def value_or(self, arg2: 'OEFloatVector') -> "std::vector< float,std::allocator< float > >":
        """value_or(OEOptionalFloatVector self, OEFloatVector arg2) -> OEFloatVector"""
        return _oechem.OEOptionalFloatVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalFloatVector
    __del__ = lambda self: None
OEOptionalFloatVector_swigregister = _oechem.OEOptionalFloatVector_swigregister
OEOptionalFloatVector_swigregister(OEOptionalFloatVector)

class OEOptionalDoubleVector(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(std::vector<(double)>)> 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__(OEStdOptionalNamespace::optional<(std::vector<(double)>)> self) -> OEOptionalDoubleVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(double)>)> self, OEDoubleVector value) -> OEOptionalDoubleVector
        __init__(OEStdOptionalNamespace::optional<(std::vector<(double)>)> self, OEOptionalDoubleVector other) -> OEOptionalDoubleVector
        """
        this = _oechem.new_OEOptionalDoubleVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalDoubleVector___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalDoubleVector self) -> bool"""
        return _oechem.OEOptionalDoubleVector_has_value(self)


    def value(self) -> "std::vector< double,std::allocator< double > > const &":
        """value(OEOptionalDoubleVector self) -> OEDoubleVector"""
        return _oechem.OEOptionalDoubleVector_value(self)


    def value_or(self, arg2: 'OEDoubleVector') -> "std::vector< double,std::allocator< double > >":
        """value_or(OEOptionalDoubleVector self, OEDoubleVector arg2) -> OEDoubleVector"""
        return _oechem.OEOptionalDoubleVector_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalDoubleVector
    __del__ = lambda self: None
OEOptionalDoubleVector_swigregister = _oechem.OEOptionalDoubleVector_swigregister
OEOptionalDoubleVector_swigregister(OEOptionalDoubleVector)


def GetMainDict() -> "PyObject *":
    """GetMainDict() -> PyObject *"""
    return _oechem.GetMainDict()

def TypeToPyString(type: 'void const *') -> "PyObject *":
    """TypeToPyString(void const * type) -> PyObject *"""
    return _oechem.TypeToPyString(type)
class OEInternalFunctionPointer(object):
    """Proxy of C++ OEInternalFunctionPointer 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__(OEInternalFunctionPointer self) -> OEInternalFunctionPointer
        __init__(OEInternalFunctionPointer self, void const * type, GenericDataGetFunc getter, GenericDataSetFunc setter, GenericDataSetFunc adder) -> OEInternalFunctionPointer
        """
        this = _oechem.new_OEInternalFunctionPointer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Add(self, b: 'OEBase', tag: 'unsigned int', data: 'PyObject *') -> "bool":
        """Add(OEInternalFunctionPointer self, OEBase b, unsigned int tag, PyObject * data) -> bool"""
        return _oechem.OEInternalFunctionPointer_Add(self, b, tag, data)

    __swig_destroy__ = _oechem.delete_OEInternalFunctionPointer
    __del__ = lambda self: None
OEInternalFunctionPointer_swigregister = _oechem.OEInternalFunctionPointer_swigregister
OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


def OEInternalGetGenericData(type: 'void const *') -> "OEInternalFunctionPointer *":
    """OEInternalGetGenericData(void const * type) -> OEInternalFunctionPointer"""
    return _oechem.OEInternalGetGenericData(type)

def AddData(*args) -> "PyObject *":
    """
    AddData(OEBase * arg1, unsigned int tag, PyObject * object) -> PyObject
    AddData(OEBase * arg1, unsigned int tag, PyObject * object, PyObject * type) -> PyObject *
    """
    return _oechem.AddData(*args)

def OEGetBitCounts(a: 'OEBitVector', b: 'OEBitVector') -> "PyObject *":
    """OEGetBitCounts(OEBitVector a, OEBitVector b) -> PyObject *"""
    return _oechem.OEGetBitCounts(a, b)

def OEBitVectorNumWords(bits: 'size_t') -> "size_t":
    """OEBitVectorNumWords(size_t bits) -> size_t"""
    return _oechem.OEBitVectorNumWords(bits)

def OEBitVectorNumBytes(bits: 'size_t') -> "size_t":
    """OEBitVectorNumBytes(size_t bits) -> size_t"""
    return _oechem.OEBitVectorNumBytes(bits)
class OEBitVector(object):
    """Proxy of C++ OESystem::OEBitVector 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::OEBitVector self) -> OEBitVector
        __init__(OESystem::OEBitVector self, unsigned char const * data, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, OERandom & rand, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, OEBitVector src) -> OEBitVector
        """
        this = _oechem.new_OEBitVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBitVector
    __del__ = lambda self: None

    def GetSize(self) -> "unsigned int":
        """GetSize(OEBitVector self) -> unsigned int"""
        return _oechem.OEBitVector_GetSize(self)


    def SetData(self, data: 'unsigned char const *', nbits: 'unsigned int') -> "void":
        """SetData(OEBitVector self, unsigned char const * data, unsigned int nbits)"""
        return _oechem.OEBitVector_SetData(self, data, nbits)


    def GetData(self) -> "unsigned char const *":
        """GetData(OEBitVector self) -> unsigned char const *"""
        return _oechem.OEBitVector_GetData(self)


    def SetSize(self, bits: 'unsigned int') -> "void":
        """SetSize(OEBitVector self, unsigned int bits)"""
        return _oechem.OEBitVector_SetSize(self, bits)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEBitVector self) -> bool"""
        return _oechem.OEBitVector_IsEmpty(self)


    def IsBitOn(self, bit: 'unsigned int') -> "bool":
        """IsBitOn(OEBitVector self, unsigned int bit) -> bool"""
        return _oechem.OEBitVector_IsBitOn(self, bit)


    def SetBitOn(self, bit: 'unsigned int') -> "void":
        """SetBitOn(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_SetBitOn(self, bit)


    def SetBitOff(self, bit: 'unsigned int') -> "void":
        """SetBitOff(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_SetBitOff(self, bit)


    def SetRangeOn(self, start: 'unsigned int', end: 'unsigned int') -> "void":
        """SetRangeOn(OEBitVector self, unsigned int start, unsigned int end)"""
        return _oechem.OEBitVector_SetRangeOn(self, start, end)


    def SetRangeOff(self, start: 'unsigned int', end: 'unsigned int') -> "void":
        """SetRangeOff(OEBitVector self, unsigned int start, unsigned int end)"""
        return _oechem.OEBitVector_SetRangeOff(self, start, end)


    def ToggleBit(self, bit: 'unsigned int') -> "void":
        """ToggleBit(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_ToggleBit(self, bit)


    def ClearBits(self) -> "void":
        """ClearBits(OEBitVector self)"""
        return _oechem.OEBitVector_ClearBits(self)


    def NegateBits(self) -> "void":
        """NegateBits(OEBitVector self)"""
        return _oechem.OEBitVector_NegateBits(self)


    def CountBits(self) -> "unsigned int":
        """CountBits(OEBitVector self) -> unsigned int"""
        return _oechem.OEBitVector_CountBits(self)


    def CountRangeBits(self, start: 'unsigned int const', end: 'unsigned int const') -> "unsigned int":
        """CountRangeBits(OEBitVector self, unsigned int const start, unsigned int const end) -> unsigned int"""
        return _oechem.OEBitVector_CountRangeBits(self, start, end)


    def FirstBit(self) -> "int":
        """FirstBit(OEBitVector self) -> int"""
        return _oechem.OEBitVector_FirstBit(self)


    def PrevBit(self, arg2: 'unsigned int') -> "int":
        """PrevBit(OEBitVector self, unsigned int arg2) -> int"""
        return _oechem.OEBitVector_PrevBit(self, arg2)


    def NextBit(self, arg2: 'unsigned int') -> "int":
        """NextBit(OEBitVector self, unsigned int arg2) -> int"""
        return _oechem.OEBitVector_NextBit(self, arg2)


    def LastBit(self) -> "int":
        """LastBit(OEBitVector self) -> int"""
        return _oechem.OEBitVector_LastBit(self)


    def __iand__(self, arg2: 'OEBitVector') -> "OESystem::OEBitVector &":
        """__iand__(OEBitVector self, OEBitVector arg2) -> OEBitVector"""
        return _oechem.OEBitVector___iand__(self, arg2)


    def __isub__(self, arg2: 'OEBitVector') -> "OESystem::OEBitVector &":
        """__isub__(OEBitVector self, OEBitVector arg2) -> OEBitVector"""
        return _oechem.OEBitVector___isub__(self, arg2)


    def __ior__(self, *args) -> "OESystem::OEBitVector &":
        """
        __ior__(OEBitVector self, OEBitVector arg2) -> OEBitVector
        __ior__(OEBitVector self, unsigned int bit) -> OEBitVector
        """
        return _oechem.OEBitVector___ior__(self, *args)


    def __lt__(self, other: 'OEBitVector') -> "bool":
        """__lt__(OEBitVector self, OEBitVector other) -> bool"""
        return _oechem.OEBitVector___lt__(self, other)


    def __ixor__(self, *args) -> "OESystem::OEBitVector &":
        """
        __ixor__(OEBitVector self, OEBitVector arg2) -> OEBitVector
        __ixor__(OEBitVector self, unsigned int bit) -> OEBitVector
        """
        return _oechem.OEBitVector___ixor__(self, *args)


    def __getitem__(self, bit: 'unsigned int') -> "bool":
        """__getitem__(OEBitVector self, unsigned int bit) -> bool"""
        return _oechem.OEBitVector___getitem__(self, bit)


    def FromHexString(self, bvs: 'char const *') -> "void":
        """FromHexString(OEBitVector self, char const * bvs)"""
        return _oechem.OEBitVector_FromHexString(self, bvs)


    def ToHexString(self) -> "std::string":
        """ToHexString(OEBitVector self) -> std::string"""
        return _oechem.OEBitVector_ToHexString(self)


    def __and__(self, o): return OEBitVectorAnd(self, o) 


    def __or__(self, o): return OEBitVectorOr(self, o) 


    def __xor__(self, o): return OEBitVectorXor(self, o) 


    def __sub__(self, o): return OEBitVectorSub(self, o) 


    def __eq__(self, o): return OEBitVectorEqual(self, o) 


    def __not__(self): return OEBitVectorNot(self) 


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEBitVector self) -> PyObject *"""
        return _oechem.OEBitVector_GetDataTypeAsLong(self)

OEBitVector_swigregister = _oechem.OEBitVector_swigregister
OEBitVector_swigregister(OEBitVector)
cvar = _oechem.cvar
Conversion_Magic = cvar.Conversion_Magic
Conversion_Int = cvar.Conversion_Int
Conversion_UInt = cvar.Conversion_UInt
Conversion_Float = cvar.Conversion_Float
Conversion_Double = cvar.Conversion_Double
Conversion_Bool = cvar.Conversion_Bool
Conversion_String = cvar.Conversion_String
Conversion_Char = cvar.Conversion_Char
Conversion_UChar = cvar.Conversion_UChar
Conversion_Short = cvar.Conversion_Short
Conversion_UShort = cvar.Conversion_UShort


def OEBitVectorNot(bv: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorNot(OEBitVector bv) -> OEBitVector"""
    return _oechem.OEBitVectorNot(bv)

def OEBitVectorOr(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorOr(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorOr(a, b)

def OEBitVectorAnd(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorAnd(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorAnd(a, b)

def OEBitVectorXor(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorXor(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorXor(a, b)

def OEBitVectorSub(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorSub(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorSub(a, b)

def OEBitVectorEqual(a: 'OEBitVector', b: 'OEBitVector') -> "bool":
    """OEBitVectorEqual(OEBitVector a, OEBitVector b) -> bool"""
    return _oechem.OEBitVectorEqual(a, b)

def OETanimoto(a: 'OEBitVector', b: 'OEBitVector') -> "double":
    """OETanimoto(OEBitVector a, OEBitVector b) -> double"""
    return _oechem.OETanimoto(a, b)

def OECopyBits(*args) -> "void":
    """
    OECopyBits(std::vector< bool,std::allocator< bool > > & vb, OEBitVector bv)
    OECopyBits(OEBitVector bv, std::vector< bool,std::allocator< bool > > const & vb)
    """
    return _oechem.OECopyBits(*args)

def OEMakeHex(*args) -> "bool":
    """
    OEMakeHex(std::string & arg1, std::vector< bool,std::allocator< bool > > const & arg2, unsigned int columns=0) -> bool
    OEMakeHex(std::string & arg1, std::vector< bool,std::allocator< bool > > const & arg2) -> bool
    OEMakeHex(std::string & hex, OEBitVector arg2, unsigned int columns=0) -> bool
    OEMakeHex(std::string & hex, OEBitVector arg2) -> bool
    """
    return _oechem.OEMakeHex(*args)

def OEParseHex(*args) -> "bool":
    """
    OEParseHex(std::vector< bool,std::allocator< bool > > & arg1, std::string const & arg2) -> bool
    OEParseHex(OEBitVector arg1, std::string const & arg2) -> bool
    """
    return _oechem.OEParseHex(*args)

def OEInBitField(bitmask: 'unsigned int', bitfield: 'unsigned int') -> "bool":
    """OEInBitField(unsigned int bitmask, unsigned int bitfield) -> bool"""
    return _oechem.OEInBitField(bitmask, bitfield)

def OEBitIsPowerOf2(bitmask: 'unsigned int', allowZero: 'bool const'=False) -> "bool":
    """
    OEBitIsPowerOf2(unsigned int bitmask, bool const allowZero=False) -> bool
    OEBitIsPowerOf2(unsigned int bitmask) -> bool
    """
    return _oechem.OEBitIsPowerOf2(bitmask, allowZero)
class OEMeta(object):
    """Proxy of C++ OEDataFlow::OEMeta 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__(OEDataFlow::OEMeta self) -> OEMeta"""
        this = _oechem.new_OEMeta()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMeta
    __del__ = lambda self: None

    def get_name(key: 'unsigned int') -> "std::string":
        """get_name(unsigned int key) -> std::string"""
        return _oechem.OEMeta_get_name(key)

    get_name = staticmethod(get_name)

    def GetValue(name: 'std::string const &') -> "unsigned int":
        """GetValue(std::string const & name) -> unsigned int"""
        return _oechem.OEMeta_GetValue(name)

    GetValue = staticmethod(GetValue)

    def clear(self) -> "void":
        """clear(OEMeta self)"""
        return _oechem.OEMeta_clear(self)


    def has_option(self, option: 'unsigned int') -> "bool":
        """has_option(OEMeta self, unsigned int option) -> bool"""
        return _oechem.OEMeta_has_option(self, option)


    def get_options(self) -> "std::vector< unsigned int,std::allocator< unsigned int > > const &":
        """get_options(OEMeta self) -> OEUIntVector"""
        return _oechem.OEMeta_get_options(self)


    def set_option(self, option: 'unsigned int') -> "OEDataFlow::OEMeta &":
        """set_option(OEMeta self, unsigned int option) -> OEMeta"""
        return _oechem.OEMeta_set_option(self, option)


    def set_options(self, options: 'OEUIntVector') -> "OEDataFlow::OEMeta &":
        """set_options(OEMeta self, OEUIntVector options) -> OEMeta"""
        return _oechem.OEMeta_set_options(self, options)


    def remove_option(self, option: 'unsigned int') -> "OEDataFlow::OEMeta &":
        """remove_option(OEMeta self, unsigned int option) -> OEMeta"""
        return _oechem.OEMeta_remove_option(self, option)


    def set_attribute(self, *args) -> "OEDataFlow::OEMeta &":
        """
        set_attribute(OEMeta self, unsigned int key, std::string const & val) -> OEMeta
        set_attribute(OEMeta self, unsigned int key, double const & val) -> OEMeta
        set_attribute(OEMeta self, unsigned int key, int const & val) -> OEMeta
        """
        return _oechem.OEMeta_set_attribute(self, *args)


    def add_attribute(self, *args) -> "OEDataFlow::OEMeta &":
        """
        add_attribute(OEMeta self, unsigned int key, std::string const & val) -> OEMeta
        add_attribute(OEMeta self, unsigned int key, double const & val) -> OEMeta
        add_attribute(OEMeta self, unsigned int key, int const & val) -> OEMeta
        """
        return _oechem.OEMeta_add_attribute(self, *args)


    def remove_attribute(self, *args) -> "OEDataFlow::OEMeta &":
        """
        remove_attribute(OEMeta self, unsigned int key) -> OEMeta
        remove_attribute(OEMeta self, unsigned int key, std::string const & val) -> OEMeta
        remove_attribute(OEMeta self, unsigned int key, double const & val) -> OEMeta
        remove_attribute(OEMeta self, unsigned int key, int const & val) -> OEMeta
        """
        return _oechem.OEMeta_remove_attribute(self, *args)


    def set_attributes(self, attrs: 'OEDataFlow::AttributeList const &') -> "void":
        """set_attributes(OEMeta self, OEDataFlow::AttributeList const & attrs)"""
        return _oechem.OEMeta_set_attributes(self, attrs)


    def has_attribute(self, *args) -> "bool":
        """
        has_attribute(OEMeta self, unsigned int key) -> bool
        has_attribute(OEMeta self, unsigned int key, std::string const & value) -> bool
        has_attribute(OEMeta self, unsigned int key, double const & value) -> bool
        has_attribute(OEMeta self, unsigned int key, int const & value) -> bool
        """
        return _oechem.OEMeta_has_attribute(self, *args)


    def get_attributes(self, key: 'unsigned int'=0) -> "OEDataFlow::AttributeList":
        """
        get_attributes(OEMeta self, unsigned int key=0) -> OEDataFlow::AttributeList
        get_attributes(OEMeta self) -> OEDataFlow::AttributeList
        """
        return _oechem.OEMeta_get_attributes(self, key)


    def get_int_attribute(self, key: 'unsigned int', idx: 'unsigned int') -> "int":
        """get_int_attribute(OEMeta self, unsigned int key, unsigned int idx) -> int"""
        return _oechem.OEMeta_get_int_attribute(self, key, idx)


    def get_str_attribute(self, key: 'unsigned int', idx: 'unsigned int') -> "std::string":
        """get_str_attribute(OEMeta self, unsigned int key, unsigned int idx) -> std::string"""
        return _oechem.OEMeta_get_str_attribute(self, key, idx)


    def get_float_attribute(self, key: 'unsigned int', idx: 'unsigned int') -> "double":
        """get_float_attribute(OEMeta self, unsigned int key, unsigned int idx) -> double"""
        return _oechem.OEMeta_get_float_attribute(self, key, idx)


    def Merge(self, other: 'OEMeta') -> "void":
        """Merge(OEMeta self, OEMeta other)"""
        return _oechem.OEMeta_Merge(self, other)


    def is_subset_of(self, other: 'OEMeta') -> "bool":
        """is_subset_of(OEMeta self, OEMeta other) -> bool"""
        return _oechem.OEMeta_is_subset_of(self, other)


    def get_attribute(self, key: 'unsigned int') -> "PyObject *":
        """get_attribute(OEMeta self, unsigned int key) -> PyObject *"""
        return _oechem.OEMeta_get_attribute(self, key)

OEMeta_swigregister = _oechem.OEMeta_swigregister
OEMeta_swigregister(OEMeta)

def OEMeta_get_name(key: 'unsigned int') -> "std::string":
    """OEMeta_get_name(unsigned int key) -> std::string"""
    return _oechem.OEMeta_get_name(key)

def OEMeta_GetValue(name: 'std::string const &') -> "unsigned int":
    """OEMeta_GetValue(std::string const & name) -> unsigned int"""
    return _oechem.OEMeta_GetValue(name)

class OERecordMeta(OEMeta):
    """Proxy of C++ OEDataFlow::OERecordMeta class."""

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

    def get_name(key: 'unsigned int') -> "std::string":
        """get_name(unsigned int key) -> std::string"""
        return _oechem.OERecordMeta_get_name(key)

    get_name = staticmethod(get_name)

    def set_option(self, option: 'unsigned int') -> "OEDataFlow::OERecordMeta &":
        """set_option(OERecordMeta self, unsigned int option) -> OERecordMeta"""
        return _oechem.OERecordMeta_set_option(self, option)


    def set_options(self, options: 'OEUIntVector') -> "OEDataFlow::OERecordMeta &":
        """set_options(OERecordMeta self, OEUIntVector options) -> OERecordMeta"""
        return _oechem.OERecordMeta_set_options(self, options)


    def remove_option(self, option: 'unsigned int') -> "OEDataFlow::OERecordMeta &":
        """remove_option(OERecordMeta self, unsigned int option) -> OERecordMeta"""
        return _oechem.OERecordMeta_remove_option(self, option)


    def set_attribute(self, *args) -> "OEDataFlow::OERecordMeta &":
        """
        set_attribute(OERecordMeta self, unsigned int key, std::string const & val) -> OERecordMeta
        set_attribute(OERecordMeta self, unsigned int key, double const & val) -> OERecordMeta
        set_attribute(OERecordMeta self, unsigned int key, int const & val) -> OERecordMeta
        """
        return _oechem.OERecordMeta_set_attribute(self, *args)


    def add_attribute(self, *args) -> "OEDataFlow::OERecordMeta &":
        """
        add_attribute(OERecordMeta self, unsigned int key, std::string const & val) -> OERecordMeta
        add_attribute(OERecordMeta self, unsigned int key, double const & val) -> OERecordMeta
        add_attribute(OERecordMeta self, unsigned int key, int const & val) -> OERecordMeta
        """
        return _oechem.OERecordMeta_add_attribute(self, *args)


    def remove_attribute(self, *args) -> "OEDataFlow::OERecordMeta &":
        """
        remove_attribute(OERecordMeta self, unsigned int key) -> OERecordMeta
        remove_attribute(OERecordMeta self, unsigned int key, std::string const & val) -> OERecordMeta
        remove_attribute(OERecordMeta self, unsigned int key, double const & val) -> OERecordMeta
        remove_attribute(OERecordMeta self, unsigned int key, int const & val) -> OERecordMeta
        """
        return _oechem.OERecordMeta_remove_attribute(self, *args)


    def __init__(self):
        """__init__(OEDataFlow::OERecordMeta self) -> OERecordMeta"""
        this = _oechem.new_OERecordMeta()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERecordMeta
    __del__ = lambda self: None
OERecordMeta_swigregister = _oechem.OERecordMeta_swigregister
OERecordMeta_swigregister(OERecordMeta)

def OERecordMeta_get_name(key: 'unsigned int') -> "std::string":
    """OERecordMeta_get_name(unsigned int key) -> std::string"""
    return _oechem.OERecordMeta_get_name(key)

class OEFieldMeta(OEMeta):
    """Proxy of C++ OEDataFlow::OEFieldMeta 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__(OEDataFlow::OEFieldMeta self) -> OEFieldMeta
        __init__(OEDataFlow::OEFieldMeta self, OEUIntVector options) -> OEFieldMeta
        __init__(OEDataFlow::OEFieldMeta self, OEFieldMeta other) -> OEFieldMeta
        """
        this = _oechem.new_OEFieldMeta(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def get_name(key: 'unsigned int') -> "std::string":
        """get_name(unsigned int key) -> std::string"""
        return _oechem.OEFieldMeta_get_name(key)

    get_name = staticmethod(get_name)

    def add_relation(self, relationship: 'unsigned int', otherField: 'OEFieldBase') -> "OEDataFlow::OEFieldMeta &":
        """add_relation(OEFieldMeta self, unsigned int relationship, OEFieldBase otherField) -> OEFieldMeta"""
        return _oechem.OEFieldMeta_add_relation(self, relationship, otherField)


    def set_option(self, option: 'unsigned int') -> "OEDataFlow::OEFieldMeta &":
        """set_option(OEFieldMeta self, unsigned int option) -> OEFieldMeta"""
        return _oechem.OEFieldMeta_set_option(self, option)


    def set_options(self, options: 'OEUIntVector') -> "OEDataFlow::OEFieldMeta &":
        """set_options(OEFieldMeta self, OEUIntVector options) -> OEFieldMeta"""
        return _oechem.OEFieldMeta_set_options(self, options)


    def remove_option(self, option: 'unsigned int') -> "OEDataFlow::OEFieldMeta &":
        """remove_option(OEFieldMeta self, unsigned int option) -> OEFieldMeta"""
        return _oechem.OEFieldMeta_remove_option(self, option)


    def set_attribute(self, *args) -> "OEDataFlow::OEFieldMeta &":
        """
        set_attribute(OEFieldMeta self, unsigned int key, std::string const & val) -> OEFieldMeta
        set_attribute(OEFieldMeta self, unsigned int key, double const & val) -> OEFieldMeta
        set_attribute(OEFieldMeta self, unsigned int key, int const & val) -> OEFieldMeta
        """
        return _oechem.OEFieldMeta_set_attribute(self, *args)


    def add_attribute(self, *args) -> "OEDataFlow::OEFieldMeta &":
        """
        add_attribute(OEFieldMeta self, unsigned int key, std::string const & val) -> OEFieldMeta
        add_attribute(OEFieldMeta self, unsigned int key, double const & val) -> OEFieldMeta
        add_attribute(OEFieldMeta self, unsigned int key, int const & val) -> OEFieldMeta
        """
        return _oechem.OEFieldMeta_add_attribute(self, *args)


    def remove_attribute(self, *args) -> "OEDataFlow::OEFieldMeta &":
        """
        remove_attribute(OEFieldMeta self, unsigned int key) -> OEFieldMeta
        remove_attribute(OEFieldMeta self, unsigned int key, std::string const & val) -> OEFieldMeta
        remove_attribute(OEFieldMeta self, unsigned int key, double const & val) -> OEFieldMeta
        remove_attribute(OEFieldMeta self, unsigned int key, int const & val) -> OEFieldMeta
        """
        return _oechem.OEFieldMeta_remove_attribute(self, *args)


    def get_related_fields(self) -> "std::vector< std::string,std::allocator< std::string > >":
        """get_related_fields(OEFieldMeta self) -> OEStringVector"""
        return _oechem.OEFieldMeta_get_related_fields(self)


    def get_field_relations(self, name: 'std::string const &') -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        """get_field_relations(OEFieldMeta self, std::string const & name) -> OEUIntVector"""
        return _oechem.OEFieldMeta_get_field_relations(self, name)

    __swig_destroy__ = _oechem.delete_OEFieldMeta
    __del__ = lambda self: None
OEFieldMeta_swigregister = _oechem.OEFieldMeta_swigregister
OEFieldMeta_swigregister(OEFieldMeta)

def OEFieldMeta_get_name(key: 'unsigned int') -> "std::string":
    """OEFieldMeta_get_name(unsigned int key) -> std::string"""
    return _oechem.OEFieldMeta_get_name(key)

class OEMakeFieldOptions(object):
    """Proxy of C++ OEDataFlow::OEMakeFieldOptions 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__(OEDataFlow::OEMakeFieldOptions self) -> OEMakeFieldOptions"""
        this = _oechem.new_OEMakeFieldOptions()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    meta = _swig_property(_oechem.OEMakeFieldOptions_meta_get, _oechem.OEMakeFieldOptions_meta_set)
    readonly = _swig_property(_oechem.OEMakeFieldOptions_readonly_get, _oechem.OEMakeFieldOptions_readonly_set)
    nullable = _swig_property(_oechem.OEMakeFieldOptions_nullable_get, _oechem.OEMakeFieldOptions_nullable_set)
    typeName = _swig_property(_oechem.OEMakeFieldOptions_typeName_get, _oechem.OEMakeFieldOptions_typeName_set)
    userTypeName = _swig_property(_oechem.OEMakeFieldOptions_userTypeName_get, _oechem.OEMakeFieldOptions_userTypeName_set)
    __swig_destroy__ = _oechem.delete_OEMakeFieldOptions
    __del__ = lambda self: None
OEMakeFieldOptions_swigregister = _oechem.OEMakeFieldOptions_swigregister
OEMakeFieldOptions_swigregister(OEMakeFieldOptions)

class OEFieldBase(object):
    """Proxy of C++ OEDataFlow::OEFieldBase 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__(OEDataFlow::OEFieldBase self) -> OEFieldBase
        __init__(OEDataFlow::OEFieldBase self, OEFieldBase other) -> OEFieldBase
        """
        this = _oechem.new_OEFieldBase(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def get_name(self) -> "std::string":
        """get_name(OEFieldBase self) -> std::string"""
        return _oechem.OEFieldBase_get_name(self)


    def set_name(self, name: 'std::string const &') -> "void":
        """set_name(OEFieldBase self, std::string const & name)"""
        return _oechem.OEFieldBase_set_name(self, name)


    def get_type_name(self) -> "std::string":
        """get_type_name(OEFieldBase self) -> std::string"""
        return _oechem.OEFieldBase_get_type_name(self)


    def get_storage_type_name(self) -> "std::string":
        """get_storage_type_name(OEFieldBase self) -> std::string"""
        return _oechem.OEFieldBase_get_storage_type_name(self)


    def get_user_type_name(self) -> "std::string":
        """get_user_type_name(OEFieldBase self) -> std::string"""
        return _oechem.OEFieldBase_get_user_type_name(self)


    def set_user_type_name(self, tn: 'std::string const &') -> "void":
        """set_user_type_name(OEFieldBase self, std::string const & tn)"""
        return _oechem.OEFieldBase_set_user_type_name(self, tn)


    def is_nullable(self) -> "bool":
        """is_nullable(OEFieldBase self) -> bool"""
        return _oechem.OEFieldBase_is_nullable(self)


    def get_read_only(self) -> "bool":
        """get_read_only(OEFieldBase self) -> bool"""
        return _oechem.OEFieldBase_get_read_only(self)


    def get_meta(self) -> "OEDataFlow::OEFieldMeta":
        """get_meta(OEFieldBase self) -> OEFieldMeta"""
        return _oechem.OEFieldBase_get_meta(self)


    def set_meta(self, meta: 'OEFieldMeta') -> "void":
        """set_meta(OEFieldBase self, OEFieldMeta meta)"""
        return _oechem.OEFieldBase_set_meta(self, meta)


    def is_valid(self) -> "bool":
        """is_valid(OEFieldBase self) -> bool"""
        return _oechem.OEFieldBase_is_valid(self)

    __swig_destroy__ = _oechem.delete_OEFieldBase
    __del__ = lambda self: None
OEFieldBase_swigregister = _oechem.OEFieldBase_swigregister
OEFieldBase_swigregister(OEFieldBase)

class OERange(object):
    """Proxy of C++ OEDataFlow::OERange 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__(OEDataFlow::OERange self) -> OERange
        __init__(OEDataFlow::OERange self, OEOptionalDouble low, OEOptionalDouble high, std::string const & incl) -> OERange
        __init__(OEDataFlow::OERange self, OEOptionalDouble low, OEOptionalDouble high) -> OERange
        __init__(OEDataFlow::OERange self, OEOptionalDouble low, OEOptionalDouble high, unsigned int incl) -> OERange
        __init__(OEDataFlow::OERange self, OEDoubleVector v) -> OERange
        __init__(OEDataFlow::OERange self, OERange other) -> OERange
        """
        this = _oechem.new_OERange(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def is_empty(self) -> "bool":
        """is_empty(OERange self) -> bool"""
        return _oechem.OERange_is_empty(self)


    def is_valid(self) -> "bool":
        """is_valid(OERange self) -> bool"""
        return _oechem.OERange_is_valid(self)


    def get_as_vector(self) -> "std::vector< double,std::allocator< double > >":
        """get_as_vector(OERange self) -> OEDoubleVector"""
        return _oechem.OERange_get_as_vector(self)


    def get_low(self) -> "double":
        """get_low(OERange self) -> double"""
        return _oechem.OERange_get_low(self)


    def get_high(self) -> "double":
        """get_high(OERange self) -> double"""
        return _oechem.OERange_get_high(self)


    def get_inclusivity_string(self) -> "std::string":
        """get_inclusivity_string(OERange self) -> std::string"""
        return _oechem.OERange_get_inclusivity_string(self)


    def is_unbounded_low(self) -> "bool":
        """is_unbounded_low(OERange self) -> bool"""
        return _oechem.OERange_is_unbounded_low(self)


    def is_unbounded_high(self) -> "bool":
        """is_unbounded_high(OERange self) -> bool"""
        return _oechem.OERange_is_unbounded_high(self)


    def __eq__(self, other: 'OERange') -> "bool":
        """__eq__(OERange self, OERange other) -> bool"""
        return _oechem.OERange___eq__(self, other)

    __swig_destroy__ = _oechem.delete_OERange
    __del__ = lambda self: None
OERange_swigregister = _oechem.OERange_swigregister
OERange_swigregister(OERange)
All = cvar.All
Between = cvar.Between
Low = cvar.Low
High = cvar.High

class OEJSONObject(object):
    """Proxy of C++ OEDataFlow::OEJSONObject 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__(OEDataFlow::OEJSONObject self) -> OEJSONObject
        __init__(OEDataFlow::OEJSONObject self, std::string const & val) -> OEJSONObject
        """
        this = _oechem.new_OEJSONObject(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def get_value(self) -> "std::string":
        """get_value(OEJSONObject self) -> std::string"""
        return _oechem.OEJSONObject_get_value(self)


    def is_valid(self) -> "bool":
        """is_valid(OEJSONObject self) -> bool"""
        return _oechem.OEJSONObject_is_valid(self)

    __swig_destroy__ = _oechem.delete_OEJSONObject
    __del__ = lambda self: None
OEJSONObject_swigregister = _oechem.OEJSONObject_swigregister
OEJSONObject_swigregister(OEJSONObject)

class OELinkObject(OEJSONObject):
    """Proxy of C++ OEDataFlow::OELinkObject 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__(OEDataFlow::OELinkObject self) -> OELinkObject
        __init__(OEDataFlow::OELinkObject self, std::string const & val) -> OELinkObject
        """
        this = _oechem.new_OELinkObject(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELinkObject
    __del__ = lambda self: None
OELinkObject_swigregister = _oechem.OELinkObject_swigregister
OELinkObject_swigregister(OELinkObject)

class OEFieldTypeHandler(object):
    """Proxy of C++ OEDataFlow::OEFieldTypeHandler 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__ = _oechem.delete_OEFieldTypeHandler
    __del__ = lambda self: None

    def bytes_to_json(self, arg2: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OEFieldTypeHandler self, OEUCharVector arg2) -> std::string"""
        return _oechem.OEFieldTypeHandler_bytes_to_json(self, arg2)


    def get_name(self) -> "std::string":
        """get_name(OEFieldTypeHandler self) -> std::string"""
        return _oechem.OEFieldTypeHandler_get_name(self)


    def is_cacheable(self) -> "bool":
        """is_cacheable(OEFieldTypeHandler self) -> bool"""
        return _oechem.OEFieldTypeHandler_is_cacheable(self)


    def isPOD(self) -> "bool":
        """isPOD(OEFieldTypeHandler self) -> bool"""
        return _oechem.OEFieldTypeHandler_isPOD(self)


    def from_bytes(self, b: 'OEUCharVector') -> "PyObject *":
        """from_bytes(OEFieldTypeHandler self, OEUCharVector b) -> PyObject *"""
        return _oechem.OEFieldTypeHandler_from_bytes(self, b)


    def to_bytes(self, val: 'PyObject *') -> "PyObject *":
        """to_bytes(OEFieldTypeHandler self, PyObject * val) -> PyObject *"""
        return _oechem.OEFieldTypeHandler_to_bytes(self, val)

OEFieldTypeHandler_swigregister = _oechem.OEFieldTypeHandler_swigregister
OEFieldTypeHandler_swigregister(OEFieldTypeHandler)

class OEFieldTypeHandlerRegistry(object):
    """Proxy of C++ OEDataFlow::OEFieldTypeHandlerRegistry 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")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEFieldTypeHandlerRegistry
    __del__ = lambda self: None

    def RegisterHandler(self, handler: 'OEFieldTypeHandler', priority: 'int'=0) -> "void":
        """
        RegisterHandler(OEFieldTypeHandlerRegistry self, OEFieldTypeHandler handler, int priority=0)
        RegisterHandler(OEFieldTypeHandlerRegistry self, OEFieldTypeHandler handler)
        """
        return _oechem.OEFieldTypeHandlerRegistry_RegisterHandler(self, handler, priority)


    def GetInstance() -> "OEDataFlow::OEFieldTypeHandlerRegistry &":
        """GetInstance() -> OEFieldTypeHandlerRegistry"""
        return _oechem.OEFieldTypeHandlerRegistry_GetInstance()

    GetInstance = staticmethod(GetInstance)

    def GetHandler(self, name: 'std::string const &') -> "OEDataFlow::OEFieldTypeHandler *":
        """GetHandler(OEFieldTypeHandlerRegistry self, std::string const & name) -> OEFieldTypeHandler"""
        return _oechem.OEFieldTypeHandlerRegistry_GetHandler(self, name)

OEFieldTypeHandlerRegistry_swigregister = _oechem.OEFieldTypeHandlerRegistry_swigregister
OEFieldTypeHandlerRegistry_swigregister(OEFieldTypeHandlerRegistry)

def OEFieldTypeHandlerRegistry_GetInstance() -> "OEDataFlow::OEFieldTypeHandlerRegistry &":
    """OEFieldTypeHandlerRegistry_GetInstance() -> OEFieldTypeHandlerRegistry"""
    return _oechem.OEFieldTypeHandlerRegistry_GetInstance()

class OEWrappedFieldTypeHandler(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEWrappedFieldTypeHandler 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__ = _oechem.delete_OEWrappedFieldTypeHandler
    __del__ = lambda self: None

    def SetValue(self, r: 'OERecord', field: 'OEFieldBase', obj: 'void const *') -> "bool":
        """SetValue(OEWrappedFieldTypeHandler self, OERecord r, OEFieldBase field, void const * obj) -> bool"""
        return _oechem.OEWrappedFieldTypeHandler_SetValue(self, r, field, obj)


    def GetValue(self, r: 'OERecord', field: 'OEFieldBase') -> "void *":
        """GetValue(OEWrappedFieldTypeHandler self, OERecord r, OEFieldBase field) -> void *"""
        return _oechem.OEWrappedFieldTypeHandler_GetValue(self, r, field)


    def GetReference(self, r: 'OERecord', field: 'OEFieldBase') -> "void *":
        """GetReference(OEWrappedFieldTypeHandler self, OERecord r, OEFieldBase field) -> void *"""
        return _oechem.OEWrappedFieldTypeHandler_GetReference(self, r, field)


    def MakeField(self, name: 'std::string const &', opts: 'OEMakeFieldOptions') -> "void *":
        """MakeField(OEWrappedFieldTypeHandler self, std::string const & name, OEMakeFieldOptions opts) -> void *"""
        return _oechem.OEWrappedFieldTypeHandler_MakeField(self, name, opts)


    def MakeMatchField(self, name: 'std::string const &', meta: 'OEFieldMeta', readonly: 'bool'=False, nullable: 'bool'=False) -> "void *":
        """
        MakeMatchField(OEWrappedFieldTypeHandler self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False)
        MakeMatchField(OEWrappedFieldTypeHandler self, std::string const & name, OEFieldMeta meta, bool readonly=False)
        MakeMatchField(OEWrappedFieldTypeHandler self, std::string const & name, OEFieldMeta meta) -> void *
        """
        return _oechem.OEWrappedFieldTypeHandler_MakeMatchField(self, name, meta, readonly, nullable)

OEWrappedFieldTypeHandler_swigregister = _oechem.OEWrappedFieldTypeHandler_swigregister
OEWrappedFieldTypeHandler_swigregister(OEWrappedFieldTypeHandler)

class OEWrappedFieldTypeHandlerRegistry(object):
    """Proxy of C++ OEDataFlow::OEWrappedFieldTypeHandlerRegistry 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")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEWrappedFieldTypeHandlerRegistry
    __del__ = lambda self: None

    def RegisterHandler(self, handler: 'OEWrappedFieldTypeHandler') -> "void":
        """RegisterHandler(OEWrappedFieldTypeHandlerRegistry self, OEWrappedFieldTypeHandler handler)"""
        return _oechem.OEWrappedFieldTypeHandlerRegistry_RegisterHandler(self, handler)


    def GetInstance() -> "OEDataFlow::OEWrappedFieldTypeHandlerRegistry &":
        """GetInstance() -> OEWrappedFieldTypeHandlerRegistry"""
        return _oechem.OEWrappedFieldTypeHandlerRegistry_GetInstance()

    GetInstance = staticmethod(GetInstance)

    def GetHandler(self, name: 'std::string const &') -> "OEDataFlow::OEWrappedFieldTypeHandler *":
        """GetHandler(OEWrappedFieldTypeHandlerRegistry self, std::string const & name) -> OEWrappedFieldTypeHandler"""
        return _oechem.OEWrappedFieldTypeHandlerRegistry_GetHandler(self, name)


    def HasHandler(self, name: 'std::string const &') -> "bool":
        """HasHandler(OEWrappedFieldTypeHandlerRegistry self, std::string const & name) -> bool"""
        return _oechem.OEWrappedFieldTypeHandlerRegistry_HasHandler(self, name)

OEWrappedFieldTypeHandlerRegistry_swigregister = _oechem.OEWrappedFieldTypeHandlerRegistry_swigregister
OEWrappedFieldTypeHandlerRegistry_swigregister(OEWrappedFieldTypeHandlerRegistry)

def OEWrappedFieldTypeHandlerRegistry_GetInstance() -> "OEDataFlow::OEWrappedFieldTypeHandlerRegistry &":
    """OEWrappedFieldTypeHandlerRegistry_GetInstance() -> OEWrappedFieldTypeHandlerRegistry"""
    return _oechem.OEWrappedFieldTypeHandlerRegistry_GetInstance()

class OEOptionalMol(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(OEChem::OEMol)> 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__(OEStdOptionalNamespace::optional<(OEChem::OEMol)> self) -> OEOptionalMol
        __init__(OEStdOptionalNamespace::optional<(OEChem::OEMol)> self, OEChem::OEMol const & value) -> OEOptionalMol
        __init__(OEStdOptionalNamespace::optional<(OEChem::OEMol)> self, OEOptionalMol other) -> OEOptionalMol
        """
        this = _oechem.new_OEOptionalMol(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalMol___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalMol self) -> bool"""
        return _oechem.OEOptionalMol_has_value(self)


    def value(self) -> "OEChem::OEMol const &":
        """value(OEOptionalMol self) -> OEChem::OEMol const &"""
        return _oechem.OEOptionalMol_value(self)


    def value_or(self, arg2: 'OEChem::OEMol const &') -> "OEChem::OEMol":
        """value_or(OEOptionalMol self, OEChem::OEMol const & arg2) -> OEChem::OEMol"""
        return _oechem.OEOptionalMol_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalMol
    __del__ = lambda self: None
OEOptionalMol_swigregister = _oechem.OEOptionalMol_swigregister
OEOptionalMol_swigregister(OEOptionalMol)

class OEOptionalRecord(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(OEDataFlow::OERecord)> 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__(OEStdOptionalNamespace::optional<(OEDataFlow::OERecord)> self) -> OEOptionalRecord
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OERecord)> self, OERecord value) -> OEOptionalRecord
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OERecord)> self, OEOptionalRecord other) -> OEOptionalRecord
        """
        this = _oechem.new_OEOptionalRecord(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalRecord___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalRecord self) -> bool"""
        return _oechem.OEOptionalRecord_has_value(self)


    def value(self) -> "OEDataFlow::OERecord const &":
        """value(OEOptionalRecord self) -> OERecord"""
        return _oechem.OEOptionalRecord_value(self)


    def value_or(self, arg2: 'OERecord') -> "OEDataFlow::OERecord":
        """value_or(OEOptionalRecord self, OERecord arg2) -> OERecord"""
        return _oechem.OEOptionalRecord_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalRecord
    __del__ = lambda self: None
OEOptionalRecord_swigregister = _oechem.OEOptionalRecord_swigregister
OEOptionalRecord_swigregister(OEOptionalRecord)

class OEOptionalRange(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(OEDataFlow::OERange)> 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__(OEStdOptionalNamespace::optional<(OEDataFlow::OERange)> self) -> OEOptionalRange
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OERange)> self, OERange value) -> OEOptionalRange
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OERange)> self, OEOptionalRange other) -> OEOptionalRange
        """
        this = _oechem.new_OEOptionalRange(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalRange___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalRange self) -> bool"""
        return _oechem.OEOptionalRange_has_value(self)


    def value(self) -> "OEDataFlow::OERange const &":
        """value(OEOptionalRange self) -> OERange"""
        return _oechem.OEOptionalRange_value(self)


    def value_or(self, arg2: 'OERange') -> "OEDataFlow::OERange":
        """value_or(OEOptionalRange self, OERange arg2) -> OERange"""
        return _oechem.OEOptionalRange_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalRange
    __del__ = lambda self: None
OEOptionalRange_swigregister = _oechem.OEOptionalRange_swigregister
OEOptionalRange_swigregister(OEOptionalRange)

class OEOptionalJSONObject(object):
    """Proxy of C++ OEStdOptionalNamespace::optional<(OEDataFlow::OEJSONObject)> 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__(OEStdOptionalNamespace::optional<(OEDataFlow::OEJSONObject)> self) -> OEOptionalJSONObject
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OEJSONObject)> self, OEJSONObject value) -> OEOptionalJSONObject
        __init__(OEStdOptionalNamespace::optional<(OEDataFlow::OEJSONObject)> self, OEOptionalJSONObject other) -> OEOptionalJSONObject
        """
        this = _oechem.new_OEOptionalJSONObject(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEOptionalJSONObject___nonzero__(self)



    def has_value(self) -> "bool":
        """has_value(OEOptionalJSONObject self) -> bool"""
        return _oechem.OEOptionalJSONObject_has_value(self)


    def value(self) -> "OEDataFlow::OEJSONObject const &":
        """value(OEOptionalJSONObject self) -> OEJSONObject"""
        return _oechem.OEOptionalJSONObject_value(self)


    def value_or(self, arg2: 'OEJSONObject') -> "OEDataFlow::OEJSONObject":
        """value_or(OEOptionalJSONObject self, OEJSONObject arg2) -> OEJSONObject"""
        return _oechem.OEOptionalJSONObject_value_or(self, arg2)

    __swig_destroy__ = _oechem.delete_OEOptionalJSONObject
    __del__ = lambda self: None
OEOptionalJSONObject_swigregister = _oechem.OEOptionalJSONObject_swigregister
OEOptionalJSONObject_swigregister(OEOptionalJSONObject)

class OEStringField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(std::string)> 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__(OEDataFlow::OEField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEStringField
        __init__(OEDataFlow::OEField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEStringField
        __init__(OEDataFlow::OEField<(std::string)> self, std::string const & name, OEFieldMeta meta) -> OEStringField
        __init__(OEDataFlow::OEField<(std::string)> self, std::string const & name) -> OEStringField
        __init__(OEDataFlow::OEField<(std::string)> self, OEFieldBase other) -> OEStringField
        """
        this = _oechem.new_OEStringField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'std::string &', data: 'OEUCharVector') -> "bool":
        """deserialize(OEStringField self, std::string & value, OEUCharVector data) -> bool"""
        return _oechem.OEStringField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< std::string >":
        """get_type(OEStringField self) -> OEStringType"""
        return _oechem.OEStringField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEStringField
    __del__ = lambda self: None
OEStringField_swigregister = _oechem.OEStringField_swigregister
OEStringField_swigregister(OEStringField)

class OEIntField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OELongLong)> 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__(OEDataFlow::OEField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEIntField
        __init__(OEDataFlow::OEField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEIntField
        __init__(OEDataFlow::OEField<(OELongLong)> self, std::string const & name, OEFieldMeta meta) -> OEIntField
        __init__(OEDataFlow::OEField<(OELongLong)> self, std::string const & name) -> OEIntField
        __init__(OEDataFlow::OEField<(OELongLong)> self, OEFieldBase other) -> OEIntField
        """
        this = _oechem.new_OEIntField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OELongLong &', data: 'OEUCharVector') -> "bool":
        """deserialize(OEIntField self, OELongLong & value, OEUCharVector data) -> bool"""
        return _oechem.OEIntField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OELongLong >":
        """get_type(OEIntField self) -> OEIntType"""
        return _oechem.OEIntField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEIntField
    __del__ = lambda self: None
OEIntField_swigregister = _oechem.OEIntField_swigregister
OEIntField_swigregister(OEIntField)

class OEFloatField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(double)> 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__(OEDataFlow::OEField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEFloatField
        __init__(OEDataFlow::OEField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEFloatField
        __init__(OEDataFlow::OEField<(double)> self, std::string const & name, OEFieldMeta meta) -> OEFloatField
        __init__(OEDataFlow::OEField<(double)> self, std::string const & name) -> OEFloatField
        __init__(OEDataFlow::OEField<(double)> self, OEFieldBase other) -> OEFloatField
        """
        this = _oechem.new_OEFloatField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'double &', data: 'OEUCharVector') -> "bool":
        """deserialize(OEFloatField self, double & value, OEUCharVector data) -> bool"""
        return _oechem.OEFloatField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< double >":
        """get_type(OEFloatField self) -> OEFloatType"""
        return _oechem.OEFloatField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEFloatField
    __del__ = lambda self: None
OEFloatField_swigregister = _oechem.OEFloatField_swigregister
OEFloatField_swigregister(OEFloatField)

class OEBoolField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(bool)> 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__(OEDataFlow::OEField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBoolField
        __init__(OEDataFlow::OEField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBoolField
        __init__(OEDataFlow::OEField<(bool)> self, std::string const & name, OEFieldMeta meta) -> OEBoolField
        __init__(OEDataFlow::OEField<(bool)> self, std::string const & name) -> OEBoolField
        __init__(OEDataFlow::OEField<(bool)> self, OEFieldBase other) -> OEBoolField
        """
        this = _oechem.new_OEBoolField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'bool &', data: 'OEUCharVector') -> "bool":
        """deserialize(OEBoolField self, bool & value, OEUCharVector data) -> bool"""
        return _oechem.OEBoolField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< bool >":
        """get_type(OEBoolField self) -> OEBoolType"""
        return _oechem.OEBoolField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEBoolField
    __del__ = lambda self: None
OEBoolField_swigregister = _oechem.OEBoolField_swigregister
OEBoolField_swigregister(OEBoolField)

class OEBlobField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEDataFlow::OEBytes)> 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__(OEDataFlow::OEField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBlobField
        __init__(OEDataFlow::OEField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBlobField
        __init__(OEDataFlow::OEField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta) -> OEBlobField
        __init__(OEDataFlow::OEField<(OEDataFlow::OEBytes)> self, std::string const & name) -> OEBlobField
        __init__(OEDataFlow::OEField<(OEDataFlow::OEBytes)> self, OEFieldBase other) -> OEBlobField
        """
        this = _oechem.new_OEBlobField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEUCharVector', data: 'OEUCharVector') -> "bool":
        """deserialize(OEBlobField self, OEUCharVector value, OEUCharVector data) -> bool"""
        return _oechem.OEBlobField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< std::vector< unsigned char,std::allocator< unsigned char > > >":
        """get_type(OEBlobField self) -> OEBlobType"""
        return _oechem.OEBlobField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEBlobField
    __del__ = lambda self: None
OEBlobField_swigregister = _oechem.OEBlobField_swigregister
OEBlobField_swigregister(OEBlobField)

class OERangeField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEDataFlow::OERange)> 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__(OEDataFlow::OEField<(OEDataFlow::OERange)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERangeField
        __init__(OEDataFlow::OEField<(OEDataFlow::OERange)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERangeField
        __init__(OEDataFlow::OEField<(OEDataFlow::OERange)> self, std::string const & name, OEFieldMeta meta) -> OERangeField
        __init__(OEDataFlow::OEField<(OEDataFlow::OERange)> self, std::string const & name) -> OERangeField
        __init__(OEDataFlow::OEField<(OEDataFlow::OERange)> self, OEFieldBase other) -> OERangeField
        """
        this = _oechem.new_OERangeField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OERange', data: 'OEUCharVector') -> "bool":
        """deserialize(OERangeField self, OERange value, OEUCharVector data) -> bool"""
        return _oechem.OERangeField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEDataFlow::OERange >":
        """get_type(OERangeField self) -> OERangeType"""
        return _oechem.OERangeField_get_type(self)

    __swig_destroy__ = _oechem.delete_OERangeField
    __del__ = lambda self: None
OERangeField_swigregister = _oechem.OERangeField_swigregister
OERangeField_swigregister(OERangeField)

class OEMolField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEChem::OEMol)> 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__(OEDataFlow::OEField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEMolField
        __init__(OEDataFlow::OEField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEMolField
        __init__(OEDataFlow::OEField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta) -> OEMolField
        __init__(OEDataFlow::OEField<(OEChem::OEMol)> self, std::string const & name) -> OEMolField
        __init__(OEDataFlow::OEField<(OEChem::OEMol)> self, OEFieldBase other) -> OEMolField
        """
        this = _oechem.new_OEMolField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEChem::OEMol &', data: 'OEUCharVector') -> "bool":
        """deserialize(OEMolField self, OEChem::OEMol & value, OEUCharVector data) -> bool"""
        return _oechem.OEMolField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEChem::OEMol >":
        """get_type(OEMolField self) -> OEMolType"""
        return _oechem.OEMolField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEMolField
    __del__ = lambda self: None
OEMolField_swigregister = _oechem.OEMolField_swigregister
OEMolField_swigregister(OEMolField)

class OERecordField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OERecord)> 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__(OEDataFlow::OEField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERecordField
        __init__(OEDataFlow::OEField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERecordField
        __init__(OEDataFlow::OEField<(OERecord)> self, std::string const & name, OEFieldMeta meta) -> OERecordField
        __init__(OEDataFlow::OEField<(OERecord)> self, std::string const & name) -> OERecordField
        __init__(OEDataFlow::OEField<(OERecord)> self, OEFieldBase other) -> OERecordField
        """
        this = _oechem.new_OERecordField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OERecord', data: 'OEUCharVector') -> "bool":
        """deserialize(OERecordField self, OERecord value, OEUCharVector data) -> bool"""
        return _oechem.OERecordField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEDataFlow::OERecord >":
        """get_type(OERecordField self) -> OERecordType"""
        return _oechem.OERecordField_get_type(self)

    __swig_destroy__ = _oechem.delete_OERecordField
    __del__ = lambda self: None
OERecordField_swigregister = _oechem.OERecordField_swigregister
OERecordField_swigregister(OERecordField)

class OEJSONObjectField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEJSONObject)> 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__(OEDataFlow::OEField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEJSONObjectField
        __init__(OEDataFlow::OEField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEJSONObjectField
        __init__(OEDataFlow::OEField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta) -> OEJSONObjectField
        __init__(OEDataFlow::OEField<(OEJSONObject)> self, std::string const & name) -> OEJSONObjectField
        __init__(OEDataFlow::OEField<(OEJSONObject)> self, OEFieldBase other) -> OEJSONObjectField
        """
        this = _oechem.new_OEJSONObjectField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEJSONObject', data: 'OEUCharVector') -> "bool":
        """deserialize(OEJSONObjectField self, OEJSONObject value, OEUCharVector data) -> bool"""
        return _oechem.OEJSONObjectField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEDataFlow::OEJSONObject >":
        """get_type(OEJSONObjectField self) -> OEJSONObjectType"""
        return _oechem.OEJSONObjectField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEJSONObjectField
    __del__ = lambda self: None
OEJSONObjectField_swigregister = _oechem.OEJSONObjectField_swigregister
OEJSONObjectField_swigregister(OEJSONObjectField)

class OELinkObjectField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OELinkObject)> 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__(OEDataFlow::OEField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OELinkObjectField
        __init__(OEDataFlow::OEField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OELinkObjectField
        __init__(OEDataFlow::OEField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta) -> OELinkObjectField
        __init__(OEDataFlow::OEField<(OELinkObject)> self, std::string const & name) -> OELinkObjectField
        __init__(OEDataFlow::OEField<(OELinkObject)> self, OEFieldBase other) -> OELinkObjectField
        """
        this = _oechem.new_OELinkObjectField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OELinkObject', data: 'OEUCharVector') -> "bool":
        """deserialize(OELinkObjectField self, OELinkObject value, OEUCharVector data) -> bool"""
        return _oechem.OELinkObjectField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEDataFlow::OELinkObject >":
        """get_type(OELinkObjectField self) -> OELinkObjectType"""
        return _oechem.OELinkObjectField_get_type(self)

    __swig_destroy__ = _oechem.delete_OELinkObjectField
    __del__ = lambda self: None
OELinkObjectField_swigregister = _oechem.OELinkObjectField_swigregister
OELinkObjectField_swigregister(OELinkObjectField)

class OEDesignUnitField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEBio::OEDesignUnit)> 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__(OEDataFlow::OEField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEDesignUnitField
        __init__(OEDataFlow::OEField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEDesignUnitField
        __init__(OEDataFlow::OEField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta) -> OEDesignUnitField
        __init__(OEDataFlow::OEField<(OEBio::OEDesignUnit)> self, std::string const & name) -> OEDesignUnitField
        __init__(OEDataFlow::OEField<(OEBio::OEDesignUnit)> self, OEFieldBase other) -> OEDesignUnitField
        """
        this = _oechem.new_OEDesignUnitField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEDesignUnit', data: 'OEUCharVector') -> "bool":
        """deserialize(OEDesignUnitField self, OEDesignUnit value, OEUCharVector data) -> bool"""
        return _oechem.OEDesignUnitField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEBio::OEDesignUnit >":
        """get_type(OEDesignUnitField self) -> OEDesignUnitType"""
        return _oechem.OEDesignUnitField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEDesignUnitField
    __del__ = lambda self: None
OEDesignUnitField_swigregister = _oechem.OEDesignUnitField_swigregister
OEDesignUnitField_swigregister(OEDesignUnitField)

class OEIntVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OELongLong)> 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__(OEDataFlow::OEVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEIntVecField
        __init__(OEDataFlow::OEVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEIntVecField
        __init__(OEDataFlow::OEVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta) -> OEIntVecField
        __init__(OEDataFlow::OEVectorField<(OELongLong)> self, std::string const & name) -> OEIntVecField
        __init__(OEDataFlow::OEVectorField<(OELongLong)> self, OEFieldBase f) -> OEIntVecField
        """
        this = _oechem.new_OEIntVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEIntVecField self, std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > & ret, OEUCharVector data) -> bool
        deserialize(OEIntVecField self, std::vector< OELongLong,std::allocator< OELongLong > > & ret, OEUCharVector data) -> bool
        """
        return _oechem.OEIntVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OELongLong >":
        """get_type(OEIntVecField self) -> OEIntVecType"""
        return _oechem.OEIntVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEIntVecField
    __del__ = lambda self: None
OEIntVecField_swigregister = _oechem.OEIntVecField_swigregister
OEIntVecField_swigregister(OEIntVecField)

class OEFloatVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(double)> 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__(OEDataFlow::OEVectorField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEFloatVecField
        __init__(OEDataFlow::OEVectorField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEFloatVecField
        __init__(OEDataFlow::OEVectorField<(double)> self, std::string const & name, OEFieldMeta meta) -> OEFloatVecField
        __init__(OEDataFlow::OEVectorField<(double)> self, std::string const & name) -> OEFloatVecField
        __init__(OEDataFlow::OEVectorField<(double)> self, OEFieldBase f) -> OEFloatVecField
        """
        this = _oechem.new_OEFloatVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEFloatVecField self, std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > & ret, OEUCharVector data) -> bool
        deserialize(OEFloatVecField self, OEDoubleVector ret, OEUCharVector data) -> bool
        """
        return _oechem.OEFloatVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< double >":
        """get_type(OEFloatVecField self) -> OEFloatVecType"""
        return _oechem.OEFloatVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEFloatVecField
    __del__ = lambda self: None
OEFloatVecField_swigregister = _oechem.OEFloatVecField_swigregister
OEFloatVecField_swigregister(OEFloatVecField)

class OEBoolVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(bool)> 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__(OEDataFlow::OEVectorField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBoolVecField
        __init__(OEDataFlow::OEVectorField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBoolVecField
        __init__(OEDataFlow::OEVectorField<(bool)> self, std::string const & name, OEFieldMeta meta) -> OEBoolVecField
        __init__(OEDataFlow::OEVectorField<(bool)> self, std::string const & name) -> OEBoolVecField
        __init__(OEDataFlow::OEVectorField<(bool)> self, OEFieldBase f) -> OEBoolVecField
        """
        this = _oechem.new_OEBoolVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEBoolVecField self, std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > & ret, OEUCharVector data) -> bool
        deserialize(OEBoolVecField self, std::vector< bool,std::allocator< bool > > & ret, OEUCharVector data) -> bool
        """
        return _oechem.OEBoolVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< bool >":
        """get_type(OEBoolVecField self) -> OEBoolVecType"""
        return _oechem.OEBoolVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEBoolVecField
    __del__ = lambda self: None
OEBoolVecField_swigregister = _oechem.OEBoolVecField_swigregister
OEBoolVecField_swigregister(OEBoolVecField)

class OEStringVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(std::string)> 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__(OEDataFlow::OEVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEStringVecField
        __init__(OEDataFlow::OEVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEStringVecField
        __init__(OEDataFlow::OEVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta) -> OEStringVecField
        __init__(OEDataFlow::OEVectorField<(std::string)> self, std::string const & name) -> OEStringVecField
        __init__(OEDataFlow::OEVectorField<(std::string)> self, OEFieldBase f) -> OEStringVecField
        """
        this = _oechem.new_OEStringVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEStringVecField self, std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > & ret, OEUCharVector data) -> bool
        deserialize(OEStringVecField self, OEStringVector ret, OEUCharVector data) -> bool
        """
        return _oechem.OEStringVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< std::string >":
        """get_type(OEStringVecField self) -> OEStringVecType"""
        return _oechem.OEStringVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEStringVecField
    __del__ = lambda self: None
OEStringVecField_swigregister = _oechem.OEStringVecField_swigregister
OEStringVecField_swigregister(OEStringVecField)

class OEBlobVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> 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__(OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBlobVecField
        __init__(OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBlobVecField
        __init__(OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta) -> OEBlobVecField
        __init__(OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> self, std::string const & name) -> OEBlobVecField
        __init__(OEDataFlow::OEVectorField<(OEDataFlow::OEBytes)> self, OEFieldBase f) -> OEBlobVecField
        """
        this = _oechem.new_OEBlobVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEBlobVecField self, std::vector< OEStdOptionalNamespace::optional< std::vector< unsigned char,std::allocator< unsigned char > > >,std::allocator< OEStdOptionalNamespace::optional< std::vector< unsigned char,std::allocator< unsigned char > > > > > & ret, OEUCharVector data) -> bool
        deserialize(OEBlobVecField self, std::vector< std::vector< unsigned char,std::allocator< unsigned char > >,std::allocator< std::vector< unsigned char,std::allocator< unsigned char > > > > & ret, OEUCharVector data) -> bool
        """
        return _oechem.OEBlobVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< std::vector< unsigned char,std::allocator< unsigned char > > >":
        """get_type(OEBlobVecField self) -> OEBlobVecType"""
        return _oechem.OEBlobVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEBlobVecField
    __del__ = lambda self: None
OEBlobVecField_swigregister = _oechem.OEBlobVecField_swigregister
OEBlobVecField_swigregister(OEBlobVecField)

class OEMolVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OEMol)> 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__(OEDataFlow::OEVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEMolVecField
        __init__(OEDataFlow::OEVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEMolVecField
        __init__(OEDataFlow::OEVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta) -> OEMolVecField
        __init__(OEDataFlow::OEVectorField<(OEMol)> self, std::string const & name) -> OEMolVecField
        __init__(OEDataFlow::OEVectorField<(OEMol)> self, OEFieldBase f) -> OEMolVecField
        """
        this = _oechem.new_OEMolVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEMolVecField self, std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > & ret, OEUCharVector data) -> bool
        deserialize(OEMolVecField self, std::vector< OEMol,std::allocator< OEMol > > & ret, OEUCharVector data) -> bool
        """
        return _oechem.OEMolVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OEMol >":
        """get_type(OEMolVecField self) -> OEMolVecType"""
        return _oechem.OEMolVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OEMolVecField
    __del__ = lambda self: None
OEMolVecField_swigregister = _oechem.OEMolVecField_swigregister
OEMolVecField_swigregister(OEMolVecField)

class OERecordVecField(OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OERecord)> 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__(OEDataFlow::OEVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERecordVecField
        __init__(OEDataFlow::OEVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERecordVecField
        __init__(OEDataFlow::OEVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta) -> OERecordVecField
        __init__(OEDataFlow::OEVectorField<(OERecord)> self, std::string const & name) -> OERecordVecField
        __init__(OEDataFlow::OEVectorField<(OERecord)> self, OEFieldBase f) -> OERecordVecField
        """
        this = _oechem.new_OERecordVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OERecordVecField self, std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > & ret, OEUCharVector data) -> bool
        deserialize(OERecordVecField self, std::vector< OEDataFlow::OERecord,std::allocator< OEDataFlow::OERecord > > & ret, OEUCharVector data) -> bool
        """
        return _oechem.OERecordVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OEDataFlow::OERecord >":
        """get_type(OERecordVecField self) -> OERecordVecType"""
        return _oechem.OERecordVecField_get_type(self)

    __swig_destroy__ = _oechem.delete_OERecordVecField
    __del__ = lambda self: None
OERecordVecField_swigregister = _oechem.OERecordVecField_swigregister
OERecordVecField_swigregister(OERecordVecField)

class OEStringType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(std::string)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEStringType self) -> std::string"""
        return _oechem.OEStringType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEStringType self) -> bool"""
        return _oechem.OEStringType_isPOD(self)


    def format(val: 'std::string const &') -> "std::string":
        """format(std::string const & val) -> std::string"""
        return _oechem.OEStringType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(std::string)> self) -> OEStringType"""
        this = _oechem.new_OEStringType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringType
    __del__ = lambda self: None
OEStringType_swigregister = _oechem.OEStringType_swigregister
OEStringType_swigregister(OEStringType)

def OEStringType_format(val: 'std::string const &') -> "std::string":
    """OEStringType_format(std::string const & val) -> std::string"""
    return _oechem.OEStringType_format(val)

class OEIntType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OELongLong)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEIntType self) -> std::string"""
        return _oechem.OEIntType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEIntType self) -> bool"""
        return _oechem.OEIntType_isPOD(self)


    def format(val: 'OELongLong') -> "std::string":
        """format(OELongLong val) -> std::string"""
        return _oechem.OEIntType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OELongLong)> self) -> OEIntType"""
        this = _oechem.new_OEIntType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntType
    __del__ = lambda self: None
OEIntType_swigregister = _oechem.OEIntType_swigregister
OEIntType_swigregister(OEIntType)

def OEIntType_format(val: 'OELongLong') -> "std::string":
    """OEIntType_format(OELongLong val) -> std::string"""
    return _oechem.OEIntType_format(val)

class OEFloatType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(double)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEFloatType self) -> std::string"""
        return _oechem.OEFloatType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEFloatType self) -> bool"""
        return _oechem.OEFloatType_isPOD(self)


    def format(val: 'double const &') -> "std::string":
        """format(double const & val) -> std::string"""
        return _oechem.OEFloatType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(double)> self) -> OEFloatType"""
        this = _oechem.new_OEFloatType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatType
    __del__ = lambda self: None
OEFloatType_swigregister = _oechem.OEFloatType_swigregister
OEFloatType_swigregister(OEFloatType)

def OEFloatType_format(val: 'double const &') -> "std::string":
    """OEFloatType_format(double const & val) -> std::string"""
    return _oechem.OEFloatType_format(val)

class OEBoolType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(bool)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEBoolType self) -> std::string"""
        return _oechem.OEBoolType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEBoolType self) -> bool"""
        return _oechem.OEBoolType_isPOD(self)


    def format(val: 'bool') -> "std::string":
        """format(bool val) -> std::string"""
        return _oechem.OEBoolType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(bool)> self) -> OEBoolType"""
        this = _oechem.new_OEBoolType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolType
    __del__ = lambda self: None
OEBoolType_swigregister = _oechem.OEBoolType_swigregister
OEBoolType_swigregister(OEBoolType)

def OEBoolType_format(val: 'bool') -> "std::string":
    """OEBoolType_format(bool val) -> std::string"""
    return _oechem.OEBoolType_format(val)

class OEBlobType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OEDataFlow::OEBytes)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEBlobType self) -> std::string"""
        return _oechem.OEBlobType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEBlobType self) -> bool"""
        return _oechem.OEBlobType_isPOD(self)


    def format(val: 'OEUCharVector') -> "std::string":
        """format(OEUCharVector val) -> std::string"""
        return _oechem.OEBlobType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OEDataFlow::OEBytes)> self) -> OEBlobType"""
        this = _oechem.new_OEBlobType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBlobType
    __del__ = lambda self: None
OEBlobType_swigregister = _oechem.OEBlobType_swigregister
OEBlobType_swigregister(OEBlobType)

def OEBlobType_format(val: 'OEUCharVector') -> "std::string":
    """OEBlobType_format(OEUCharVector val) -> std::string"""
    return _oechem.OEBlobType_format(val)

class OEMolType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OEChem::OEMol)> 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__(OEDataFlow::OEFieldType<(OEChem::OEMol)> self) -> OEMolType"""
        this = _oechem.new_OEMolType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def format(val: 'OEChem::OEMol const &') -> "std::string":
        """format(OEChem::OEMol const & val) -> std::string"""
        return _oechem.OEMolType_format(val)

    format = staticmethod(format)

    def get_name(self) -> "std::string":
        """get_name(OEMolType self) -> std::string"""
        return _oechem.OEMolType_get_name(self)

    __swig_destroy__ = _oechem.delete_OEMolType
    __del__ = lambda self: None
OEMolType_swigregister = _oechem.OEMolType_swigregister
OEMolType_swigregister(OEMolType)

def OEMolType_format(val: 'OEChem::OEMol const &') -> "std::string":
    """OEMolType_format(OEChem::OEMol const & val) -> std::string"""
    return _oechem.OEMolType_format(val)

class OEDesignUnitType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OEBio::OEDesignUnit)> 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__(OEDataFlow::OEFieldType<(OEBio::OEDesignUnit)> self) -> OEDesignUnitType"""
        this = _oechem.new_OEDesignUnitType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def format(val: 'OEDesignUnit') -> "std::string":
        """format(OEDesignUnit val) -> std::string"""
        return _oechem.OEDesignUnitType_format(val)

    format = staticmethod(format)

    def get_name(self) -> "std::string":
        """get_name(OEDesignUnitType self) -> std::string"""
        return _oechem.OEDesignUnitType_get_name(self)

    __swig_destroy__ = _oechem.delete_OEDesignUnitType
    __del__ = lambda self: None
OEDesignUnitType_swigregister = _oechem.OEDesignUnitType_swigregister
OEDesignUnitType_swigregister(OEDesignUnitType)

def OEDesignUnitType_format(val: 'OEDesignUnit') -> "std::string":
    """OEDesignUnitType_format(OEDesignUnit val) -> std::string"""
    return _oechem.OEDesignUnitType_format(val)

class OERecordType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OERecord)> 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__(OEDataFlow::OEFieldType<(OERecord)> self) -> OERecordType"""
        this = _oechem.new_OERecordType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def format(val: 'OERecord') -> "std::string":
        """format(OERecord val) -> std::string"""
        return _oechem.OERecordType_format(val)

    format = staticmethod(format)

    def get_name(self) -> "std::string":
        """get_name(OERecordType self) -> std::string"""
        return _oechem.OERecordType_get_name(self)

    __swig_destroy__ = _oechem.delete_OERecordType
    __del__ = lambda self: None
OERecordType_swigregister = _oechem.OERecordType_swigregister
OERecordType_swigregister(OERecordType)

def OERecordType_format(val: 'OERecord') -> "std::string":
    """OERecordType_format(OERecord val) -> std::string"""
    return _oechem.OERecordType_format(val)

class OEJSONObjectType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OEJSONObject)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEJSONObjectType self) -> std::string"""
        return _oechem.OEJSONObjectType_get_name(self)


    def format(val: 'OEJSONObject') -> "std::string":
        """format(OEJSONObject val) -> std::string"""
        return _oechem.OEJSONObjectType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OEJSONObject)> self) -> OEJSONObjectType"""
        this = _oechem.new_OEJSONObjectType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEJSONObjectType
    __del__ = lambda self: None
OEJSONObjectType_swigregister = _oechem.OEJSONObjectType_swigregister
OEJSONObjectType_swigregister(OEJSONObjectType)

def OEJSONObjectType_format(val: 'OEJSONObject') -> "std::string":
    """OEJSONObjectType_format(OEJSONObject val) -> std::string"""
    return _oechem.OEJSONObjectType_format(val)

class OELinkObjectType(OEJSONObjectType):
    """Proxy of C++ OEDataFlow::OEFieldType<(OELinkObject)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OELinkObjectType self) -> std::string"""
        return _oechem.OELinkObjectType_get_name(self)


    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OELinkObject)> self) -> OELinkObjectType"""
        this = _oechem.new_OELinkObjectType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELinkObjectType
    __del__ = lambda self: None
OELinkObjectType_swigregister = _oechem.OELinkObjectType_swigregister
OELinkObjectType_swigregister(OELinkObjectType)

class OEIntVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OELongLong)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEIntVecType self) -> std::string"""
        return _oechem.OEIntVecType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEIntVecType self) -> bool"""
        return _oechem.OEIntVecType_isPOD(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >":
        """
        GetCopyForCache(std::vector< OELongLong,std::allocator< OELongLong > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >
        """
        return _oechem.OEIntVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const & val) -> std::string"""
        return _oechem.OEIntVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OELongLong)> self) -> OEIntVecType"""
        this = _oechem.new_OEIntVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntVecType
    __del__ = lambda self: None
OEIntVecType_swigregister = _oechem.OEIntVecType_swigregister
OEIntVecType_swigregister(OEIntVecType)

def OEIntVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >":
    """
    GetCopyForCache(std::vector< OELongLong,std::allocator< OELongLong > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >
    OEIntVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const & arg2) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > >
    """
    return _oechem.OEIntVecType_GetCopyForCache(*args)

def OEIntVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const &') -> "std::string":
    """OEIntVecType_format(std::vector< OEStdOptionalNamespace::optional< OELongLong >,std::allocator< OEStdOptionalNamespace::optional< OELongLong > > > const & val) -> std::string"""
    return _oechem.OEIntVecType_format(val)

class OEFloatVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(double)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEFloatVecType self) -> std::string"""
        return _oechem.OEFloatVecType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEFloatVecType self) -> bool"""
        return _oechem.OEFloatVecType_isPOD(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >":
        """
        GetCopyForCache(OEDoubleVector arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >
        """
        return _oechem.OEFloatVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const & val) -> std::string"""
        return _oechem.OEFloatVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(double)> self) -> OEFloatVecType"""
        this = _oechem.new_OEFloatVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatVecType
    __del__ = lambda self: None
OEFloatVecType_swigregister = _oechem.OEFloatVecType_swigregister
OEFloatVecType_swigregister(OEFloatVecType)

def OEFloatVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >":
    """
    GetCopyForCache(OEDoubleVector arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >
    OEFloatVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const & arg2) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > >
    """
    return _oechem.OEFloatVecType_GetCopyForCache(*args)

def OEFloatVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const &') -> "std::string":
    """OEFloatVecType_format(std::vector< OEStdOptionalNamespace::optional< double >,std::allocator< OEStdOptionalNamespace::optional< double > > > const & val) -> std::string"""
    return _oechem.OEFloatVecType_format(val)

class OEBoolVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(bool)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEBoolVecType self) -> std::string"""
        return _oechem.OEBoolVecType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEBoolVecType self) -> bool"""
        return _oechem.OEBoolVecType_isPOD(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >":
        """
        GetCopyForCache(std::vector< bool,std::allocator< bool > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >
        """
        return _oechem.OEBoolVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const & val) -> std::string"""
        return _oechem.OEBoolVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(bool)> self) -> OEBoolVecType"""
        this = _oechem.new_OEBoolVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolVecType
    __del__ = lambda self: None
OEBoolVecType_swigregister = _oechem.OEBoolVecType_swigregister
OEBoolVecType_swigregister(OEBoolVecType)

def OEBoolVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >":
    """
    GetCopyForCache(std::vector< bool,std::allocator< bool > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >
    OEBoolVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const & arg2) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > >
    """
    return _oechem.OEBoolVecType_GetCopyForCache(*args)

def OEBoolVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const &') -> "std::string":
    """OEBoolVecType_format(std::vector< OEStdOptionalNamespace::optional< bool >,std::allocator< OEStdOptionalNamespace::optional< bool > > > const & val) -> std::string"""
    return _oechem.OEBoolVecType_format(val)

class OEStringVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(std::string)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEStringVecType self) -> std::string"""
        return _oechem.OEStringVecType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEStringVecType self) -> bool"""
        return _oechem.OEStringVecType_isPOD(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >":
        """
        GetCopyForCache(OEStringVector arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const & arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >
        """
        return _oechem.OEStringVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const & val) -> std::string"""
        return _oechem.OEStringVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(std::string)> self) -> OEStringVecType"""
        this = _oechem.new_OEStringVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringVecType
    __del__ = lambda self: None
OEStringVecType_swigregister = _oechem.OEStringVecType_swigregister
OEStringVecType_swigregister(OEStringVecType)

def OEStringVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >":
    """
    GetCopyForCache(OEStringVector arg1) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >
    OEStringVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const & arg2) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > >
    """
    return _oechem.OEStringVecType_GetCopyForCache(*args)

def OEStringVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const &') -> "std::string":
    """OEStringVecType_format(std::vector< OEStdOptionalNamespace::optional< std::string >,std::allocator< OEStdOptionalNamespace::optional< std::string > > > const & val) -> std::string"""
    return _oechem.OEStringVecType_format(val)

class OEBlobVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OEDataFlow::OEBytes)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEBlobVecType self) -> std::string"""
        return _oechem.OEBlobVecType_get_name(self)


    def isPOD(self) -> "bool":
        """isPOD(OEBlobVecType self) -> bool"""
        return _oechem.OEBlobVecType_isPOD(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >":
        """
        GetCopyForCache(std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > const & arg1) -> std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const & arg1) -> std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >
        """
        return _oechem.OEBlobVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const & val) -> std::string"""
        return _oechem.OEBlobVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OEDataFlow::OEBytes)> self) -> OEBlobVecType"""
        this = _oechem.new_OEBlobVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBlobVecType
    __del__ = lambda self: None
OEBlobVecType_swigregister = _oechem.OEBlobVecType_swigregister
OEBlobVecType_swigregister(OEBlobVecType)

def OEBlobVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >":
    """
    GetCopyForCache(std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > const & arg1) -> std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >
    OEBlobVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const & arg2) -> std::shared_ptr< std::vector< OEDataFlow::OEBytes,std::allocator< OEDataFlow::OEBytes > > >
    """
    return _oechem.OEBlobVecType_GetCopyForCache(*args)

def OEBlobVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const &') -> "std::string":
    """OEBlobVecType_format(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OEBytes > > > const & val) -> std::string"""
    return _oechem.OEBlobVecType_format(val)

class OEMolVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OEMol)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OEMolVecType self) -> std::string"""
        return _oechem.OEMolVecType_get_name(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >":
        """
        GetCopyForCache(std::vector< OEMol,std::allocator< OEMol > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >
        """
        return _oechem.OEMolVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const & val) -> std::string"""
        return _oechem.OEMolVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OEMol)> self) -> OEMolVecType"""
        this = _oechem.new_OEMolVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolVecType
    __del__ = lambda self: None
OEMolVecType_swigregister = _oechem.OEMolVecType_swigregister
OEMolVecType_swigregister(OEMolVecType)

def OEMolVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >":
    """
    GetCopyForCache(std::vector< OEMol,std::allocator< OEMol > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >
    OEMolVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > >
    """
    return _oechem.OEMolVecType_GetCopyForCache(*args)

def OEMolVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const &') -> "std::string":
    """OEMolVecType_format(std::vector< OEStdOptionalNamespace::optional< OEMol >,std::allocator< OEStdOptionalNamespace::optional< OEMol > > > const & val) -> std::string"""
    return _oechem.OEMolVecType_format(val)

class OERecordVecType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OERecord)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OERecordVecType self) -> std::string"""
        return _oechem.OERecordVecType_get_name(self)


    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >":
        """
        GetCopyForCache(std::vector< OEDataFlow::OERecord,std::allocator< OEDataFlow::OERecord > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >
        """
        return _oechem.OERecordVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const & val) -> std::string"""
        return _oechem.OERecordVecType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OERecord)> self) -> OERecordVecType"""
        this = _oechem.new_OERecordVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERecordVecType
    __del__ = lambda self: None
OERecordVecType_swigregister = _oechem.OERecordVecType_swigregister
OERecordVecType_swigregister(OERecordVecType)

def OERecordVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >":
    """
    GetCopyForCache(std::vector< OEDataFlow::OERecord,std::allocator< OEDataFlow::OERecord > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >
    OERecordVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const & thing) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > >
    """
    return _oechem.OERecordVecType_GetCopyForCache(*args)

def OERecordVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const &') -> "std::string":
    """OERecordVecType_format(std::vector< OEStdOptionalNamespace::optional< OEDataFlow::OERecord >,std::allocator< OEStdOptionalNamespace::optional< OEDataFlow::OERecord > > > const & val) -> std::string"""
    return _oechem.OERecordVecType_format(val)

class OERangeType(OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OERange)> class."""

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

    def get_name(self) -> "std::string":
        """get_name(OERangeType self) -> std::string"""
        return _oechem.OERangeType_get_name(self)


    def format(val: 'OERange') -> "std::string":
        """format(OERange val) -> std::string"""
        return _oechem.OERangeType_format(val)

    format = staticmethod(format)

    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OERange)> self) -> OERangeType"""
        this = _oechem.new_OERangeType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERangeType
    __del__ = lambda self: None
OERangeType_swigregister = _oechem.OERangeType_swigregister
OERangeType_swigregister(OERangeType)

def OERangeType_format(val: 'OERange') -> "std::string":
    """OERangeType_format(OERange val) -> std::string"""
    return _oechem.OERangeType_format(val)

class OEStringMatchField(OEStringField):
    """Proxy of C++ OEDataFlow::OEMatchField<(std::string)> 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__(OEDataFlow::OEMatchField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEStringMatchField
        __init__(OEDataFlow::OEMatchField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEStringMatchField
        __init__(OEDataFlow::OEMatchField<(std::string)> self, std::string const & name, OEFieldMeta meta) -> OEStringMatchField
        __init__(OEDataFlow::OEMatchField<(std::string)> self, std::string const & name) -> OEStringMatchField
        """
        this = _oechem.new_OEStringMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringMatchField
    __del__ = lambda self: None
OEStringMatchField_swigregister = _oechem.OEStringMatchField_swigregister
OEStringMatchField_swigregister(OEStringMatchField)

class OEIntMatchField(OEIntField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OELongLong)> 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__(OEDataFlow::OEMatchField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEIntMatchField
        __init__(OEDataFlow::OEMatchField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEIntMatchField
        __init__(OEDataFlow::OEMatchField<(OELongLong)> self, std::string const & name, OEFieldMeta meta) -> OEIntMatchField
        __init__(OEDataFlow::OEMatchField<(OELongLong)> self, std::string const & name) -> OEIntMatchField
        """
        this = _oechem.new_OEIntMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntMatchField
    __del__ = lambda self: None
OEIntMatchField_swigregister = _oechem.OEIntMatchField_swigregister
OEIntMatchField_swigregister(OEIntMatchField)

class OEFloatMatchField(OEFloatField):
    """Proxy of C++ OEDataFlow::OEMatchField<(double)> 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__(OEDataFlow::OEMatchField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEFloatMatchField
        __init__(OEDataFlow::OEMatchField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEFloatMatchField
        __init__(OEDataFlow::OEMatchField<(double)> self, std::string const & name, OEFieldMeta meta) -> OEFloatMatchField
        __init__(OEDataFlow::OEMatchField<(double)> self, std::string const & name) -> OEFloatMatchField
        """
        this = _oechem.new_OEFloatMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatMatchField
    __del__ = lambda self: None
OEFloatMatchField_swigregister = _oechem.OEFloatMatchField_swigregister
OEFloatMatchField_swigregister(OEFloatMatchField)

class OEBoolMatchField(OEBoolField):
    """Proxy of C++ OEDataFlow::OEMatchField<(bool)> 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__(OEDataFlow::OEMatchField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBoolMatchField
        __init__(OEDataFlow::OEMatchField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBoolMatchField
        __init__(OEDataFlow::OEMatchField<(bool)> self, std::string const & name, OEFieldMeta meta) -> OEBoolMatchField
        __init__(OEDataFlow::OEMatchField<(bool)> self, std::string const & name) -> OEBoolMatchField
        """
        this = _oechem.new_OEBoolMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolMatchField
    __del__ = lambda self: None
OEBoolMatchField_swigregister = _oechem.OEBoolMatchField_swigregister
OEBoolMatchField_swigregister(OEBoolMatchField)

class OEBlobMatchField(OEBlobField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OEDataFlow::OEBytes)> 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__(OEDataFlow::OEMatchField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBlobMatchField
        __init__(OEDataFlow::OEMatchField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBlobMatchField
        __init__(OEDataFlow::OEMatchField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta) -> OEBlobMatchField
        __init__(OEDataFlow::OEMatchField<(OEDataFlow::OEBytes)> self, std::string const & name) -> OEBlobMatchField
        """
        this = _oechem.new_OEBlobMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBlobMatchField
    __del__ = lambda self: None
OEBlobMatchField_swigregister = _oechem.OEBlobMatchField_swigregister
OEBlobMatchField_swigregister(OEBlobMatchField)

class OEMolMatchField(OEMolField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OEChem::OEMol)> 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__(OEDataFlow::OEMatchField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEMolMatchField
        __init__(OEDataFlow::OEMatchField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEMolMatchField
        __init__(OEDataFlow::OEMatchField<(OEChem::OEMol)> self, std::string const & name, OEFieldMeta meta) -> OEMolMatchField
        __init__(OEDataFlow::OEMatchField<(OEChem::OEMol)> self, std::string const & name) -> OEMolMatchField
        """
        this = _oechem.new_OEMolMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolMatchField
    __del__ = lambda self: None
OEMolMatchField_swigregister = _oechem.OEMolMatchField_swigregister
OEMolMatchField_swigregister(OEMolMatchField)

class OERecordMatchField(OERecordField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OERecord)> 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__(OEDataFlow::OEMatchField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERecordMatchField
        __init__(OEDataFlow::OEMatchField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERecordMatchField
        __init__(OEDataFlow::OEMatchField<(OERecord)> self, std::string const & name, OEFieldMeta meta) -> OERecordMatchField
        __init__(OEDataFlow::OEMatchField<(OERecord)> self, std::string const & name) -> OERecordMatchField
        """
        this = _oechem.new_OERecordMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERecordMatchField
    __del__ = lambda self: None
OERecordMatchField_swigregister = _oechem.OERecordMatchField_swigregister
OERecordMatchField_swigregister(OERecordMatchField)

class OEJSONObjectMatchField(OEJSONObjectField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OEJSONObject)> 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__(OEDataFlow::OEMatchField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEJSONObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEJSONObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OEJSONObject)> self, std::string const & name, OEFieldMeta meta) -> OEJSONObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OEJSONObject)> self, std::string const & name) -> OEJSONObjectMatchField
        """
        this = _oechem.new_OEJSONObjectMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEJSONObjectMatchField
    __del__ = lambda self: None
OEJSONObjectMatchField_swigregister = _oechem.OEJSONObjectMatchField_swigregister
OEJSONObjectMatchField_swigregister(OEJSONObjectMatchField)

class OELinkObjectMatchField(OELinkObjectField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OELinkObject)> 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__(OEDataFlow::OEMatchField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OELinkObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OELinkObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OELinkObject)> self, std::string const & name, OEFieldMeta meta) -> OELinkObjectMatchField
        __init__(OEDataFlow::OEMatchField<(OELinkObject)> self, std::string const & name) -> OELinkObjectMatchField
        """
        this = _oechem.new_OELinkObjectMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELinkObjectMatchField
    __del__ = lambda self: None
OELinkObjectMatchField_swigregister = _oechem.OELinkObjectMatchField_swigregister
OELinkObjectMatchField_swigregister(OELinkObjectMatchField)

class OERangeMatchField(OERangeField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OERange)> 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__(OEDataFlow::OEMatchField<(OERange)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERangeMatchField
        __init__(OEDataFlow::OEMatchField<(OERange)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERangeMatchField
        __init__(OEDataFlow::OEMatchField<(OERange)> self, std::string const & name, OEFieldMeta meta) -> OERangeMatchField
        __init__(OEDataFlow::OEMatchField<(OERange)> self, std::string const & name) -> OERangeMatchField
        """
        this = _oechem.new_OERangeMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERangeMatchField
    __del__ = lambda self: None
OERangeMatchField_swigregister = _oechem.OERangeMatchField_swigregister
OERangeMatchField_swigregister(OERangeMatchField)

class OEDesignUnitMatchField(OEDesignUnitField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OEBio::OEDesignUnit)> 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__(OEDataFlow::OEMatchField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEDesignUnitMatchField
        __init__(OEDataFlow::OEMatchField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEDesignUnitMatchField
        __init__(OEDataFlow::OEMatchField<(OEBio::OEDesignUnit)> self, std::string const & name, OEFieldMeta meta) -> OEDesignUnitMatchField
        __init__(OEDataFlow::OEMatchField<(OEBio::OEDesignUnit)> self, std::string const & name) -> OEDesignUnitMatchField
        """
        this = _oechem.new_OEDesignUnitMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDesignUnitMatchField
    __del__ = lambda self: None
OEDesignUnitMatchField_swigregister = _oechem.OEDesignUnitMatchField_swigregister
OEDesignUnitMatchField_swigregister(OEDesignUnitMatchField)

class OEIntVecMatchField(OEIntVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OELongLong)> 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__(OEDataFlow::OEMatchVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEIntVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEIntVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OELongLong)> self, std::string const & name, OEFieldMeta meta) -> OEIntVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OELongLong)> self, std::string const & name) -> OEIntVecMatchField
        """
        this = _oechem.new_OEIntVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntVecMatchField
    __del__ = lambda self: None
OEIntVecMatchField_swigregister = _oechem.OEIntVecMatchField_swigregister
OEIntVecMatchField_swigregister(OEIntVecMatchField)

class OEFloatVecMatchField(OEFloatVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(double)> 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__(OEDataFlow::OEMatchVectorField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEFloatVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(double)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEFloatVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(double)> self, std::string const & name, OEFieldMeta meta) -> OEFloatVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(double)> self, std::string const & name) -> OEFloatVecMatchField
        """
        this = _oechem.new_OEFloatVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatVecMatchField
    __del__ = lambda self: None
OEFloatVecMatchField_swigregister = _oechem.OEFloatVecMatchField_swigregister
OEFloatVecMatchField_swigregister(OEFloatVecMatchField)

class OEBoolVecMatchField(OEBoolVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(bool)> 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__(OEDataFlow::OEMatchVectorField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBoolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(bool)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBoolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(bool)> self, std::string const & name, OEFieldMeta meta) -> OEBoolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(bool)> self, std::string const & name) -> OEBoolVecMatchField
        """
        this = _oechem.new_OEBoolVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolVecMatchField
    __del__ = lambda self: None
OEBoolVecMatchField_swigregister = _oechem.OEBoolVecMatchField_swigregister
OEBoolVecMatchField_swigregister(OEBoolVecMatchField)

class OEStringVecMatchField(OEStringVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(std::string)> 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__(OEDataFlow::OEMatchVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEStringVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEStringVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(std::string)> self, std::string const & name, OEFieldMeta meta) -> OEStringVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(std::string)> self, std::string const & name) -> OEStringVecMatchField
        """
        this = _oechem.new_OEStringVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringVecMatchField
    __del__ = lambda self: None
OEStringVecMatchField_swigregister = _oechem.OEStringVecMatchField_swigregister
OEStringVecMatchField_swigregister(OEStringVecMatchField)

class OEBlobVecMatchField(OEBlobVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OEDataFlow::OEBytes)> 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__(OEDataFlow::OEMatchVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEBlobVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEBlobVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEDataFlow::OEBytes)> self, std::string const & name, OEFieldMeta meta) -> OEBlobVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEDataFlow::OEBytes)> self, std::string const & name) -> OEBlobVecMatchField
        """
        this = _oechem.new_OEBlobVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBlobVecMatchField
    __del__ = lambda self: None
OEBlobVecMatchField_swigregister = _oechem.OEBlobVecMatchField_swigregister
OEBlobVecMatchField_swigregister(OEBlobVecMatchField)

class OEMolVecMatchField(OEMolVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OEMol)> 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__(OEDataFlow::OEMatchVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEMolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEMolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEMol)> self, std::string const & name, OEFieldMeta meta) -> OEMolVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEMol)> self, std::string const & name) -> OEMolVecMatchField
        """
        this = _oechem.new_OEMolVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolVecMatchField
    __del__ = lambda self: None
OEMolVecMatchField_swigregister = _oechem.OEMolVecMatchField_swigregister
OEMolVecMatchField_swigregister(OEMolVecMatchField)

class OERecordVecMatchField(OERecordVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OERecord)> 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__(OEDataFlow::OEMatchVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OERecordVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OERecordVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OERecord)> self, std::string const & name, OEFieldMeta meta) -> OERecordVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OERecord)> self, std::string const & name) -> OERecordVecMatchField
        """
        this = _oechem.new_OERecordVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERecordVecMatchField
    __del__ = lambda self: None
OERecordVecMatchField_swigregister = _oechem.OERecordVecMatchField_swigregister
OERecordVecMatchField_swigregister(OERecordVecMatchField)


def OEMakeField(*args) -> "PyObject *":
    """
    OEMakeField(std::string const & name, std::string const & dtName, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> PyObject
    OEMakeField(std::string const & name, std::string const & dtName, OEFieldMeta meta, bool readonly=False) -> PyObject
    OEMakeField(std::string const & name, std::string const & dtName, OEFieldMeta meta) -> PyObject
    OEMakeField(std::string const & name, std::string const & dtName) -> PyObject
    OEMakeField(std::string const & name, OEFieldTypeHandler dataType, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> PyObject
    OEMakeField(std::string const & name, OEFieldTypeHandler dataType, OEFieldMeta meta, bool readonly=False) -> PyObject
    OEMakeField(std::string const & name, OEFieldTypeHandler dataType, OEFieldMeta meta) -> PyObject
    OEMakeField(std::string const & name, OEFieldTypeHandler dataType) -> PyObject *
    """
    return _oechem.OEMakeField(*args)

def OEMakeMatchField(*args) -> "PyObject *":
    """
    OEMakeMatchField(std::string const & name, std::string const & dtName, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> PyObject
    OEMakeMatchField(std::string const & name, std::string const & dtName, OEFieldMeta meta, bool readonly=False) -> PyObject
    OEMakeMatchField(std::string const & name, std::string const & dtName, OEFieldMeta meta) -> PyObject
    OEMakeMatchField(std::string const & name, std::string const & dtName) -> PyObject *
    """
    return _oechem.OEMakeMatchField(*args)

def _is_known_handler(name: 'std::string const &') -> "bool":
    """_is_known_handler(std::string const & name) -> bool"""
    return _oechem._is_known_handler(name)

def OEBase85Encode(input: 'OEUCharVector') -> "std::string":
    """OEBase85Encode(OEUCharVector input) -> std::string"""
    return _oechem.OEBase85Encode(input)

def OEBase85Decode(input: 'std::string const &') -> "OEDataFlow::OEBytes":
    """OEBase85Decode(std::string const & input) -> OEUCharVector"""
    return _oechem.OEBase85Decode(input)
class OERecord(object):
    """Proxy of C++ OEDataFlow::OERecord 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__ = _oechem.delete_OERecord
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEDataFlow::OERecord self) -> OERecord
        __init__(OEDataFlow::OERecord self, OERecord other) -> OERecord
        """
        this = _oechem.new_OERecord(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def set_bytes(self, *args) -> "bool":
        """
        set_bytes(OERecord self, OEFieldBase f, OEUCharVector d) -> bool
        set_bytes(OERecord self, OEFieldBase f, OEOptionalUCharVector d) -> bool
        """
        return _oechem.OERecord_set_bytes(self, *args)


    def get_bytes(self, *args) -> "OEDataFlow::OEBytes":
        """
        get_bytes(OERecord self, OEFieldBase f) -> OEUCharVector
        get_bytes(OERecord self, OEUCharVector ret, OEFieldBase f) -> bool
        get_bytes(OERecord self, std::string const & fieldName) -> OEUCharVector
        """
        return _oechem.OERecord_get_bytes(self, *args)


    def get_version() -> "std::string":
        """get_version() -> std::string"""
        return _oechem.OERecord_get_version()

    get_version = staticmethod(get_version)

    def has_field(self, field: 'OEFieldBase', matchMeta: 'bool'=False) -> "bool":
        """
        has_field(OERecord self, OEFieldBase field, bool matchMeta=False) -> bool
        has_field(OERecord self, OEFieldBase field) -> bool
        """
        return _oechem.OERecord_has_field(self, field, matchMeta)


    def has_value(self, field: 'OEFieldBase') -> "bool":
        """has_value(OERecord self, OEFieldBase field) -> bool"""
        return _oechem.OERecord_has_value(self, field)


    def add_field(self, f: 'OEFieldBase') -> "bool":
        """add_field(OERecord self, OEFieldBase f) -> bool"""
        return _oechem.OERecord_add_field(self, f)


    def check_field(self, field: 'OEFieldBase', matchMeta: 'bool'=False) -> "unsigned int":
        """
        check_field(OERecord self, OEFieldBase field, bool matchMeta=False) -> unsigned int
        check_field(OERecord self, OEFieldBase field) -> unsigned int
        """
        return _oechem.OERecord_check_field(self, field, matchMeta)


    def is_na(self, *args) -> "bool":
        """
        is_na(OERecord self, OEFieldBase field) -> bool
        is_na(OERecord self, std::string const & fieldName) -> bool
        """
        return _oechem.OERecord_is_na(self, *args)


    def clear_value(self, f: 'OEFieldBase') -> "bool":
        """clear_value(OERecord self, OEFieldBase f) -> bool"""
        return _oechem.OERecord_clear_value(self, f)


    def delete_field(self, f: 'OEFieldBase') -> "bool":
        """delete_field(OERecord self, OEFieldBase f) -> bool"""
        return _oechem.OERecord_delete_field(self, f)


    def get_record_meta(self) -> "OEDataFlow::OERecordMeta":
        """get_record_meta(OERecord self) -> OERecordMeta"""
        return _oechem.OERecord_get_record_meta(self)


    def set_record_meta(self, meta: 'OERecordMeta') -> "void":
        """set_record_meta(OERecord self, OERecordMeta meta)"""
        return _oechem.OERecord_set_record_meta(self, meta)


    def get_field_meta(self, name: 'std::string const &') -> "OEDataFlow::OEFieldMeta":
        """get_field_meta(OERecord self, std::string const & name) -> OEFieldMeta"""
        return _oechem.OERecord_get_field_meta(self, name)


    def get_source_id(self) -> "std::string":
        """get_source_id(OERecord self) -> std::string"""
        return _oechem.OERecord_get_source_id(self)


    def set_source_id(self, id: 'std::string const &') -> "void":
        """set_source_id(OERecord self, std::string const & id)"""
        return _oechem.OERecord_set_source_id(self, id)


    def clear(self) -> "void":
        """clear(OERecord self)"""
        return _oechem.OERecord_clear(self)


    def is_empty(self) -> "bool":
        """is_empty(OERecord self) -> bool"""
        return _oechem.OERecord_is_empty(self)


    def flush(self) -> "void":
        """flush(OERecord self)"""
        return _oechem.OERecord_flush(self)


    def has_child_records(self, f: 'OEFieldBase') -> "bool":
        """has_child_records(OERecord self, OEFieldBase f) -> bool"""
        return _oechem.OERecord_has_child_records(self, f)


    def get_child_record(self, *args) -> "OEDataFlow::OERecord &":
        """
        get_child_record(OERecord self, OEFieldBase f, std::string const & key) -> OERecord
        get_child_record(OERecord self, OEFieldBase f, int key) -> OERecord
        """
        return _oechem.OERecord_get_child_record(self, *args)


    def has_child_record(self, *args) -> "bool":
        """
        has_child_record(OERecord self, OEFieldBase f, std::string const & key) -> bool
        has_child_record(OERecord self, OEFieldBase f, int key) -> bool
        """
        return _oechem.OERecord_has_child_record(self, *args)


    def _get_child_bytes(self, f: 'OEFieldBase') -> "OEDataFlow::OEBytes":
        """_get_child_bytes(OERecord self, OEFieldBase f) -> OEUCharVector"""
        return _oechem.OERecord__get_child_bytes(self, f)


    def _set_child_bytes(self, f: 'OEFieldBase', b: 'OEUCharVector') -> "bool":
        """_set_child_bytes(OERecord self, OEFieldBase f, OEUCharVector b) -> bool"""
        return _oechem.OERecord__set_child_bytes(self, f, b)


    def set_value(self, f: 'OEFieldBase', val: 'PyObject *') -> "PyObject *":
        """set_value(OERecord self, OEFieldBase f, PyObject * val) -> PyObject *"""
        return _oechem.OERecord_set_value(self, f, val)


    def get_reference(self, f: 'OEFieldBase') -> "PyObject *":
        """get_reference(OERecord self, OEFieldBase f) -> PyObject *"""
        return _oechem.OERecord_get_reference(self, f)


    def set_reference(self, f: 'OEFieldBase', val: 'PyObject *') -> "PyObject *":
        """set_reference(OERecord self, OEFieldBase f, PyObject * val) -> PyObject *"""
        return _oechem.OERecord_set_reference(self, f, val)


    def get_value(self, f: 'OEFieldBase') -> "PyObject *":
        """get_value(OERecord self, OEFieldBase f) -> PyObject *"""
        return _oechem.OERecord_get_value(self, f)


    def get_field(self, name: 'std::string const &', include_meta: 'bool'=True) -> "PyObject *":
        """
        get_field(OERecord self, std::string const & name, bool include_meta=True) -> PyObject
        get_field(OERecord self, std::string const & name) -> PyObject *
        """
        return _oechem.OERecord_get_field(self, name, include_meta)


    def get_fields(self, include_meta: 'bool'=False) -> "PyObject *":
        """
        get_fields(OERecord self, bool include_meta=False) -> PyObject
        get_fields(OERecord self) -> PyObject *
        """
        return _oechem.OERecord_get_fields(self, include_meta)


    def _format_value(self, field: 'OEFieldBase') -> "PyObject *":
        """_format_value(OERecord self, OEFieldBase field) -> PyObject *"""
        return _oechem.OERecord__format_value(self, field)


    def get_child_records(self, *args) -> "PyObject *":
        """
        get_child_records(OERecord self, OEFieldBase f) -> std::map< std::string,OEDataFlow::OERecord >
        get_child_records(OERecord self, OEFieldBase field) -> PyObject
        get_child_records(OERecord self) -> PyObject *
        """
        return _oechem.OERecord_get_child_records(self, *args)


    def _get_meta(self, field: 'OEFieldBase') -> "OEDataFlow::OEFieldMeta":
        """_get_meta(OERecord self, OEFieldBase field) -> OEFieldMeta"""
        return _oechem.OERecord__get_meta(self, field)

OERecord_swigregister = _oechem.OERecord_swigregister
OERecord_swigregister(OERecord)
OK = cvar.OK
NoSuchField = cvar.NoSuchField
NoValue = cvar.NoValue
NullValue = cvar.NullValue
TypeMismatch = cvar.TypeMismatch
MetadataMismatch = cvar.MetadataMismatch

def OERecord_get_version() -> "std::string":
    """OERecord_get_version() -> std::string"""
    return _oechem.OERecord_get_version()


def OERecordToJSON(record: 'OERecord') -> "std::string":
    """OERecordToJSON(OERecord record) -> std::string"""
    return _oechem.OERecordToJSON(record)

def OERecordFromJSON(record: 'OERecord', js: 'std::string const &') -> "bool":
    """OERecordFromJSON(OERecord record, std::string const & js) -> bool"""
    return _oechem.OERecordFromJSON(record, js)

def OERecordToBytes(record: 'OERecord') -> "OEDataFlow::OEBytes":
    """OERecordToBytes(OERecord record) -> OEUCharVector"""
    return _oechem.OERecordToBytes(record)

def OERecordFromBytes(record: 'OERecord', buf: 'OEUCharVector') -> "bool":
    """OERecordFromBytes(OERecord record, OEUCharVector buf) -> bool"""
    return _oechem.OERecordFromBytes(record, buf)

def OEReadRecord(*args) -> "bool":
    """
    OEReadRecord(OERecord record, oeistream ifs, std::string const & fmt) -> bool
    OEReadRecord(OERecord record, oeistream ifs) -> bool
    """
    return _oechem.OEReadRecord(*args)

def OEWriteRecord(*args) -> "bool":
    """
    OEWriteRecord(oeostream ofs, OERecord rec, std::string const & fmt) -> bool
    OEWriteRecord(oeostream ofs, OERecord rec) -> bool
    """
    return _oechem.OEWriteRecord(*args)

def OEReadRecordBytes(ifs: 'oeistream') -> "OEDataFlow::OEBytes":
    """OEReadRecordBytes(oeistream ifs) -> OEUCharVector"""
    return _oechem.OEReadRecordBytes(ifs)

def OEFieldMetaToJSON(meta: 'OEFieldMeta') -> "std::string":
    """OEFieldMetaToJSON(OEFieldMeta meta) -> std::string"""
    return _oechem.OEFieldMetaToJSON(meta)

def OEFieldMetaFromJSON(meta: 'OEFieldMeta', json: 'std::string const &', clear: 'bool'=True) -> "bool":
    """
    OEFieldMetaFromJSON(OEFieldMeta meta, std::string const & json, bool clear=True) -> bool
    OEFieldMetaFromJSON(OEFieldMeta meta, std::string const & json) -> bool
    """
    return _oechem.OEFieldMetaFromJSON(meta, json, clear)

def OEMakePrimaryMolField(*args) -> "OEPrimaryMolField":
    """
    OEMakePrimaryMolField(std::string const name, OEFieldMeta meta, bool readonly=False) -> OEPrimaryMolField
    OEMakePrimaryMolField(std::string const name, OEFieldMeta meta) -> OEPrimaryMolField
    OEMakePrimaryMolField(std::string const name) -> OEPrimaryMolField
    OEMakePrimaryMolField() -> OEPrimaryMolField
    """
    return _oechem.OEMakePrimaryMolField(*args)
class OEMolRecord(OERecord):
    """Proxy of C++ OEDataFlow::OEMolRecord 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__(OEDataFlow::OEMolRecord self) -> OEMolRecord
        __init__(OEDataFlow::OEMolRecord self, OERecord other) -> OEMolRecord
        """
        this = _oechem.new_OEMolRecord(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def get_primary_mol_field(self, *args) -> "OEDataFlow::OEField< OEChem::OEMol >":
        """
        get_primary_mol_field(OEMolRecord self, std::string const defName, OEFieldMeta meta) -> OEMolField
        get_primary_mol_field(OEMolRecord self, std::string const defName) -> OEMolField
        get_primary_mol_field(OEMolRecord self) -> OEMolField
        """
        return _oechem.OEMolRecord_get_primary_mol_field(self, *args)


    def has_mol(self, *args) -> "bool":
        """
        has_mol(OEMolRecord self, OEFieldBase field) -> bool
        has_mol(OEMolRecord self) -> bool
        """
        return _oechem.OEMolRecord_has_mol(self, *args)


    def get_conf_record(self, conf: 'OEConfBase') -> "OEDataFlow::OERecord":
        """get_conf_record(OEMolRecord self, OEConfBase conf) -> OERecord"""
        return _oechem.OEMolRecord_get_conf_record(self, conf)


    def get_atom_record(self, atom: 'OEAtomBase') -> "OEDataFlow::OERecord":
        """get_atom_record(OEMolRecord self, OEAtomBase atom) -> OERecord"""
        return _oechem.OEMolRecord_get_atom_record(self, atom)


    def get_bond_record(self, bond: 'OEBondBase') -> "OEDataFlow::OERecord":
        """get_bond_record(OEMolRecord self, OEBondBase bond) -> OERecord"""
        return _oechem.OEMolRecord_get_bond_record(self, bond)


    def set_conf_record(self, conf: 'OEConfBase', record: 'OERecord') -> "void":
        """set_conf_record(OEMolRecord self, OEConfBase conf, OERecord record)"""
        return _oechem.OEMolRecord_set_conf_record(self, conf, record)


    def set_atom_record(self, atom: 'OEAtomBase', record: 'OERecord') -> "void":
        """set_atom_record(OEMolRecord self, OEAtomBase atom, OERecord record)"""
        return _oechem.OEMolRecord_set_atom_record(self, atom, record)


    def set_bond_record(self, bond: 'OEBondBase', record: 'OERecord') -> "void":
        """set_bond_record(OEMolRecord self, OEBondBase bond, OERecord record)"""
        return _oechem.OEMolRecord_set_bond_record(self, bond, record)


    def has_conf_record(self, conf: 'OEConfBase') -> "bool":
        """has_conf_record(OEMolRecord self, OEConfBase conf) -> bool"""
        return _oechem.OEMolRecord_has_conf_record(self, conf)


    def has_atom_record(self, atom: 'OEAtomBase') -> "bool":
        """has_atom_record(OEMolRecord self, OEAtomBase atom) -> bool"""
        return _oechem.OEMolRecord_has_atom_record(self, atom)


    def has_bond_record(self, bond: 'OEBondBase') -> "bool":
        """has_bond_record(OEMolRecord self, OEBondBase bond) -> bool"""
        return _oechem.OEMolRecord_has_bond_record(self, bond)


    def delete_conf_record(self, conf: 'OEConfBase') -> "bool":
        """delete_conf_record(OEMolRecord self, OEConfBase conf) -> bool"""
        return _oechem.OEMolRecord_delete_conf_record(self, conf)


    def delete_atom_record(self, atom: 'OEAtomBase') -> "bool":
        """delete_atom_record(OEMolRecord self, OEAtomBase atom) -> bool"""
        return _oechem.OEMolRecord_delete_atom_record(self, atom)


    def delete_bond_record(self, bond: 'OEBondBase') -> "bool":
        """delete_bond_record(OEMolRecord self, OEBondBase bond) -> bool"""
        return _oechem.OEMolRecord_delete_bond_record(self, bond)


    def GetBondRecords(self, field: 'OEMolField') -> "std::map< std::string,OEDataFlow::OERecord >":
        """GetBondRecords(OEMolRecord self, OEMolField field) -> std::map< std::string,OEDataFlow::OERecord >"""
        return _oechem.OEMolRecord_GetBondRecords(self, field)


    def GetAtomRecords(self, field: 'OEMolField') -> "std::map< std::string,OEDataFlow::OERecord >":
        """GetAtomRecords(OEMolRecord self, OEMolField field) -> std::map< std::string,OEDataFlow::OERecord >"""
        return _oechem.OEMolRecord_GetAtomRecords(self, field)


    def get_mol(self, *args) -> "PyObject *":
        """
        get_mol(OEMolRecord self, OEFieldBase f) -> PyObject
        get_mol(OEMolRecord self) -> PyObject *
        """
        return _oechem.OEMolRecord_get_mol(self, *args)


    def get_mol_reference(self, *args) -> "PyObject *":
        """
        get_mol_reference(OEMolRecord self, OEFieldBase f) -> PyObject
        get_mol_reference(OEMolRecord self) -> PyObject *
        """
        return _oechem.OEMolRecord_get_mol_reference(self, *args)


    def set_mol(self, *args) -> "PyObject *":
        """
        set_mol(OEMolRecord self, OEChem::OEMol const & mol, OEFieldBase field, OEFieldMeta meta) -> bool
        set_mol(OEMolRecord self, OEChem::OEMol const & mol, OEFieldBase field) -> bool
        set_mol(OEMolRecord self, OEChem::OEMol const & mol) -> bool
        set_mol(OEMolRecord self, PyObject * mol, OEFieldBase f, OEFieldMeta meta) -> PyObject
        set_mol(OEMolRecord self, PyObject * mol, OEFieldBase f) -> PyObject
        set_mol(OEMolRecord self, PyObject * mol) -> PyObject *
        """
        return _oechem.OEMolRecord_set_mol(self, *args)


    def set_mol_reference(self, *args) -> "PyObject *":
        """
        set_mol_reference(OEMolRecord self, PyObject * mol, OEFieldBase f) -> PyObject
        set_mol_reference(OEMolRecord self, PyObject * mol) -> PyObject *
        """
        return _oechem.OEMolRecord_set_mol_reference(self, *args)


    def get_conf_records(self, *args) -> "PyObject *":
        """
        get_conf_records(OEMolRecord self, OEFieldBase f) -> PyObject
        get_conf_records(OEMolRecord self) -> PyObject *
        """
        return _oechem.OEMolRecord_get_conf_records(self, *args)


    def get_bond_records(self, *args) -> "PyObject *":
        """
        get_bond_records(OEMolRecord self, OEFieldBase f) -> PyObject
        get_bond_records(OEMolRecord self) -> PyObject *
        """
        return _oechem.OEMolRecord_get_bond_records(self, *args)


    def get_atom_records(self, *args) -> "PyObject *":
        """
        get_atom_records(OEMolRecord self, OEFieldBase f) -> PyObject
        get_atom_records(OEMolRecord self) -> PyObject *
        """
        return _oechem.OEMolRecord_get_atom_records(self, *args)

    __swig_destroy__ = _oechem.delete_OEMolRecord
    __del__ = lambda self: None
OEMolRecord_swigregister = _oechem.OEMolRecord_swigregister
OEMolRecord_swigregister(OEMolRecord)
Record = cvar.Record


def OEReadMolRecord(*args) -> "bool":
    """
    OEReadMolRecord(OEMolRecord record, oeistream ifs, std::string const & fmt) -> bool
    OEReadMolRecord(OEMolRecord record, oeistream ifs) -> bool
    """
    return _oechem.OEReadMolRecord(*args)
class OEROCMolType(OEMolType):
    """Proxy of C++ OEDataFlow::OEROCMolType 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__ = _oechem.delete_OEROCMolType
    __del__ = lambda self: None

    def __init__(self):
        """__init__(OEDataFlow::OEROCMolType self) -> OEROCMolType"""
        this = _oechem.new_OEROCMolType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OEROCMolType_swigregister = _oechem.OEROCMolType_swigregister
OEROCMolType_swigregister(OEROCMolType)


def OEInitMolFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitMolFieldHandler() -> OEFieldTypeHandler"""
    return _oechem.OEInitMolFieldHandler()

def OEInitMolVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitMolVecFieldHandler() -> OEFieldTypeHandler"""
    return _oechem.OEInitMolVecFieldHandler()
class OEPrimaryMolField(OEMolMatchField):
    """Proxy of C++ OEDataFlow::OEPrimaryMolField 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, **kwargs):
        """__init__(OEDataFlow::OEPrimaryMolField self, std::string const default_name, OEFieldMeta meta, bool read_only=False) -> OEPrimaryMolField"""
        this = _oechem.new_OEPrimaryMolField(*args, **kwargs)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPrimaryMolField
    __del__ = lambda self: None
OEPrimaryMolField_swigregister = _oechem.OEPrimaryMolField_swigregister
OEPrimaryMolField_swigregister(OEPrimaryMolField)
Mol = cvar.Mol


def OEInitDUFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitDUFieldHandler() -> OEFieldTypeHandler"""
    return _oechem.OEInitDUFieldHandler()


class Types:
    Int = OEIntType()
    String = OEStringType()
    Float = OEFloatType()
    Bool = OEBoolType()
    Blob = OEBlobType()
    Record = OERecordType()
    IntVec = OEIntVecType()
    StringVec = OEStringVecType()
    FloatVec = OEFloatVecType()
    BoolVec = OEBoolVecType()
    BlobVec = OEBlobVecType()
    RecordVec = OERecordVecType()
    Range = OERangeType()
    JSONObject = OEJSONObjectType()
    Link = OELinkObjectType()
    class Chem:
        Mol = OEMolType()
        MolVec = OEMolVecType()
        DesignUnit = OEDesignUnitType()


# Add scalar_type for vector types
Types.IntVec.__class__.scalar_type = Types.Int
Types.StringVec.__class__.scalar_type = Types.String
Types.FloatVec.__class__.scalar_type = Types.Float
Types.BoolVec.__class__.scalar_type = Types.Bool
Types.BlobVec.__class__.scalar_type = Types.Blob
Types.RecordVec.__class__.scalar_type = Types.Record
Types.Chem.MolVec.__class__.scalar_type = Types.Chem.Mol

def __get_scalar_type(cls):
    if not hasattr(cls, 'scalar_type'):
        return None
    return cls.scalar_type

OEFieldTypeHandler.get_scalar_type = classmethod(__get_scalar_type)

Types.Int.__class__.valid_types = (int, float)
Types.Float.__class__.valid_types = (float, int)
Types.String.__class__.valid_types = (str,)
Types.Bool.__class__.valid_types = (bool,)
Types.Record.__class__.valid_types = (OERecord,)
Types.Blob.__class__.valid_types = (bytes, bytearray)
Types.JSONObject.__class__.valid_types = (dict, OEJSONObject)
Types.Range.__class__.valid_types = (OERange, tuple, list)
Types.Chem.Mol.__class__.valid_types = ()
Types.Chem.DesignUnit.__class__.valid_types = ()


# Monkey patch the OEFieldMeta constructor to allow keywords. SWIG won't because there
# are multiple overloads
def __oefieldmeta_init(self, *args, **kwargs):
    self.__init0__()
    options = []
    attributes = []
    if "options" in kwargs:
        options = kwargs["options"]
    elif len(args) > 1:
        options = args[1]
    if "attributes" in kwargs:
        attributes = kwargs["attributes"]
    elif len(args) > 2:
        attributes = args[2]
    self.set_options(options)
    for att in attributes:
        if len(att) == 2:
            self.add_attribute(att[0], att[1])

OEFieldMeta.__init0__ = OEFieldMeta.__init__
OEFieldMeta.__init__ = __oefieldmeta_init


def _validate_value(handler, val):
    if (val is None):
        return True
    if hasattr(handler, "scalar_type"):
        if not isinstance(val, (list, tuple)):
            return False
        for v in val:
            if not handler.scalar_type.validate(v) and v is not None:
                return False
    elif not isinstance(val, handler.valid_types):
        return False

# some specific built-in type validations
    if handler == Types.Int:
        if isinstance(val, float) and not val.is_integer():
            return False
        if int(val).bit_length() > 63:
            return False
    elif handler == Types.Range:
        if isinstance(val, OERange):
            return True
        try:
            tmp = OERange(val)
            return True
        except:
            return False
    elif handler == Types.Link:
        if isinstance(val, OELinkObject):
            return True
        if "domain" not in val or "resource" not in val or "id" not in val:
            return False
        if "version" not in val:
            return False

    return True


OEFieldTypeHandler.validate = _validate_value

# decorator for user handlers
def custom_handler(parent):
    if not isinstance(parent, OEFieldTypeHandler):
        msg = """Invalid type in @custom_handler decorator. Must be a valid type,
e.g., Types.Blob"""
        raise RuntimeError(msg)
    def inner(user_class):
        return type(user_class.__name__, (user_class, parent.__class__), {})
    return inner

@custom_handler(Types.Blob)
class CustomHandler:
    @staticmethod
    def get_name():
        raise NotImplementedError("You must define a get_name method for this class")

    @staticmethod
    def serialize(thing):
        raise NotImplementedError("You must define a serialize method for this class")

    @staticmethod
    def deserialize(byte_data):
        raise NotImplementedError("You must define a deserialize method for this class")

    @classmethod
    def validate(cls, thing):
        raise NotImplementedError("You must define a validate method for this class")





import inspect
import json
import math
import io

def _is_valid_handler(cls):
    if not inspect.isclass(cls):
        return False
    if not hasattr(cls, "get_name"):
        return False
    if cls is OEFieldTypeHandler:
        return False
    if not issubclass(cls, OEFieldTypeHandler):
        return False
    return True

def _get_storage_type(cls):
    if not inspect.isclass(cls):
       cls = cls.__class__
    if issubclass(cls, CustomHandler):
        return OEBlobType
    if not _is_valid_handler(cls):
        return None
    if _is_known_handler(cls().get_name()):  # it's a built-in type
        return None
    ret = None
    for c in filter(lambda a: a is not cls and _is_valid_handler(a) and _is_known_handler(a().get_name()), inspect.getmro(cls)):
        ret = c
    return ret

def record_to_json(record):
    return OERecordToJSON(record)


def record_to_dict(record):
    s = OERecordToJSON(record)
    return json.loads(s)


def record_from_bytes(record, buf):
    return OERecordFromBytes(record, buf)


def record_to_bytes(record):
    return OERecordToBytes(record)


def record_to_json(record):
    return OERecordToJSON(record)


def record_from_json(record, buf):
    return OERecordFromJSON(record, buf)

def _read_int(ifs):
    tmp = ifs.read(1)
    if len(tmp) == 0:
        return 0
    nbytes = tmp[0]
    if nbytes < 128:
        return nbytes
    nbytes -= 128
    shift = 0
    if nbytes == 1:
        val = ifs.read(1)[0]
        if val & 128:
            val -= 256
    elif nbytes == 0:
        return None
    else:
# Values is packed in multiple bytes. Unpack little-endian bytes.
        val = 0
        high_byte = 0
        while nbytes:
            high_byte = ifs.read(1)[0]
            val += high_byte << shift
            shift += 8
            nbytes -= 1
        if high_byte & 128:
            val -= 1 << shift
    return val

def _write_int(val):
    data = bytearray()
    if 0 <= val < 128:
        data.append(val)
        return bytes(data)
    nbytes = 1 + val.bit_length() // 8
    data.append(nbytes + 128)
    if val < 0:  # twos complement it
        val = (1 << (8 * nbytes)) + val
    if nbytes == 1:
        data.append(val)
        return bytes(data)
    while nbytes:
        data.append(val & 255)
        val = val >> 8
        nbytes -= 1
    return bytes(data)

def _get_record_bytes(ifs):
    result = bytearray()
    length = _read_int(ifs)
    if length == 0:
        return b''
    result += _write_int(length)
    tmp = ifs.read(length)
    result += tmp
    remaining = _read_int(ifs)
    result += _write_int(remaining)
    result += ifs.read(remaining)
    return bytes(result)

def _read_record_internal(ifs, rec, fmt):
    if isinstance(ifs, oeistream):
        pos = ifs.tell()
        size = ifs.size()
        if pos == size or not __OEReadRecordOrig(rec, ifs, fmt):
            return False
        return True 

    if fmt == "json" and hasattr(ifs, "readline"):
        line = ifs.readline()
        return record_from_json(rec, line)

# Most python io objects won't go into C++. Try some other approaches.
    try:
        pos = ifs.tell()
    except:
# Use seek-free methods of pulling a record off the stream
        if fmt == 'binary' or fmt == 'oeb':
            b = _get_record_bytes(ifs)
            if len(b) == 0:
                return False
            return record_from_bytes(rec, b)
        else:
            line = ifs.readline()
            return record_from_json(rec, line)
    if hasattr(ifs, "fileno") and hasattr(ifs, "name") and isinstance(ifs.name, str):
        orig_ifs = ifs
        ifs = oeifstream(ifs.name)
        ifs.seek(pos)
        if ifs.tell() != pos or not __OEReadRecordOrig(rec, ifs, fmt):
            ifs.close()
            orig_ifs.close()
            return False
        orig_ifs.seek(ifs.tell())
        return True 
    elif fmt == 'binary' or fmt == 'oeb':
        if hasattr(ifs, "buffer"):
            b = _get_record_bytes(ifs.buffer)
        else:
            b = _get_record_bytes(ifs)
        if len(b) == 0:
            return False
        return record_from_bytes(rec, b)
    else:
        line = ifs.readline()
        return record_from_json(rec, line)


def read_record_bytes(ifs):
# TODO: this will likely fail on SpooledTemporaryFiles and needs better logic like above
    pos = ifs.tell()
    orig_ifs = None
    if hasattr(ifs, "fileno") and hasattr(ifs, "name"):  # this is a file, not an oeistream
       orig_ifs = ifs
       ifs = oeifstream(ifs.name)
       ifs.seek(pos)
    elif isinstance(ifs, io.BytesIO):
       orig_ifs = ifs
       ifs = oeisstream(ifs.getbuffer().tobytes())
       ifs.seek(pos)

    size = ifs.size()
    ret = b""
    if pos != size:
      ret = OEReadRecordBytes(ifs)
    if len(ret) == 0: 
        ifs.close()
        if orig_ifs:
            orig_ifs.close()
        return ret
    if orig_ifs:
        orig_ifs.seek(ifs.tell())
    return ret


def read_record(ifs, fmt="binary"):
    record = OERecord()
    if _read_record_internal(ifs, record, fmt):
      return record
    return None


def write_record(ofs, record, fmt="binary"):
    using_file = hasattr(ofs, "fileno")
    if using_file:  # python file, instead of OE stream
      if fmt == "binary":
          ofs.write(record_to_bytes(record))
      else:
          ofs.write(record_to_json(record))
          ofs.write("\n")
      return True
    else:
        return OEWriteRecord_orig(ofs, record, fmt)


OEWriteRecord_orig = OEWriteRecord
OEWriteRecord = write_record


def read_records(ifs, fmt="binary"):
    record = read_record(ifs, fmt=fmt)
    while record is not None:
        yield record
        record = read_record(ifs, fmt=fmt)


OEReadRecords = read_records


def record_from_dict(record, d):
    buf = json.dumps(d)
    record_from_json(record, buf)


def read_mol_record(ifs, fmt="binary"):
    record = OEMolRecord()
    stat = _read_record_internal(ifs, record, fmt)
    if stat:
        return record
    return None


def read_mol_records(ifs, fmt="binary"):
    record = read_mol_record(ifs, fmt=fmt)
    while record is not None:
        yield record
        record = read_mol_record(ifs, fmt=fmt)


OEReadMolRecords = read_mol_records


def get_primary_mol_field(record=None, default_name="Molecule", meta=OEFieldMeta()):
    if record is None:
        return OEPrimaryMolField(default_name, meta)
    return record.get_primary_mol_field(default_name, meta)


class Constants:
    """
    This abstract class holds hierarchical constants, and allows quick reverse
    lookup for classes and names from the integers. For this to work,
    every constant in the class needs to be unique.
    """

# Uniqueness is accomplished with the _base attribute, which tells where
# the constants for a class/category begin. The first byte should be unique
# to category, second to subcategory, etc.

# _attribute_type determines whether a class is an attribute, meaning it
# takes an additional value. _attribute_type is an actual python type.
# N.B. If you need to create an attribute that is a list, make a subclass
# of list (e.g., intlist, strlist, etc.) and use that. Otherwise, if you
# have lists of different types they will not serialize properly to
# datarecords.

    _base = 0
    _attribute_type = None
    _registry = {}
    _parent = None

    def __init__(self):
        raise AttributeError("No constructor defined - class is abstract")

    @classmethod
    def get_name(cls, val):
        """
        Returns the name of an integer constant in a class, or '' if the
        integer doesn't belong to the class.
        """
        if val not in cls._registry:
            return ""
        return cls._registry[val][0]

    @classmethod
    def get_class(cls, val):
        """
        Returns the class of an integer constant or None if the integer
        doesn't belong to the class.
        """
        if val not in cls._registry:
            return None
        return cls._registry[val][1]

    @classmethod
    def get_short_name(cls, val):
        """
        Returns the short name of an integer constant in a class, or '' if the
        integer doesn't belong to the class.
        """
        if val not in cls._registry:
            return ""
        owning_class = cls._registry[val][1]
        return owning_class.get_name(val)

    @classmethod
    def is_category(cls, val):
        """
        Returns True if constant 'val' belongs to this category.
        """
        return val & 0xFF000000 == cls._base

    @classmethod
    def is_subcategory(cls, val):
        """
        Returns True if constant 'val' belongs to this subcategory.
        """
        return val & 0xFFFF0000 == cls._base

    @classmethod
    def is_subsubcategory(cls, val):
        """
        Returns True if constant 'val' belongs to this sub-subcategory.
        """
        return val & 0xFFFFFF00 == cls._base

    @classmethod
    def is_attribute(cls):
        """
        Returns True if the class is an attribute (requires arguments) vs.
        an option.
        """
        return cls._attribute_type is not None

    @classmethod
    def attribute_type(cls):
        """
        Returns the data type required by this attribute.
        """
        return cls._attribute_type

    @classmethod
    def get_value_from_name(cls, name):
        entry = [i for i in cls._registry.items() if i[1][0] == name]
        if len(entry):
            return entry[0][0]
        return None

    @classmethod
    def initialize(cls):
        """
        Creates an internal dict that maps the integer constant values to
        their names and owning classes. This allows quick lookup of constants'
        names and classes. If any inner classes are injected into this class,
        this method must be called afterward for the injected constants to work.
        """
        cls._registry = {}
        cls._parent = None
        for name in dir(cls):
            if name.startswith("_"):
                continue
            d = getattr(cls, name)
            if isinstance(d, int):
# Found a constant, log its name and class
                ret = name, cls
                cls._registry[d] = ret
            elif hasattr(d, "_base"):
# Found an inner class, descend into it
                child_registry = d.initialize()
                d._parent = cls
                for key in child_registry:
                    child_name, retcls = child_registry[key]
                    cls._registry[key] = name + "." + child_name, retcls
        return dict(cls._registry)

    @classmethod
    def get_values(cls):
        for i in dir(cls):
            if i.startswith("_"):
                continue
            d = getattr(cls, i)
            if isinstance(d, int):
                yield d
            elif hasattr(d, "_base"):
                kids = d.get_values()
                for k in kids:
                    yield k

    @classmethod
    def find(cls, query):
        ret = []
        for i in cls.get_values():
            name = cls.get_name(i)
            if query.lower() in name.lower():
                ret.append(name)
        print(", ".join(ret))

    @classmethod
    def list(cls):
        classes = []
        vals = []
        for i in dir(cls):
            if i[0] == "_":
                continue
            c = getattr(cls, i)
            if inspect.isclass(c):
                if i[0].islower():
                    continue
                classes.append(i)
            elif type(c) is int:
                name = cls.get_name(c)
                if name is not None:
                    vals.append(name)
        result = ""
        if classes:
            result = "Categories: " + ", ".join(classes)
        if vals:
            part2 = "Values: " + ", ".join(vals)
            if result:
                result += "\n" + part2
            else:
                result = part2
        print(result)

    @classmethod
    def get_parent(cls):
        return cls._parent

    @classmethod
    def register(cls, key, val=None):
        if type(val) is int:
            setattr(cls, key, val + cls._base)
        elif inspect.isclass(key):
            setattr(cls, key.__name__, key)

        top = cls
        while top._parent is not None:
            top = top._parent
        top.initialize()


class Meta(Constants):
    """
    A class containing metadata constants used by the :py:class:`OEFieldMeta`
    and :py:class:`OERecordMeta` classes.
    """

# _base keeps our constants separated by category/subcategory. If the
# first byte is unique to category and second is unique to sub-category,
# we can identify category membership quickly
    _base = 0xFFFF0000

    class Annotation(Constants):
        """
        A class defining annotation attributes. Attribute type is str.

        .. py:data:: Description
        .. py:data:: Author
        .. py:data:: Comments
        """

        _base = 0x02000000
        _attribute_type = str

        Description = _base + 1
        Author = _base + 2
        Comments = _base + 3

    class Source(Constants):
        """
        A class defining column source attributes. Attribute type is str.

        .. py:data:: ID
        .. py:data:: JobID
        .. py:data:: ServiceID
        .. py:data:: Version
        .. py:data:: Query
        """

        _base = 0x03000000
        _attribute_type = str

        ID = _base + 1
        JobID = _base + 2
        ServiceID = _base + 3
        Version = _base + 4
        Query = _base + 5

    class Flags(Constants):
        """
        A class defining column option flags.

        .. py:data:: ID
        .. py:data:: Deprecated
        .. py:data:: Range
        .. py:data:: Categorical
        .. py:data:: Ordinal
        .. py:data:: Invalid
        .. py:data:: Readonly
        .. py:data:: DoNotSave
        .. py:data:: Independent
        .. py:data:: Experimental
        .. py:data:: Calculated
        .. py:data:: SDData
        .. py:data:: GenericData
        .. py:data:: PDBData
        .. py:data:: UserCreated
        .. py:data:: Optional
        .. py:data:: Predicted
        """

        _base = 0x04000000

        ID = _base + 1
        Deprecated = _base + 2
        Range = _base + 3
        Categorical = _base + 4
        Ordinal = _base + 5
        Invalid = _base + 6
        Readonly = _base + 7
        DoNotSave = _base + 8
        Independent = _base + 9
        Experimental = _base + 10
        Calculated = _base + 11
        SDData = _base + 12
        GenericData = _base + 13
        PDBData = _base + 14
        UserCreated = _base + 15
        Optional = _base + 16
        Predicted = _base + 17

    class Hints(Constants):
        """
        A class defining interpretation hint options for column data.

        .. py:data:: Image
        .. py:data:: Image_SVG
        .. py:data:: Image_PNG
        .. py:data:: Image_JPG
        .. py:data:: Date
        .. py:data:: URL
        .. py:data:: ImageURL
        .. py:data:: LargerValuesBetter
        .. py:data:: SmallerValuesBetter
        .. py:data:: ShardID
        .. py:data:: ClusterID
        .. py:data:: ClusterHead
        .. py:data:: ClusterX
        .. py:data:: ClusterY
        """

        _base = 0x05000000

        Image = _base + 1
        Image_SVG = _base + 2
        Image_PNG = _base + 3
        Image_JPG = _base + 4
        Date = _base + 5
        URL = _base + 6
        ImageURL = _base + 7
        LargerValuesBetter = _base + 8
        SmallerValuesBetter = _base + 9
        ShardID = _base + 10
        ClusterID = _base + 11
        ClusterHead = _base + 12
        ClusterX = _base + 13
        ClusterY = _base + 14

        class Chem(Constants):
            """
            Chemistry-specific Hints.

            .. py:data:: PrimaryMol
            .. py:data:: SMILES
            .. py:data:: SMARTS
            .. py:data:: Protein
            .. py:data:: Receptor
            .. py:data:: Conformer
            .. py:data:: Reaction
            .. py:data:: Markush
            .. py:data:: FingerPrint
            .. py:data:: SelectivityTarget
            .. py:data:: PrimaryTarget
            .. py:data:: Ligand
            .. py:data:: Query
            .. py:data:: MolReference
            .. py:data:: ProteinSequence
            .. py:data:: DNASequence
            .. py:data:: RNASequence
            .. py:data:: InChi
            .. py:data:: InChiKey
            .. py:data:: OrionMolURL
            .. py:data:: ChemicalName
            """

            _base = 0x05010000

            PrimaryMol = _base + 1
            SMILES = _base + 2
            SMARTS = _base + 3
            Protein = _base + 4
            Receptor = _base + 5
            Conformer = _base + 6
            Reaction = _base + 7
            Markush = _base + 8
            FingerPrint = _base + 9
            SelectivityTarget = _base + 10
            PrimaryTarget = _base + 11
            Ligand = _base + 12
            Query = _base + 13
            MolReference = _base + 14
            ProteinSequence = _base + 15
            DNASequence = _base + 16
            RNASequence = _base + 17
            InChi = _base + 18
            InChiKey = _base + 19
            OrionMolURL = _base + 20
            ChemicalName = _base + 21
            RotorOffsetCompression = _base + 22
            GraphMol = _base + 23
            Virtual = _base + 24
            VirtualID = _base + 25

    class Display(Constants):
        """
        A class defining hints for how to display information.

        .. py:data:: Hidden
        .. py:data:: AsMean
        .. py:data:: AsRange
        .. py:data:: Precision1
        .. py:data:: Precision2
        .. py:data:: Precision3
        .. py:data:: Precision4
        .. py:data:: PreferLog
        .. py:data:: ColorBy
        .. py:data:: MarkerBy
        .. py:data:: SizeBy
        .. py:data:: XAxis
        .. py:data:: YAxis
        """

        _base = 0x06000000

        Hidden = _base + 1
        AsMean = _base + 2
        AsRange = _base + 3
        Precision1 = _base + 4
        Precision2 = _base + 5
        Precision3 = _base + 6
        Precision4 = _base + 7
        PreferLog = _base + 8
        ColorBy = _base + 9
        MarkerBy = _base + 10
        SizeBy = _base + 11
        XAxis = _base + 12
        YAxis = _base + 13
        Rating = _base + 14

        class Chem(Constants):
            _base = 0x06010000
            AsDepiction = _base + 1

        class Values(Constants):
            _base = 0x06020000
            Priority = _base + 1
            Precision = _base + 2

    class Relations(Constants):
        """
        A class defining relationship attributes to other columns. The
        attribute type is str, for column names.

        .. py:data:: ChildOf
        .. py:data:: UnitsFor
        .. py:data:: ErrorsFor
        .. py:data:: DetailsFor
        .. py:data:: MeanFor
        .. py:data:: GroupID
        .. py:data:: ReplacedBy
        .. py:data:: AppliesTo
        .. py:data:: CommentFor
        .. py:data:: MeasurementUpperLimitFor
        .. py:data:: MeasurementLowerLimitFor
        .. py:data:: QualifierFor
        .. py:data:: SplitFrom
        """

        _base = 0x07000000
        _attribute_type = str

        ErrorsFor = _base + 2
        ChildOf = _base + 3
        UnitsFor = _base + 4
        DetailsFor = _base + 5
        MeanFor = _base + 7
        GroupID = _base + 8
        ReplacedBy = _base + 9
        AppliesTo = _base + 10
        CommentFor = _base + 12
        MeasurementUpperLimitFor = _base + 13
        MeasurementLowerLimitFor = _base + 14
        QualifierFor = _base + 15
        SplitFrom = _base + 16

        class Chem(Constants):
            """
            Chemistry-specific Relations. Attribute type is str.

            .. py:data:: MolDataFor
            .. py:data:: ConfDataFor
            .. py:data:: AtomDataFor
            .. py:data:: BondDataFor
            .. py:data:: LigandFor
            .. py:data:: ReceptorFor
            .. py:data:: QueryFor
            """

            _base = 0x07010000
            _attribute_type = str

            MolDataFor = _base + 1
            ConfDataFor = _base + 2
            AtomDataFor = _base + 3
            BondDataFor = _base + 4
            LigandFor = _base + 5
            ReceptorFor = _base + 6
            QueryFor = _base + 7

    class Units(Constants):
        """
        A class defining unit options for columns.
        """

        _base = 0x08000000

        class Concentration(Constants):
            """
            Concentration Units

            .. py:data:: M
            .. py:data:: mM
            .. py:data:: uM
            .. py:data:: nM
            .. py:data:: mg_per_kg
            .. py:data:: ng_per_ml
            .. py:data:: ppm
            .. py:data:: ppb
            """

            _base = 0x08010000
            M = _base + 1
            mM = _base + 2
            uM = _base + 3
            nM = _base + 4
            mg_per_kg = _base + 5
            ng_per_ml = _base + 6
            ppm = _base + 7
            ppb = _base + 8

        class Energy(Constants):
            """
            Energy Units

            .. py:data:: Cal
            .. py:data:: kCal
            .. py:data:: J
            .. py:data:: kJ
            .. py:data:: Hartree
            .. py:data:: eV
            .. py:data:: kCal_per_mol
            .. py:data:: kJ_per_mol
            .. py:data:: kT
            .. py:data:: RT
            """

            _base = 0x08020000
            Cal = _base + 1
            kCal = _base + 2
            J = _base + 3
            kJ = _base + 4
            Hartree = _base + 5
            eV = _base + 6
            kCal_per_mol = _base + 7
            kJ_per_mol = _base + 8
            kT = _base + 9
            RT = _base + 10

        class Entropy(Constants):
            """
            Entropy Units

            .. py:data:: kCal_per_mol_K
            .. py:data:: kJ_per_mol_K
            """

            _base = 0x08090000
            kCal_per_mol_K = _base + 1
            kJ_per_mol_K = _base + 2

        class Velocity(Constants):
            """
            Velocity Units

            .. py:data:: m_per_s
            .. py:data:: A_per_ps
            """

            _base = 0x080A0000
            m_per_s = _base + 1
            A_per_ps = _base + 2

        class Density(Constants):
            """
            Density Units

            .. py:data:: e_per_A3
            .. py:data:: n_per_A3
            """

            _base = 0x080B0000
            e_per_A3 = _base + 1
            n_per_A3 = _base + 2
            item_per_m3 = _base + 3
            item_per_cm3 = _base + 4

        class Amount(Constants):
            """
            Amount Units

            .. py:data:: Mol
            .. py:data:: Item
            """

            _base = 0x080C0000
            Mol = _base + 1
            Item = _base + 2

        class Charge(Constants):
            """
            Charge Units

            .. py:data:: Coulomb
            .. py:data:: PlanckCharge
            """

            _base = 0x080D0000
            Coulomb = _base + 1
            PlanckCharge = _base + 2

        class Angle(Constants):
            """
            Angle Units

            .. py:data:: rad
            .. py:data:: deg
            """

            _base = 0x080E0000
            rad = _base + 1
            deg = _base + 2

        class Force(Constants):
            """
            Force Units

            .. py:data:: N
            .. py:data:: dyn
            .. py:data:: H_per_Bohr
            .. py:data:: eV_per_A
            .. py:data:: kJ_per_mol_rad
            .. py:data:: kJ_per_mol_nm
            .. py:data:: kJ_per_mol_A
            .. py:data:: kCal_per_mol_rad
            .. py:data:: kCal_per_mol_nm
            .. py:data:: kCal_per_mol_A
            """

            _base = 0x080F0000
            N = _base + 1
            dyn = _base + 2
            H_per_Bohr = _base + 3
            eV_per_A = _base + 4
            kJ_per_mol_rad = _base + 5
            kJ_per_mol_nm = _base + 6
            kJ_per_mol_A = _base + 7
            kCal_per_mol_rad = _base + 8
            kCal_per_mol_nm = _base + 9
            kCal_per_mol_A = _base + 10

        class Power(Constants):
            """
            Power Units

            .. py:data:: W
            """

            _base = 0x08100000
            W = _base + 1

        class Current(Constants):
            """
            Current Units

            .. py:data:: A
            .. py:data:: mA
            .. py:data:: uA
            """

            _base = 0x08110000
            A = _base + 1
            mA = _base + 2
            uA = _base + 3

        class ElectricalPotential(Constants):
            """
            Potential Units

            .. py:data:: V
            """

            _base = 0x08120000
            V = _base + 1

        class MagneticField(Constants):
            """
            Magnetic Field Units

            .. py:data:: T
            .. py:data:: G
            """

            _base = 0x08130000
            T = _base + 1
            G = _base + 2

        class Pressure(Constants):
            """
            Pressure Units

            .. py:data:: Pa
            .. py:data:: kPa
            .. py:data:: bar
            .. py:data:: atm
            .. py:data:: mmHg
            .. py:data:: torr
            """

            _base = 0x08140000
            Pa = _base + 1
            kPa = _base + 2
            bar = _base + 3
            atm = _base + 4
            mmHg = _base + 5
            tor = _base + 6

        class DipoleMoment(Constants):
            """
            Dipole Moment Units

            .. py:data:: D
            .. py:data:: statCm
            """

            _base = 0x08150000
            D = _base + 1
            statCm = _base + 2

        class Length(Constants):
            """
            Length Units

            .. py:data:: m
            .. py:data:: mm
            .. py:data:: um
            .. py:data:: nm
            .. py:data:: A
            .. py:data:: Bohr
            """

            _base = 0x08030000
            m = _base + 1
            mm = _base + 2
            um = _base + 3
            nm = _base + 4
            Ang = _base + 5
            Bohr = _base + 6

        class Time(Constants):
            """
            Time Units

            .. py:data:: s
            .. py:data:: ms
            .. py:data:: us
            .. py:data:: ns
            .. py:data:: ps
            .. py:data:: fs
            .. py:data:: days
            .. py:data:: min
            .. py:data:: hours
            """

            _base = 0x08040000
            s = _base + 1
            ms = _base + 2
            us = _base + 3
            ns = _base + 4
            ps = _base + 5
            fs = _base + 6
            days = _base + 7
            min = _base + 8
            hours = _base + 9

        class Mass(Constants):
            """
            Mass Units

            .. py:data:: kg
            .. py:data:: g
            .. py:data:: mg
            .. py:data:: ug
            .. py:data:: ng
            .. py:data:: Da

            """

            _base = 0x08050000
            kg = _base + 1
            g = _base + 2
            mg = _base + 3
            ug = _base + 4
            ng = _base + 5
            Da = _base + 6

        class Volume(Constants):
            """
            Volume Units

            .. py:data:: l
            .. py:data:: ml
            .. py:data:: ul
            .. py:data:: nl
            .. py:data:: A3
            """

            _base = 0x08060000
            l = _base + 1
            ml = _base + 2
            ul = _base + 3
            nl = _base + 4
            A3 = _base + 5

        class Frequency(Constants):
            """
            Frequency Units

            .. py:data:: Hz
            .. py:data:: kHz
            .. py:data:: MHz
            .. py:data:: GHz
            .. py:data:: THz
            .. py:data:: Recip_cm
            """

            _base = 0x08070000
            Hz = _base + 1
            kHz = _base + 2
            MHz = _base + 3
            GHz = _base + 4
            THz = _base + 5
            Recip_cm = _base + 6

        class Temp(Constants):
            """
            Temperature Units

            .. py:data:: C
            .. py:data:: F
            .. py:data:: K
            """

            _base = 0x08080000
            C = _base + 1
            F = _base + 2
            K = _base + 3

    class Limits(Constants):
        """
        Limits. Attribute type is float.

        .. py:data:: Lower
        .. py:data:: Upper
        """

        _base = 0x09000000
        _attribute_type = float

        Lower = _base + 1
        Upper = _base + 2

    class Constraints(Constants):
        _base = 0x0A000000
        _attribute_type = list

        AllowedValues = _base + 1
        Limits = _base + 2


class RecordMeta(Constants):
    """
    Class for record-level metadata
    """

    class Flags(Constants):
        """
        Attribute type is str.

        .. py:data:: ID
        .. py:data:: Annotation
        .. py:data:: IsSchema
        """

        _base = 0x01000000
        _attribute_type = str

        ID = _base + 1
        Annotation = _base + 2
        IsSchema = _base + 3


# Monkey patch in a [] operator for OERange for compatibility
def __oerange_getindex(self, idx):
    if idx == 0:
        return self.get_low()
    if idx == 1:
        return self.get_high()
    if idx == 2:
        return self.get_inclusivity_string()
    raise IndexError()

OERange.__getitem__ = __oerange_getindex

# Monkey patch in some python code for OERecord.set_value

def __oerecord_set_value(self, field, val):
    if field.get_user_type_name() == "":
        res = self.__set_value(field, val)
    else:
        py_handler = _get_unknown_type(field.get_user_type_name())
        if py_handler is None:
            return False

        if not py_handler.validate(val):
            return False

        base_value = py_handler.serialize(val)
        res = self.__set_value(field, base_value)

    if res is False:
        if field.get_read_only():
            msg = "Attempted to set value on a readonly field: {}".format(field.get_name())
            raise RuntimeError(msg)
        msg = "Invalid value passed to set_value: {} for field type '{}'"
        msg = msg.format(type(val).__name__, field.get_type_name())
        raise ValueError(msg)
    return res

def __oerecord_get_value(self, field):
    value = self.__get_value(field)
    if field.get_user_type_name() == "":
        return value
    py_handler = _get_unknown_type(field.get_user_type_name())
    return py_handler.deserialize(value)

OERecord.__set_value = OERecord.set_value
OERecord.set_value = __oerecord_set_value
OERecord.__get_value = OERecord.get_value
OERecord.get_value = __oerecord_get_value
OEMolRecord.mol_dr_tag = "__DRID__"


def OEField(name, dataType, meta=OEFieldMeta(), read_only=False, nullable=False):
    ret = None
    if meta is None:
        meta = OEFieldMeta()
    storage_name = None
    if isinstance(dataType, str):
        type_name = dataType
        if ":" in dataType:
            type_name, storage_name = type_name.rsplit(":", 1)
    elif inspect.isclass(dataType) and issubclass(dataType, OEFieldTypeHandler):
        dataType = dataType()
        type_name = dataType.get_name()
    elif isinstance(dataType, OEFieldTypeHandler):
        type_name = dataType.get_name()
    else:
        raise TypeError("{} is not a known data type".format(dataType))


    if not name:
        raise ValueError("Field name cannot be empty")
    if _is_known_handler(type_name):
       ret = OEMakeField(name, type_name, meta, read_only, nullable)
    else:
        if storage_name is not None:
            ret = OEMakeField(name, storage_name, meta, read_only, nullable)
            ret.set_user_type_name(type_name)
        else:
            storage_class = _get_storage_type(dataType)
            if storage_class is not None:
                ret = OEField(name, storage_class, meta, read_only, nullable)
                ret.set_user_type_name(type_name)
    return ret


def OEMatchField(name, dataType, meta=OEFieldMeta(), read_only=False, nullable=False):
    return OEMakeMatchField(name, dataType.get_name(), meta, read_only, nullable)


def __OEFieldMetaToDict(meta):
  s = OEFieldMetaToJSON(meta)
  return json.loads(s)


def __OEFieldMetaFromDict(meta, d, clear=True):
  s = json.dumps(d)
  return OEFieldMetaFromJSON(meta, s, clear)


OEFieldMeta.to_dict = __OEFieldMetaToDict
OEFieldMeta.from_dict = __OEFieldMetaFromDict

def __field_type_cmp(self, other):
  if not hasattr(other, "get_name"):
    return False
  return self.get_name() == other.get_name()

def __range_cmp(self, other):
    if isinstance(other, tuple) or isinstance(other, list):
        other = OERange(*other)
    if isinstance(other, OERange):
        return self.get_as_vector() == other.get_as_vector()
    return False

def _format_record(self, depth=0):
    space = " " * (depth * 4)
    ret = space + self.__class__.__name__ + " (\n"
    for f in self.get_fields():
        space = " " * (depth + 1) * 4
        dt_name = f.get_type_name()
        name = f.get_name()
        if not self.has_value(f):
          val = "None"
        elif self.is_na(f):
          val = "None"
        elif dt_name == Types.Record.get_name():
            v = self.get_value(f)
            val = _format_record(v, depth + 1)
        elif dt_name == Types.RecordVec.get_name():
            txts = []
            rv = self.get_value(f)
            for v in rv:
                txts.append(_format_record(v, depth + 2))
            val = "\n" + "\n".join(txts)

        else:
            val = self._format_value(f)

        pad = " "
        if isinstance(val, str) and val.startswith("\n"):
            pad = ""
        ret += space + "{}({}) :{}{}\n".format(name, dt_name, pad, val)
    ret += space + ")"
    return ret

OERecord._get_base_fields = OERecord.get_fields

def _get_fields_new(record, include_meta=False):
    ret = []
    bases = record._get_base_fields(include_meta)
    for base in bases:
      name = base.get_name()
      f = record.get_field(name)
      if f is None:
          f = base
      ret.append(f)
    return ret

OERecord.get_fields = _get_fields_new

OERecord.__repr__ = _format_record
OEMolRecord.__repr__ = _format_record


OEFieldTypeHandler.__eq__ = __field_type_cmp
OERange.__eq__ = __range_cmp

OEReadMolRecord = read_mol_record
__OEReadRecordOrig = OEReadRecord
OEReadRecord = read_record

def __get_type_from_name(name):
    field = OEMakeField('x', name)
    if field:
        return field.get_type()
    return None

Types.get_type = __get_type_from_name

def _get_known_types():
    result = []
    for c in vars(Types).values():
        if  isinstance(c, OEFieldTypeHandler):
            result.append(c.__class__)
    for c in vars(Types.Chem).values():
        if  isinstance(c, OEFieldTypeHandler):
            result.append(c.__class__)
    return result

def _find_subclass_with_name(cls, name):
  for sub in cls.__subclasses__():
    if hasattr(sub, "get_name"):
      if sub is CustomHandler:
         subsub = _find_subclass_with_name(sub, name)
         if subsub is not None:
             return subsub
         continue
# This is gross because the built-in get_name/GetName is virtual,
# but the one in custom classes is static, so the signatures can differ
      sig = inspect.signature(sub.get_name)
      if len(sig.parameters) == 1:
          subname = sub.get_name(sub())
      else:
          subname = sub.get_name()
      if subname == name:
        return sub
      else:
        subsub = _find_subclass_with_name(sub, name)
        if subsub is not None:
          return subsub
  return None

def _get_unknown_type(name):
    for c in _get_known_types():
        match = _find_subclass_with_name(c, name)
        if match:
            return match
    return None


Meta.initialize()
RecordMeta.initialize()


class OEDots(object):
    """Proxy of C++ OESystem::OEDots 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::OEDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname, char const * action) -> OEDots
        __init__(OESystem::OEDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname) -> OEDots
        __init__(OESystem::OEDots self, unsigned int bigstep, unsigned int smallstep) -> OEDots
        """
        this = _oechem.new_OEDots(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetCounts(self) -> "unsigned int":
        """GetCounts(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetCounts(self)


    def GetBigStep(self) -> "unsigned int":
        """GetBigStep(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetBigStep(self)


    def SetBigStep(self, s: 'unsigned int') -> "void":
        """SetBigStep(OEDots self, unsigned int s)"""
        return _oechem.OEDots_SetBigStep(self, s)


    def GetSmallStep(self) -> "unsigned int":
        """GetSmallStep(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetSmallStep(self)


    def SetSmallStep(self, s: 'unsigned int') -> "void":
        """SetSmallStep(OEDots self, unsigned int s)"""
        return _oechem.OEDots_SetSmallStep(self, s)


    def Total(self) -> "void":
        """Total(OEDots self)"""
        return _oechem.OEDots_Total(self)


    def Update(self, *args) -> "void":
        """
        Update(OEDots self, unsigned int step=1)
        Update(OEDots self)
        Update(OEDots self, char const symbol, unsigned int step=1)
        Update(OEDots self, char const symbol)
        """
        return _oechem.OEDots_Update(self, *args)

    __swig_destroy__ = _oechem.delete_OEDots
    __del__ = lambda self: None
OEDots_swigregister = _oechem.OEDots_swigregister
OEDots_swigregister(OEDots)
DesignUnit = cvar.DesignUnit

class OEThreadedDots(object):
    """Proxy of C++ OESystem::OEThreadedDots 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::OEThreadedDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname) -> OEThreadedDots
        __init__(OESystem::OEThreadedDots self, unsigned int bigstep, unsigned int smallstep) -> OEThreadedDots
        """
        this = _oechem.new_OEThreadedDots(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEThreadedDots
    __del__ = lambda self: None

    def Total(self) -> "void":
        """Total(OEThreadedDots self)"""
        return _oechem.OEThreadedDots_Total(self)


    def Update(self, step: 'unsigned int'=1) -> "void":
        """
        Update(OEThreadedDots self, unsigned int step=1)
        Update(OEThreadedDots self)
        """
        return _oechem.OEThreadedDots_Update(self, step)

OEThreadedDots_swigregister = _oechem.OEThreadedDots_swigregister
OEThreadedDots_swigregister(OEThreadedDots)

class OEStopwatch(object):
    """Proxy of C++ OESystem::OEStopwatch 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__(OESystem::OEStopwatch self) -> OEStopwatch"""
        this = _oechem.new_OEStopwatch()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OEStopwatch self)"""
        return _oechem.OEStopwatch_Start(self)


    def Lap(self) -> "float":
        """Lap(OEStopwatch self) -> float"""
        return _oechem.OEStopwatch_Lap(self)


    def Elapsed(self) -> "float":
        """Elapsed(OEStopwatch self) -> float"""
        return _oechem.OEStopwatch_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OEStopwatch
    __del__ = lambda self: None
OEStopwatch_swigregister = _oechem.OEStopwatch_swigregister
OEStopwatch_swigregister(OEStopwatch)

class OEWallTimer(object):
    """Proxy of C++ OESystem::OEWallTimer 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__(OESystem::OEWallTimer self) -> OEWallTimer"""
        this = _oechem.new_OEWallTimer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OEWallTimer self)"""
        return _oechem.OEWallTimer_Start(self)


    def Lap(self) -> "double":
        """Lap(OEWallTimer self) -> double"""
        return _oechem.OEWallTimer_Lap(self)


    def Elapsed(self) -> "double":
        """Elapsed(OEWallTimer self) -> double"""
        return _oechem.OEWallTimer_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OEWallTimer
    __del__ = lambda self: None
OEWallTimer_swigregister = _oechem.OEWallTimer_swigregister
OEWallTimer_swigregister(OEWallTimer)

class OECycleTimer(object):
    """Proxy of C++ OESystem::OECycleTimer 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__(OESystem::OECycleTimer self) -> OECycleTimer"""
        this = _oechem.new_OECycleTimer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OECycleTimer self)"""
        return _oechem.OECycleTimer_Start(self)


    def Lap(self) -> "OEULongLong":
        """Lap(OECycleTimer self) -> OEULongLong"""
        return _oechem.OECycleTimer_Lap(self)


    def Elapsed(self) -> "OEULongLong":
        """Elapsed(OECycleTimer self) -> OEULongLong"""
        return _oechem.OECycleTimer_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OECycleTimer
    __del__ = lambda self: None
OECycleTimer_swigregister = _oechem.OECycleTimer_swigregister
OECycleTimer_swigregister(OECycleTimer)


def OESetMemPoolMode(mode: 'unsigned int') -> "void":
    """OESetMemPoolMode(unsigned int mode)"""
    return _oechem.OESetMemPoolMode(mode)

def OEGetMemPoolMode() -> "unsigned int":
    """OEGetMemPoolMode() -> unsigned int"""
    return _oechem.OEGetMemPoolMode()

def OESetThreadSafe(arg1: 'bool') -> "void":
    """OESetThreadSafe(bool arg1)"""
    return _oechem.OESetThreadSafe(arg1)

def OEGetThreadSafe() -> "bool":
    """OEGetThreadSafe() -> bool"""
    return _oechem.OEGetThreadSafe()
class OEBaseData(object):
    """Proxy of C++ OESystem::OEBaseData 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__ = _oechem.delete_OEBaseData
    __del__ = lambda self: None

    def GetTag(self) -> "unsigned int":
        """GetTag(OEBaseData self) -> unsigned int"""
        return _oechem.OEBaseData_GetTag(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBaseData self) -> void const *"""
        return _oechem.OEBaseData_GetDataType(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEBaseData self) -> unsigned int"""
        return _oechem.OEBaseData_GetSize(self)


    def CreateCopy(self) -> "OESystem::OEBaseData *":
        """CreateCopy(OEBaseData self) -> OEBaseData"""
        return _oechem.OEBaseData_CreateCopy(self)


    def GetData(self) -> "PyObject *":
        """GetData(OEBaseData self) -> PyObject *"""
        return _oechem.OEBaseData_GetData(self)

OEBaseData_swigregister = _oechem.OEBaseData_swigregister
OEBaseData_swigregister(OEBaseData)

class OEBase(object):
    """Proxy of C++ OESystem::OEBase 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__ = _oechem.delete_OEBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBase self)"""
        return _oechem.OEBase_Clear(self)


    def SetBaseData(self, arg2: 'OEBaseData') -> "bool":
        """SetBaseData(OEBase self, OEBaseData arg2) -> bool"""
        return _oechem.OEBase_SetBaseData(self, arg2)


    def AddBaseData(self, arg2: 'OEBaseData') -> "bool":
        """AddBaseData(OEBase self, OEBaseData arg2) -> bool"""
        return _oechem.OEBase_AddBaseData(self, arg2)


    def HasData(self, *args) -> "bool":
        """
        HasData(OEBase self, char const * tag) -> bool
        HasData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_HasData(self, *args)


    def DeleteData(self, *args) -> "bool":
        """
        DeleteData(OEBase self, char const * tag) -> bool
        DeleteData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_DeleteData(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBase self) -> void const *"""
        return _oechem.OEBase_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBase self, void const * arg2) -> bool"""
        return _oechem.OEBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBase self) -> OEBase"""
        return _oechem.OEBase_CreateCopy(self)


    def GetDataIter(self, *args) -> "OESystem::OEIterBase< OESystem::OEBaseData > *":
        """
        GetDataIter(OEBase self) -> OESystem::OEIterBase< OESystem::OEBaseData >
        GetDataIter(OEBase self, unsigned int tag) -> OESystem::OEIterBase< OESystem::OEBaseData > *
        """
        return _oechem.OEBase_GetDataIter(self, *args)


    def SetBoolData(self, *args) -> "bool":
        """
        SetBoolData(OEBase self, char const * tag, bool t) -> bool
        SetBoolData(OEBase self, unsigned int tag, bool t) -> bool
        """
        return _oechem.OEBase_SetBoolData(self, *args)


    def GetBoolData(self, *args) -> "bool":
        """
        GetBoolData(OEBase self, char const * tag) -> bool
        GetBoolData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_GetBoolData(self, *args)


    def SetIntData(self, *args) -> "bool":
        """
        SetIntData(OEBase self, char const * tag, int t) -> bool
        SetIntData(OEBase self, unsigned int tag, int t) -> bool
        """
        return _oechem.OEBase_SetIntData(self, *args)


    def GetIntData(self, *args) -> "int":
        """
        GetIntData(OEBase self, char const * tag) -> int
        GetIntData(OEBase self, unsigned int tag) -> int
        """
        return _oechem.OEBase_GetIntData(self, *args)


    def SetFloatData(self, *args) -> "bool":
        """
        SetFloatData(OEBase self, char const * tag, float t) -> bool
        SetFloatData(OEBase self, unsigned int tag, float t) -> bool
        """
        return _oechem.OEBase_SetFloatData(self, *args)


    def GetFloatData(self, *args) -> "float":
        """
        GetFloatData(OEBase self, char const * tag) -> float
        GetFloatData(OEBase self, unsigned int tag) -> float
        """
        return _oechem.OEBase_GetFloatData(self, *args)


    def SetDoubleData(self, *args) -> "bool":
        """
        SetDoubleData(OEBase self, char const * tag, double t) -> bool
        SetDoubleData(OEBase self, unsigned int tag, double t) -> bool
        """
        return _oechem.OEBase_SetDoubleData(self, *args)


    def GetDoubleData(self, *args) -> "double":
        """
        GetDoubleData(OEBase self, char const * tag) -> double
        GetDoubleData(OEBase self, unsigned int tag) -> double
        """
        return _oechem.OEBase_GetDoubleData(self, *args)


    def SetStringData(self, *args) -> "bool":
        """
        SetStringData(OEBase self, char const * tag, std::string const t) -> bool
        SetStringData(OEBase self, unsigned int tag, std::string const t) -> bool
        """
        return _oechem.OEBase_SetStringData(self, *args)


    def GetStringData(self, *args) -> "std::string const &":
        """
        GetStringData(OEBase self, char const * tag) -> std::string const
        GetStringData(OEBase self, unsigned int tag) -> std::string const &
        """
        return _oechem.OEBase_GetStringData(self, *args)


    def __lt__(self, other):
        return id(self) < id(other)



    def __le__(self, other):
        return id(self) <= id(other)



    def __gt__(self, other):
        return id(self) > id(other)



    def __ge__(self, other):
        return id(self) >= id(other)



    def __eq__(self, rhs):
        if not isinstance(rhs, OEBase):
            return False
        return self._py_equal(rhs)

    def __ne__(self, rhs):
        if not isinstance(rhs, OEBase):
            return True
        return not self._py_equal(rhs)


    def _py_equal(self, rhs: 'OEBase') -> "bool":
        """_py_equal(OEBase self, OEBase rhs) -> bool"""
        return _oechem.OEBase__py_equal(self, rhs)


    def __hash__(self):
        return hash(self.__gethash__())



    def __copy__(self):
    # All copy operations are deep copies
        return self.__deepcopy__({})



    def __deepcopy__(self, memodict):
    # Use OEBase::CreateCopy to make deep copies
        return self.CreateCopy()



    def __gethash__(self) -> "unsigned int":
        """__gethash__(OEBase self) -> unsigned int"""
        return _oechem.OEBase___gethash__(self)


    def GetData(self, *args) -> "PyObject *":
        """
        GetData(OEBase self, char * tag) -> PyObject
        GetData(OEBase self, unsigned int t) -> PyObject
        GetData(OEBase self) -> PyObject *
        """
        return _oechem.OEBase_GetData(self, *args)


    def SetData(self, *args) -> "PyObject *":
        """
        SetData(OEBase self, char const * tag, PyObject * object) -> PyObject
        SetData(OEBase self, unsigned int tag, PyObject * object) -> PyObject *
        """
        return _oechem.OEBase_SetData(self, *args)


    def AddData(self, *args) -> "PyObject *":
        """
        AddData(OEBase self, char const * tag, PyObject * object) -> PyObject
        AddData(OEBase self, unsigned int tag, PyObject * object) -> PyObject *
        """
        return _oechem.OEBase_AddData(self, *args)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEBase self) -> PyObject *"""
        return _oechem.OEBase_GetDataTypeAsLong(self)

OEBase_swigregister = _oechem.OEBase_swigregister
OEBase_swigregister(OEBase)

class OEContainer(OEBase):
    """Proxy of C++ OESystem::OEContainer 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::OEContainer self) -> OEContainer
        __init__(OESystem::OEContainer self, OEBase rhs) -> OEContainer
        """
        this = _oechem.new_OEContainer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEContainer
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEContainer self) -> void const *"""
        return _oechem.OEContainer_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEContainer self, void const * type) -> bool"""
        return _oechem.OEContainer_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEContainer self) -> OEBase"""
        return _oechem.OEContainer_CreateCopy(self)

OEContainer_swigregister = _oechem.OEContainer_swigregister
OEContainer_swigregister(OEContainer)


def OECopyBaseData(dst: 'OEBase', src: 'OEBase') -> "void":
    """OECopyBaseData(OEBase dst, OEBase src)"""
    return _oechem.OECopyBaseData(dst, src)

def OEHasTag(*args) -> "bool":
    """
    OEHasTag(unsigned int tag) -> bool
    OEHasTag(std::string const & s) -> bool
    """
    return _oechem.OEHasTag(*args)

def OEGetTag(*args) -> "unsigned int":
    """
    OEGetTag(unsigned int arg1) -> char const
    OEGetTag(char const * arg1) -> unsigned int
    """
    return _oechem.OEGetTag(*args)

def OEGetOEBReturnString(idx: 'unsigned int') -> "char const *":
    """OEGetOEBReturnString(unsigned int idx) -> char const *"""
    return _oechem.OEGetOEBReturnString(idx)
class OEReadFxnBase(object):
    """Proxy of C++ OESystem::OEReadFxnBase 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__ = _oechem.delete_OEReadFxnBase
    __del__ = lambda self: None

    def GetTag(self) -> "char const *":
        """GetTag(OEReadFxnBase self) -> char const *"""
        return _oechem.OEReadFxnBase_GetTag(self)


    def GetType(self) -> "void const *":
        """GetType(OEReadFxnBase self) -> void const *"""
        return _oechem.OEReadFxnBase_GetType(self)


    def CreateCopy(self) -> "OESystem::OEReadFxnBase *":
        """CreateCopy(OEReadFxnBase self) -> OEReadFxnBase"""
        return _oechem.OEReadFxnBase_CreateCopy(self)

OEReadFxnBase_swigregister = _oechem.OEReadFxnBase_swigregister
OEReadFxnBase_swigregister(OEReadFxnBase)
Rad2Deg = cvar.Rad2Deg
Deg2Rad = cvar.Deg2Rad
Pi = cvar.Pi
Pi2 = cvar.Pi2
OEBinaryTagMaxLength = cvar.OEBinaryTagMaxLength
UDT = cvar.UDT
UserDefinedTag = cvar.UserDefinedTag
OEBasePOD = cvar.OEBasePOD
Success = cvar.Success
NoParentClass = cvar.NoParentClass
CheckFailed = cvar.CheckFailed
StreamFailed = cvar.StreamFailed
IncorrectSize = cvar.IncorrectSize
Continue = cvar.Continue
ReadTagFailed = cvar.ReadTagFailed
CorruptHeader = cvar.CorruptHeader
EndOfFile = cvar.EndOfFile
ReadLengthFailed = cvar.ReadLengthFailed
TypeCheckFailed = cvar.TypeCheckFailed
IncorrectHandlerType = cvar.IncorrectHandlerType

class OEDefaultReadFxn(OEReadFxnBase):
    """Proxy of C++ OESystem::OEDefaultReadFxn 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, arg2: 'oeistream', arg3: 'OEULongLong', arg4: 'char const *', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEDefaultReadFxn self, oeistream arg2, OEULongLong arg3, char const * arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEDefaultReadFxn___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEDefaultReadFxn
    __del__ = lambda self: None
OEDefaultReadFxn_swigregister = _oechem.OEDefaultReadFxn_swigregister
OEDefaultReadFxn_swigregister(OEDefaultReadFxn)

class OEWriteFxnBase(object):
    """Proxy of C++ OESystem::OEWriteFxnBase 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__ = _oechem.delete_OEWriteFxnBase
    __del__ = lambda self: None

    def GetTag(self) -> "char const *":
        """GetTag(OEWriteFxnBase self) -> char const *"""
        return _oechem.OEWriteFxnBase_GetTag(self)


    def GetType(self) -> "void const *":
        """GetType(OEWriteFxnBase self) -> void const *"""
        return _oechem.OEWriteFxnBase_GetType(self)


    def CreateCopy(self) -> "OESystem::OEWriteFxnBase *":
        """CreateCopy(OEWriteFxnBase self) -> OEWriteFxnBase"""
        return _oechem.OEWriteFxnBase_CreateCopy(self)

OEWriteFxnBase_swigregister = _oechem.OEWriteFxnBase_swigregister
OEWriteFxnBase_swigregister(OEWriteFxnBase)

class OEDefaultWriteFxn(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEDefaultWriteFxn 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, arg2: 'oeostream', arg3: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEDefaultWriteFxn self, oeostream arg2, OEBinaryIOHandlerBase arg3) -> bool"""
        return _oechem.OEDefaultWriteFxn___call__(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEDefaultWriteFxn
    __del__ = lambda self: None
OEDefaultWriteFxn_swigregister = _oechem.OEDefaultWriteFxn_swigregister
OEDefaultWriteFxn_swigregister(OEDefaultWriteFxn)

class OEBinaryIOHandlerBase(OEBase):
    """Proxy of C++ OESystem::OEBinaryIOHandlerBase 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__ = _oechem.delete_OEBinaryIOHandlerBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBinaryIOHandlerBase self)"""
        return _oechem.OEBinaryIOHandlerBase_Clear(self)


    def SetReadFxn(self, arg2: 'OEReadFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2, bool makedefault=False) -> bool
        SetReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_SetReadFxn(self, arg2, makedefault)


    def SetWriteFxn(self, arg2: 'OEWriteFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2, bool makedefault=False) -> bool
        SetWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_SetWriteFxn(self, arg2, makedefault)


    def GetDefaultReadFxn(self) -> "OESystem::OEReadFxnBase const &":
        """GetDefaultReadFxn(OEBinaryIOHandlerBase self) -> OEReadFxnBase"""
        return _oechem.OEBinaryIOHandlerBase_GetDefaultReadFxn(self)


    def GetDefaultWriteFxn(self) -> "OESystem::OEWriteFxnBase const &":
        """GetDefaultWriteFxn(OEBinaryIOHandlerBase self) -> OEWriteFxnBase"""
        return _oechem.OEBinaryIOHandlerBase_GetDefaultWriteFxn(self)


    def ReplaceReadFxn(self, *args) -> "bool":
        """
        ReplaceReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2, std::string const replacetag) -> bool
        ReplaceReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_ReplaceReadFxn(self, *args)


    def ReplaceWriteFxn(self, *args) -> "bool":
        """
        ReplaceWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2, std::string const replacetag) -> bool
        ReplaceWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_ReplaceWriteFxn(self, *args)


    def HasReadFxn(self, arg2: 'OEReadFxnBase') -> "bool":
        """HasReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_HasReadFxn(self, arg2)


    def HasWriteFxn(self, arg2: 'OEWriteFxnBase') -> "bool":
        """HasWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_HasWriteFxn(self, arg2)


    def GetReadFxns(self) -> "OESystem::OEIterBase< OESystem::OEReadFxnBase > *":
        """GetReadFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEReadFxnBase > *"""
        return _oechem.OEBinaryIOHandlerBase_GetReadFxns(self)


    def GetWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxnBase > *":
        """GetWriteFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEWriteFxnBase > *"""
        return _oechem.OEBinaryIOHandlerBase_GetWriteFxns(self)


    def SetBaseWriteFxn(self, arg2: 'OESystem::OEWriteFxn< OESystem::OEBaseData > const &') -> "bool":
        """SetBaseWriteFxn(OEBinaryIOHandlerBase self, OESystem::OEWriteFxn< OESystem::OEBaseData > const & arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_SetBaseWriteFxn(self, arg2)


    def GetBaseWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *":
        """GetBaseWriteFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *"""
        return _oechem.OEBinaryIOHandlerBase_GetBaseWriteFxns(self)

OEBinaryIOHandlerBase_swigregister = _oechem.OEBinaryIOHandlerBase_swigregister
OEBinaryIOHandlerBase_swigregister(OEBinaryIOHandlerBase)

class OEUnknownOEBData(object):
    """Proxy of C++ OESystem::OEUnknownOEBData 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::OEUnknownOEBData self) -> OEUnknownOEBData
        __init__(OESystem::OEUnknownOEBData self, oeistream ifs, void const * typ, OEULongLong len, char * tag, unsigned char tagtype) -> OEUnknownOEBData
        __init__(OESystem::OEUnknownOEBData self, OEUnknownOEBData rhs) -> OEUnknownOEBData
        """
        this = _oechem.new_OEUnknownOEBData(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnknownOEBData
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEUnknownOEBData___nonzero__(self)



    def GetData(self) -> "char const *":
        """GetData(OEUnknownOEBData self) -> char const *"""
        return _oechem.OEUnknownOEBData_GetData(self)


    def GetLength(self) -> "size_t":
        """GetLength(OEUnknownOEBData self) -> size_t"""
        return _oechem.OEUnknownOEBData_GetLength(self)


    def GetType(self) -> "void const *":
        """GetType(OEUnknownOEBData self) -> void const *"""
        return _oechem.OEUnknownOEBData_GetType(self)


    def GetTag(self) -> "char const *":
        """GetTag(OEUnknownOEBData self) -> char const *"""
        return _oechem.OEUnknownOEBData_GetTag(self)


    def GetTagType(self) -> "unsigned char":
        """GetTagType(OEUnknownOEBData self) -> unsigned char"""
        return _oechem.OEUnknownOEBData_GetTagType(self)

OEUnknownOEBData_swigregister = _oechem.OEUnknownOEBData_swigregister
OEUnknownOEBData_swigregister(OEUnknownOEBData)


def OEBReadDataLength(*args) -> "OEULongLong":
    """
    OEBReadDataLength(oeistream arg1, OEULongLong maxLen) -> OEULongLong
    OEBReadDataLength(oeistream arg1) -> OEULongLong
    """
    return _oechem.OEBReadDataLength(*args)

def OEBWriteDataLength(*args) -> "bool":
    """
    OEBWriteDataLength(oeostream arg1, OEULongLong arg2) -> bool
    OEBWriteDataLength(oeostream arg1, unsigned int arg2) -> bool
    """
    return _oechem.OEBWriteDataLength(*args)

def OEBDataLengthBytes(*args) -> "unsigned int":
    """
    OEBDataLengthBytes(unsigned int arg1) -> unsigned int
    OEBDataLengthBytes(OEULongLong arg1) -> unsigned int
    """
    return _oechem.OEBDataLengthBytes(*args)

def OEBReadTag(*args) -> "bool":
    """
    OEBReadTag(oeistream ifs, char * tag, unsigned char & tagtype) -> bool
    OEBReadTag(oeistream ifs, char * tag) -> bool
    """
    return _oechem.OEBReadTag(*args)

def OEBPeekTag(*args) -> "bool":
    """
    OEBPeekTag(oeistream ifs, char * tag) -> bool
    OEBPeekTag(oeistream ifs, char * tag, unsigned char & tagtype) -> bool
    """
    return _oechem.OEBPeekTag(*args)

def OEBWriteTag(*args) -> "bool":
    """
    OEBWriteTag(oeostream ofs, char const * arg2) -> bool
    OEBWriteTag(oeostream ofs, char const * arg2, unsigned char tagtype) -> bool
    """
    return _oechem.OEBWriteTag(*args)

def OEBIntEndian(*args) -> "bool":
    """
    OEBIntEndian() -> unsigned char
    OEBIntEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBIntEndian(*args)

def OEBFloatEndian(*args) -> "bool":
    """
    OEBFloatEndian() -> unsigned char
    OEBFloatEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBFloatEndian(*args)

def OEBShortEndian(*args) -> "bool":
    """
    OEBShortEndian() -> unsigned char
    OEBShortEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBShortEndian(*args)

def OEBFPosTEndian(*args) -> "bool":
    """
    OEBFPosTEndian() -> unsigned char
    OEBFPosTEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBFPosTEndian(*args)

def OEIsIntLittleEndian() -> "bool":
    """OEIsIntLittleEndian() -> bool"""
    return _oechem.OEIsIntLittleEndian()

def OEIsFloatLittleEndian() -> "bool":
    """OEIsFloatLittleEndian() -> bool"""
    return _oechem.OEIsFloatLittleEndian()

def OEIsShortLittleEndian() -> "bool":
    """OEIsShortLittleEndian() -> bool"""
    return _oechem.OEIsShortLittleEndian()

def OEIsFPosTLittleEndian() -> "bool":
    """OEIsFPosTLittleEndian() -> bool"""
    return _oechem.OEIsFPosTLittleEndian()

def OEIsIntByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsIntByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsIntByteSwapRequired(dataIsLittleEndian)

def OEIsFloatByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsFloatByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsFloatByteSwapRequired(dataIsLittleEndian)

def OEIsShortByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsShortByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsShortByteSwapRequired(dataIsLittleEndian)

def OEIsFPosTByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsFPosTByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsFPosTByteSwapRequired(dataIsLittleEndian)
class OEBinaryIOHandler(OEBinaryIOHandlerBase):
    """Proxy of C++ OESystem::OEBinaryIOHandler 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::OEBinaryIOHandler self) -> OEBinaryIOHandler
        __init__(OESystem::OEBinaryIOHandler self, OEBinaryIOHandler arg2) -> OEBinaryIOHandler
        __init__(OESystem::OEBinaryIOHandler self, OEBinaryIOHandlerBase arg2) -> OEBinaryIOHandler
        """
        this = _oechem.new_OEBinaryIOHandler(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryIOHandler
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBinaryIOHandler self)"""
        return _oechem.OEBinaryIOHandler_Clear(self)


    def SetReadFxn(self, arg2: 'OEReadFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2, bool makedefault=False) -> bool
        SetReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_SetReadFxn(self, arg2, makedefault)


    def SetWriteFxn(self, arg2: 'OEWriteFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2, bool makedefault=False) -> bool
        SetWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_SetWriteFxn(self, arg2, makedefault)


    def SetBaseWriteFxn(self, arg2: 'OESystem::OEWriteFxn< OESystem::OEBaseData > const &') -> "bool":
        """SetBaseWriteFxn(OEBinaryIOHandler self, OESystem::OEWriteFxn< OESystem::OEBaseData > const & arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_SetBaseWriteFxn(self, arg2)


    def GetDefaultReadFxn(self) -> "OESystem::OEReadFxnBase const &":
        """GetDefaultReadFxn(OEBinaryIOHandler self) -> OEReadFxnBase"""
        return _oechem.OEBinaryIOHandler_GetDefaultReadFxn(self)


    def GetDefaultWriteFxn(self) -> "OESystem::OEWriteFxnBase const &":
        """GetDefaultWriteFxn(OEBinaryIOHandler self) -> OEWriteFxnBase"""
        return _oechem.OEBinaryIOHandler_GetDefaultWriteFxn(self)


    def ReplaceReadFxn(self, *args) -> "bool":
        """
        ReplaceReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2, std::string const replacetag) -> bool
        ReplaceReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_ReplaceReadFxn(self, *args)


    def ReplaceWriteFxn(self, *args) -> "bool":
        """
        ReplaceWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2, std::string const replacetag) -> bool
        ReplaceWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_ReplaceWriteFxn(self, *args)


    def HasReadFxn(self, arg2: 'OEReadFxnBase') -> "bool":
        """HasReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_HasReadFxn(self, arg2)


    def HasWriteFxn(self, arg2: 'OEWriteFxnBase') -> "bool":
        """HasWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_HasWriteFxn(self, arg2)


    def GetReadFxns(self) -> "OESystem::OEIterBase< OESystem::OEReadFxnBase > *":
        """GetReadFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEReadFxnBase > *"""
        return _oechem.OEBinaryIOHandler_GetReadFxns(self)


    def GetWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxnBase > *":
        """GetWriteFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEWriteFxnBase > *"""
        return _oechem.OEBinaryIOHandler_GetWriteFxns(self)


    def GetBaseWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *":
        """GetBaseWriteFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *"""
        return _oechem.OEBinaryIOHandler_GetBaseWriteFxns(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBinaryIOHandler self) -> OEBase"""
        return _oechem.OEBinaryIOHandler_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBinaryIOHandler self) -> void const *"""
        return _oechem.OEBinaryIOHandler_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBinaryIOHandler self, void const * arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_IsDataType(self, arg2)

OEBinaryIOHandler_swigregister = _oechem.OEBinaryIOHandler_swigregister
OEBinaryIOHandler_swigregister(OEBinaryIOHandler)


def OERegisterOEBInitializer(initializer: 'OESystem::OEBHandInitializer') -> "void":
    """OERegisterOEBInitializer(OESystem::OEBHandInitializer initializer)"""
    return _oechem.OERegisterOEBInitializer(initializer)

def OEInitializeHandler(hand: 'OEBinaryIOHandlerBase') -> "void":
    """OEInitializeHandler(OEBinaryIOHandlerBase hand)"""
    return _oechem.OEInitializeHandler(hand)

def OEGetOEBInitializerCount() -> "oesize_t":
    """OEGetOEBInitializerCount() -> oesize_t"""
    return _oechem.OEGetOEBInitializerCount()
class OETracerBase(object):
    """Proxy of C++ OESystem::OETracerBase 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__ = _oechem.delete_OETracerBase
    __del__ = lambda self: None

    def SetTask(self, task: 'std::string') -> "void":
        """SetTask(OETracerBase self, std::string task)"""
        return _oechem.OETracerBase_SetTask(self, task)


    def Push(self, task: 'std::string') -> "void":
        """Push(OETracerBase self, std::string task)"""
        return _oechem.OETracerBase_Push(self, task)


    def Pop(self) -> "void":
        """Pop(OETracerBase self)"""
        return _oechem.OETracerBase_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OETracerBase self)"""
        return _oechem.OETracerBase_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OETracerBase self, unsigned int current, unsigned int total)
        SetProgress(OETracerBase self, double percent)
        """
        return _oechem.OETracerBase_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OETracerBase self) -> bool"""
        return _oechem.OETracerBase_Aborted(self)

OETracerBase_swigregister = _oechem.OETracerBase_swigregister
OETracerBase_swigregister(OETracerBase)

class OENullTracer(OETracerBase):
    """Proxy of C++ OESystem::OENullTracer class."""

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

    def SetTask(self, arg2: 'std::string') -> "void":
        """SetTask(OENullTracer self, std::string arg2)"""
        return _oechem.OENullTracer_SetTask(self, arg2)


    def Push(self, arg2: 'std::string') -> "void":
        """Push(OENullTracer self, std::string arg2)"""
        return _oechem.OENullTracer_Push(self, arg2)


    def Pop(self) -> "void":
        """Pop(OENullTracer self)"""
        return _oechem.OENullTracer_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OENullTracer self)"""
        return _oechem.OENullTracer_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OENullTracer self, unsigned int arg2, unsigned int arg3)
        SetProgress(OENullTracer self, double arg2)
        """
        return _oechem.OENullTracer_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OENullTracer self) -> bool"""
        return _oechem.OENullTracer_Aborted(self)


    def __init__(self):
        """__init__(OESystem::OENullTracer self) -> OENullTracer"""
        this = _oechem.new_OENullTracer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENullTracer
    __del__ = lambda self: None
OENullTracer_swigregister = _oechem.OENullTracer_swigregister
OENullTracer_swigregister(OENullTracer)

class OEConsoleProgressTracer(OETracerBase):
    """Proxy of C++ OESystem::OEConsoleProgressTracer 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__(OESystem::OEConsoleProgressTracer self) -> OEConsoleProgressTracer"""
        this = _oechem.new_OEConsoleProgressTracer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConsoleProgressTracer
    __del__ = lambda self: None

    def SetTask(self, task: 'std::string') -> "void":
        """SetTask(OEConsoleProgressTracer self, std::string task)"""
        return _oechem.OEConsoleProgressTracer_SetTask(self, task)


    def Push(self, task: 'std::string') -> "void":
        """Push(OEConsoleProgressTracer self, std::string task)"""
        return _oechem.OEConsoleProgressTracer_Push(self, task)


    def Pop(self) -> "void":
        """Pop(OEConsoleProgressTracer self)"""
        return _oechem.OEConsoleProgressTracer_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OEConsoleProgressTracer self)"""
        return _oechem.OEConsoleProgressTracer_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OEConsoleProgressTracer self, unsigned int current, unsigned int total)
        SetProgress(OEConsoleProgressTracer self, double percent)
        """
        return _oechem.OEConsoleProgressTracer_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OEConsoleProgressTracer self) -> bool"""
        return _oechem.OEConsoleProgressTracer_Aborted(self)

OEConsoleProgressTracer_swigregister = _oechem.OEConsoleProgressTracer_swigregister
OEConsoleProgressTracer_swigregister(OEConsoleProgressTracer)

class OEAnnotationWriteFxn(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OESystem::OEAnnotation)> 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, arg2: 'oeostream', arg3: 'OEAnnotation', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEAnnotationWriteFxn self, oeostream arg2, OEAnnotation arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEAnnotationWriteFxn___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEAnnotationWriteFxn
    __del__ = lambda self: None
OEAnnotationWriteFxn_swigregister = _oechem.OEAnnotationWriteFxn_swigregister
OEAnnotationWriteFxn_swigregister(OEAnnotationWriteFxn)

class OEColor(object):
    """Proxy of C++ OESystem::OEColor class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEColor self) -> OEColor
        __init__(OESystem::OEColor self, unsigned int r, unsigned int g, unsigned int b) -> OEColor
        __init__(OESystem::OEColor self, unsigned int r, unsigned int g, unsigned int b, unsigned int a) -> OEColor
        __init__(OESystem::OEColor self, unsigned char const * rgba) -> OEColor
        __init__(OESystem::OEColor self, unsigned int packed) -> OEColor
        __init__(OESystem::OEColor self, std::string const & text) -> OEColor
        __init__(OESystem::OEColor self, OEColor rhs) -> OEColor
        """
        this = _oechem.new_OEColor(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, rhs: 'OEColor') -> "bool":
        """__eq__(OEColor self, OEColor rhs) -> bool"""
        return _oechem.OEColor___eq__(self, rhs)


    def __ne__(self, rhs: 'OEColor') -> "bool":
        """__ne__(OEColor self, OEColor rhs) -> bool"""
        return _oechem.OEColor___ne__(self, rhs)


    def CreateCopy(self) -> "OESystem::OEColor *":
        """CreateCopy(OEColor self) -> OEColor"""
        return _oechem.OEColor_CreateCopy(self)


    def GetR(self) -> "unsigned int":
        """GetR(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetR(self)


    def GetG(self) -> "unsigned int":
        """GetG(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetG(self)


    def GetB(self) -> "unsigned int":
        """GetB(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetB(self)


    def GetA(self) -> "unsigned int":
        """GetA(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetA(self)


    def GetPackedColor(self) -> "unsigned int":
        """GetPackedColor(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetPackedColor(self)


    def GetText(self, a: 'bool'=False) -> "std::string":
        """
        GetText(OEColor self, bool a=False) -> std::string
        GetText(OEColor self) -> std::string
        """
        return _oechem.OEColor_GetText(self, a)


    def Set(self, *args) -> "OESystem::OEColor &":
        """
        Set(OEColor self, unsigned int r, unsigned int g, unsigned int b) -> OEColor
        Set(OEColor self, unsigned int r, unsigned int g, unsigned int b, unsigned int a) -> OEColor
        """
        return _oechem.OEColor_Set(self, *args)


    def SetR(self, r: 'unsigned int') -> "OESystem::OEColor &":
        """SetR(OEColor self, unsigned int r) -> OEColor"""
        return _oechem.OEColor_SetR(self, r)


    def SetG(self, g: 'unsigned int') -> "OESystem::OEColor &":
        """SetG(OEColor self, unsigned int g) -> OEColor"""
        return _oechem.OEColor_SetG(self, g)


    def SetB(self, b: 'unsigned int') -> "OESystem::OEColor &":
        """SetB(OEColor self, unsigned int b) -> OEColor"""
        return _oechem.OEColor_SetB(self, b)


    def SetA(self, a: 'unsigned int') -> "OESystem::OEColor &":
        """SetA(OEColor self, unsigned int a) -> OEColor"""
        return _oechem.OEColor_SetA(self, a)


    def SetPackedColor(self, color: 'unsigned int') -> "OESystem::OEColor &":
        """SetPackedColor(OEColor self, unsigned int color) -> OEColor"""
        return _oechem.OEColor_SetPackedColor(self, color)


    def SetRGBA(self, rgba: 'unsigned char const *') -> "OESystem::OEColor &":
        """SetRGBA(OEColor self, unsigned char const * rgba) -> OEColor"""
        return _oechem.OEColor_SetRGBA(self, rgba)


    def SetText(self, text: 'std::string const &') -> "OESystem::OEColor &":
        """SetText(OEColor self, std::string const & text) -> OEColor"""
        return _oechem.OEColor_SetText(self, text)


    def GetRGBA(self, *args) -> "PyObject *":
        """
        GetRGBA(OEColor self) -> unsigned char const
        GetRGBA(OEColor self) -> PyObject *
        """
        return _oechem.OEColor_GetRGBA(self, *args)


    def __str__(self) -> "std::string":
        """__str__(OEColor self) -> std::string"""
        return _oechem.OEColor___str__(self)


    def __repr__(self) -> "std::string":
        """__repr__(OEColor self) -> std::string"""
        return _oechem.OEColor___repr__(self)

    __swig_destroy__ = _oechem.delete_OEColor
    __del__ = lambda self: None
OEColor_swigregister = _oechem.OEColor_swigregister
OEColor_swigregister(OEColor)


def OEColorCreate(*args) -> "OESystem::OEColor":
    """
    OEColorCreate(double r, double g, double b) -> OEColor
    OEColorCreate(double r, double g, double b, double a) -> OEColor
    """
    return _oechem.OEColorCreate(*args)

def OEColorGet(*args) -> "void":
    """
    OEColorGet(OEColor arg1, float & r, float & g, float & b)
    OEColorGet(OEColor arg1, double & r, double & g, double & b)
    OEColorGet(OEColor arg1, float & r, float & g, float & b, float & a)
    OEColorGet(OEColor arg1, double & r, double & g, double & b, double & a)
    """
    return _oechem.OEColorGet(*args)

def OEColorSet(*args) -> "void":
    """
    OEColorSet(OEColor arg1, double r, double g, double b)
    OEColorSet(OEColor arg1, double r, double g, double b, double a)
    """
    return _oechem.OEColorSet(*args)

def OEColorPacked(r: 'unsigned int', g: 'unsigned int', b: 'unsigned int', a: 'unsigned int'=255) -> "unsigned int":
    """
    OEColorPacked(unsigned int r, unsigned int g, unsigned int b, unsigned int a=255) -> unsigned int
    OEColorPacked(unsigned int r, unsigned int g, unsigned int b) -> unsigned int
    """
    return _oechem.OEColorPacked(r, g, b, a)

def OEGetLightColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetLightColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetLightColors()

def OEGetVividColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetVividColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetVividColors()

def OEGetDeepColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetDeepColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetDeepColors()

def OEGetContrastColors(whiteblack: 'bool'=False) -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """
    OEGetContrastColors(bool whiteblack=False) -> OESystem::OEIterBase< OESystem::OEColor >
    OEGetContrastColors() -> OESystem::OEIterBase< OESystem::OEColor > *
    """
    return _oechem.OEGetContrastColors(whiteblack)

def OEGetColors(fromcolor: 'OEColor', tocolor: 'OEColor', nrcolors: 'unsigned int') -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetColors(OEColor fromcolor, OEColor tocolor, unsigned int nrcolors) -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetColors(fromcolor, tocolor, nrcolors)
class OEColorIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEColor)> 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<(OESystem::OEColor)> self) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OEColorIter rhs) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OESystem::OEIterBase< OESystem::OEColor > * rhs) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEColor >::NonConstA > * rhs) -> OEColorIter
        """
        this = _oechem.new_OEColorIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEColor > *":
        """Copy(OEColorIter self) -> OESystem::OEIterBase< OESystem::OEColor > *"""
        return _oechem.OEColorIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEColorIter self, OESystem::OEIterBase< OESystem::OEColor > * ib)
        Push(OEColorIter self, OEColorIter iter)
        """
        return _oechem.OEColorIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEColor,OESystem::OEColor > const &') -> "void":
        """Sort(OEColorIter self, OESystem::OEBinaryPredicate< OESystem::OEColor,OESystem::OEColor > const & sort_criterion)"""
        return _oechem.OEColorIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEColor > &":
        """ToFirst(OEColorIter self) -> OEColorIter"""
        return _oechem.OEColorIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEColor > &":
        """ToLast(OEColorIter self) -> OEColorIter"""
        return _oechem.OEColorIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEColor &":
        """__ref__(OEColorIter self) -> OEColor"""
        return _oechem.OEColorIter___ref__(self)


    def IsValid(self):
      return _oechem.OEColorIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEColorIter self) -> PyObject *"""
        return _oechem.OEColorIter_next(self)


    def Target(self) -> "OESystem::OEColor &":
        """Target(OEColorIter self) -> OEColor"""
        return _oechem.OEColorIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEColor > &":
        """
        Next(OEColorIter self) -> OEColorIter
        Next(OEColorIter self, int i) -> OEColorIter
        """
        return _oechem.OEColorIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEColor > &":
        """
        Prev(OEColorIter self) -> OEColorIter
        Prev(OEColorIter self, int i) -> OEColorIter
        """
        return _oechem.OEColorIter_Prev(self, *args)

OEColorIter_swigregister = _oechem.OEColorIter_swigregister
OEColorIter_swigregister(OEColorIter)
OEBlack = cvar.OEBlack
OEWhite = cvar.OEWhite
OERed = cvar.OERed
OEGreen = cvar.OEGreen
OEBlue = cvar.OEBlue
OEYellow = cvar.OEYellow
OECyan = cvar.OECyan
OEMagenta = cvar.OEMagenta
OEOrange = cvar.OEOrange
OEPink = cvar.OEPink
OEGrey = cvar.OEGrey
OEPurple = cvar.OEPurple
OERoyalBlue = cvar.OERoyalBlue
OEOliveBrown = cvar.OEOliveBrown
OEOliveGreen = cvar.OEOliveGreen
OEOliveGrey = cvar.OEOliveGrey
OELimeGreen = cvar.OELimeGreen
OEDarkRed = cvar.OEDarkRed
OEDarkGreen = cvar.OEDarkGreen
OEDarkBlue = cvar.OEDarkBlue
OEDarkYellow = cvar.OEDarkYellow
OEDarkCyan = cvar.OEDarkCyan
OEDarkMagenta = cvar.OEDarkMagenta
OEDarkOrange = cvar.OEDarkOrange
OEDarkGrey = cvar.OEDarkGrey
OEDarkRose = cvar.OEDarkRose
OEDarkBrown = cvar.OEDarkBrown
OEDarkSalmon = cvar.OEDarkSalmon
OEDarkPurple = cvar.OEDarkPurple
OEMediumBrown = cvar.OEMediumBrown
OEMediumBlue = cvar.OEMediumBlue
OEMediumYellow = cvar.OEMediumYellow
OEMediumGreen = cvar.OEMediumGreen
OEMediumOrange = cvar.OEMediumOrange
OEMediumPurple = cvar.OEMediumPurple
OEMediumSalmon = cvar.OEMediumSalmon
OELightBlue = cvar.OELightBlue
OELightGrey = cvar.OELightGrey
OELightPurple = cvar.OELightPurple
OELightSalmon = cvar.OELightSalmon
OELightBrown = cvar.OELightBrown
OELightOrange = cvar.OELightOrange
OELightGreen = cvar.OELightGreen
OEBlueTint = cvar.OEBlueTint
OEBrown = cvar.OEBrown
OEMandarin = cvar.OEMandarin
OEGreenBlue = cvar.OEGreenBlue
OEGreenTint = cvar.OEGreenTint
OEHotPink = cvar.OEHotPink
OEPinkTint = cvar.OEPinkTint
OERedOrange = cvar.OERedOrange
OESeaGreen = cvar.OESeaGreen
OESkyBlue = cvar.OESkyBlue
OEViolet = cvar.OEViolet
OEYellowTint = cvar.OEYellowTint
OETransparentColor = cvar.OETransparentColor
OECopper = cvar.OECopper
OEGold = cvar.OEGold
OESilver = cvar.OESilver
OEPewter = cvar.OEPewter
OEBrass = cvar.OEBrass

class OEColorStop(object):
    """Proxy of C++ OESystem::OEColorStop 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::OEColorStop self, double value, OEColor color) -> OEColorStop
        __init__(OESystem::OEColorStop self, OEColorStop rhs) -> OEColorStop
        """
        this = _oechem.new_OEColorStop(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorStop
    __del__ = lambda self: None

    def GetValue(self) -> "double":
        """GetValue(OEColorStop self) -> double"""
        return _oechem.OEColorStop_GetValue(self)


    def GetColor(self) -> "OESystem::OEColor const &":
        """GetColor(OEColorStop self) -> OEColor"""
        return _oechem.OEColorStop_GetColor(self)

OEColorStop_swigregister = _oechem.OEColorStop_swigregister
OEColorStop_swigregister(OEColorStop)

class OEColorGradientBase(object):
    """Proxy of C++ OESystem::OEColorGradientBase 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__ = _oechem.delete_OEColorGradientBase
    __del__ = lambda self: None

    def GetMinValue(self) -> "double":
        """GetMinValue(OEColorGradientBase self) -> double"""
        return _oechem.OEColorGradientBase_GetMinValue(self)


    def GetMaxValue(self) -> "double":
        """GetMaxValue(OEColorGradientBase self) -> double"""
        return _oechem.OEColorGradientBase_GetMaxValue(self)


    def GetMinColor(self) -> "OESystem::OEColor const &":
        """GetMinColor(OEColorGradientBase self) -> OEColor"""
        return _oechem.OEColorGradientBase_GetMinColor(self)


    def GetMaxColor(self) -> "OESystem::OEColor const &":
        """GetMaxColor(OEColorGradientBase self) -> OEColor"""
        return _oechem.OEColorGradientBase_GetMaxColor(self)


    def NumStops(self) -> "unsigned int":
        """NumStops(OEColorGradientBase self) -> unsigned int"""
        return _oechem.OEColorGradientBase_NumStops(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEColorGradientBase self) -> bool"""
        return _oechem.OEColorGradientBase_IsEmpty(self)


    def GetStops(self) -> "OESystem::OEIterBase< OESystem::OEColorStop > *":
        """GetStops(OEColorGradientBase self) -> OESystem::OEIterBase< OESystem::OEColorStop > *"""
        return _oechem.OEColorGradientBase_GetStops(self)


    def AddStop(self, stop: 'OEColorStop') -> "bool":
        """AddStop(OEColorGradientBase self, OEColorStop stop) -> bool"""
        return _oechem.OEColorGradientBase_AddStop(self, stop)


    def DeleteStop(self, stopidx: 'unsigned int') -> "bool":
        """DeleteStop(OEColorGradientBase self, unsigned int stopidx) -> bool"""
        return _oechem.OEColorGradientBase_DeleteStop(self, stopidx)


    def GetColorAt(self, value: 'double') -> "OESystem::OEColor":
        """GetColorAt(OEColorGradientBase self, double value) -> OEColor"""
        return _oechem.OEColorGradientBase_GetColorAt(self, value)


    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEColorGradientBase self, double value) -> double"""
        return _oechem.OEColorGradientBase_TransformValue(self, value)

OEColorGradientBase_swigregister = _oechem.OEColorGradientBase_swigregister
OEColorGradientBase_swigregister(OEColorGradientBase)

class OELinearColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OELinearColorGradient 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::OELinearColorGradient self) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OEColorStop oneStop) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OELinearColorGradient rhs) -> OELinearColorGradient
        """
        this = _oechem.new_OELinearColorGradient(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELinearColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OELinearColorGradient self, double value) -> double"""
        return _oechem.OELinearColorGradient_TransformValue(self, value)

OELinearColorGradient_swigregister = _oechem.OELinearColorGradient_swigregister
OELinearColorGradient_swigregister(OELinearColorGradient)

class OEExponentialColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OEExponentialColorGradient 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::OEExponentialColorGradient self) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEColorStop oneStop) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEExponentialColorGradient rhs) -> OEExponentialColorGradient
        """
        this = _oechem.new_OEExponentialColorGradient(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExponentialColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEExponentialColorGradient self, double value) -> double"""
        return _oechem.OEExponentialColorGradient_TransformValue(self, value)

OEExponentialColorGradient_swigregister = _oechem.OEExponentialColorGradient_swigregister
OEExponentialColorGradient_swigregister(OEExponentialColorGradient)

class OELogarithmicColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OELogarithmicColorGradient 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::OELogarithmicColorGradient self) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OEColorStop oneStop) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OELogarithmicColorGradient rhs) -> OELogarithmicColorGradient
        """
        this = _oechem.new_OELogarithmicColorGradient(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELogarithmicColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OELogarithmicColorGradient self, double value) -> double"""
        return _oechem.OELogarithmicColorGradient_TransformValue(self, value)

OELogarithmicColorGradient_swigregister = _oechem.OELogarithmicColorGradient_swigregister
OELogarithmicColorGradient_swigregister(OELogarithmicColorGradient)

class OEExponentColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OEExponentColorGradient 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::OEExponentColorGradient self, double exponent) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, double exponent, OEColorStop oneStop) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, double exponent, OEColorStop bgnStop, OEColorStop endStop) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, OEExponentColorGradient rhs) -> OEExponentColorGradient
        """
        this = _oechem.new_OEExponentColorGradient(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExponentColorGradient
    __del__ = lambda self: None

    def SetExponent(self, exponent: 'double') -> "void":
        """SetExponent(OEExponentColorGradient self, double exponent)"""
        return _oechem.OEExponentColorGradient_SetExponent(self, exponent)


    def GetExponent(self) -> "double":
        """GetExponent(OEExponentColorGradient self) -> double"""
        return _oechem.OEExponentColorGradient_GetExponent(self)


    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEExponentColorGradient self, double value) -> double"""
        return _oechem.OEExponentColorGradient_TransformValue(self, value)

OEExponentColorGradient_swigregister = _oechem.OEExponentColorGradient_swigregister
OEExponentColorGradient_swigregister(OEExponentColorGradient)

class OEColorStopIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEColorStop)> 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<(OESystem::OEColorStop)> self) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OEColorStopIter rhs) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OESystem::OEIterBase< OESystem::OEColorStop > * rhs) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEColorStop >::NonConstA > * rhs) -> OEColorStopIter
        """
        this = _oechem.new_OEColorStopIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorStopIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEColorStop > *":
        """Copy(OEColorStopIter self) -> OESystem::OEIterBase< OESystem::OEColorStop > *"""
        return _oechem.OEColorStopIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEColorStopIter self, OESystem::OEIterBase< OESystem::OEColorStop > * ib)
        Push(OEColorStopIter self, OEColorStopIter iter)
        """
        return _oechem.OEColorStopIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEColorStop,OESystem::OEColorStop > const &') -> "void":
        """Sort(OEColorStopIter self, OESystem::OEBinaryPredicate< OESystem::OEColorStop,OESystem::OEColorStop > const & sort_criterion)"""
        return _oechem.OEColorStopIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """ToFirst(OEColorStopIter self) -> OEColorStopIter"""
        return _oechem.OEColorStopIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """ToLast(OEColorStopIter self) -> OEColorStopIter"""
        return _oechem.OEColorStopIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEColorStop &":
        """__ref__(OEColorStopIter self) -> OEColorStop"""
        return _oechem.OEColorStopIter___ref__(self)


    def IsValid(self):
      return _oechem.OEColorStopIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEColorStopIter self) -> PyObject *"""
        return _oechem.OEColorStopIter_next(self)


    def Target(self) -> "OESystem::OEColorStop &":
        """Target(OEColorStopIter self) -> OEColorStop"""
        return _oechem.OEColorStopIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """
        Next(OEColorStopIter self) -> OEColorStopIter
        Next(OEColorStopIter self, int i) -> OEColorStopIter
        """
        return _oechem.OEColorStopIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """
        Prev(OEColorStopIter self) -> OEColorStopIter
        Prev(OEColorStopIter self, int i) -> OEColorStopIter
        """
        return _oechem.OEColorStopIter_Prev(self, *args)

OEColorStopIter_swigregister = _oechem.OEColorStopIter_swigregister
OEColorStopIter_swigregister(OEColorStopIter)

class OEHeader(OEContainer):
    """Proxy of C++ OESystem::OEHeader 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::OEHeader self) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment, OEInterface const & itf, OEHeader history=0x0) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment, OEInterface const & itf) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version) -> OEHeader
        __init__(OESystem::OEHeader self, OEHeader rhs) -> OEHeader
        """
        this = _oechem.new_OEHeader(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEHeader___nonzero__(self)



    def SetDate(self, *args) -> "void":
        """
        SetDate(OEHeader self)
        SetDate(OEHeader self, int day, int month, int year)
        SetDate(OEHeader self, int day, int month, int year, int hour, int minute, int seconds)
        """
        return _oechem.OEHeader_SetDate(self, *args)


    def GetDate(self, *args) -> "void":
        """
        GetDate(OEHeader self, int & day, int & month, int & year)
        GetDate(OEHeader self, int & day, int & month, int & year, int & hour, int & minute, int & seconds)
        """
        return _oechem.OEHeader_GetDate(self, *args)


    def SetProgram(self, program: 'std::string const &') -> "void":
        """SetProgram(OEHeader self, std::string const & program)"""
        return _oechem.OEHeader_SetProgram(self, program)


    def GetProgram(self) -> "std::string":
        """GetProgram(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetProgram(self)


    def SetCommandLine(self, comment: 'std::string const &') -> "void":
        """SetCommandLine(OEHeader self, std::string const & comment)"""
        return _oechem.OEHeader_SetCommandLine(self, comment)


    def GetCommandLine(self) -> "std::string":
        """GetCommandLine(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetCommandLine(self)


    def SetComment(self, comment: 'std::string const &') -> "void":
        """SetComment(OEHeader self, std::string const & comment)"""
        return _oechem.OEHeader_SetComment(self, comment)


    def GetComment(self) -> "std::string":
        """GetComment(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetComment(self)


    def SetInterface(self, itf: 'OEInterface const &') -> "void":
        """SetInterface(OEHeader self, OEInterface const & itf)"""
        return _oechem.OEHeader_SetInterface(self, itf)


    def GetInterface(self) -> "std::string":
        """GetInterface(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetInterface(self)


    def SetOEVersion(self, version: 'int') -> "void":
        """SetOEVersion(OEHeader self, int version)"""
        return _oechem.OEHeader_SetOEVersion(self, version)


    def GetOEVersion(self) -> "int":
        """GetOEVersion(OEHeader self) -> int"""
        return _oechem.OEHeader_GetOEVersion(self)


    def SetOERelease(self, release: 'std::string const &') -> "void":
        """SetOERelease(OEHeader self, std::string const & release)"""
        return _oechem.OEHeader_SetOERelease(self, release)


    def GetOERelease(self) -> "std::string":
        """GetOERelease(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetOERelease(self)


    def SetPlatform(self, platform: 'std::string const &') -> "void":
        """SetPlatform(OEHeader self, std::string const & platform)"""
        return _oechem.OEHeader_SetPlatform(self, platform)


    def GetPlatform(self) -> "std::string":
        """GetPlatform(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetPlatform(self)


    def SetVersion(self, arg2: 'std::string const &') -> "void":
        """SetVersion(OEHeader self, std::string const & arg2)"""
        return _oechem.OEHeader_SetVersion(self, arg2)


    def GetVersion(self) -> "std::string":
        """GetVersion(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetVersion(self)


    def AddHistory(self, header: 'OEHeader') -> "void":
        """AddHistory(OEHeader self, OEHeader header)"""
        return _oechem.OEHeader_AddHistory(self, header)


    def GetHistory(self) -> "OESystem::OEIterBase< OESystem::OEHeader > *":
        """GetHistory(OEHeader self) -> OESystem::OEIterBase< OESystem::OEHeader > *"""
        return _oechem.OEHeader_GetHistory(self)

    __swig_destroy__ = _oechem.delete_OEHeader
    __del__ = lambda self: None
OEHeader_swigregister = _oechem.OEHeader_swigregister
OEHeader_swigregister(OEHeader)

class OEHalfFloat(object):
    """Proxy of C++ OEPlatform::OEHalfFloat 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__(OEPlatform::OEHalfFloat self) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, oe_half data) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, int data) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, float arg2) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, double arg2) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, long double arg2) -> OEHalfFloat
        """
        this = _oechem.new_OEHalfFloat(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __float__(self) -> "double":
        """__float__(OEHalfFloat self) -> double"""
        return _oechem.OEHalfFloat___float__(self)


    def GetValue(self) -> "float":
        """GetValue(OEHalfFloat self) -> float"""
        return _oechem.OEHalfFloat_GetValue(self)


    def GetData(self) -> "oe_half":
        """GetData(OEHalfFloat self) -> oe_half"""
        return _oechem.OEHalfFloat_GetData(self)


    def posInf() -> "OEPlatform::OEHalfFloat":
        """posInf() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_posInf()

    posInf = staticmethod(posInf)

    def qNan() -> "OEPlatform::OEHalfFloat":
        """qNan() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_qNan()

    qNan = staticmethod(qNan)

    def sNan() -> "OEPlatform::OEHalfFloat":
        """sNan() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_sNan()

    sNan = staticmethod(sNan)

    def __lt__(self, rhs: 'OEHalfFloat') -> "bool":
        """__lt__(OEHalfFloat self, OEHalfFloat rhs) -> bool"""
        return _oechem.OEHalfFloat___lt__(self, rhs)


    def __eq__(self, rhs: 'OEHalfFloat') -> "bool":
        """__eq__(OEHalfFloat self, OEHalfFloat rhs) -> bool"""
        return _oechem.OEHalfFloat___eq__(self, rhs)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEHalfFloat self) -> PyObject *"""
        return _oechem.OEHalfFloat_GetDataTypeAsLong(self)

    __swig_destroy__ = _oechem.delete_OEHalfFloat
    __del__ = lambda self: None
OEHalfFloat_swigregister = _oechem.OEHalfFloat_swigregister
OEHalfFloat_swigregister(OEHalfFloat)

def OEHalfFloat_posInf() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_posInf() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_posInf()

def OEHalfFloat_qNan() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_qNan() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_qNan()

def OEHalfFloat_sNan() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_sNan() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_sNan()

HALF_MIN = _oechem.HALF_MIN
HALF_NRM_MIN = _oechem.HALF_NRM_MIN
HALF_MAX = _oechem.HALF_MAX
HALF_EPSILON = _oechem.HALF_EPSILON
HALF_MANT_DIG = _oechem.HALF_MANT_DIG
HALF_DIG = _oechem.HALF_DIG
HALF_RADIX = _oechem.HALF_RADIX
HALF_MIN_EXP = _oechem.HALF_MIN_EXP
HALF_MAX_EXP = _oechem.HALF_MAX_EXP
HALF_MIN_10_EXP = _oechem.HALF_MIN_10_EXP
HALF_MAX_10_EXP = _oechem.HALF_MAX_10_EXP
class OEGroupBase(OEBase):
    """Proxy of C++ OEChem::OEGroupBase 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__ = _oechem.delete_OEGroupBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEGroupBase self)"""
        return _oechem.OEGroupBase_Clear(self)


    def SetGroupType(self, arg2: 'unsigned int') -> "void":
        """SetGroupType(OEGroupBase self, unsigned int arg2)"""
        return _oechem.OEGroupBase_SetGroupType(self, arg2)


    def GetGroupType(self) -> "unsigned int":
        """GetGroupType(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_GetGroupType(self)


    def GetParent(self) -> "OEChem::OEMolBase const *":
        """GetParent(OEGroupBase self) -> OEMolBase"""
        return _oechem.OEGroupBase_GetParent(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_NumBonds(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_IsEmpty(self)


    def HasAtom(self, atom: 'OEAtomBase') -> "bool":
        """HasAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_HasAtom(self, atom)


    def HasBond(self, bond: 'OEBondBase') -> "bool":
        """HasBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_HasBond(self, bond)


    def AddAtom(self, atom: 'OEAtomBase') -> "bool":
        """AddAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_AddAtom(self, atom)


    def AddBond(self, bond: 'OEBondBase') -> "bool":
        """AddBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_AddBond(self, bond)


    def DeleteAtom(self, atom: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_DeleteAtom(self, atom)


    def DeleteBond(self, bond: 'OEBondBase') -> "bool":
        """DeleteBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_DeleteBond(self, bond)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEGroupBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEGroupBase self, OEUnaryAtomPred atompred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEGroupBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEGroupBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEGroupBase self, OEUnaryBondPred bondpred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEGroupBase_GetBonds(self, *args)


    def GetGroupDefinition(self, abset: 'OEAtomBondSet') -> "bool":
        """GetGroupDefinition(OEGroupBase self, OEAtomBondSet abset) -> bool"""
        return _oechem.OEGroupBase_GetGroupDefinition(self, abset)


    def Sweep(self) -> "bool":
        """Sweep(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_Sweep(self)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_IsDeleted(self)


    def __str__(self) -> "std::string":
        """__str__(OEGroupBase self) -> std::string"""
        return _oechem.OEGroupBase___str__(self)

OEGroupBase_swigregister = _oechem.OEGroupBase_swigregister
OEGroupBase_swigregister(OEGroupBase)

class OEGroupBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEGroupBase)> 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<(OEChem::OEGroupBase)> self) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OEGroupBaseIter rhs) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OESystem::OEIterBase< OEChem::OEGroupBase > * rhs) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEGroupBase >::NonConstA > * rhs) -> OEGroupBaseIter
        """
        this = _oechem.new_OEGroupBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEGroupBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """Copy(OEGroupBaseIter self) -> OESystem::OEIterBase< OEChem::OEGroupBase > *"""
        return _oechem.OEGroupBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEGroupBaseIter self, OESystem::OEIterBase< OEChem::OEGroupBase > * ib)
        Push(OEGroupBaseIter self, OEGroupBaseIter iter)
        """
        return _oechem.OEGroupBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryGroupPred') -> "void":
        """Sort(OEGroupBaseIter self, OEBinaryGroupPred sort_criterion)"""
        return _oechem.OEGroupBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """ToFirst(OEGroupBaseIter self) -> OEGroupBaseIter"""
        return _oechem.OEGroupBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """ToLast(OEGroupBaseIter self) -> OEGroupBaseIter"""
        return _oechem.OEGroupBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEGroupBase &":
        """__ref__(OEGroupBaseIter self) -> OEGroupBase"""
        return _oechem.OEGroupBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEGroupBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEGroupBaseIter self) -> PyObject *"""
        return _oechem.OEGroupBaseIter_next(self)


    def Target(self) -> "OEChem::OEGroupBase &":
        """Target(OEGroupBaseIter self) -> OEGroupBase"""
        return _oechem.OEGroupBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """
        Next(OEGroupBaseIter self) -> OEGroupBaseIter
        Next(OEGroupBaseIter self, int i) -> OEGroupBaseIter
        """
        return _oechem.OEGroupBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """
        Prev(OEGroupBaseIter self) -> OEGroupBaseIter
        Prev(OEGroupBaseIter self, int i) -> OEGroupBaseIter
        """
        return _oechem.OEGroupBaseIter_Prev(self, *args)

OEGroupBaseIter_swigregister = _oechem.OEGroupBaseIter_swigregister
OEGroupBaseIter_swigregister(OEGroupBaseIter)


def OEAddMols(*args) -> "PyObject *":
    """
    OEAddMols(OEMolBase lhs, OEMolBase rhs, char const * delim) -> PyObject
    OEAddMols(OEMolBase lhs, OEMolBase rhs) -> PyObject *
    """
    return _oechem.OEAddMols(*args)

def OEDetermineRingSystems(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineRingSystems(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineRingSystems(mol)

def OEDetermineAromaticRingSystems(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineAromaticRingSystems(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineAromaticRingSystems(mol)

def OEDetermineComponents(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineComponents(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineComponents(mol)

def GetDoubleFromPyObject(outdouble: 'double &', numberobj: 'PyObject *') -> "bool":
    """GetDoubleFromPyObject(double & outdouble, PyObject * numberobj) -> bool"""
    return _oechem.GetDoubleFromPyObject(outdouble, numberobj)
class OEAtomBase(OEBase):
    """Proxy of C++ OEChem::OEAtomBase 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__ = _oechem.delete_OEAtomBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEAtomBase self)"""
        return _oechem.OEAtomBase_Clear(self)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsDeleted(self)


    def SetHyb(self, arg2: 'unsigned int') -> "bool":
        """SetHyb(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetHyb(self, arg2)


    def SetAtomicNum(self, arg2: 'unsigned int') -> "bool":
        """SetAtomicNum(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetAtomicNum(self, arg2)


    def SetIsotope(self, arg2: 'unsigned int') -> "bool":
        """SetIsotope(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetIsotope(self, arg2)


    def SetFormalCharge(self, arg2: 'int') -> "bool":
        """SetFormalCharge(OEAtomBase self, int arg2) -> bool"""
        return _oechem.OEAtomBase_SetFormalCharge(self, arg2)


    def SetPartialCharge(self, arg2: 'double') -> "bool":
        """SetPartialCharge(OEAtomBase self, double arg2) -> bool"""
        return _oechem.OEAtomBase_SetPartialCharge(self, arg2)


    def SetIntType(self, arg2: 'int') -> "bool":
        """SetIntType(OEAtomBase self, int arg2) -> bool"""
        return _oechem.OEAtomBase_SetIntType(self, arg2)


    def SetType(self, arg2: 'char const *') -> "bool":
        """SetType(OEAtomBase self, char const * arg2) -> bool"""
        return _oechem.OEAtomBase_SetType(self, arg2)


    def SetName(self, arg2: 'char const *') -> "bool":
        """SetName(OEAtomBase self, char const * arg2) -> bool"""
        return _oechem.OEAtomBase_SetName(self, arg2)


    def SetImplicitHCount(self, arg2: 'unsigned int') -> "bool":
        """SetImplicitHCount(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetImplicitHCount(self, arg2)


    def SetMapIdx(self, arg2: 'unsigned int') -> "bool":
        """SetMapIdx(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetMapIdx(self, arg2)


    def SetSymmetryClass(self, arg2: 'unsigned int') -> "bool":
        """SetSymmetryClass(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetSymmetryClass(self, arg2)


    def SetAromatic(self, arg2: 'bool') -> "bool":
        """SetAromatic(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetAromatic(self, arg2)


    def SetInRing(self, arg2: 'bool') -> "bool":
        """SetInRing(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetInRing(self, arg2)


    def SetChiral(self, arg2: 'bool') -> "bool":
        """SetChiral(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetChiral(self, arg2)


    def SetAxial(self, arg2: 'OEBondBase', arg3: 'bool') -> "bool":
        """SetAxial(OEAtomBase self, OEBondBase arg2, bool arg3) -> bool"""
        return _oechem.OEAtomBase_SetAxial(self, arg2, arg3)


    def SetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int', arg4: 'unsigned int') -> "bool":
        """SetStereo(OEAtomBase self, OEAtomVector arg2, unsigned int arg3, unsigned int arg4) -> bool"""
        return _oechem.OEAtomBase_SetStereo(self, arg2, arg3, arg4)


    def SetRxnRole(self, arg2: 'unsigned int') -> "bool":
        """SetRxnRole(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetRxnRole(self, arg2)


    def SetRadius(self, arg2: 'double') -> "bool":
        """SetRadius(OEAtomBase self, double arg2) -> bool"""
        return _oechem.OEAtomBase_SetRadius(self, arg2)


    def GetAxial(self, arg2: 'OEBondBase') -> "bool":
        """GetAxial(OEAtomBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEAtomBase_GetAxial(self, arg2)


    def GetFormalCharge(self) -> "int":
        """GetFormalCharge(OEAtomBase self) -> int"""
        return _oechem.OEAtomBase_GetFormalCharge(self)


    def GetPartialCharge(self) -> "double":
        """GetPartialCharge(OEAtomBase self) -> double"""
        return _oechem.OEAtomBase_GetPartialCharge(self)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetIdx(self)


    def GetMapIdx(self) -> "unsigned int":
        """GetMapIdx(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetMapIdx(self)


    def GetAtomicNum(self) -> "unsigned int":
        """GetAtomicNum(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetAtomicNum(self)


    def GetIsotope(self) -> "unsigned int":
        """GetIsotope(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetIsotope(self)


    def GetHyb(self) -> "unsigned int":
        """GetHyb(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHyb(self)


    def GetImplicitHCount(self) -> "unsigned int":
        """GetImplicitHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetImplicitHCount(self)


    def GetSymmetryClass(self) -> "unsigned int":
        """GetSymmetryClass(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetSymmetryClass(self)


    def GetIntType(self) -> "int":
        """GetIntType(OEAtomBase self) -> int"""
        return _oechem.OEAtomBase_GetIntType(self)


    def GetRxnRole(self) -> "unsigned int":
        """GetRxnRole(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetRxnRole(self)


    def GetType(self) -> "char const *":
        """GetType(OEAtomBase self) -> char const *"""
        return _oechem.OEAtomBase_GetType(self)


    def GetParent(self) -> "OEChem::OEMolBase *":
        """GetParent(OEAtomBase self) -> OEMolBase"""
        return _oechem.OEAtomBase_GetParent(self)


    def GetName(self) -> "char const *":
        """GetName(OEAtomBase self) -> char const *"""
        return _oechem.OEAtomBase_GetName(self)


    def GetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int') -> "unsigned int":
        """GetStereo(OEAtomBase self, OEAtomVector arg2, unsigned int arg3) -> unsigned int"""
        return _oechem.OEAtomBase_GetStereo(self, arg2, arg3)


    def GetValence(self) -> "unsigned int":
        """GetValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetValence(self)


    def GetHvyValence(self) -> "unsigned int":
        """GetHvyValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHvyValence(self)


    def GetDegree(self) -> "unsigned int":
        """GetDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetDegree(self)


    def GetHvyDegree(self) -> "unsigned int":
        """GetHvyDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHvyDegree(self)


    def GetExplicitValence(self) -> "unsigned int":
        """GetExplicitValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitValence(self)


    def GetExplicitDegree(self) -> "unsigned int":
        """GetExplicitDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitDegree(self)


    def GetExplicitHCount(self) -> "unsigned int":
        """GetExplicitHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitHCount(self)


    def GetTotalHCount(self) -> "unsigned int":
        """GetTotalHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetTotalHCount(self)


    def GetBond(self, arg2: 'OEAtomBase') -> "OEChem::OEBondBase *":
        """GetBond(OEAtomBase self, OEAtomBase arg2) -> OEBondBase"""
        return _oechem.OEAtomBase_GetBond(self, arg2)


    def GetRadius(self) -> "double":
        """GetRadius(OEAtomBase self) -> double"""
        return _oechem.OEAtomBase_GetRadius(self)


    def IsHydrogen(self) -> "bool":
        """IsHydrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsHydrogen(self)


    def IsPolar(self) -> "bool":
        """IsPolar(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPolar(self)


    def IsPolarHydrogen(self) -> "bool":
        """IsPolarHydrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPolarHydrogen(self)


    def IsCarbon(self) -> "bool":
        """IsCarbon(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsCarbon(self)


    def IsNitrogen(self) -> "bool":
        """IsNitrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsNitrogen(self)


    def IsOxygen(self) -> "bool":
        """IsOxygen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsOxygen(self)


    def IsHalogen(self) -> "bool":
        """IsHalogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsHalogen(self)


    def IsMetal(self) -> "bool":
        """IsMetal(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsMetal(self)


    def IsSulfur(self) -> "bool":
        """IsSulfur(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsSulfur(self)


    def IsPhosphorus(self) -> "bool":
        """IsPhosphorus(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPhosphorus(self)


    def IsAromatic(self) -> "bool":
        """IsAromatic(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsAromatic(self)


    def IsInRing(self) -> "bool":
        """IsInRing(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsInRing(self)


    def IsConnected(self, arg2: 'OEAtomBase') -> "bool":
        """IsConnected(OEAtomBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEAtomBase_IsConnected(self, arg2)


    def IsChiral(self) -> "bool":
        """IsChiral(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsChiral(self)


    def HasStereoSpecified(self, *args) -> "bool":
        """
        HasStereoSpecified(OEAtomBase self, unsigned int v) -> bool
        HasStereoSpecified(OEAtomBase self) -> bool
        """
        return _oechem.OEAtomBase_HasStereoSpecified(self, *args)


    def HasAlphaBetaUnsat(self, includePandS: 'bool'=True) -> "bool":
        """
        HasAlphaBetaUnsat(OEAtomBase self, bool includePandS=True) -> bool
        HasAlphaBetaUnsat(OEAtomBase self) -> bool
        """
        return _oechem.OEAtomBase_HasAlphaBetaUnsat(self, includePandS)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEAtomBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEAtomBase_OrderBonds(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEAtomBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEAtomBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAtomBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEAtomBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEAtomBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEAtomBase_GetBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEAtomBase self, void const * arg2) -> bool"""
        return _oechem.OEAtomBase_IsDataType(self, arg2)


    def __str__(self) -> "std::string":
        """__str__(OEAtomBase self) -> std::string"""
        return _oechem.OEAtomBase___str__(self)

OEAtomBase_swigregister = _oechem.OEAtomBase_swigregister
OEAtomBase_swigregister(OEAtomBase)

class OEBondBase(OEBase):
    """Proxy of C++ OEChem::OEBondBase 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__ = _oechem.delete_OEBondBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBondBase self)"""
        return _oechem.OEBondBase_Clear(self)


    def Sweep(self) -> "bool":
        """Sweep(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_Sweep(self)


    def SetInRing(self, arg2: 'bool') -> "bool":
        """SetInRing(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetInRing(self, arg2)


    def SetAromatic(self, arg2: 'bool') -> "bool":
        """SetAromatic(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetAromatic(self, arg2)


    def SetChiral(self, arg2: 'bool') -> "bool":
        """SetChiral(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetChiral(self, arg2)


    def SetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int', arg4: 'unsigned int') -> "bool":
        """SetStereo(OEBondBase self, OEAtomVector arg2, unsigned int arg3, unsigned int arg4) -> bool"""
        return _oechem.OEBondBase_SetStereo(self, arg2, arg3, arg4)


    def SetBgn(self, arg2: 'OEAtomBase') -> "bool":
        """SetBgn(OEBondBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEBondBase_SetBgn(self, arg2)


    def SetEnd(self, arg2: 'OEAtomBase') -> "bool":
        """SetEnd(OEBondBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEBondBase_SetEnd(self, arg2)


    def SetOrder(self, arg2: 'unsigned int') -> "bool":
        """SetOrder(OEBondBase self, unsigned int arg2) -> bool"""
        return _oechem.OEBondBase_SetOrder(self, arg2)


    def SetIntType(self, arg2: 'int') -> "bool":
        """SetIntType(OEBondBase self, int arg2) -> bool"""
        return _oechem.OEBondBase_SetIntType(self, arg2)


    def SetType(self, arg2: 'char const *') -> "bool":
        """SetType(OEBondBase self, char const * arg2) -> bool"""
        return _oechem.OEBondBase_SetType(self, arg2)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetIdx(self)


    def GetBgn(self) -> "OEChem::OEAtomBase *":
        """GetBgn(OEBondBase self) -> OEAtomBase"""
        return _oechem.OEBondBase_GetBgn(self)


    def GetEnd(self) -> "OEChem::OEAtomBase *":
        """GetEnd(OEBondBase self) -> OEAtomBase"""
        return _oechem.OEBondBase_GetEnd(self)


    def GetBgnIdx(self) -> "unsigned int":
        """GetBgnIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetBgnIdx(self)


    def GetEndIdx(self) -> "unsigned int":
        """GetEndIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetEndIdx(self)


    def GetOrder(self) -> "unsigned int":
        """GetOrder(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetOrder(self)


    def GetIntType(self) -> "int":
        """GetIntType(OEBondBase self) -> int"""
        return _oechem.OEBondBase_GetIntType(self)


    def GetType(self) -> "char const *":
        """GetType(OEBondBase self) -> char const *"""
        return _oechem.OEBondBase_GetType(self)


    def GetParent(self) -> "OEChem::OEMolBase *":
        """GetParent(OEBondBase self) -> OEMolBase"""
        return _oechem.OEBondBase_GetParent(self)


    def GetNbr(self, arg2: 'OEAtomBase') -> "OEChem::OEAtomBase *":
        """GetNbr(OEBondBase self, OEAtomBase arg2) -> OEAtomBase"""
        return _oechem.OEBondBase_GetNbr(self, arg2)


    def GetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int') -> "unsigned int":
        """GetStereo(OEBondBase self, OEAtomVector arg2, unsigned int arg3) -> unsigned int"""
        return _oechem.OEBondBase_GetStereo(self, arg2, arg3)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsDeleted(self)


    def IsInRing(self) -> "bool":
        """IsInRing(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsInRing(self)


    def IsAromatic(self) -> "bool":
        """IsAromatic(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsAromatic(self)


    def IsRotor(self) -> "bool":
        """IsRotor(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsRotor(self)


    def IsChiral(self) -> "bool":
        """IsChiral(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsChiral(self)


    def HasStereoSpecified(self, *args) -> "bool":
        """
        HasStereoSpecified(OEBondBase self, unsigned int v) -> bool
        HasStereoSpecified(OEBondBase self) -> bool
        """
        return _oechem.OEBondBase_HasStereoSpecified(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBondBase self, void const * arg2) -> bool"""
        return _oechem.OEBondBase_IsDataType(self, arg2)


    def SwapEnds(self) -> "bool":
        """SwapEnds(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_SwapEnds(self)


    def __str__(self) -> "std::string":
        """__str__(OEBondBase self) -> std::string"""
        return _oechem.OEBondBase___str__(self)

OEBondBase_swigregister = _oechem.OEBondBase_swigregister
OEBondBase_swigregister(OEBondBase)

class OEMolBase(OEBase):
    """Proxy of C++ OEChem::OEMolBase 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__ = _oechem.delete_OEMolBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEMolBase self)"""
        return _oechem.OEMolBase_Clear(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMolBase self)"""
        return _oechem.OEMolBase_ClearBase(self)


    def Compress(self) -> "bool":
        """Compress(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEMolBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEMolBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEMolBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEMolBase self, double arg2) -> bool"""
        return _oechem.OEMolBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEMolBase self, char const * arg2) -> bool"""
        return _oechem.OEMolBase_SetTitle(self, arg2)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMolBase self)"""
        return _oechem.OEMolBase_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMolBase self) -> double"""
        return _oechem.OEMolBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMolBase self) -> char const *"""
        return _oechem.OEMolBase_GetTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMolBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEMolBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMolBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMolBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMolBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEMolBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEMolBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMolBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMolBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEMolBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEMolBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEMolBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMolBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEMolBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEMolBase_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_Sweep(self)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMolBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEMolBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEMolBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEMolBase_OrderBonds(self, arg2)


    def SetRxn(self, arg2: 'bool') -> "bool":
        """SetRxn(OEMolBase self, bool arg2) -> bool"""
        return _oechem.OEMolBase_SetRxn(self, arg2)


    def IsRxn(self) -> "bool":
        """IsRxn(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMolBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMolBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMolBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetDimension(self)


    def HasPerceived(self, arg2: 'unsigned int') -> "bool":
        """HasPerceived(OEMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMolBase_HasPerceived(self, arg2)


    def SetPerceived(self, arg2: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEMolBase self, unsigned int arg2, bool arg3) -> bool"""
        return _oechem.OEMolBase_SetPerceived(self, arg2, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMolBase self)"""
        return _oechem.OEMolBase_ResetPerceived(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEMolBase self, void const * arg2) -> bool"""
        return _oechem.OEMolBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMolBase self) -> OEBase"""
        return _oechem.OEMolBase_CreateCopy(self)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumGroups(self)


    def _NewGroup_Atoms(self, type: 'unsigned int', atoms: 'OEAtomVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Atoms(OEMolBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase"""
        return _oechem.OEMolBase__NewGroup_Atoms(self, type, atoms)


    def _NewGroup_Bonds(self, type: 'unsigned int', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Bonds(OEMolBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEMolBase__NewGroup_Bonds(self, type, bonds)


    def _NewGroup_AtomsBonds(self, type: 'unsigned int', atoms: 'OEAtomVector', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomsBonds(OEMolBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEMolBase__NewGroup_AtomsBonds(self, type, atoms, bonds)


    def _NewGroup_AtomBondSet(self, type: 'unsigned int', abset: 'OEAtomBondSet') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomBondSet(OEMolBase self, unsigned int type, OEAtomBondSet abset) -> OEGroupBase"""
        return _oechem.OEMolBase__NewGroup_AtomBondSet(self, type, abset)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMolBase self, OEGroupBase group) -> bool"""
        return _oechem.OEMolBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMolBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMolBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMolBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMolBase_GetGroups(self, *args)


    def ForEachAtom(self, fcn: 'OESystem::OEUnaryFunction< OEChem::OEAtomBase,PyObject *,true,true > &') -> "PyObject *":
        """ForEachAtom(OEMolBase self, OESystem::OEUnaryFunction< OEChem::OEAtomBase,PyObject *,true,true > & fcn) -> PyObject *"""
        return _oechem.OEMolBase_ForEachAtom(self, fcn)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMolBase self, OEAtomBase atom, OEHalfFloat crds) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEMolBase self, OEHalfFloat crds) -> bool
        GetCoords(OEMolBase self, float * arg2) -> bool
        GetCoords(OEMolBase self, double * arg2) -> bool
        GetCoords(OEMolBase self, long double * arg2) -> bool
        GetCoords(OEMolBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEMolBase self) -> PyObject *
        """
        return _oechem.OEMolBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMolBase self, OEAtomBase atom, OEHalfFloat crds) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEMolBase self, OEHalfFloat crds) -> bool
        SetCoords(OEMolBase self, float const * arg2) -> bool
        SetCoords(OEMolBase self, double const * arg2) -> bool
        SetCoords(OEMolBase self, long double const * arg2) -> bool
        SetCoords(OEMolBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMolBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMolBase_SetCoords(self, *args)

OEMolBase_swigregister = _oechem.OEMolBase_swigregister
OEMolBase_swigregister(OEMolBase)

class OEQBase(object):
    """Proxy of C++ OEChem::OEQBase 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__ = _oechem.delete_OEQBase
    __del__ = lambda self: None

    def SetExpr(self, arg2: 'OEExprBase') -> "bool":
        """SetExpr(OEQBase self, OEExprBase arg2) -> bool"""
        return _oechem.OEQBase_SetExpr(self, arg2)


    def GetExpr(self, *args) -> "OEChem::OEExprBase *":
        """
        GetExpr(OEQBase self) -> OEExprBase
        GetExpr(OEQBase self) -> OEExprBase
        """
        return _oechem.OEQBase_GetExpr(self, *args)

OEQBase_swigregister = _oechem.OEQBase_swigregister
OEQBase_swigregister(OEQBase)

class OEQAtomBase(OEAtomBase, OEQBase):
    """Proxy of C++ OEChem::OEQAtomBase 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__ = _oechem.delete_OEQAtomBase
    __del__ = lambda self: None

    def GetParentAtom(self) -> "OEChem::OEAtomBase *":
        """GetParentAtom(OEQAtomBase self) -> OEAtomBase"""
        return _oechem.OEQAtomBase_GetParentAtom(self)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQAtomBase self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQAtomBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQAtomBase_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQAtomBase self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQAtomBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQAtomBase_GetQBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQAtomBase self, void const * arg2) -> bool"""
        return _oechem.OEQAtomBase_IsDataType(self, arg2)

OEQAtomBase_swigregister = _oechem.OEQAtomBase_swigregister
OEQAtomBase_swigregister(OEQAtomBase)

class OEQBondBase(OEBondBase, OEQBase):
    """Proxy of C++ OEChem::OEQBondBase 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__ = _oechem.delete_OEQBondBase
    __del__ = lambda self: None

    def GetParentBond(self) -> "OEChem::OEBondBase *":
        """GetParentBond(OEQBondBase self) -> OEBondBase"""
        return _oechem.OEQBondBase_GetParentBond(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQBondBase self, void const * arg2) -> bool"""
        return _oechem.OEQBondBase_IsDataType(self, arg2)

OEQBondBase_swigregister = _oechem.OEQBondBase_swigregister
OEQBondBase_swigregister(OEQBondBase)

class OEQMolBase(OEMolBase):
    """Proxy of C++ OEChem::OEQMolBase 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__ = _oechem.delete_OEQMolBase
    __del__ = lambda self: None

    def BuildExpressions(self, *args) -> "bool":
        """
        BuildExpressions(OEQMolBase self, unsigned int atomopts, unsigned int bondopts) -> bool
        BuildExpressions(OEQMolBase self, OEChem::OEMatchPair< OEChem::OEExprBase > const & arg2) -> bool
        """
        return _oechem.OEQMolBase_BuildExpressions(self, *args)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQMolBase self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQMolBase_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQMolBase self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQMolBase_GetQBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQMolBase self, void const * arg2) -> bool"""
        return _oechem.OEQMolBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEQMolBase self) -> OEBase"""
        return _oechem.OEQMolBase_CreateCopy(self)

OEQMolBase_swigregister = _oechem.OEQMolBase_swigregister
OEQMolBase_swigregister(OEQMolBase)


def OEString2OEAtomExpr(expression: 'char const *') -> "unsigned int":
    """OEString2OEAtomExpr(char const * expression) -> unsigned int"""
    return _oechem.OEString2OEAtomExpr(expression)

def OEString2OEBondExpr(expression: 'char const *') -> "unsigned int":
    """OEString2OEBondExpr(char const * expression) -> unsigned int"""
    return _oechem.OEString2OEBondExpr(expression)
class OEConfBase(OEMolBase):
    """Proxy of C++ OEChem::OEConfBase 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__ = _oechem.delete_OEConfBase
    __del__ = lambda self: None

    def AddAtom(self, *args) -> "void":
        """
        AddAtom(OEConfBase self, OEAtomBase atom)
        AddAtom(OEConfBase self, OEAtomBase rhs, OEAtomBase atom)
        """
        return _oechem.OEConfBase_AddAtom(self, *args)


    def AddBond(self, bond: 'OEBondBase') -> "void":
        """AddBond(OEConfBase self, OEBondBase bond)"""
        return _oechem.OEConfBase_AddBond(self, bond)


    def SetMCMol(self, arg2: 'OEMCMolBase') -> "void":
        """SetMCMol(OEConfBase self, OEMCMolBase arg2)"""
        return _oechem.OEConfBase_SetMCMol(self, arg2)


    def GetMCMol(self, *args) -> "OEChem::OEMCMolBase &":
        """
        GetMCMol(OEConfBase self) -> OEMCMolBase
        GetMCMol(OEConfBase self) -> OEMCMolBase
        """
        return _oechem.OEConfBase_GetMCMol(self, *args)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetIdx(self)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEConfBase self)"""
        return _oechem.OEConfBase_ClearCoords(self)


    def Delete(self) -> "void":
        """Delete(OEConfBase self)"""
        return _oechem.OEConfBase_Delete(self)


    def GetTorsion(self, *args) -> "double":
        """
        GetTorsion(OEConfBase self, OETorsion arg2) -> double
        GetTorsion(OEConfBase self, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
        """
        return _oechem.OEConfBase_GetTorsion(self, *args)


    def SetTorsion(self, *args) -> "void":
        """
        SetTorsion(OEConfBase self, OETorsion arg2)
        SetTorsion(OEConfBase self, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double radians)
        """
        return _oechem.OEConfBase_SetTorsion(self, *args)


    def GetTransform(self) -> "OEChem::OETrans const &":
        """GetTransform(OEConfBase self) -> OETrans"""
        return _oechem.OEConfBase_GetTransform(self)


    def Transform(self, *args) -> "void":
        """
        Transform(OEConfBase self, OETrans arg2)
        Transform(OEConfBase self, OETransBase arg2)
        """
        return _oechem.OEConfBase_Transform(self, *args)


    def HasTitle(self) -> "bool":
        """HasTitle(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_HasTitle(self)


    def Clear(self) -> "void":
        """Clear(OEConfBase self)"""
        return _oechem.OEConfBase_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEConfBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEConfBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEConfBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEConfBase self, double arg2) -> bool"""
        return _oechem.OEConfBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEConfBase self, char const * arg2) -> bool"""
        return _oechem.OEConfBase_SetTitle(self, arg2)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEConfBase self) -> double"""
        return _oechem.OEConfBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEConfBase self) -> char const *"""
        return _oechem.OEConfBase_GetTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEConfBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEConfBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEConfBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEConfBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEConfBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEConfBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEConfBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEConfBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEConfBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEConfBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEConfBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEConfBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEConfBase self) -> bool
        IsDeleted(OEConfBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEConfBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEConfBase_IsDeleted(self, *args)


    def Sweep(self, *args) -> "bool":
        """
        Sweep(OEConfBase self) -> bool
        Sweep(OEConfBase self, unsigned int const * arg2) -> bool
        """
        return _oechem.OEConfBase_Sweep(self, *args)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEConfBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEConfBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEConfBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEConfBase_OrderBonds(self, arg2)


    def SetRxn(self, arg2: 'bool') -> "bool":
        """SetRxn(OEConfBase self, bool arg2) -> bool"""
        return _oechem.OEConfBase_SetRxn(self, arg2)


    def IsRxn(self) -> "bool":
        """IsRxn(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEConfBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEConfBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEConfBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEConfBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEConfBase self, unsigned int arg2) -> bool"""
        return _oechem.OEConfBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetDimension(self)


    def HasPerceived(self, arg2: 'unsigned int') -> "bool":
        """HasPerceived(OEConfBase self, unsigned int arg2) -> bool"""
        return _oechem.OEConfBase_HasPerceived(self, arg2)


    def SetPerceived(self, arg2: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEConfBase self, unsigned int arg2, bool arg3) -> bool"""
        return _oechem.OEConfBase_SetPerceived(self, arg2, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEConfBase self)"""
        return _oechem.OEConfBase_ResetPerceived(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEConfBase self) -> void const *"""
        return _oechem.OEConfBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEConfBase self, void const * type) -> bool"""
        return _oechem.OEConfBase_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEConfBase self) -> OEBase"""
        return _oechem.OEConfBase_CreateCopy(self)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumGroups(self)


    def _NewGroup_Atoms(self, type: 'unsigned int', atoms: 'OEAtomVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Atoms(OEConfBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase"""
        return _oechem.OEConfBase__NewGroup_Atoms(self, type, atoms)


    def _NewGroup_Bonds(self, type: 'unsigned int', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Bonds(OEConfBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEConfBase__NewGroup_Bonds(self, type, bonds)


    def _NewGroup_AtomsBonds(self, type: 'unsigned int', atoms: 'OEAtomVector', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomsBonds(OEConfBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEConfBase__NewGroup_AtomsBonds(self, type, atoms, bonds)


    def _NewGroup_AtomBondSet(self, type: 'unsigned int', abset: 'OEAtomBondSet') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomBondSet(OEConfBase self, unsigned int type, OEAtomBondSet abset) -> OEGroupBase"""
        return _oechem.OEConfBase__NewGroup_AtomBondSet(self, type, abset)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEConfBase self, OEGroupBase group) -> bool"""
        return _oechem.OEConfBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEConfBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEConfBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEConfBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEConfBase_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEConfBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEConfBase self, OEHalfFloat arg2) -> bool
        GetCoords(OEConfBase self, float * arg2) -> bool
        GetCoords(OEConfBase self, double * arg2) -> bool
        GetCoords(OEConfBase self, long double * arg2) -> bool
        GetCoords(OEConfBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEConfBase self) -> PyObject *
        """
        return _oechem.OEConfBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEConfBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEConfBase self, OEHalfFloat arg2) -> bool
        SetCoords(OEConfBase self, float const * arg2) -> bool
        SetCoords(OEConfBase self, double const * arg2) -> bool
        SetCoords(OEConfBase self, long double const * arg2) -> bool
        SetCoords(OEConfBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEConfBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEConfBase_SetCoords(self, *args)

OEConfBase_swigregister = _oechem.OEConfBase_swigregister
OEConfBase_swigregister(OEConfBase)

class OEConfVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEConfBase)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEConfVector self) -> SwigPyIterator"""
        return _oechem.OEConfVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEConfVector self) -> bool"""
        return _oechem.OEConfVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEConfVector self) -> bool"""
        return _oechem.OEConfVector___bool__(self)


    def __len__(self) -> "std::vector< OEChem::OEConfBase * >::size_type":
        """__len__(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::size_type"""
        return _oechem.OEConfVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEChem::OEConfBase * >::difference_type', j: 'std::vector< OEChem::OEConfBase * >::difference_type') -> "std::vector< OEChem::OEConfBase *,std::allocator< OEChem::OEConfBase * > > *":
        """__getslice__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i, std::vector< OEChem::OEConfBase * >::difference_type j) -> OEConfVector"""
        return _oechem.OEConfVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i, std::vector< OEChem::OEConfBase * >::difference_type j)
        __setslice__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i, std::vector< OEChem::OEConfBase * >::difference_type j, OEConfVector v)
        """
        return _oechem.OEConfVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEChem::OEConfBase * >::difference_type', j: 'std::vector< OEChem::OEConfBase * >::difference_type') -> "void":
        """__delslice__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i, std::vector< OEChem::OEConfBase * >::difference_type j)"""
        return _oechem.OEConfVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i)
        __delitem__(OEConfVector self, PySliceObject * slice)
        """
        return _oechem.OEConfVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEChem::OEConfBase * >::value_type":
        """
        __getitem__(OEConfVector self, PySliceObject * slice) -> OEConfVector
        __getitem__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i) -> OEConfBase
        """
        return _oechem.OEConfVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEConfVector self, PySliceObject * slice, OEConfVector v)
        __setitem__(OEConfVector self, PySliceObject * slice)
        __setitem__(OEConfVector self, std::vector< OEChem::OEConfBase * >::difference_type i, OEConfBase x)
        """
        return _oechem.OEConfVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEChem::OEConfBase * >::value_type":
        """pop(OEConfVector self) -> OEConfBase"""
        return _oechem.OEConfVector_pop(self)


    def append(self, x: 'OEConfBase') -> "void":
        """append(OEConfVector self, OEConfBase x)"""
        return _oechem.OEConfVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEConfVector self) -> bool"""
        return _oechem.OEConfVector_empty(self)


    def size(self) -> "std::vector< OEChem::OEConfBase * >::size_type":
        """size(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::size_type"""
        return _oechem.OEConfVector_size(self)


    def swap(self, v: 'OEConfVector') -> "void":
        """swap(OEConfVector self, OEConfVector v)"""
        return _oechem.OEConfVector_swap(self, v)


    def begin(self) -> "std::vector< OEChem::OEConfBase * >::iterator":
        """begin(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::iterator"""
        return _oechem.OEConfVector_begin(self)


    def end(self) -> "std::vector< OEChem::OEConfBase * >::iterator":
        """end(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::iterator"""
        return _oechem.OEConfVector_end(self)


    def rbegin(self) -> "std::vector< OEChem::OEConfBase * >::reverse_iterator":
        """rbegin(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::reverse_iterator"""
        return _oechem.OEConfVector_rbegin(self)


    def rend(self) -> "std::vector< OEChem::OEConfBase * >::reverse_iterator":
        """rend(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::reverse_iterator"""
        return _oechem.OEConfVector_rend(self)


    def clear(self) -> "void":
        """clear(OEConfVector self)"""
        return _oechem.OEConfVector_clear(self)


    def get_allocator(self) -> "std::vector< OEChem::OEConfBase * >::allocator_type":
        """get_allocator(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::allocator_type"""
        return _oechem.OEConfVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEConfVector self)"""
        return _oechem.OEConfVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEChem::OEConfBase * >::iterator":
        """
        erase(OEConfVector self, std::vector< OEChem::OEConfBase * >::iterator pos) -> std::vector< OEChem::OEConfBase * >::iterator
        erase(OEConfVector self, std::vector< OEChem::OEConfBase * >::iterator first, std::vector< OEChem::OEConfBase * >::iterator last) -> std::vector< OEChem::OEConfBase * >::iterator
        """
        return _oechem.OEConfVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEChem::OEConfBase)> self) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self, OEConfVector arg2) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self, std::vector< OEChem::OEConfBase * >::size_type size) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self, std::vector< OEChem::OEConfBase * >::size_type size, OEConfBase value) -> OEConfVector
        """
        this = _oechem.new_OEConfVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEConfBase') -> "void":
        """push_back(OEConfVector self, OEConfBase x)"""
        return _oechem.OEConfVector_push_back(self, x)


    def front(self) -> "std::vector< OEChem::OEConfBase * >::value_type":
        """front(OEConfVector self) -> OEConfBase"""
        return _oechem.OEConfVector_front(self)


    def back(self) -> "std::vector< OEChem::OEConfBase * >::value_type":
        """back(OEConfVector self) -> OEConfBase"""
        return _oechem.OEConfVector_back(self)


    def assign(self, n: 'std::vector< OEChem::OEConfBase * >::size_type', x: 'OEConfBase') -> "void":
        """assign(OEConfVector self, std::vector< OEChem::OEConfBase * >::size_type n, OEConfBase x)"""
        return _oechem.OEConfVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEConfVector self, std::vector< OEChem::OEConfBase * >::size_type new_size)
        resize(OEConfVector self, std::vector< OEChem::OEConfBase * >::size_type new_size, OEConfBase x)
        """
        return _oechem.OEConfVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEConfVector self, std::vector< OEChem::OEConfBase * >::iterator pos, OEConfBase x) -> std::vector< OEChem::OEConfBase * >::iterator
        insert(OEConfVector self, std::vector< OEChem::OEConfBase * >::iterator pos, std::vector< OEChem::OEConfBase * >::size_type n, OEConfBase x)
        """
        return _oechem.OEConfVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEChem::OEConfBase * >::size_type') -> "void":
        """reserve(OEConfVector self, std::vector< OEChem::OEConfBase * >::size_type n)"""
        return _oechem.OEConfVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEChem::OEConfBase * >::size_type":
        """capacity(OEConfVector self) -> std::vector< OEChem::OEConfBase * >::size_type"""
        return _oechem.OEConfVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEConfVector
    __del__ = lambda self: None
OEConfVector_swigregister = _oechem.OEConfVector_swigregister
OEConfVector_swigregister(OEConfVector)

class OEMCMolBase(OEMolBase):
    """Proxy of C++ OEChem::OEMCMolBase 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__ = _oechem.delete_OEMCMolBase
    __del__ = lambda self: None

    def SetActive(self, arg2: 'OEConfBase') -> "bool":
        """SetActive(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_SetActive(self, arg2)


    def GetActive(self) -> "OEChem::OEConfBase *":
        """GetActive(OEMCMolBase self) -> OEConfBase"""
        return _oechem.OEMCMolBase_GetActive(self)


    def PushActive(self, arg2: 'OEConfBase') -> "bool":
        """PushActive(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_PushActive(self, arg2)


    def PopActive(self) -> "void":
        """PopActive(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_PopActive(self)


    def GetMaxConfIdx(self) -> "unsigned int":
        """GetMaxConfIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxConfIdx(self)


    def NewConf(self, *args) -> "OEChem::OEConfBase *":
        """
        NewConf(OEMCMolBase self) -> OEConfBase
        NewConf(OEMCMolBase self, OEHalfFloat arg2) -> OEConfBase
        NewConf(OEMCMolBase self, float const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, double const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, long double const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEMolBase arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2, std::vector< OEChem::OETorsion,std::allocator< OEChem::OETorsion > > & t) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2, OETrans arg3) -> OEConfBase
        """
        return _oechem.OEMCMolBase_NewConf(self, *args)


    def NumConfs(self) -> "unsigned int":
        """NumConfs(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumConfs(self)


    def GetConf(self, arg2: 'OEUnaryConfPred') -> "OEChem::OEConfBase *":
        """GetConf(OEMCMolBase self, OEUnaryConfPred arg2) -> OEConfBase"""
        return _oechem.OEMCMolBase_GetConf(self, arg2)


    def DeleteConfs(self) -> "void":
        """DeleteConfs(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_DeleteConfs(self)


    def DeleteConf(self, arg2: 'OEConfBase') -> "bool":
        """DeleteConf(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteConf(self, arg2)


    def SweepConfs(self) -> "bool":
        """SweepConfs(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_SweepConfs(self)


    def OrderConfs(self, arg2: 'OEConfVector') -> "bool":
        """OrderConfs(OEMCMolBase self, OEConfVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderConfs(self, arg2)


    def GetConfs(self, *args) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """
        GetConfs(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEConfBase >
        GetConfs(OEMCMolBase self, OEUnaryConfPred arg2) -> OESystem::OEIterBase< OEChem::OEConfBase > *
        """
        return _oechem.OEMCMolBase_GetConfs(self, *args)


    def Clear(self) -> "void":
        """Clear(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_Clear(self)


    def ClearMolBase(self) -> "void":
        """ClearMolBase(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearMolBase(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearBase(self)


    def ClearMCMol(self) -> "void":
        """ClearMCMol(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearMCMol(self)


    def Compress(self) -> "bool":
        """Compress(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEMCMolBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEMCMolBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEMCMolBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEMCMolBase self, double arg2) -> bool"""
        return _oechem.OEMCMolBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEMCMolBase self, char const * arg2) -> bool"""
        return _oechem.OEMCMolBase_SetTitle(self, arg2)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMCMolBase self) -> double"""
        return _oechem.OEMCMolBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMCMolBase self) -> char const *"""
        return _oechem.OEMCMolBase_GetTitle(self)


    def GetMCMolTitle(self) -> "char const *":
        """GetMCMolTitle(OEMCMolBase self) -> char const *"""
        return _oechem.OEMCMolBase_GetMCMolTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMCMolBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEMCMolBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMCMolBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMCMolBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMCMolBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEMCMolBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEMCMolBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMCMolBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMCMolBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEMCMolBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMCMolBase self, OEConfBase arg2) -> bool
        IsDeleted(OEMCMolBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEMCMolBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEMCMolBase_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_Sweep(self)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMCMolBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEMCMolBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderBonds(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMCMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMCMolBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMCMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMCMolBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEMCMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMCMolBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetDimension(self)


    def HasPerceived(self, tag: 'unsigned int') -> "bool":
        """HasPerceived(OEMCMolBase self, unsigned int tag) -> bool"""
        return _oechem.OEMCMolBase_HasPerceived(self, tag)


    def SetPerceived(self, tag: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEMCMolBase self, unsigned int tag, bool arg3) -> bool"""
        return _oechem.OEMCMolBase_SetPerceived(self, tag, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ResetPerceived(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMCMolBase self) -> void const *"""
        return _oechem.OEMCMolBase_GetDataType(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMCMolBase self) -> OEBase"""
        return _oechem.OEMCMolBase_CreateCopy(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMCMolBase self, void const * type) -> bool"""
        return _oechem.OEMCMolBase_IsDataType(self, type)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumGroups(self)


    def _NewGroup_Atoms(self, type: 'unsigned int', atoms: 'OEAtomVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Atoms(OEMCMolBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase"""
        return _oechem.OEMCMolBase__NewGroup_Atoms(self, type, atoms)


    def _NewGroup_Bonds(self, type: 'unsigned int', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_Bonds(OEMCMolBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEMCMolBase__NewGroup_Bonds(self, type, bonds)


    def _NewGroup_AtomsBonds(self, type: 'unsigned int', atoms: 'OEAtomVector', bonds: 'OEBondVector') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomsBonds(OEMCMolBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase"""
        return _oechem.OEMCMolBase__NewGroup_AtomsBonds(self, type, atoms, bonds)


    def _NewGroup_AtomBondSet(self, type: 'unsigned int', abset: 'OEAtomBondSet') -> "OEChem::OEGroupBase *":
        """_NewGroup_AtomBondSet(OEMCMolBase self, unsigned int type, OEAtomBondSet abset) -> OEGroupBase"""
        return _oechem.OEMCMolBase__NewGroup_AtomBondSet(self, type, abset)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMCMolBase self, OEGroupBase group) -> bool"""
        return _oechem.OEMCMolBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMCMolBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMCMolBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMCMolBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMCMolBase_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMCMolBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEMCMolBase self, OEHalfFloat arg2) -> bool
        GetCoords(OEMCMolBase self, float * arg2) -> bool
        GetCoords(OEMCMolBase self, double * arg2) -> bool
        GetCoords(OEMCMolBase self, long double * arg2) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEMCMolBase self) -> PyObject *
        """
        return _oechem.OEMCMolBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMCMolBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEHalfFloat arg2) -> bool
        SetCoords(OEMCMolBase self, float const * arg2) -> bool
        SetCoords(OEMCMolBase self, double const * arg2) -> bool
        SetCoords(OEMCMolBase self, long double const * arg2) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMCMolBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMCMolBase_SetCoords(self, *args)

OEMCMolBase_swigregister = _oechem.OEMCMolBase_swigregister
OEMCMolBase_swigregister(OEMCMolBase)


def OESetOEGraphMol(obj: 'OEBase', t: 'char const *', s: 'OEGraphMol') -> "bool":
    """OESetOEGraphMol(OEBase obj, char const * t, OEGraphMol s) -> bool"""
    return _oechem.OESetOEGraphMol(obj, t, s)

def OEGetOEGraphMol(obj: 'OEBase', t: 'char const *') -> "OEGraphMolWrapper":
    """OEGetOEGraphMol(OEBase obj, char const * t) -> OEGraphMol"""
    return _oechem.OEGetOEGraphMol(obj, t)

def OESetOEMol(obj: 'OEBase', t: 'char const *', s: 'OEMol') -> "bool":
    """OESetOEMol(OEBase obj, char const * t, OEMol s) -> bool"""
    return _oechem.OESetOEMol(obj, t, s)

def OEGetOEMol(obj: 'OEBase', t: 'char const *') -> "OEMolWrapper":
    """OEGetOEMol(OEBase obj, char const * t) -> OEMol"""
    return _oechem.OEGetOEMol(obj, t)

def OESetOEQMol(obj: 'OEBase', t: 'char const *', s: 'OEQMol') -> "bool":
    """OESetOEQMol(OEBase obj, char const * t, OEQMol s) -> bool"""
    return _oechem.OESetOEQMol(obj, t, s)

def OEGetOEQMol(obj: 'OEBase', t: 'char const *') -> "OEQMolWrapper":
    """OEGetOEQMol(OEBase obj, char const * t) -> OEQMol"""
    return _oechem.OEGetOEQMol(obj, t)

def OEGetOEContainer(obj: 'OEBase', t: 'char const *') -> "OESystem::OEContainer":
    """OEGetOEContainer(OEBase obj, char const * t) -> OEContainer"""
    return _oechem.OEGetOEContainer(obj, t)

def OESetOEContainer(obj: 'OEBase', t: 'char const *', c: 'OEContainer') -> "bool":
    """OESetOEContainer(OEBase obj, char const * t, OEContainer c) -> bool"""
    return _oechem.OESetOEContainer(obj, t, c)
class OEGraphMol(OEMolBase):
    """Proxy of C++ OEGraphMolWrapper 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__(OEGraphMolWrapper self, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEGraphMol mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEGraphMol mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMolBase mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEQMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEQMolBase mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMCMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMCMolBase mol) -> OEGraphMol
        """
        this = _oechem.new_OEGraphMol(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEGraphMol
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEGraphMol self)"""
        return _oechem.OEGraphMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEGraphMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEGraphMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEGraphMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEGraphMol self, double e) -> bool"""
        return _oechem.OEGraphMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEGraphMol self, char const * t) -> bool"""
        return _oechem.OEGraphMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEGraphMol self)"""
        return _oechem.OEGraphMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEGraphMol self) -> double"""
        return _oechem.OEGraphMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEGraphMol self) -> char const *"""
        return _oechem.OEGraphMol_GetTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEGraphMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEGraphMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEGraphMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEGraphMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEGraphMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEGraphMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEGraphMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEGraphMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEGraphMol self, OEAtomBase a) -> bool"""
        return _oechem.OEGraphMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEGraphMol self, OEBondBase b) -> bool"""
        return _oechem.OEGraphMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEGraphMol self, OEAtomBase a) -> bool
        IsDeleted(OEGraphMol self, OEBondBase b) -> bool
        """
        return _oechem.OEGraphMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEGraphMol self, OEAtomVector va) -> bool"""
        return _oechem.OEGraphMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEGraphMol self, OEBondVector vb) -> bool"""
        return _oechem.OEGraphMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEGraphMol self, bool b) -> bool"""
        return _oechem.OEGraphMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEGraphMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEGraphMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEGraphMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEGraphMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEGraphMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEGraphMol_GetBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEGraphMol self, unsigned int d) -> bool"""
        return _oechem.OEGraphMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEGraphMol self, unsigned int flag) -> bool"""
        return _oechem.OEGraphMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEGraphMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEGraphMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEGraphMol self)"""
        return _oechem.OEGraphMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEGraphMol self) -> OEMolBase
        SCMol(OEGraphMol self) -> OEMolBase
        """
        return _oechem.OEGraphMol_SCMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGraphMol self) -> void const *"""
        return _oechem.OEGraphMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGraphMol self, void const * type) -> bool"""
        return _oechem.OEGraphMol_IsDataType(self, type)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEGraphMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, float * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, double * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, long double * xyz) -> bool
        GetCoords(OEGraphMol self, OEHalfFloat xyz) -> bool
        GetCoords(OEGraphMol self, float * xyz) -> bool
        GetCoords(OEGraphMol self, double * xyz) -> bool
        GetCoords(OEGraphMol self, long double * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEGraphMol self) -> PyObject *
        """
        return _oechem.OEGraphMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEGraphMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, float const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, long double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEHalfFloat xyz) -> bool
        SetCoords(OEGraphMol self, float const * xyz) -> bool
        SetCoords(OEGraphMol self, double const * xyz) -> bool
        SetCoords(OEGraphMol self, long double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEGraphMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEGraphMol_SetCoords(self, *args)


    def __getstate__(self):
        return OEWriteMolToBytes(".oeb", self)



    def __setstate__(self, state):
        mol = OEGraphMol()
        if OEReadMolFromBytes(mol, ".oeb", state):
            self.__init__(mol)
        else:
            self.__init__()
        del mol


OEGraphMol_swigregister = _oechem.OEGraphMol_swigregister
OEGraphMol_swigregister(OEGraphMol)

class OEMol(OEMCMolBase):
    """Proxy of C++ OEMolWrapper 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__(OEMolWrapper self, unsigned int t) -> OEMol
        __init__(OEMolWrapper self) -> OEMol
        __init__(OEMolWrapper self, OEMol mol) -> OEMol
        __init__(OEMolWrapper self, OEMol mol, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEBase b, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEBase b) -> OEMol
        __init__(OEMolWrapper self, OEMolBase m, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEQMolBase m, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEQMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEMCMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEMCMolBase m, unsigned int t) -> OEMol
        """
        this = _oechem.new_OEMol(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMol
    __del__ = lambda self: None

    def ClearMolBase(self) -> "void":
        """ClearMolBase(OEMol self)"""
        return _oechem.OEMol_ClearMolBase(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMol self)"""
        return _oechem.OEMol_ClearBase(self)


    def ClearMCMol(self) -> "void":
        """ClearMCMol(OEMol self)"""
        return _oechem.OEMol_ClearMCMol(self)


    def SetActive(self, c: 'OEConfBase') -> "bool":
        """SetActive(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_SetActive(self, c)


    def GetActive(self) -> "OEChem::OEConfBase *":
        """GetActive(OEMol self) -> OEConfBase"""
        return _oechem.OEMol_GetActive(self)


    def PushActive(self, c: 'OEConfBase') -> "bool":
        """PushActive(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_PushActive(self, c)


    def PopActive(self) -> "void":
        """PopActive(OEMol self)"""
        return _oechem.OEMol_PopActive(self)


    def GetMaxConfIdx(self) -> "unsigned int":
        """GetMaxConfIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxConfIdx(self)


    def NewConf(self, *args) -> "OEChem::OEConfBase *":
        """
        NewConf(OEMol self) -> OEConfBase
        NewConf(OEMol self, OEHalfFloat coords) -> OEConfBase
        NewConf(OEMol self, float const * coords) -> OEConfBase
        NewConf(OEMol self, double const * coords) -> OEConfBase
        NewConf(OEMol self, long double const * coords) -> OEConfBase
        NewConf(OEMol self, OEMolBase m) -> OEConfBase
        NewConf(OEMol self, OEConfBase c) -> OEConfBase
        NewConf(OEMol self, OEConfBase c, std::vector< OEChem::OETorsion,std::allocator< OEChem::OETorsion > > & t) -> OEConfBase
        NewConf(OEMol self, OEConfBase c, OETrans t) -> OEConfBase
        """
        return _oechem.OEMol_NewConf(self, *args)


    def NumConfs(self) -> "unsigned int":
        """NumConfs(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumConfs(self)


    def GetConf(self, p: 'OEUnaryConfPred') -> "OEChem::OEConfBase *":
        """GetConf(OEMol self, OEUnaryConfPred p) -> OEConfBase"""
        return _oechem.OEMol_GetConf(self, p)


    def DeleteConfs(self) -> "void":
        """DeleteConfs(OEMol self)"""
        return _oechem.OEMol_DeleteConfs(self)


    def DeleteConf(self, c: 'OEConfBase') -> "bool":
        """DeleteConf(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_DeleteConf(self, c)


    def SweepConfs(self) -> "bool":
        """SweepConfs(OEMol self) -> bool"""
        return _oechem.OEMol_SweepConfs(self)


    def OrderConfs(self, vc: 'OEConfVector') -> "bool":
        """OrderConfs(OEMol self, OEConfVector vc) -> bool"""
        return _oechem.OEMol_OrderConfs(self, vc)


    def GetConfs(self, *args) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """
        GetConfs(OEMol self) -> OESystem::OEIterBase< OEChem::OEConfBase >
        GetConfs(OEMol self, OEUnaryConfPred pred) -> OESystem::OEIterBase< OEChem::OEConfBase > *
        """
        return _oechem.OEMol_GetConfs(self, *args)


    def Clear(self) -> "void":
        """Clear(OEMol self)"""
        return _oechem.OEMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEMol self) -> bool"""
        return _oechem.OEMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMol self) -> bool"""
        return _oechem.OEMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEMol self, double e) -> bool"""
        return _oechem.OEMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEMol self, char const * t) -> bool"""
        return _oechem.OEMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMol self)"""
        return _oechem.OEMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMol self) -> double"""
        return _oechem.OEMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMol self) -> char const *"""
        return _oechem.OEMol_GetTitle(self)


    def GetMCMolTitle(self) -> "char const *":
        """GetMCMolTitle(OEMol self) -> char const *"""
        return _oechem.OEMol_GetMCMolTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMol self, OEAtomBase a) -> bool"""
        return _oechem.OEMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEMol self, OEBondBase b) -> bool"""
        return _oechem.OEMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMol self, OEConfBase c) -> bool
        IsDeleted(OEMol self, OEAtomBase a) -> bool
        IsDeleted(OEMol self, OEBondBase b) -> bool
        """
        return _oechem.OEMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMol self) -> bool"""
        return _oechem.OEMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMol self, OEAtomVector va) -> bool"""
        return _oechem.OEMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEMol self, OEBondVector vb) -> bool"""
        return _oechem.OEMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEMol self, bool b) -> bool"""
        return _oechem.OEMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEMol self) -> bool"""
        return _oechem.OEMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMol_GetBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEMol self, unsigned int d) -> bool"""
        return _oechem.OEMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEMol self, unsigned int flag) -> bool"""
        return _oechem.OEMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMol self)"""
        return _oechem.OEMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEMol self) -> OEMolBase
        SCMol(OEMol self) -> OEMolBase
        """
        return _oechem.OEMol_SCMol(self, *args)


    def MCMol(self, *args) -> "OEChem::OEMCMolBase &":
        """
        MCMol(OEMol self) -> OEMCMolBase
        MCMol(OEMol self) -> OEMCMolBase
        """
        return _oechem.OEMol_MCMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMol self) -> void const *"""
        return _oechem.OEMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMol self, void const * type) -> bool"""
        return _oechem.OEMol_IsDataType(self, type)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumGroups(self)


    def NewGroup(self, *args) -> "OEChem::OEGroupBase *":
        """
        NewGroup(OEMol self, unsigned int type, OEAtomVector atoms) -> OEGroupBase
        NewGroup(OEMol self, unsigned int type, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEMol self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEMol self, unsigned int type, OEAtomBondSet abset) -> OEGroupBase
        """
        return _oechem.OEMol_NewGroup(self, *args)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMol self, OEGroupBase group) -> bool"""
        return _oechem.OEMol_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMol self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMol_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMol self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMol self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMol_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMol self, OEAtomBase a, OEHalfFloat c) -> bool
        GetCoords(OEMol self, OEAtomBase a, float * c) -> bool
        GetCoords(OEMol self, OEAtomBase a, double * c) -> bool
        GetCoords(OEMol self, OEAtomBase a, long double * c) -> bool
        GetCoords(OEMol self, OEHalfFloat c) -> bool
        GetCoords(OEMol self, float * c) -> bool
        GetCoords(OEMol self, double * c) -> bool
        GetCoords(OEMol self, long double * c) -> bool
        GetCoords(OEMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEMol self) -> PyObject *
        """
        return _oechem.OEMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMol self, OEAtomBase a, OEHalfFloat c) -> bool
        SetCoords(OEMol self, OEAtomBase a, float const * c) -> bool
        SetCoords(OEMol self, OEAtomBase a, double const * c) -> bool
        SetCoords(OEMol self, OEAtomBase a, long double const * c) -> bool
        SetCoords(OEMol self, OEHalfFloat c) -> bool
        SetCoords(OEMol self, float const * c) -> bool
        SetCoords(OEMol self, double const * c) -> bool
        SetCoords(OEMol self, long double const * c) -> bool
        SetCoords(OEMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMol_SetCoords(self, *args)


    def __getstate__(self):
        return OEWriteMolToBytes(".oeb", self)



    def __setstate__(self, state):
        mol = OEMol()
        if OEReadMolFromBytes(mol, ".oeb", state):
            self.__init__(mol)
        else:
            self.__init__()
        del mol


OEMol_swigregister = _oechem.OEMol_swigregister
OEMol_swigregister(OEMol)

class OEQMol(OEQMolBase):
    """Proxy of C++ OEQMolWrapper 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__(OEQMolWrapper self, unsigned int type) -> OEQMol
        __init__(OEQMolWrapper self) -> OEQMol
        __init__(OEQMolWrapper self, OEQMol qmol, unsigned int type) -> OEQMol
        __init__(OEQMolWrapper self, OEQMol qmol) -> OEQMol
        __init__(OEQMolWrapper self, OEMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEMolBase m) -> OEQMol
        __init__(OEQMolWrapper self, OEQMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEQMolBase m) -> OEQMol
        __init__(OEQMolWrapper self, OEMCMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEMCMolBase m) -> OEQMol
        """
        this = _oechem.new_OEQMol(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQMol
    __del__ = lambda self: None

    def BuildExpressions(self, *args) -> "bool":
        """
        BuildExpressions(OEQMol self, unsigned int atomopts, unsigned int bondopts) -> bool
        BuildExpressions(OEQMol self, OEChem::OEMatchPair< OEChem::OEExprBase > const & mp) -> bool
        """
        return _oechem.OEQMol_BuildExpressions(self, *args)


    def Clear(self) -> "void":
        """Clear(OEQMol self)"""
        return _oechem.OEQMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEQMol self) -> bool"""
        return _oechem.OEQMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEQMol self) -> bool"""
        return _oechem.OEQMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEQMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEQMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEQMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEQMol self, double e) -> bool"""
        return _oechem.OEQMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEQMol self, char const * t) -> bool"""
        return _oechem.OEQMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEQMol self)"""
        return _oechem.OEQMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEQMol self) -> double"""
        return _oechem.OEQMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEQMol self) -> char const *"""
        return _oechem.OEQMol_GetTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEQMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEQMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEQMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEQMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEQMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEQMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEQMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEQMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEQMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEQMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEQMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEQMol self, OEAtomBase a) -> bool"""
        return _oechem.OEQMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEQMol self, OEBondBase b) -> bool"""
        return _oechem.OEQMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEQMol self, OEAtomBase a) -> bool
        IsDeleted(OEQMol self, OEBondBase b) -> bool
        """
        return _oechem.OEQMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEQMol self) -> bool"""
        return _oechem.OEQMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEQMol self, OEAtomVector va) -> bool"""
        return _oechem.OEQMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEQMol self, OEBondVector vb) -> bool"""
        return _oechem.OEQMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEQMol self, bool b) -> bool"""
        return _oechem.OEQMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEQMol self) -> bool"""
        return _oechem.OEQMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEQMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEQMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEQMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEQMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEQMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEQMol_GetBonds(self, *args)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQMol self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQMol_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQMol self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQMol_GetQBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEQMol self, unsigned int d) -> bool"""
        return _oechem.OEQMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEQMol self, unsigned int flag) -> bool"""
        return _oechem.OEQMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEQMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEQMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEQMol self)"""
        return _oechem.OEQMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEQMol self) -> OEMolBase
        SCMol(OEQMol self) -> OEMolBase
        """
        return _oechem.OEQMol_SCMol(self, *args)


    def QMol(self, *args) -> "OEChem::OEQMolBase &":
        """
        QMol(OEQMol self) -> OEQMolBase
        QMol(OEQMol self) -> OEQMolBase
        """
        return _oechem.OEQMol_QMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEQMol self) -> void const *"""
        return _oechem.OEQMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEQMol self, void const * type) -> bool"""
        return _oechem.OEQMol_IsDataType(self, type)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEQMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, float * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, double * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, long double * xyz) -> bool
        GetCoords(OEQMol self, OEHalfFloat xyz) -> bool
        GetCoords(OEQMol self, float * xyz) -> bool
        GetCoords(OEQMol self, double * xyz) -> bool
        GetCoords(OEQMol self, long double * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEQMol self) -> PyObject *
        """
        return _oechem.OEQMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEQMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, float const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, double const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, long double const * xyz) -> bool
        SetCoords(OEQMol self, OEHalfFloat xyz) -> bool
        SetCoords(OEQMol self, float const * xyz) -> bool
        SetCoords(OEQMol self, double const * xyz) -> bool
        SetCoords(OEQMol self, long double const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEQMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEQMol_SetCoords(self, *args)

OEQMol_swigregister = _oechem.OEQMol_swigregister
OEQMol_swigregister(OEQMol)

class OEResidue(object):
    """Proxy of C++ OEChem::OEResidue 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__(OEChem::OEResidue self) -> OEResidue
        __init__(OEChem::OEResidue self, OEResidue rhs) -> OEResidue
        """
        this = _oechem.new_OEResidue(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEResidue___nonzero__(self)



    def __lt__(self, rhs: 'OEResidue') -> "bool":
        """__lt__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___lt__(self, rhs)


    def __le__(self, rhs: 'OEResidue') -> "bool":
        """__le__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___le__(self, rhs)


    def __gt__(self, rhs: 'OEResidue') -> "bool":
        """__gt__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___gt__(self, rhs)


    def __ge__(self, rhs: 'OEResidue') -> "bool":
        """__ge__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___ge__(self, rhs)


    def __ne__(self, rhs: 'OEResidue') -> "bool":
        """__ne__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___ne__(self, rhs)


    def GetName(self) -> "char const *":
        """GetName(OEResidue self) -> char const *"""
        return _oechem.OEResidue_GetName(self)


    def GetOccupancy(self) -> "float":
        """GetOccupancy(OEResidue self) -> float"""
        return _oechem.OEResidue_GetOccupancy(self)


    def GetBFactor(self) -> "float":
        """GetBFactor(OEResidue self) -> float"""
        return _oechem.OEResidue_GetBFactor(self)


    def GetResidueNumber(self) -> "int":
        """GetResidueNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetResidueNumber(self)


    def GetSequenceID(self) -> "int":
        """GetSequenceID(OEResidue self) -> int"""
        return _oechem.OEResidue_GetSequenceID(self)


    def GetSerialNumber(self) -> "int":
        """GetSerialNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetSerialNumber(self)


    def GetModelNumber(self) -> "int":
        """GetModelNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetModelNumber(self)


    def GetFragmentNumber(self) -> "int":
        """GetFragmentNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetFragmentNumber(self)


    def GetSecondaryStructure(self) -> "int":
        """GetSecondaryStructure(OEResidue self) -> int"""
        return _oechem.OEResidue_GetSecondaryStructure(self)


    def GetAlternateLocation(self) -> "char":
        """GetAlternateLocation(OEResidue self) -> char"""
        return _oechem.OEResidue_GetAlternateLocation(self)


    def GetChainID(self) -> "char":
        """GetChainID(OEResidue self) -> char"""
        return _oechem.OEResidue_GetChainID(self)


    def GetExtChainID(self) -> "std::string":
        """GetExtChainID(OEResidue self) -> std::string"""
        return _oechem.OEResidue_GetExtChainID(self)


    def GetSubChainID(self) -> "std::string":
        """GetSubChainID(OEResidue self) -> std::string"""
        return _oechem.OEResidue_GetSubChainID(self)


    def GetInsertCode(self) -> "char":
        """GetInsertCode(OEResidue self) -> char"""
        return _oechem.OEResidue_GetInsertCode(self)


    def IsHetAtom(self) -> "bool":
        """IsHetAtom(OEResidue self) -> bool"""
        return _oechem.OEResidue_IsHetAtom(self)


    def SetName(self, v: 'char const *') -> "bool":
        """SetName(OEResidue self, char const * v) -> bool"""
        return _oechem.OEResidue_SetName(self, v)


    def SetOccupancy(self, v: 'float') -> "bool":
        """SetOccupancy(OEResidue self, float v) -> bool"""
        return _oechem.OEResidue_SetOccupancy(self, v)


    def SetBFactor(self, v: 'float') -> "bool":
        """SetBFactor(OEResidue self, float v) -> bool"""
        return _oechem.OEResidue_SetBFactor(self, v)


    def SetResidueNumber(self, v: 'int') -> "bool":
        """SetResidueNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetResidueNumber(self, v)


    def SetSequenceID(self, v: 'int') -> "bool":
        """SetSequenceID(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetSequenceID(self, v)


    def SetSerialNumber(self, v: 'int') -> "bool":
        """SetSerialNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetSerialNumber(self, v)


    def SetModelNumber(self, v: 'int') -> "bool":
        """SetModelNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetModelNumber(self, v)


    def SetFragmentNumber(self, v: 'int') -> "bool":
        """SetFragmentNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetFragmentNumber(self, v)


    def SetSecondaryStructure(self, v: 'int') -> "bool":
        """SetSecondaryStructure(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetSecondaryStructure(self, v)


    def SetAlternateLocation(self, v: 'char') -> "bool":
        """SetAlternateLocation(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetAlternateLocation(self, v)


    def SetChainID(self, v: 'char') -> "bool":
        """SetChainID(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetChainID(self, v)


    def SetExtChainID(self, v: 'std::string const &') -> "bool":
        """SetExtChainID(OEResidue self, std::string const & v) -> bool"""
        return _oechem.OEResidue_SetExtChainID(self, v)


    def SetSubChainID(self, v: 'std::string const &') -> "bool":
        """SetSubChainID(OEResidue self, std::string const & v) -> bool"""
        return _oechem.OEResidue_SetSubChainID(self, v)


    def SetInsertCode(self, v: 'char') -> "bool":
        """SetInsertCode(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetInsertCode(self, v)


    def SetHetAtom(self, v: 'bool') -> "bool":
        """SetHetAtom(OEResidue self, bool v) -> bool"""
        return _oechem.OEResidue_SetHetAtom(self, v)


    def __hash__(self) -> "PyObject *":
        """__hash__(OEResidue self) -> PyObject *"""
        return _oechem.OEResidue___hash__(self)


    def __eq__(self, *args) -> "bool":
        """
        __eq__(OEResidue self, OEResidue rhs) -> bool
        __eq__(OEResidue self, OEResidue rhs) -> bool
        """
        return _oechem.OEResidue___eq__(self, *args)


    def __str__(self) -> "std::string":
        """__str__(OEResidue self) -> std::string"""
        return _oechem.OEResidue___str__(self)

    __swig_destroy__ = _oechem.delete_OEResidue
    __del__ = lambda self: None
OEResidue_swigregister = _oechem.OEResidue_swigregister
OEResidue_swigregister(OEResidue)


def OEResidueToString(*args) -> "std::string":
    """
    OEResidueToString(OEResidue res, std::string const delimiter) -> std::string
    OEResidueToString(OEResidue res) -> std::string
    """
    return _oechem.OEResidueToString(*args)

def IsTrueDeprecated() -> "char const *":
    """IsTrueDeprecated() -> char const *"""
    return _oechem.IsTrueDeprecated()

def IsFalseDeprecated() -> "char const *":
    """IsFalseDeprecated() -> char const *"""
    return _oechem.IsFalseDeprecated()
class OEUnaryBaseBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OESystem::OEBase,bool)> 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__ = _oechem.delete_OEUnaryBaseBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBase') -> "bool":
        """__call__(OEUnaryBaseBoolFunc self, OEBase arg0) -> bool"""
        return _oechem.OEUnaryBaseBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryBaseBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OESystem::OEBase,bool)> self) -> OEUnaryBaseBoolFunc"""
        if self.__class__ == OEUnaryBaseBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBaseBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBaseBoolFunc(self)
        return weakref_proxy(self)
OEUnaryBaseBoolFunc_swigregister = _oechem.OEUnaryBaseBoolFunc_swigregister
OEUnaryBaseBoolFunc_swigregister(OEUnaryBaseBoolFunc)

class OEUnaryBasePred(OEUnaryBaseBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OESystem::OEBase)> 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__(OESystem::OEUnaryPredicate<(OESystem::OEBase)> self) -> OEUnaryBasePred"""
        if self.__class__ == OEUnaryBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBasePred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryBasePred
    __del__ = lambda self: None

    def __call__(self, a: 'OEBase') -> "bool":
        """__call__(OEUnaryBasePred self, OEBase a) -> bool"""
        return _oechem.OEUnaryBasePred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryBasePred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OESystem::OEBase > *":
        """CreatePredicateCopy(OEUnaryBasePred self) -> OEUnaryBasePred"""
        return _oechem.OEUnaryBasePred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBasePred(self)
        return weakref_proxy(self)
OEUnaryBasePred_swigregister = _oechem.OEUnaryBasePred_swigregister
OEUnaryBasePred_swigregister(OEUnaryBasePred)

class OEBinaryBaseFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OESystem::OEBase,OESystem::OEBase,bool)> 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__ = _oechem.delete_OEBinaryBaseFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEBase', a2: 'OEBase') -> "bool":
        """__call__(OEBinaryBaseFunc self, OEBase a1, OEBase a2) -> bool"""
        return _oechem.OEBinaryBaseFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryBaseFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OESystem::OEBase,OESystem::OEBase,bool)> self) -> OEBinaryBaseFunc"""
        if self.__class__ == OEBinaryBaseFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBaseFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBaseFunc(self)
        return weakref_proxy(self)
OEBinaryBaseFunc_swigregister = _oechem.OEBinaryBaseFunc_swigregister
OEBinaryBaseFunc_swigregister(OEBinaryBaseFunc)

class OEBinaryBasePred(OEBinaryBaseFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OESystem::OEBase,OESystem::OEBase)> class."""

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

    def __call__(self, a1: 'OEBase', a2: 'OEBase') -> "bool":
        """__call__(OEBinaryBasePred self, OEBase a1, OEBase a2) -> bool"""
        return _oechem.OEBinaryBasePred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryBasePred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OESystem::OEBase,OESystem::OEBase > *":
        """CreatePredicateCopy(OEBinaryBasePred self) -> OEBinaryBasePred"""
        return _oechem.OEBinaryBasePred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OESystem::OEBase,OESystem::OEBase)> self) -> OEBinaryBasePred"""
        if self.__class__ == OEBinaryBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBasePred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryBasePred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBasePred(self)
        return weakref_proxy(self)
OEBinaryBasePred_swigregister = _oechem.OEBinaryBasePred_swigregister
OEBinaryBasePred_swigregister(OEBinaryBasePred)


class OENotBase(OEUnaryBasePred):
    """Negation of an OEUnary Base Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Base Pred func) -> OENotNAME"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndBase(OEUnaryBasePred):
    """Logical 'and' of two OEUnary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Base Pred func1, OEUnary Base Pred func2) -> OEAnd Base"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func1, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrBase(OEUnaryBasePred):
    """Logical 'or' of two OEUnary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func1, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotBase(OEBinaryBasePred):
    """Negation of an OEBinary Base Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Base Pred func) -> OENot Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndBase(OEBinaryBasePred):
    """Logical 'and' of two OEBinary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func1, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrBase(OEBinaryBasePred):
    """Logical 'or' of two OEBinary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func1, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryAtomBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEAtomBase,bool)> 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__ = _oechem.delete_OEUnaryAtomBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEAtomBase') -> "bool":
        """__call__(OEUnaryAtomBoolFunc self, OEAtomBase arg0) -> bool"""
        return _oechem.OEUnaryAtomBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryAtomBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEAtomBase,bool)> self) -> OEUnaryAtomBoolFunc"""
        if self.__class__ == OEUnaryAtomBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryAtomBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryAtomBoolFunc(self)
        return weakref_proxy(self)
OEUnaryAtomBoolFunc_swigregister = _oechem.OEUnaryAtomBoolFunc_swigregister
OEUnaryAtomBoolFunc_swigregister(OEUnaryAtomBoolFunc)

class OEUnaryAtomPred(OEUnaryAtomBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)> 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__(OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)> self) -> OEUnaryAtomPred"""
        if self.__class__ == OEUnaryAtomPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryAtomPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryAtomPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEAtomBase') -> "bool":
        """__call__(OEUnaryAtomPred self, OEAtomBase a) -> bool"""
        return _oechem.OEUnaryAtomPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryAtomPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """CreatePredicateCopy(OEUnaryAtomPred self) -> OEUnaryAtomPred"""
        return _oechem.OEUnaryAtomPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryAtomPred(self)
        return weakref_proxy(self)
OEUnaryAtomPred_swigregister = _oechem.OEUnaryAtomPred_swigregister
OEUnaryAtomPred_swigregister(OEUnaryAtomPred)

class OEBinaryAtomFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEAtomBase,OEChem::OEAtomBase,bool)> 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__ = _oechem.delete_OEBinaryAtomFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEBinaryAtomFunc self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEBinaryAtomFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryAtomFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEAtomBase,OEChem::OEAtomBase,bool)> self) -> OEBinaryAtomFunc"""
        if self.__class__ == OEBinaryAtomFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryAtomFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryAtomFunc(self)
        return weakref_proxy(self)
OEBinaryAtomFunc_swigregister = _oechem.OEBinaryAtomFunc_swigregister
OEBinaryAtomFunc_swigregister(OEBinaryAtomFunc)

class OEBinaryAtomPred(OEBinaryAtomFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEAtomBase,OEChem::OEAtomBase)> class."""

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

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEBinaryAtomPred self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEBinaryAtomPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryAtomPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEAtomBase,OEChem::OEAtomBase > *":
        """CreatePredicateCopy(OEBinaryAtomPred self) -> OEBinaryAtomPred"""
        return _oechem.OEBinaryAtomPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEAtomBase,OEChem::OEAtomBase)> self) -> OEBinaryAtomPred"""
        if self.__class__ == OEBinaryAtomPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryAtomPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryAtomPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryAtomPred(self)
        return weakref_proxy(self)
OEBinaryAtomPred_swigregister = _oechem.OEBinaryAtomPred_swigregister
OEBinaryAtomPred_swigregister(OEBinaryAtomPred)


class OENotAtom(OEUnaryAtomPred):
    """Negation of an OEUnary Atom Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Atom Pred func) -> OENotNAME"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndAtom(OEUnaryAtomPred):
    """Logical 'and' of two OEUnary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Atom Pred func1, OEUnary Atom Pred func2) -> OEAnd Atom"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func1, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrAtom(OEUnaryAtomPred):
    """Logical 'or' of two OEUnary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func1, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotAtom(OEBinaryAtomPred):
    """Negation of an OEBinary Atom Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Atom Pred func) -> OENot Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndAtom(OEBinaryAtomPred):
    """Logical 'and' of two OEBinary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func1, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrAtom(OEBinaryAtomPred):
    """Logical 'or' of two OEBinary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func1, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryBondBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEBondBase,bool)> 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__ = _oechem.delete_OEUnaryBondBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBondBase') -> "bool":
        """__call__(OEUnaryBondBoolFunc self, OEBondBase arg0) -> bool"""
        return _oechem.OEUnaryBondBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryBondBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEBondBase,bool)> self) -> OEUnaryBondBoolFunc"""
        if self.__class__ == OEUnaryBondBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBondBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBondBoolFunc(self)
        return weakref_proxy(self)
OEUnaryBondBoolFunc_swigregister = _oechem.OEUnaryBondBoolFunc_swigregister
OEUnaryBondBoolFunc_swigregister(OEUnaryBondBoolFunc)

class OEUnaryBondPred(OEUnaryBondBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEBondBase)> 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__(OESystem::OEUnaryPredicate<(OEChem::OEBondBase)> self) -> OEUnaryBondPred"""
        if self.__class__ == OEUnaryBondPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBondPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryBondPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEBondBase') -> "bool":
        """__call__(OEUnaryBondPred self, OEBondBase a) -> bool"""
        return _oechem.OEUnaryBondPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryBondPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """CreatePredicateCopy(OEUnaryBondPred self) -> OEUnaryBondPred"""
        return _oechem.OEUnaryBondPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBondPred(self)
        return weakref_proxy(self)
OEUnaryBondPred_swigregister = _oechem.OEUnaryBondPred_swigregister
OEUnaryBondPred_swigregister(OEUnaryBondPred)

class OEBinaryBondFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEBondBase,OEChem::OEBondBase,bool)> 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__ = _oechem.delete_OEBinaryBondFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEBondBase', a2: 'OEBondBase') -> "bool":
        """__call__(OEBinaryBondFunc self, OEBondBase a1, OEBondBase a2) -> bool"""
        return _oechem.OEBinaryBondFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryBondFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEBondBase,OEChem::OEBondBase,bool)> self) -> OEBinaryBondFunc"""
        if self.__class__ == OEBinaryBondFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBondFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBondFunc(self)
        return weakref_proxy(self)
OEBinaryBondFunc_swigregister = _oechem.OEBinaryBondFunc_swigregister
OEBinaryBondFunc_swigregister(OEBinaryBondFunc)

class OEBinaryBondPred(OEBinaryBondFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEBondBase,OEChem::OEBondBase)> class."""

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

    def __call__(self, a1: 'OEBondBase', a2: 'OEBondBase') -> "bool":
        """__call__(OEBinaryBondPred self, OEBondBase a1, OEBondBase a2) -> bool"""
        return _oechem.OEBinaryBondPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryBondPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEBondBase,OEChem::OEBondBase > *":
        """CreatePredicateCopy(OEBinaryBondPred self) -> OEBinaryBondPred"""
        return _oechem.OEBinaryBondPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEBondBase,OEChem::OEBondBase)> self) -> OEBinaryBondPred"""
        if self.__class__ == OEBinaryBondPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBondPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryBondPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBondPred(self)
        return weakref_proxy(self)
OEBinaryBondPred_swigregister = _oechem.OEBinaryBondPred_swigregister
OEBinaryBondPred_swigregister(OEBinaryBondPred)


class OENotBond(OEUnaryBondPred):
    """Negation of an OEUnary Bond Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Bond Pred func) -> OENotNAME"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndBond(OEUnaryBondPred):
    """Logical 'and' of two OEUnary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Bond Pred func1, OEUnary Bond Pred func2) -> OEAnd Bond"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func1, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrBond(OEUnaryBondPred):
    """Logical 'or' of two OEUnary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func1, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotBond(OEBinaryBondPred):
    """Negation of an OEBinary Bond Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Bond Pred func) -> OENot Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndBond(OEBinaryBondPred):
    """Logical 'and' of two OEBinary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func1, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrBond(OEBinaryBondPred):
    """Logical 'or' of two OEBinary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func1, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryConfBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEConfBase,bool)> 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__ = _oechem.delete_OEUnaryConfBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEConfBase') -> "bool":
        """__call__(OEUnaryConfBoolFunc self, OEConfBase arg0) -> bool"""
        return _oechem.OEUnaryConfBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryConfBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEConfBase,bool)> self) -> OEUnaryConfBoolFunc"""
        if self.__class__ == OEUnaryConfBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryConfBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryConfBoolFunc(self)
        return weakref_proxy(self)
OEUnaryConfBoolFunc_swigregister = _oechem.OEUnaryConfBoolFunc_swigregister
OEUnaryConfBoolFunc_swigregister(OEUnaryConfBoolFunc)

class OEUnaryConfPred(OEUnaryConfBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEConfBase)> 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__(OESystem::OEUnaryPredicate<(OEChem::OEConfBase)> self) -> OEUnaryConfPred"""
        if self.__class__ == OEUnaryConfPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryConfPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryConfPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEConfBase') -> "bool":
        """__call__(OEUnaryConfPred self, OEConfBase a) -> bool"""
        return _oechem.OEUnaryConfPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryConfPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEConfBase > *":
        """CreatePredicateCopy(OEUnaryConfPred self) -> OEUnaryConfPred"""
        return _oechem.OEUnaryConfPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryConfPred(self)
        return weakref_proxy(self)
OEUnaryConfPred_swigregister = _oechem.OEUnaryConfPred_swigregister
OEUnaryConfPred_swigregister(OEUnaryConfPred)

class OEBinaryConfFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEConfBase,OEChem::OEConfBase,bool)> 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__ = _oechem.delete_OEBinaryConfFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEConfBase', a2: 'OEConfBase') -> "bool":
        """__call__(OEBinaryConfFunc self, OEConfBase a1, OEConfBase a2) -> bool"""
        return _oechem.OEBinaryConfFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryConfFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEConfBase,OEChem::OEConfBase,bool)> self) -> OEBinaryConfFunc"""
        if self.__class__ == OEBinaryConfFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryConfFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryConfFunc(self)
        return weakref_proxy(self)
OEBinaryConfFunc_swigregister = _oechem.OEBinaryConfFunc_swigregister
OEBinaryConfFunc_swigregister(OEBinaryConfFunc)

class OEBinaryConfPred(OEBinaryConfFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEConfBase,OEChem::OEConfBase)> class."""

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

    def __call__(self, a1: 'OEConfBase', a2: 'OEConfBase') -> "bool":
        """__call__(OEBinaryConfPred self, OEConfBase a1, OEConfBase a2) -> bool"""
        return _oechem.OEBinaryConfPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryConfPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEConfBase,OEChem::OEConfBase > *":
        """CreatePredicateCopy(OEBinaryConfPred self) -> OEBinaryConfPred"""
        return _oechem.OEBinaryConfPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEConfBase,OEChem::OEConfBase)> self) -> OEBinaryConfPred"""
        if self.__class__ == OEBinaryConfPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryConfPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryConfPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryConfPred(self)
        return weakref_proxy(self)
OEBinaryConfPred_swigregister = _oechem.OEBinaryConfPred_swigregister
OEBinaryConfPred_swigregister(OEBinaryConfPred)


class OENotConf(OEUnaryConfPred):
    """Negation of an OEUnary Conf Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Conf Pred func) -> OENotNAME"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndConf(OEUnaryConfPred):
    """Logical 'and' of two OEUnary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Conf Pred func1, OEUnary Conf Pred func2) -> OEAnd Conf"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func1, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrConf(OEUnaryConfPred):
    """Logical 'or' of two OEUnary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func1, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotConf(OEBinaryConfPred):
    """Negation of an OEBinary Conf Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Conf Pred func) -> OENot Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndConf(OEBinaryConfPred):
    """Logical 'and' of two OEBinary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func1, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrConf(OEBinaryConfPred):
    """Logical 'or' of two OEBinary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func1, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryMolBaseBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEMolBase,bool)> 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__ = _oechem.delete_OEUnaryMolBaseBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEMolBase') -> "bool":
        """__call__(OEUnaryMolBaseBoolFunc self, OEMolBase arg0) -> bool"""
        return _oechem.OEUnaryMolBaseBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryMolBaseBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEMolBase,bool)> self) -> OEUnaryMolBaseBoolFunc"""
        if self.__class__ == OEUnaryMolBaseBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryMolBaseBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryMolBaseBoolFunc(self)
        return weakref_proxy(self)
OEUnaryMolBaseBoolFunc_swigregister = _oechem.OEUnaryMolBaseBoolFunc_swigregister
OEUnaryMolBaseBoolFunc_swigregister(OEUnaryMolBaseBoolFunc)

class OEUnaryMolBasePred(OEUnaryMolBaseBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEMolBase)> 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__(OESystem::OEUnaryPredicate<(OEChem::OEMolBase)> self) -> OEUnaryMolBasePred"""
        if self.__class__ == OEUnaryMolBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryMolBasePred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryMolBasePred
    __del__ = lambda self: None

    def __call__(self, a: 'OEMolBase') -> "bool":
        """__call__(OEUnaryMolBasePred self, OEMolBase a) -> bool"""
        return _oechem.OEUnaryMolBasePred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryMolBasePred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEMolBase > *":
        """CreatePredicateCopy(OEUnaryMolBasePred self) -> OEUnaryMolBasePred"""
        return _oechem.OEUnaryMolBasePred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryMolBasePred(self)
        return weakref_proxy(self)
OEUnaryMolBasePred_swigregister = _oechem.OEUnaryMolBasePred_swigregister
OEUnaryMolBasePred_swigregister(OEUnaryMolBasePred)

class OEBinaryMolBaseFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEMolBase,OEChem::OEMolBase,bool)> 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__ = _oechem.delete_OEBinaryMolBaseFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEMolBase', a2: 'OEMolBase') -> "bool":
        """__call__(OEBinaryMolBaseFunc self, OEMolBase a1, OEMolBase a2) -> bool"""
        return _oechem.OEBinaryMolBaseFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryMolBaseFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEMolBase,OEChem::OEMolBase,bool)> self) -> OEBinaryMolBaseFunc"""
        if self.__class__ == OEBinaryMolBaseFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryMolBaseFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryMolBaseFunc(self)
        return weakref_proxy(self)
OEBinaryMolBaseFunc_swigregister = _oechem.OEBinaryMolBaseFunc_swigregister
OEBinaryMolBaseFunc_swigregister(OEBinaryMolBaseFunc)

class OEBinaryMolBasePred(OEBinaryMolBaseFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEMolBase,OEChem::OEMolBase)> class."""

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

    def __call__(self, a1: 'OEMolBase', a2: 'OEMolBase') -> "bool":
        """__call__(OEBinaryMolBasePred self, OEMolBase a1, OEMolBase a2) -> bool"""
        return _oechem.OEBinaryMolBasePred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryMolBasePred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEMolBase,OEChem::OEMolBase > *":
        """CreatePredicateCopy(OEBinaryMolBasePred self) -> OEBinaryMolBasePred"""
        return _oechem.OEBinaryMolBasePred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEMolBase,OEChem::OEMolBase)> self) -> OEBinaryMolBasePred"""
        if self.__class__ == OEBinaryMolBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryMolBasePred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryMolBasePred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryMolBasePred(self)
        return weakref_proxy(self)
OEBinaryMolBasePred_swigregister = _oechem.OEBinaryMolBasePred_swigregister
OEBinaryMolBasePred_swigregister(OEBinaryMolBasePred)


class OENotMolBase(OEUnaryMolBasePred):
    """Negation of an OEUnary MolBase Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary MolBase Pred func) -> OENotNAME"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndMolBase(OEUnaryMolBasePred):
    """Logical 'and' of two OEUnary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary MolBase Pred func1, OEUnary MolBase Pred func2) -> OEAnd MolBase"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func1, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrMolBase(OEUnaryMolBasePred):
    """Logical 'or' of two OEUnary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func1, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotMolBase(OEBinaryMolBasePred):
    """Negation of an OEBinary MolBase Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary MolBase Pred func) -> OENot MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndMolBase(OEBinaryMolBasePred):
    """Logical 'and' of two OEBinary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func1, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrMolBase(OEBinaryMolBasePred):
    """Logical 'or' of two OEBinary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func1, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryGraphMolBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEGraphMolWrapper,bool)> 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__ = _oechem.delete_OEUnaryGraphMolBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEGraphMol') -> "bool":
        """__call__(OEUnaryGraphMolBoolFunc self, OEGraphMol arg0) -> bool"""
        return _oechem.OEUnaryGraphMolBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryGraphMolBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEGraphMolWrapper,bool)> self) -> OEUnaryGraphMolBoolFunc"""
        if self.__class__ == OEUnaryGraphMolBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGraphMolBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGraphMolBoolFunc(self)
        return weakref_proxy(self)
OEUnaryGraphMolBoolFunc_swigregister = _oechem.OEUnaryGraphMolBoolFunc_swigregister
OEUnaryGraphMolBoolFunc_swigregister(OEUnaryGraphMolBoolFunc)

class OEUnaryGraphMolPred(OEUnaryGraphMolBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEGraphMolWrapper)> 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__(OESystem::OEUnaryPredicate<(OEGraphMolWrapper)> self) -> OEUnaryGraphMolPred"""
        if self.__class__ == OEUnaryGraphMolPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGraphMolPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryGraphMolPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEGraphMol') -> "bool":
        """__call__(OEUnaryGraphMolPred self, OEGraphMol a) -> bool"""
        return _oechem.OEUnaryGraphMolPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryGraphMolPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEGraphMolWrapper > *":
        """CreatePredicateCopy(OEUnaryGraphMolPred self) -> OEUnaryGraphMolPred"""
        return _oechem.OEUnaryGraphMolPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGraphMolPred(self)
        return weakref_proxy(self)
OEUnaryGraphMolPred_swigregister = _oechem.OEUnaryGraphMolPred_swigregister
OEUnaryGraphMolPred_swigregister(OEUnaryGraphMolPred)

class OEBinaryGraphMolFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEGraphMolWrapper,OEGraphMolWrapper,bool)> 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__ = _oechem.delete_OEBinaryGraphMolFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEGraphMol', a2: 'OEGraphMol') -> "bool":
        """__call__(OEBinaryGraphMolFunc self, OEGraphMol a1, OEGraphMol a2) -> bool"""
        return _oechem.OEBinaryGraphMolFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryGraphMolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEGraphMolWrapper,OEGraphMolWrapper,bool)> self) -> OEBinaryGraphMolFunc"""
        if self.__class__ == OEBinaryGraphMolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGraphMolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGraphMolFunc(self)
        return weakref_proxy(self)
OEBinaryGraphMolFunc_swigregister = _oechem.OEBinaryGraphMolFunc_swigregister
OEBinaryGraphMolFunc_swigregister(OEBinaryGraphMolFunc)

class OEBinaryGraphMolPred(OEBinaryGraphMolFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEGraphMolWrapper,OEGraphMolWrapper)> class."""

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

    def __call__(self, a1: 'OEGraphMol', a2: 'OEGraphMol') -> "bool":
        """__call__(OEBinaryGraphMolPred self, OEGraphMol a1, OEGraphMol a2) -> bool"""
        return _oechem.OEBinaryGraphMolPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryGraphMolPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEGraphMolWrapper,OEGraphMolWrapper > *":
        """CreatePredicateCopy(OEBinaryGraphMolPred self) -> OEBinaryGraphMolPred"""
        return _oechem.OEBinaryGraphMolPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEGraphMolWrapper,OEGraphMolWrapper)> self) -> OEBinaryGraphMolPred"""
        if self.__class__ == OEBinaryGraphMolPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGraphMolPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryGraphMolPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGraphMolPred(self)
        return weakref_proxy(self)
OEBinaryGraphMolPred_swigregister = _oechem.OEBinaryGraphMolPred_swigregister
OEBinaryGraphMolPred_swigregister(OEBinaryGraphMolPred)


class OENotGraphMol(OEUnaryGraphMolPred):
    """Negation of an OEUnary GraphMol Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary GraphMol Pred func) -> OENotNAME"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndGraphMol(OEUnaryGraphMolPred):
    """Logical 'and' of two OEUnary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary GraphMol Pred func1, OEUnary GraphMol Pred func2) -> OEAnd GraphMol"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrGraphMol(OEUnaryGraphMolPred):
    """Logical 'or' of two OEUnary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotGraphMol(OEBinaryGraphMolPred):
    """Negation of an OEBinary GraphMol Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary GraphMol Pred func) -> OENot GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndGraphMol(OEBinaryGraphMolPred):
    """Logical 'and' of two OEBinary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrGraphMol(OEBinaryGraphMolPred):
    """Logical 'or' of two OEBinary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryGroupBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEGroupBase,bool)> 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__ = _oechem.delete_OEUnaryGroupBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEGroupBase') -> "bool":
        """__call__(OEUnaryGroupBoolFunc self, OEGroupBase arg0) -> bool"""
        return _oechem.OEUnaryGroupBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryGroupBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEGroupBase,bool)> self) -> OEUnaryGroupBoolFunc"""
        if self.__class__ == OEUnaryGroupBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGroupBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGroupBoolFunc(self)
        return weakref_proxy(self)
OEUnaryGroupBoolFunc_swigregister = _oechem.OEUnaryGroupBoolFunc_swigregister
OEUnaryGroupBoolFunc_swigregister(OEUnaryGroupBoolFunc)

class OEUnaryGroupPred(OEUnaryGroupBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEGroupBase)> 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__(OESystem::OEUnaryPredicate<(OEChem::OEGroupBase)> self) -> OEUnaryGroupPred"""
        if self.__class__ == OEUnaryGroupPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGroupPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryGroupPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEGroupBase') -> "bool":
        """__call__(OEUnaryGroupPred self, OEGroupBase a) -> bool"""
        return _oechem.OEUnaryGroupPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryGroupPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEGroupBase > *":
        """CreatePredicateCopy(OEUnaryGroupPred self) -> OEUnaryGroupPred"""
        return _oechem.OEUnaryGroupPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGroupPred(self)
        return weakref_proxy(self)
OEUnaryGroupPred_swigregister = _oechem.OEUnaryGroupPred_swigregister
OEUnaryGroupPred_swigregister(OEUnaryGroupPred)

class OEBinaryGroupFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEGroupBase,OEChem::OEGroupBase,bool)> 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__ = _oechem.delete_OEBinaryGroupFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEGroupBase', a2: 'OEGroupBase') -> "bool":
        """__call__(OEBinaryGroupFunc self, OEGroupBase a1, OEGroupBase a2) -> bool"""
        return _oechem.OEBinaryGroupFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryGroupFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEGroupBase,OEChem::OEGroupBase,bool)> self) -> OEBinaryGroupFunc"""
        if self.__class__ == OEBinaryGroupFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGroupFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGroupFunc(self)
        return weakref_proxy(self)
OEBinaryGroupFunc_swigregister = _oechem.OEBinaryGroupFunc_swigregister
OEBinaryGroupFunc_swigregister(OEBinaryGroupFunc)

class OEBinaryGroupPred(OEBinaryGroupFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEGroupBase,OEChem::OEGroupBase)> class."""

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

    def __call__(self, a1: 'OEGroupBase', a2: 'OEGroupBase') -> "bool":
        """__call__(OEBinaryGroupPred self, OEGroupBase a1, OEGroupBase a2) -> bool"""
        return _oechem.OEBinaryGroupPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryGroupPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEGroupBase,OEChem::OEGroupBase > *":
        """CreatePredicateCopy(OEBinaryGroupPred self) -> OEBinaryGroupPred"""
        return _oechem.OEBinaryGroupPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEGroupBase,OEChem::OEGroupBase)> self) -> OEBinaryGroupPred"""
        if self.__class__ == OEBinaryGroupPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGroupPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryGroupPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGroupPred(self)
        return weakref_proxy(self)
OEBinaryGroupPred_swigregister = _oechem.OEBinaryGroupPred_swigregister
OEBinaryGroupPred_swigregister(OEBinaryGroupPred)


class OENotGroup(OEUnaryGroupPred):
    """Negation of an OEUnary Group Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Group Pred func) -> OENotNAME"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndGroup(OEUnaryGroupPred):
    """Logical 'and' of two OEUnary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Group Pred func1, OEUnary Group Pred func2) -> OEAnd Group"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func1, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrGroup(OEUnaryGroupPred):
    """Logical 'or' of two OEUnary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func1, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotGroup(OEBinaryGroupPred):
    """Negation of an OEBinary Group Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Group Pred func) -> OENot Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndGroup(OEBinaryGroupPred):
    """Logical 'and' of two OEBinary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func1, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrGroup(OEBinaryGroupPred):
    """Logical 'or' of two OEBinary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func1, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryFuncBondAtom(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(p.OEChem::OEBondBase,p.OEChem::OEAtomBase)> 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__ = _oechem.delete_OEUnaryFuncBondAtom
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBondBase') -> "OEChem::OEAtomBase *":
        """__call__(OEUnaryFuncBondAtom self, OEBondBase arg0) -> OEAtomBase"""
        return _oechem.OEUnaryFuncBondAtom___call__(self, arg0)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase * >::base_type *":
        """CreateCopy(OEUnaryFuncBondAtom self) -> OEUnaryFuncBondAtom"""
        return _oechem.OEUnaryFuncBondAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(p.OEChem::OEBondBase,p.OEChem::OEAtomBase)> self) -> OEUnaryFuncBondAtom"""
        if self.__class__ == OEUnaryFuncBondAtom:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryFuncBondAtom(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryFuncBondAtom(self)
        return weakref_proxy(self)
OEUnaryFuncBondAtom_swigregister = _oechem.OEUnaryFuncBondAtom_swigregister
OEUnaryFuncBondAtom_swigregister(OEUnaryFuncBondAtom)

class OEHasAtomName(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomName 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, name: 'char const *'):
        """__init__(OEChem::OEHasAtomName self, char const * name) -> OEHasAtomName"""
        this = _oechem.new_OEHasAtomName(name)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomName self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomName___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAtomName_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasAtomName
    __del__ = lambda self: None
OEHasAtomName_swigregister = _oechem.OEHasAtomName_swigregister
OEHasAtomName_swigregister(OEHasAtomName)

class OEHasChainID(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasChainID 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, id: 'char const'):
        """__init__(OEChem::OEHasChainID self, char const id) -> OEHasChainID"""
        this = _oechem.new_OEHasChainID(id)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasChainID self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasChainID___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasChainID_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasChainID
    __del__ = lambda self: None
OEHasChainID_swigregister = _oechem.OEHasChainID_swigregister
OEHasChainID_swigregister(OEHasChainID)

class OEHasResidueNumber(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasResidueNumber 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, num: 'int'):
        """__init__(OEChem::OEHasResidueNumber self, int num) -> OEHasResidueNumber"""
        this = _oechem.new_OEHasResidueNumber(num)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasResidueNumber self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasResidueNumber___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasResidueNumber_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasResidueNumber
    __del__ = lambda self: None
OEHasResidueNumber_swigregister = _oechem.OEHasResidueNumber_swigregister
OEHasResidueNumber_swigregister(OEHasResidueNumber)

class OEHasFragmentNumber(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasFragmentNumber 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, num: 'unsigned int'):
        """__init__(OEChem::OEHasFragmentNumber self, unsigned int num) -> OEHasFragmentNumber"""
        this = _oechem.new_OEHasFragmentNumber(num)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasFragmentNumber self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasFragmentNumber___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasFragmentNumber_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasFragmentNumber
    __del__ = lambda self: None
OEHasFragmentNumber_swigregister = _oechem.OEHasFragmentNumber_swigregister
OEHasFragmentNumber_swigregister(OEHasFragmentNumber)

class OEHasMapIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasMapIdx 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, idx: 'unsigned int'=0):
        """
        __init__(OEChem::OEHasMapIdx self, unsigned int idx=0) -> OEHasMapIdx
        __init__(OEChem::OEHasMapIdx self) -> OEHasMapIdx
        """
        this = _oechem.new_OEHasMapIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasMapIdx self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasMapIdx___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasMapIdx_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasMapIdx
    __del__ = lambda self: None
OEHasMapIdx_swigregister = _oechem.OEHasMapIdx_swigregister
OEHasMapIdx_swigregister(OEHasMapIdx)

class OEHasAtomicNum(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomicNum 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, an: 'unsigned int'):
        """__init__(OEChem::OEHasAtomicNum self, unsigned int an) -> OEHasAtomicNum"""
        this = _oechem.new_OEHasAtomicNum(an)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomicNum self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomicNum___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAtomicNum_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasAtomicNum
    __del__ = lambda self: None
OEHasAtomicNum_swigregister = _oechem.OEHasAtomicNum_swigregister
OEHasAtomicNum_swigregister(OEHasAtomicNum)

class OEHasHvyDegree(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasHvyDegree 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, h: 'unsigned int'):
        """__init__(OEChem::OEHasHvyDegree self, unsigned int h) -> OEHasHvyDegree"""
        this = _oechem.new_OEHasHvyDegree(h)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasHvyDegree self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasHvyDegree___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasHvyDegree_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasHvyDegree
    __del__ = lambda self: None
OEHasHvyDegree_swigregister = _oechem.OEHasHvyDegree_swigregister
OEHasHvyDegree_swigregister(OEHasHvyDegree)

class OEHasFormalCharge(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasFormalCharge 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, c: 'int'):
        """__init__(OEChem::OEHasFormalCharge self, int c) -> OEHasFormalCharge"""
        this = _oechem.new_OEHasFormalCharge(c)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasFormalCharge self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasFormalCharge___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasFormalCharge_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasFormalCharge
    __del__ = lambda self: None
OEHasFormalCharge_swigregister = _oechem.OEHasFormalCharge_swigregister
OEHasFormalCharge_swigregister(OEHasFormalCharge)

class OEIsRGroup(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsRGroup 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, idx: 'unsigned int'=0):
        """
        __init__(OEChem::OEIsRGroup self, unsigned int idx=0) -> OEIsRGroup
        __init__(OEChem::OEIsRGroup self) -> OEIsRGroup
        """
        this = _oechem.new_OEIsRGroup(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsRGroup self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsRGroup___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsRGroup_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsRGroup
    __del__ = lambda self: None
OEIsRGroup_swigregister = _oechem.OEIsRGroup_swigregister
OEIsRGroup_swigregister(OEIsRGroup)

class OENthAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OENthAtom 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, n: 'unsigned int', start: 'unsigned int'=0):
        """
        __init__(OEChem::OENthAtom self, unsigned int n, unsigned int start=0) -> OENthAtom
        __init__(OEChem::OENthAtom self, unsigned int n) -> OENthAtom
        """
        this = _oechem.new_OENthAtom(n, start)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OENthAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OENthAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OENthAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OENthAtom
    __del__ = lambda self: None
OENthAtom_swigregister = _oechem.OENthAtom_swigregister
OENthAtom_swigregister(OENthAtom)

class OEIsBridgeHead(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsBridgeHead 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__(OEChem::OEIsBridgeHead self, OEMolBase mol) -> OEIsBridgeHead
        __init__(OEChem::OEIsBridgeHead self, OEIsBridgeHead rhs) -> OEIsBridgeHead
        """
        this = _oechem.new_OEIsBridgeHead(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsBridgeHead
    __del__ = lambda self: None

    def __call__(self, *args) -> "bool":
        """
        __call__(OEIsBridgeHead self, OEIsBridgeHead rhs) -> OEIsBridgeHead
        __call__(OEIsBridgeHead self, OEAtomBase atom) -> bool
        """
        return _oechem.OEIsBridgeHead___call__(self, *args)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsBridgeHead_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEIsBridgeHead_swigregister = _oechem.OEIsBridgeHead_swigregister
OEIsBridgeHead_swigregister(OEIsBridgeHead)

class OEIsHydrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHydrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHydrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHydrogen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHydrogen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsHydrogen self) -> OEIsHydrogen"""
        this = _oechem.new_OEIsHydrogen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHydrogen
    __del__ = lambda self: None
OEIsHydrogen_swigregister = _oechem.OEIsHydrogen_swigregister
OEIsHydrogen_swigregister(OEIsHydrogen)

class OEIsHeavy(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHeavy class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHeavy self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHeavy___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHeavy_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsHeavy self) -> OEIsHeavy"""
        this = _oechem.new_OEIsHeavy()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHeavy
    __del__ = lambda self: None
OEIsHeavy_swigregister = _oechem.OEIsHeavy_swigregister
OEIsHeavy_swigregister(OEIsHeavy)

class OEIsHetero(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHetero class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHetero self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHetero___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHetero_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsHetero self) -> OEIsHetero"""
        this = _oechem.new_OEIsHetero()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHetero
    __del__ = lambda self: None
OEIsHetero_swigregister = _oechem.OEIsHetero_swigregister
OEIsHetero_swigregister(OEIsHetero)

class OEIsMetal(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsMetal class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsMetal self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsMetal___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsMetal_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsMetal self) -> OEIsMetal"""
        this = _oechem.new_OEIsMetal()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsMetal
    __del__ = lambda self: None
OEIsMetal_swigregister = _oechem.OEIsMetal_swigregister
OEIsMetal_swigregister(OEIsMetal)

class OEIsPolar(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPolar class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPolar self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPolar___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsPolar_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsPolar self) -> OEIsPolar"""
        this = _oechem.new_OEIsPolar()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPolar
    __del__ = lambda self: None
OEIsPolar_swigregister = _oechem.OEIsPolar_swigregister
OEIsPolar_swigregister(OEIsPolar)

class OEIsPolarHydrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPolarHydrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPolarHydrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPolarHydrogen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsPolarHydrogen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsPolarHydrogen self) -> OEIsPolarHydrogen"""
        this = _oechem.new_OEIsPolarHydrogen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPolarHydrogen
    __del__ = lambda self: None
OEIsPolarHydrogen_swigregister = _oechem.OEIsPolarHydrogen_swigregister
OEIsPolarHydrogen_swigregister(OEIsPolarHydrogen)

class OEIsCarbon(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsCarbon class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsCarbon self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsCarbon___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsCarbon_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsCarbon self) -> OEIsCarbon"""
        this = _oechem.new_OEIsCarbon()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCarbon
    __del__ = lambda self: None
OEIsCarbon_swigregister = _oechem.OEIsCarbon_swigregister
OEIsCarbon_swigregister(OEIsCarbon)

class OEIsCAlpha(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsCAlpha class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsCAlpha self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsCAlpha___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsCAlpha_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsCAlpha self) -> OEIsCAlpha"""
        this = _oechem.new_OEIsCAlpha()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCAlpha
    __del__ = lambda self: None
OEIsCAlpha_swigregister = _oechem.OEIsCAlpha_swigregister
OEIsCAlpha_swigregister(OEIsCAlpha)

class OEIsNitrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsNitrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNitrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNitrogen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNitrogen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsNitrogen self) -> OEIsNitrogen"""
        this = _oechem.new_OEIsNitrogen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNitrogen
    __del__ = lambda self: None
OEIsNitrogen_swigregister = _oechem.OEIsNitrogen_swigregister
OEIsNitrogen_swigregister(OEIsNitrogen)

class OEIsInvertibleNitrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsInvertibleNitrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsInvertibleNitrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsInvertibleNitrogen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsInvertibleNitrogen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsInvertibleNitrogen self) -> OEIsInvertibleNitrogen"""
        this = _oechem.new_OEIsInvertibleNitrogen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsInvertibleNitrogen
    __del__ = lambda self: None
OEIsInvertibleNitrogen_swigregister = _oechem.OEIsInvertibleNitrogen_swigregister
OEIsInvertibleNitrogen_swigregister(OEIsInvertibleNitrogen)

class OEIsOxygen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsOxygen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsOxygen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsOxygen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsOxygen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsOxygen self) -> OEIsOxygen"""
        this = _oechem.new_OEIsOxygen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsOxygen
    __del__ = lambda self: None
OEIsOxygen_swigregister = _oechem.OEIsOxygen_swigregister
OEIsOxygen_swigregister(OEIsOxygen)

class OEIsHalogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHalogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHalogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHalogen___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHalogen_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsHalogen self) -> OEIsHalogen"""
        this = _oechem.new_OEIsHalogen()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHalogen
    __del__ = lambda self: None
OEIsHalogen_swigregister = _oechem.OEIsHalogen_swigregister
OEIsHalogen_swigregister(OEIsHalogen)

class OEIsSulfur(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsSulfur class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsSulfur self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsSulfur___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsSulfur_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsSulfur self) -> OEIsSulfur"""
        this = _oechem.new_OEIsSulfur()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsSulfur
    __del__ = lambda self: None
OEIsSulfur_swigregister = _oechem.OEIsSulfur_swigregister
OEIsSulfur_swigregister(OEIsSulfur)

class OEIsPhosphorus(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPhosphorus class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPhosphorus self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPhosphorus___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsPhosphorus_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsPhosphorus self) -> OEIsPhosphorus"""
        this = _oechem.new_OEIsPhosphorus()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPhosphorus
    __del__ = lambda self: None
OEIsPhosphorus_swigregister = _oechem.OEIsPhosphorus_swigregister
OEIsPhosphorus_swigregister(OEIsPhosphorus)

class OEIsAromaticAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsAromaticAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAromaticAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAromaticAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsAromaticAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsAromaticAtom self) -> OEIsAromaticAtom"""
        this = _oechem.new_OEIsAromaticAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAromaticAtom
    __del__ = lambda self: None
OEIsAromaticAtom_swigregister = _oechem.OEIsAromaticAtom_swigregister
OEIsAromaticAtom_swigregister(OEIsAromaticAtom)

class OEIsHalide(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHalide class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHalide self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHalide___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHalide_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsHalide self) -> OEIsHalide"""
        this = _oechem.new_OEIsHalide()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHalide
    __del__ = lambda self: None
OEIsHalide_swigregister = _oechem.OEIsHalide_swigregister
OEIsHalide_swigregister(OEIsHalide)

class OEAtomIsInRing(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInRing class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInRing self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInRing___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInRing_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEAtomIsInRing self) -> OEAtomIsInRing"""
        this = _oechem.new_OEAtomIsInRing()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInRing
    __del__ = lambda self: None
OEAtomIsInRing_swigregister = _oechem.OEAtomIsInRing_swigregister
OEAtomIsInRing_swigregister(OEAtomIsInRing)

class OEAtomIsInChain(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInChain class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInChain self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInChain___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInChain_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEAtomIsInChain self) -> OEAtomIsInChain"""
        this = _oechem.new_OEAtomIsInChain()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInChain
    __del__ = lambda self: None
OEAtomIsInChain_swigregister = _oechem.OEAtomIsInChain_swigregister
OEAtomIsInChain_swigregister(OEAtomIsInChain)

class OEIsChiralAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsChiralAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsChiralAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsChiralAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsChiralAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsChiralAtom self) -> OEIsChiralAtom"""
        this = _oechem.new_OEIsChiralAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChiralAtom
    __del__ = lambda self: None
OEIsChiralAtom_swigregister = _oechem.OEIsChiralAtom_swigregister
OEIsChiralAtom_swigregister(OEIsChiralAtom)

class OEIsTermHeavyAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsTermHeavyAtom 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__(OEChem::OEIsTermHeavyAtom self) -> OEIsTermHeavyAtom"""
        this = _oechem.new_OEIsTermHeavyAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsTermHeavyAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsTermHeavyAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsTermHeavyAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsTermHeavyAtom
    __del__ = lambda self: None
OEIsTermHeavyAtom_swigregister = _oechem.OEIsTermHeavyAtom_swigregister
OEIsTermHeavyAtom_swigregister(OEIsTermHeavyAtom)

class OEHasAtomStereoSpecified(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomStereoSpecified class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomStereoSpecified self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomStereoSpecified___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAtomStereoSpecified_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self, *args):
        """
        __init__(OEChem::OEHasAtomStereoSpecified self) -> OEHasAtomStereoSpecified
        __init__(OEChem::OEHasAtomStereoSpecified self, unsigned int v) -> OEHasAtomStereoSpecified
        """
        this = _oechem.new_OEHasAtomStereoSpecified(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasAtomStereoSpecified
    __del__ = lambda self: None
OEHasAtomStereoSpecified_swigregister = _oechem.OEHasAtomStereoSpecified_swigregister
OEHasAtomStereoSpecified_swigregister(OEHasAtomStereoSpecified)

class OEHasAlphaBetaUnsat(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAlphaBetaUnsat 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, includePandS: 'bool'=True):
        """
        __init__(OEChem::OEHasAlphaBetaUnsat self, bool includePandS=True) -> OEHasAlphaBetaUnsat
        __init__(OEChem::OEHasAlphaBetaUnsat self) -> OEHasAlphaBetaUnsat
        """
        this = _oechem.new_OEHasAlphaBetaUnsat(includePandS)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAlphaBetaUnsat self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAlphaBetaUnsat___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAlphaBetaUnsat_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasAlphaBetaUnsat
    __del__ = lambda self: None
OEHasAlphaBetaUnsat_swigregister = _oechem.OEHasAlphaBetaUnsat_swigregister
OEHasAlphaBetaUnsat_swigregister(OEHasAlphaBetaUnsat)

class OEAtomIsInResidue(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInResidue 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__(OEChem::OEAtomIsInResidue self, OEResidue r) -> OEAtomIsInResidue
        __init__(OEChem::OEAtomIsInResidue self, OEAtomIsInResidue rhs) -> OEAtomIsInResidue
        """
        this = _oechem.new_OEAtomIsInResidue(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInResidue self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInResidue___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInResidue_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEAtomIsInResidue
    __del__ = lambda self: None
OEAtomIsInResidue_swigregister = _oechem.OEAtomIsInResidue_swigregister
OEAtomIsInResidue_swigregister(OEAtomIsInResidue)

class OEAtomIsInReactant(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInReactant class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInReactant self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInReactant___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInReactant_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEAtomIsInReactant self) -> OEAtomIsInReactant"""
        this = _oechem.new_OEAtomIsInReactant()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInReactant
    __del__ = lambda self: None
OEAtomIsInReactant_swigregister = _oechem.OEAtomIsInReactant_swigregister
OEAtomIsInReactant_swigregister(OEAtomIsInReactant)

class OEAtomIsInAgent(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInAgent class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInAgent self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInAgent___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInAgent_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEAtomIsInAgent self) -> OEAtomIsInAgent"""
        this = _oechem.new_OEAtomIsInAgent()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInAgent
    __del__ = lambda self: None
OEAtomIsInAgent_swigregister = _oechem.OEAtomIsInAgent_swigregister
OEAtomIsInAgent_swigregister(OEAtomIsInAgent)

class OEAtomIsInProduct(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInProduct class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInProduct self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInProduct___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomIsInProduct_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEAtomIsInProduct self) -> OEAtomIsInProduct"""
        this = _oechem.new_OEAtomIsInProduct()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInProduct
    __del__ = lambda self: None
OEAtomIsInProduct_swigregister = _oechem.OEAtomIsInProduct_swigregister
OEAtomIsInProduct_swigregister(OEAtomIsInProduct)

class OEIsNonRingAtomDoubleBondedToRing(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsNonRingAtomDoubleBondedToRing class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNonRingAtomDoubleBondedToRing self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNonRingAtomDoubleBondedToRing___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNonRingAtomDoubleBondedToRing_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsNonRingAtomDoubleBondedToRing self) -> OEIsNonRingAtomDoubleBondedToRing"""
        this = _oechem.new_OEIsNonRingAtomDoubleBondedToRing()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNonRingAtomDoubleBondedToRing
    __del__ = lambda self: None
OEIsNonRingAtomDoubleBondedToRing_swigregister = _oechem.OEIsNonRingAtomDoubleBondedToRing_swigregister
OEIsNonRingAtomDoubleBondedToRing_swigregister(OEIsNonRingAtomDoubleBondedToRing)

class OEIsAtomHybridization(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsAtomHybridization 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, h: 'unsigned int'):
        """__init__(OEChem::OEIsAtomHybridization self, unsigned int h) -> OEIsAtomHybridization"""
        this = _oechem.new_OEIsAtomHybridization(h)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAtomHybridization self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAtomHybridization___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsAtomHybridization_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsAtomHybridization
    __del__ = lambda self: None
OEIsAtomHybridization_swigregister = _oechem.OEIsAtomHybridization_swigregister
OEIsAtomHybridization_swigregister(OEIsAtomHybridization)

class OEHasOrder(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasOrder 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, o: 'unsigned int'):
        """__init__(OEChem::OEHasOrder self, unsigned int o) -> OEHasOrder"""
        this = _oechem.new_OEHasOrder(o)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEHasOrder self, OEBondBase bond) -> bool"""
        return _oechem.OEHasOrder___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasOrder_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasOrder
    __del__ = lambda self: None
OEHasOrder_swigregister = _oechem.OEHasOrder_swigregister
OEHasOrder_swigregister(OEHasOrder)

class OEBondIsInRing(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEBondIsInRing class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEBondIsInRing self, OEBondBase bond) -> bool"""
        return _oechem.OEBondIsInRing___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBondIsInRing_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEBondIsInRing self) -> OEBondIsInRing"""
        this = _oechem.new_OEBondIsInRing()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIsInRing
    __del__ = lambda self: None
OEBondIsInRing_swigregister = _oechem.OEBondIsInRing_swigregister
OEBondIsInRing_swigregister(OEBondIsInRing)

class OEBondIsInChain(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEBondIsInChain class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEBondIsInChain self, OEBondBase bond) -> bool"""
        return _oechem.OEBondIsInChain___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBondIsInChain_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEBondIsInChain self) -> OEBondIsInChain"""
        this = _oechem.new_OEBondIsInChain()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIsInChain
    __del__ = lambda self: None
OEBondIsInChain_swigregister = _oechem.OEBondIsInChain_swigregister
OEBondIsInChain_swigregister(OEBondIsInChain)

class OEIsRotor(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsRotor 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, includeHydrogen: 'bool'=False):
        """
        __init__(OEChem::OEIsRotor self, bool includeHydrogen=False) -> OEIsRotor
        __init__(OEChem::OEIsRotor self) -> OEIsRotor
        """
        this = _oechem.new_OEIsRotor(includeHydrogen)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsRotor self, OEBondBase bond) -> bool"""
        return _oechem.OEIsRotor___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsRotor_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsRotor
    __del__ = lambda self: None
OEIsRotor_swigregister = _oechem.OEIsRotor_swigregister
OEIsRotor_swigregister(OEIsRotor)

class OEIsChiralBond(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsChiralBond class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsChiralBond self, OEBondBase bond) -> bool"""
        return _oechem.OEIsChiralBond___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsChiralBond_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsChiralBond self) -> OEIsChiralBond"""
        this = _oechem.new_OEIsChiralBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChiralBond
    __del__ = lambda self: None
OEIsChiralBond_swigregister = _oechem.OEIsChiralBond_swigregister
OEIsChiralBond_swigregister(OEIsChiralBond)

class OEHasBondStereoSpecified(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasBondStereoSpecified class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEHasBondStereoSpecified self, OEBondBase bond) -> bool"""
        return _oechem.OEHasBondStereoSpecified___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasBondStereoSpecified_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self, *args):
        """
        __init__(OEChem::OEHasBondStereoSpecified self, unsigned int v) -> OEHasBondStereoSpecified
        __init__(OEChem::OEHasBondStereoSpecified self) -> OEHasBondStereoSpecified
        """
        this = _oechem.new_OEHasBondStereoSpecified(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasBondStereoSpecified
    __del__ = lambda self: None
OEHasBondStereoSpecified_swigregister = _oechem.OEHasBondStereoSpecified_swigregister
OEHasBondStereoSpecified_swigregister(OEHasBondStereoSpecified)

class OEIsAromaticBond(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsAromaticBond class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsAromaticBond self, OEBondBase bond) -> bool"""
        return _oechem.OEIsAromaticBond___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsAromaticBond_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEIsAromaticBond self) -> OEIsAromaticBond"""
        this = _oechem.new_OEIsAromaticBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAromaticBond
    __del__ = lambda self: None
OEIsAromaticBond_swigregister = _oechem.OEIsAromaticBond_swigregister
OEIsAromaticBond_swigregister(OEIsAromaticBond)

class OEGetNbrAtom(OEUnaryFuncBondAtom):
    """Proxy of C++ OEChem::OEGetNbrAtom 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, atom: 'OEAtomBase'):
        """__init__(OEChem::OEGetNbrAtom self, OEAtomBase atom) -> OEGetNbrAtom"""
        this = _oechem.new_OEGetNbrAtom(atom)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg2: 'OEBondBase') -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase * >::result_type":
        """__call__(OEGetNbrAtom self, OEBondBase arg2) -> OEAtomBase"""
        return _oechem.OEGetNbrAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase *,true,true > *":
        """CreateCopy(OEGetNbrAtom self) -> OEUnaryFuncBondAtom"""
        return _oechem.OEGetNbrAtom_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEGetNbrAtom
    __del__ = lambda self: None
OEGetNbrAtom_swigregister = _oechem.OEGetNbrAtom_swigregister
OEGetNbrAtom_swigregister(OEGetNbrAtom)

class OEInSamePart(OEBinaryAtomPred):
    """Proxy of C++ OEChem::OEInSamePart 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__(OEChem::OEInSamePart self, unsigned int * parts, bool boolval=True) -> OEInSamePart
        __init__(OEChem::OEInSamePart self, unsigned int * parts) -> OEInSamePart
        __init__(OEChem::OEInSamePart self, OEInSamePart rhs) -> OEInSamePart
        """
        this = _oechem.new_OEInSamePart(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInSamePart
    __del__ = lambda self: None

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEInSamePart self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEInSamePart___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEInSamePart_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEInSamePart_swigregister = _oechem.OEInSamePart_swigregister
OEInSamePart_swigregister(OEInSamePart)


def OERingBondCount(atom: 'OEAtomBase') -> "unsigned int":
    """OERingBondCount(OEAtomBase atom) -> unsigned int"""
    return _oechem.OERingBondCount(atom)
class OEHasGroupType(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasGroupType 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, type: 'unsigned int'):
        """__init__(OEChem::OEHasGroupType self, unsigned int type) -> OEHasGroupType"""
        this = _oechem.new_OEHasGroupType(type)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasGroupType self, OEGroupBase group) -> bool"""
        return _oechem.OEHasGroupType___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasGroupType self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasGroupType_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasGroupType
    __del__ = lambda self: None
OEHasGroupType_swigregister = _oechem.OEHasGroupType_swigregister
OEHasGroupType_swigregister(OEHasGroupType)

class OEIsMDLStereoGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsMDLStereoGroup 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__(OEChem::OEIsMDLStereoGroup self) -> OEIsMDLStereoGroup"""
        this = _oechem.new_OEIsMDLStereoGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsMDLStereoGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsMDLStereoGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsMDLStereoGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsMDLStereoGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsMDLStereoGroup
    __del__ = lambda self: None
OEIsMDLStereoGroup_swigregister = _oechem.OEIsMDLStereoGroup_swigregister
OEIsMDLStereoGroup_swigregister(OEIsMDLStereoGroup)

class OEIsRxnComponentGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsRxnComponentGroup 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__(OEChem::OEIsRxnComponentGroup self) -> OEIsRxnComponentGroup"""
        this = _oechem.new_OEIsRxnComponentGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsRxnComponentGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsRxnComponentGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsRxnComponentGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsRxnComponentGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsRxnComponentGroup
    __del__ = lambda self: None
OEIsRxnComponentGroup_swigregister = _oechem.OEIsRxnComponentGroup_swigregister
OEIsRxnComponentGroup_swigregister(OEIsRxnComponentGroup)

class OEIsReactantGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsReactantGroup 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__(OEChem::OEIsReactantGroup self) -> OEIsReactantGroup"""
        this = _oechem.new_OEIsReactantGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsReactantGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsReactantGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsReactantGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsReactantGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsReactantGroup
    __del__ = lambda self: None
OEIsReactantGroup_swigregister = _oechem.OEIsReactantGroup_swigregister
OEIsReactantGroup_swigregister(OEIsReactantGroup)

class OEIsProductGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsProductGroup 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__(OEChem::OEIsProductGroup self) -> OEIsProductGroup"""
        this = _oechem.new_OEIsProductGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsProductGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsProductGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsProductGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsProductGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsProductGroup
    __del__ = lambda self: None
OEIsProductGroup_swigregister = _oechem.OEIsProductGroup_swigregister
OEIsProductGroup_swigregister(OEIsProductGroup)

class OEHasAtomInGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasAtomInGroup 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, atom: 'OEAtomBase'):
        """__init__(OEChem::OEHasAtomInGroup self, OEAtomBase atom) -> OEHasAtomInGroup"""
        this = _oechem.new_OEHasAtomInGroup(atom)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasAtomInGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEHasAtomInGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasAtomInGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasAtomInGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasAtomInGroup
    __del__ = lambda self: None
OEHasAtomInGroup_swigregister = _oechem.OEHasAtomInGroup_swigregister
OEHasAtomInGroup_swigregister(OEHasAtomInGroup)

class OEHasBondInGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasBondInGroup 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, bond: 'OEBondBase'):
        """__init__(OEChem::OEHasBondInGroup self, OEBondBase bond) -> OEHasBondInGroup"""
        this = _oechem.new_OEHasBondInGroup(bond)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasBondInGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEHasBondInGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasBondInGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasBondInGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasBondInGroup
    __del__ = lambda self: None
OEHasBondInGroup_swigregister = _oechem.OEHasBondInGroup_swigregister
OEHasBondInGroup_swigregister(OEHasBondInGroup)

class HasAtomIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEAtomBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEAtomBase)> self, unsigned int idx) -> HasAtomIdx"""
        this = _oechem.new_HasAtomIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(HasAtomIdx self, OEAtomBase arg) -> bool"""
        return _oechem.HasAtomIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(HasAtomIdx self) -> OEUnaryAtomBoolFunc"""
        return _oechem.HasAtomIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasAtomIdx
    __del__ = lambda self: None
HasAtomIdx_swigregister = _oechem.HasAtomIdx_swigregister
HasAtomIdx_swigregister(HasAtomIdx)

class HasBondIdx(OEUnaryBondPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEBondBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEBondBase)> self, unsigned int idx) -> HasBondIdx"""
        this = _oechem.new_HasBondIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(HasBondIdx self, OEBondBase arg) -> bool"""
        return _oechem.HasBondIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(HasBondIdx self) -> OEUnaryBondBoolFunc"""
        return _oechem.HasBondIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasBondIdx
    __del__ = lambda self: None
HasBondIdx_swigregister = _oechem.HasBondIdx_swigregister
HasBondIdx_swigregister(HasBondIdx)

class HasConfIdx(OEUnaryConfPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEConfBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEConfBase)> self, unsigned int idx) -> HasConfIdx"""
        this = _oechem.new_HasConfIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEConfBase') -> "bool":
        """__call__(HasConfIdx self, OEConfBase arg) -> bool"""
        return _oechem.HasConfIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(HasConfIdx self) -> OEUnaryConfBoolFunc"""
        return _oechem.HasConfIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasConfIdx
    __del__ = lambda self: None
HasConfIdx_swigregister = _oechem.HasConfIdx_swigregister
HasConfIdx_swigregister(HasConfIdx)

class OEHasAtomIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEAtomBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEAtomBase)> self, unsigned int idx) -> OEHasAtomIdx"""
        this = _oechem.new_OEHasAtomIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomIdx self, OEAtomBase arg) -> bool"""
        return _oechem.OEHasAtomIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEHasAtomIdx self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEHasAtomIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasAtomIdx
    __del__ = lambda self: None
OEHasAtomIdx_swigregister = _oechem.OEHasAtomIdx_swigregister
OEHasAtomIdx_swigregister(OEHasAtomIdx)

class OEHasBondIdx(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEBondBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEBondBase)> self, unsigned int idx) -> OEHasBondIdx"""
        this = _oechem.new_OEHasBondIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(OEHasBondIdx self, OEBondBase arg) -> bool"""
        return _oechem.OEHasBondIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(OEHasBondIdx self) -> OEUnaryBondBoolFunc"""
        return _oechem.OEHasBondIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasBondIdx
    __del__ = lambda self: None
OEHasBondIdx_swigregister = _oechem.OEHasBondIdx_swigregister
OEHasBondIdx_swigregister(OEHasBondIdx)

class OEHasConfIdx(OEUnaryConfPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEConfBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEConfBase)> self, unsigned int idx) -> OEHasConfIdx"""
        this = _oechem.new_OEHasConfIdx(idx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEConfBase') -> "bool":
        """__call__(OEHasConfIdx self, OEConfBase arg) -> bool"""
        return _oechem.OEHasConfIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(OEHasConfIdx self) -> OEUnaryConfBoolFunc"""
        return _oechem.OEHasConfIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasConfIdx
    __del__ = lambda self: None
OEHasConfIdx_swigregister = _oechem.OEHasConfIdx_swigregister
OEHasConfIdx_swigregister(OEHasConfIdx)

class OEAtomIdxSelected(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEAtomBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEAtomBase)> self, OEBitVector bv) -> OEAtomIdxSelected"""
        this = _oechem.new_OEAtomIdxSelected(bv)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, a: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIdxSelected self, OEAtomBase a) -> bool"""
        return _oechem.OEAtomIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEAtomIdxSelected self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEAtomIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEAtomIdxSelected
    __del__ = lambda self: None
OEAtomIdxSelected_swigregister = _oechem.OEAtomIdxSelected_swigregister
OEAtomIdxSelected_swigregister(OEAtomIdxSelected)

class OEBondIdxSelected(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEBondBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEBondBase)> self, OEBitVector bv) -> OEBondIdxSelected"""
        this = _oechem.new_OEBondIdxSelected(bv)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, a: 'OEBondBase') -> "bool":
        """__call__(OEBondIdxSelected self, OEBondBase a) -> bool"""
        return _oechem.OEBondIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(OEBondIdxSelected self) -> OEUnaryBondBoolFunc"""
        return _oechem.OEBondIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEBondIdxSelected
    __del__ = lambda self: None
OEBondIdxSelected_swigregister = _oechem.OEBondIdxSelected_swigregister
OEBondIdxSelected_swigregister(OEBondIdxSelected)

class OEConfIdxSelected(OEUnaryConfPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEConfBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEConfBase)> self, OEBitVector bv) -> OEConfIdxSelected"""
        this = _oechem.new_OEConfIdxSelected(bv)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, a: 'OEConfBase') -> "bool":
        """__call__(OEConfIdxSelected self, OEConfBase a) -> bool"""
        return _oechem.OEConfIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(OEConfIdxSelected self) -> OEUnaryConfBoolFunc"""
        return _oechem.OEConfIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEConfIdxSelected
    __del__ = lambda self: None
OEConfIdxSelected_swigregister = _oechem.OEConfIdxSelected_swigregister
OEConfIdxSelected_swigregister(OEConfIdxSelected)

class OEMatchAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEMatchFunc<(OEChem::OEAtomBase)> 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__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, char const * smarts) -> OEMatchAtom
        __init__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, OEQMolBase qm) -> OEMatchAtom
        __init__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, OEMolBase mol, unsigned int atomMap, unsigned int bondMap) -> OEMatchAtom
        """
        this = _oechem.new_OEMatchAtom(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchAtom___nonzero__(self)



    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEMatchAtom self, OEAtomBase arg) -> bool"""
        return _oechem.OEMatchAtom___call__(self, arg)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMatchAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEMatchAtom
    __del__ = lambda self: None
OEMatchAtom_swigregister = _oechem.OEMatchAtom_swigregister
OEMatchAtom_swigregister(OEMatchAtom)

class OEMatchMolBase(OEUnaryMolBasePred):
    """Proxy of C++ OEChem::OEMatchFunc<(OEChem::OEMolBase)> 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__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, char const * smarts) -> OEMatchMolBase
        __init__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, OEQMolBase qm) -> OEMatchMolBase
        __init__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OEMatchMolBase
        """
        this = _oechem.new_OEMatchMolBase(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchMolBase___nonzero__(self)



    def __call__(self, arg: 'OEMolBase') -> "bool":
        """__call__(OEMatchMolBase self, OEMolBase arg) -> bool"""
        return _oechem.OEMatchMolBase___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEMolBase,bool,true,true > *":
        """CreateCopy(OEMatchMolBase self) -> OEUnaryMolBaseBoolFunc"""
        return _oechem.OEMatchMolBase_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMatchMolBase
    __del__ = lambda self: None
OEMatchMolBase_swigregister = _oechem.OEMatchMolBase_swigregister
OEMatchMolBase_swigregister(OEMatchMolBase)

class OEMatchGraphMol(OEUnaryGraphMolPred):
    """Proxy of C++ OEChem::OEMatchFunc<(OEGraphMolWrapper)> 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__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, char const * smarts) -> OEMatchGraphMol
        __init__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, OEQMolBase qm) -> OEMatchGraphMol
        __init__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OEMatchGraphMol
        """
        this = _oechem.new_OEMatchGraphMol(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchGraphMol___nonzero__(self)



    def __call__(self, arg: 'OEGraphMol') -> "bool":
        """__call__(OEMatchGraphMol self, OEGraphMol arg) -> bool"""
        return _oechem.OEMatchGraphMol___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEGraphMolWrapper,bool,true,true > *":
        """CreateCopy(OEMatchGraphMol self) -> OEUnaryGraphMolBoolFunc"""
        return _oechem.OEMatchGraphMol_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMatchGraphMol
    __del__ = lambda self: None
OEMatchGraphMol_swigregister = _oechem.OEMatchGraphMol_swigregister
OEMatchGraphMol_swigregister(OEMatchGraphMol)

class IsTrueAtom(OEUnaryAtomPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEAtomBase)> class."""

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

    def __call__(self, arg2: 'OEAtomBase') -> "bool":
        """__call__(IsTrueAtom self, OEAtomBase arg2) -> bool"""
        return _oechem.IsTrueAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool > *":
        """CreateCopy(IsTrueAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.IsTrueAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEAtomBase)> self) -> IsTrueAtom"""
        this = _oechem.new_IsTrueAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueAtom
    __del__ = lambda self: None
IsTrueAtom_swigregister = _oechem.IsTrueAtom_swigregister
IsTrueAtom_swigregister(IsTrueAtom)

class IsFalseAtom(OEUnaryAtomPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEAtomBase)> class."""

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

    def __call__(self, arg2: 'OEAtomBase') -> "bool":
        """__call__(IsFalseAtom self, OEAtomBase arg2) -> bool"""
        return _oechem.IsFalseAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool > *":
        """CreateCopy(IsFalseAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.IsFalseAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEAtomBase)> self) -> IsFalseAtom"""
        this = _oechem.new_IsFalseAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseAtom
    __del__ = lambda self: None
IsFalseAtom_swigregister = _oechem.IsFalseAtom_swigregister
IsFalseAtom_swigregister(IsFalseAtom)

class IsTrueBond(OEUnaryBondPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEBondBase)> class."""

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

    def __call__(self, arg2: 'OEBondBase') -> "bool":
        """__call__(IsTrueBond self, OEBondBase arg2) -> bool"""
        return _oechem.IsTrueBond___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool > *":
        """CreateCopy(IsTrueBond self) -> OEUnaryBondBoolFunc"""
        return _oechem.IsTrueBond_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEBondBase)> self) -> IsTrueBond"""
        this = _oechem.new_IsTrueBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueBond
    __del__ = lambda self: None
IsTrueBond_swigregister = _oechem.IsTrueBond_swigregister
IsTrueBond_swigregister(IsTrueBond)

class IsFalseBond(OEUnaryBondPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEBondBase)> class."""

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

    def __call__(self, arg2: 'OEBondBase') -> "bool":
        """__call__(IsFalseBond self, OEBondBase arg2) -> bool"""
        return _oechem.IsFalseBond___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool > *":
        """CreateCopy(IsFalseBond self) -> OEUnaryBondBoolFunc"""
        return _oechem.IsFalseBond_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEBondBase)> self) -> IsFalseBond"""
        this = _oechem.new_IsFalseBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseBond
    __del__ = lambda self: None
IsFalseBond_swigregister = _oechem.IsFalseBond_swigregister
IsFalseBond_swigregister(IsFalseBond)

class IsTrueConf(OEUnaryConfPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEConfBase)> class."""

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

    def __call__(self, arg2: 'OEConfBase') -> "bool":
        """__call__(IsTrueConf self, OEConfBase arg2) -> bool"""
        return _oechem.IsTrueConf___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool > *":
        """CreateCopy(IsTrueConf self) -> OEUnaryConfBoolFunc"""
        return _oechem.IsTrueConf_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEConfBase)> self) -> IsTrueConf"""
        this = _oechem.new_IsTrueConf()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueConf
    __del__ = lambda self: None
IsTrueConf_swigregister = _oechem.IsTrueConf_swigregister
IsTrueConf_swigregister(IsTrueConf)

class IsFalseConf(OEUnaryConfPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEConfBase)> class."""

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

    def __call__(self, arg2: 'OEConfBase') -> "bool":
        """__call__(IsFalseConf self, OEConfBase arg2) -> bool"""
        return _oechem.IsFalseConf___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool > *":
        """CreateCopy(IsFalseConf self) -> OEUnaryConfBoolFunc"""
        return _oechem.IsFalseConf_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEConfBase)> self) -> IsFalseConf"""
        this = _oechem.new_IsFalseConf()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseConf
    __del__ = lambda self: None
IsFalseConf_swigregister = _oechem.IsFalseConf_swigregister
IsFalseConf_swigregister(IsFalseConf)

class IsTrueGroup(OEUnaryGroupPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEGroupBase)> class."""

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

    def __call__(self, arg2: 'OEGroupBase') -> "bool":
        """__call__(IsTrueGroup self, OEGroupBase arg2) -> bool"""
        return _oechem.IsTrueGroup___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool > *":
        """CreateCopy(IsTrueGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.IsTrueGroup_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEGroupBase)> self) -> IsTrueGroup"""
        this = _oechem.new_IsTrueGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueGroup
    __del__ = lambda self: None
IsTrueGroup_swigregister = _oechem.IsTrueGroup_swigregister
IsTrueGroup_swigregister(IsTrueGroup)

class IsFalseGroup(OEUnaryGroupPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEGroupBase)> class."""

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

    def __call__(self, arg2: 'OEGroupBase') -> "bool":
        """__call__(IsFalseGroup self, OEGroupBase arg2) -> bool"""
        return _oechem.IsFalseGroup___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool > *":
        """CreateCopy(IsFalseGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.IsFalseGroup_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEGroupBase)> self) -> IsFalseGroup"""
        this = _oechem.new_IsFalseGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseGroup
    __del__ = lambda self: None
IsFalseGroup_swigregister = _oechem.IsFalseGroup_swigregister
IsFalseGroup_swigregister(IsFalseGroup)

class OEIsTrueAtom(IsTrueAtom):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEAtomBase)> 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__(OESystem::OEUnaryTrue<(OEChem::OEAtomBase)> self) -> OEIsTrueAtom"""
        this = _oechem.new_OEIsTrueAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueAtom
    __del__ = lambda self: None
OEIsTrueAtom_swigregister = _oechem.OEIsTrueAtom_swigregister
OEIsTrueAtom_swigregister(OEIsTrueAtom)

class OEIsFalseAtom(IsFalseAtom):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEAtomBase)> 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__(OESystem::OEUnaryFalse<(OEChem::OEAtomBase)> self) -> OEIsFalseAtom"""
        this = _oechem.new_OEIsFalseAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseAtom
    __del__ = lambda self: None
OEIsFalseAtom_swigregister = _oechem.OEIsFalseAtom_swigregister
OEIsFalseAtom_swigregister(OEIsFalseAtom)

class OEIsTrueBond(IsTrueBond):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEBondBase)> 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__(OESystem::OEUnaryTrue<(OEChem::OEBondBase)> self) -> OEIsTrueBond"""
        this = _oechem.new_OEIsTrueBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueBond
    __del__ = lambda self: None
OEIsTrueBond_swigregister = _oechem.OEIsTrueBond_swigregister
OEIsTrueBond_swigregister(OEIsTrueBond)

class OEIsFalseBond(IsFalseBond):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEBondBase)> 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__(OESystem::OEUnaryFalse<(OEChem::OEBondBase)> self) -> OEIsFalseBond"""
        this = _oechem.new_OEIsFalseBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseBond
    __del__ = lambda self: None
OEIsFalseBond_swigregister = _oechem.OEIsFalseBond_swigregister
OEIsFalseBond_swigregister(OEIsFalseBond)

class OEIsTrueConf(IsTrueConf):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEConfBase)> 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__(OESystem::OEUnaryTrue<(OEChem::OEConfBase)> self) -> OEIsTrueConf"""
        this = _oechem.new_OEIsTrueConf()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueConf
    __del__ = lambda self: None
OEIsTrueConf_swigregister = _oechem.OEIsTrueConf_swigregister
OEIsTrueConf_swigregister(OEIsTrueConf)

class OEIsFalseConf(IsFalseConf):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEConfBase)> 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__(OESystem::OEUnaryFalse<(OEChem::OEConfBase)> self) -> OEIsFalseConf"""
        this = _oechem.new_OEIsFalseConf()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseConf
    __del__ = lambda self: None
OEIsFalseConf_swigregister = _oechem.OEIsFalseConf_swigregister
OEIsFalseConf_swigregister(OEIsFalseConf)

class OEIsTrueGroup(IsTrueGroup):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEGroupBase)> 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__(OESystem::OEUnaryTrue<(OEChem::OEGroupBase)> self) -> OEIsTrueGroup"""
        this = _oechem.new_OEIsTrueGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueGroup
    __del__ = lambda self: None
OEIsTrueGroup_swigregister = _oechem.OEIsTrueGroup_swigregister
OEIsTrueGroup_swigregister(OEIsTrueGroup)

class OEIsFalseGroup(IsFalseGroup):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEGroupBase)> 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__(OESystem::OEUnaryFalse<(OEChem::OEGroupBase)> self) -> OEIsFalseGroup"""
        this = _oechem.new_OEIsFalseGroup()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseGroup
    __del__ = lambda self: None
OEIsFalseGroup_swigregister = _oechem.OEIsFalseGroup_swigregister
OEIsFalseGroup_swigregister(OEIsFalseGroup)

class OEPartPredAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEPartPredT<(OEChem::OEAtomBase)> 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__(OEChem::OEPartPredT<(OEChem::OEAtomBase)> self, unsigned int * parts) -> OEPartPredAtom
        __init__(OEChem::OEPartPredT<(OEChem::OEAtomBase)> self, OEPartPredAtom rhs) -> OEPartPredAtom
        """
        this = _oechem.new_OEPartPredAtom(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPartPredAtom
    __del__ = lambda self: None

    def SelectPart(self, part: 'unsigned int') -> "void":
        """SelectPart(OEPartPredAtom self, unsigned int part)"""
        return _oechem.OEPartPredAtom_SelectPart(self, part)


    def __call__(self, t: 'OEAtomBase') -> "bool":
        """__call__(OEPartPredAtom self, OEAtomBase t) -> bool"""
        return _oechem.OEPartPredAtom___call__(self, t)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEPartPredAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEPartPredAtom_CreateCopy(self)

OEPartPredAtom_swigregister = _oechem.OEPartPredAtom_swigregister
OEPartPredAtom_swigregister(OEPartPredAtom)

class OEIsAtomMember(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> 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__(OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> self) -> OEIsAtomMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> self, OEAtomIter i) -> OEIsAtomMember
        """
        this = _oechem.new_OEIsAtomMember(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEIsAtomMember self, OEAtomBase arg) -> bool"""
        return _oechem.OEIsAtomMember___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """CreateCopy(OEIsAtomMember self) -> OEUnaryAtomPred"""
        return _oechem.OEIsAtomMember_CreateCopy(self)


    def Add(self, item: 'OEAtomBase') -> "bool":
        """Add(OEIsAtomMember self, OEAtomBase item) -> bool"""
        return _oechem.OEIsAtomMember_Add(self, item)

    __swig_destroy__ = _oechem.delete_OEIsAtomMember
    __del__ = lambda self: None
OEIsAtomMember_swigregister = _oechem.OEIsAtomMember_swigregister
OEIsAtomMember_swigregister(OEIsAtomMember)

class OEIsBondMember(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> 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__(OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> self) -> OEIsBondMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> self, OEBondIter i) -> OEIsBondMember
        """
        this = _oechem.new_OEIsBondMember(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(OEIsBondMember self, OEBondBase arg) -> bool"""
        return _oechem.OEIsBondMember___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """CreateCopy(OEIsBondMember self) -> OEUnaryBondPred"""
        return _oechem.OEIsBondMember_CreateCopy(self)


    def Add(self, item: 'OEBondBase') -> "bool":
        """Add(OEIsBondMember self, OEBondBase item) -> bool"""
        return _oechem.OEIsBondMember_Add(self, item)

    __swig_destroy__ = _oechem.delete_OEIsBondMember
    __del__ = lambda self: None
OEIsBondMember_swigregister = _oechem.OEIsBondMember_swigregister
OEIsBondMember_swigregister(OEIsBondMember)


PartPredAtom = OEPartPredAtom

class PyFunction(object):
    """Base class for storing a python function to be used as a functor."""
    def __init__(self, func):
        self._func = func
    def __call__(self, obj):
        """__call__(self, obj) -> bool"""
        return self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class PyAtomFunction(PyFunction, OEUnaryAtomBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyAtomFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryAtomBoolFunc.__init__(self)
class PyBondFunction(PyFunction, OEUnaryBondBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on bonds"""
    def __init__(self, *args):
        """__init__(self, func) -> PyBondFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryBondBoolFunc.__init__(self)
class PyConfFunction(PyFunction, OEUnaryConfBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on conformers"""
    def __init__(self, *args):
        """__init__(self, func) -> PyConfFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryConfBoolFunc.__init__(self)
class PyGroupFunction(PyFunction, OEUnaryGroupBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on groupbase"""
    def __init__(self, *args):
        """__init__(self, func) -> PyGroupFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryGroupBoolFunc.__init__(self)

PyPredicate = PyFunction

class PyAtomPredicate(PyPredicate, OEUnaryAtomPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyAtomPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryAtomPred.__init__(self)
class PyBondPredicate(PyPredicate, OEUnaryBondPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyBondPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryBondPred.__init__(self)
class PyConfPredicate(PyPredicate, OEUnaryConfPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyConfPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryConfPred.__init__(self)
class PyGroupPredicate(PyPredicate, OEUnaryGroupPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyGroupPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryGroupPred.__init__(self)


class OEUnaryRoleSetBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OESystem::OERoleSet,bool)> 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__ = _oechem.delete_OEUnaryRoleSetBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OERoleSet') -> "bool":
        """__call__(OEUnaryRoleSetBoolFunc self, OERoleSet arg0) -> bool"""
        return _oechem.OEUnaryRoleSetBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryRoleSetBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OESystem::OERoleSet,bool)> self) -> OEUnaryRoleSetBoolFunc"""
        if self.__class__ == OEUnaryRoleSetBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryRoleSetBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryRoleSetBoolFunc(self)
        return weakref_proxy(self)
OEUnaryRoleSetBoolFunc_swigregister = _oechem.OEUnaryRoleSetBoolFunc_swigregister
OEUnaryRoleSetBoolFunc_swigregister(OEUnaryRoleSetBoolFunc)

class OEUnaryRoleSetPred(OEUnaryRoleSetBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OESystem::OERoleSet)> 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__(OESystem::OEUnaryPredicate<(OESystem::OERoleSet)> self) -> OEUnaryRoleSetPred"""
        if self.__class__ == OEUnaryRoleSetPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryRoleSetPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryRoleSetPred
    __del__ = lambda self: None

    def __call__(self, a: 'OERoleSet') -> "bool":
        """__call__(OEUnaryRoleSetPred self, OERoleSet a) -> bool"""
        return _oechem.OEUnaryRoleSetPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryRoleSetPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """CreatePredicateCopy(OEUnaryRoleSetPred self) -> OEUnaryRoleSetPred"""
        return _oechem.OEUnaryRoleSetPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryRoleSetPred(self)
        return weakref_proxy(self)
OEUnaryRoleSetPred_swigregister = _oechem.OEUnaryRoleSetPred_swigregister
OEUnaryRoleSetPred_swigregister(OEUnaryRoleSetPred)

class OEBinaryRoleSetFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OESystem::OERoleSet,OESystem::OERoleSet,bool)> 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__ = _oechem.delete_OEBinaryRoleSetFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OERoleSet', a2: 'OERoleSet') -> "bool":
        """__call__(OEBinaryRoleSetFunc self, OERoleSet a1, OERoleSet a2) -> bool"""
        return _oechem.OEBinaryRoleSetFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryRoleSetFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OESystem::OERoleSet,OESystem::OERoleSet,bool)> self) -> OEBinaryRoleSetFunc"""
        if self.__class__ == OEBinaryRoleSetFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryRoleSetFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryRoleSetFunc(self)
        return weakref_proxy(self)
OEBinaryRoleSetFunc_swigregister = _oechem.OEBinaryRoleSetFunc_swigregister
OEBinaryRoleSetFunc_swigregister(OEBinaryRoleSetFunc)

class OEBinaryRoleSetPred(OEBinaryRoleSetFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OESystem::OERoleSet,OESystem::OERoleSet)> class."""

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

    def __call__(self, a1: 'OERoleSet', a2: 'OERoleSet') -> "bool":
        """__call__(OEBinaryRoleSetPred self, OERoleSet a1, OERoleSet a2) -> bool"""
        return _oechem.OEBinaryRoleSetPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryRoleSetPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OESystem::OERoleSet,OESystem::OERoleSet > *":
        """CreatePredicateCopy(OEBinaryRoleSetPred self) -> OEBinaryRoleSetPred"""
        return _oechem.OEBinaryRoleSetPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OESystem::OERoleSet,OESystem::OERoleSet)> self) -> OEBinaryRoleSetPred"""
        if self.__class__ == OEBinaryRoleSetPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryRoleSetPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryRoleSetPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryRoleSetPred(self)
        return weakref_proxy(self)
OEBinaryRoleSetPred_swigregister = _oechem.OEBinaryRoleSetPred_swigregister
OEBinaryRoleSetPred_swigregister(OEBinaryRoleSetPred)


class OENotRoleSet(OEUnaryRoleSetPred):
    """Negation of an OEUnary RoleSet Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary RoleSet Pred func) -> OENotNAME"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndRoleSet(OEUnaryRoleSetPred):
    """Logical 'and' of two OEUnary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary RoleSet Pred func1, OEUnary RoleSet Pred func2) -> OEAnd RoleSet"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrRoleSet(OEUnaryRoleSetPred):
    """Logical 'or' of two OEUnary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotRoleSet(OEBinaryRoleSetPred):
    """Negation of an OEBinary RoleSet Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary RoleSet Pred func) -> OENot RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndRoleSet(OEBinaryRoleSetPred):
    """Logical 'and' of two OEBinary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrRoleSet(OEBinaryRoleSetPred):
    """Logical 'or' of two OEBinary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OERole(object):
    """Proxy of C++ OESystem::OERole 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::OERole self) -> OERole
        __init__(OESystem::OERole self, OERole rhs) -> OERole
        __init__(OESystem::OERole self, std::string const & name) -> OERole
        """
        this = _oechem.new_OERole(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetName(self) -> "char const *":
        """GetName(OERole self) -> char const *"""
        return _oechem.OERole_GetName(self)


    def __hash__(self) -> "PyObject *":
        """__hash__(OERole self) -> PyObject *"""
        return _oechem.OERole___hash__(self)


    def __eq__(self, *args) -> "bool":
        """
        __eq__(OERole self, OERole rhs) -> bool
        __eq__(OERole self, OERole rhs) -> bool
        """
        return _oechem.OERole___eq__(self, *args)


    def __ne__(self, rhs: 'OERole') -> "bool":
        """__ne__(OERole self, OERole rhs) -> bool"""
        return _oechem.OERole___ne__(self, rhs)


    def __lt__(self, *args) -> "bool":
        """
        __lt__(OERole self, OERole rhs) -> bool
        __lt__(OERole self, OERole rhs) -> bool
        """
        return _oechem.OERole___lt__(self, *args)

    __swig_destroy__ = _oechem.delete_OERole
    __del__ = lambda self: None
OERole_swigregister = _oechem.OERole_swigregister
OERole_swigregister(OERole)

class OERoleSet(object):
    """Proxy of C++ OESystem::OERoleSet 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")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OERoleSet
    __del__ = lambda self: None

    def ClearRoles(self) -> "void":
        """ClearRoles(OERoleSet self)"""
        return _oechem.OERoleSet_ClearRoles(self)


    def AddRole(self, *args) -> "bool":
        """
        AddRole(OERoleSet self, OERole role) -> bool
        AddRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_AddRole(self, *args)


    def DeleteRole(self, *args) -> "bool":
        """
        DeleteRole(OERoleSet self, OERole role) -> bool
        DeleteRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_DeleteRole(self, *args)


    def HasRole(self, *args) -> "bool":
        """
        HasRole(OERoleSet self, OERole role) -> bool
        HasRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_HasRole(self, *args)


    def GetRoles(self) -> "OESystem::OEIterBase< OESystem::OERole const > *":
        """GetRoles(OERoleSet self) -> OESystem::OEIterBase< OESystem::OERole const > *"""
        return _oechem.OERoleSet_GetRoles(self)


    def NumRoles(self) -> "unsigned int":
        """NumRoles(OERoleSet self) -> unsigned int"""
        return _oechem.OERoleSet_NumRoles(self)

OERoleSet_swigregister = _oechem.OERoleSet_swigregister
OERoleSet_swigregister(OERoleSet)

class OERoles(OERoleSet):
    """Proxy of C++ OESystem::OERoles 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::OERoles self) -> OERoles
        __init__(OESystem::OERoles self, OERoleSet rhs) -> OERoles
        """
        this = _oechem.new_OERoles(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERoles
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OERoles *":
        """CreateCopy(OERoles self) -> OERoles"""
        return _oechem.OERoles_CreateCopy(self)

OERoles_swigregister = _oechem.OERoles_swigregister
OERoles_swigregister(OERoles)

class OEHasRole(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEHasRole 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::OEHasRole self, OERole role) -> OEHasRole
        __init__(OESystem::OEHasRole self, std::string const & name) -> OEHasRole
        """
        this = _oechem.new_OEHasRole(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, someObject: 'OERoleSet') -> "bool":
        """__call__(OEHasRole self, OERoleSet someObject) -> bool"""
        return _oechem.OEHasRole___call__(self, someObject)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasRole_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasRole
    __del__ = lambda self: None
OEHasRole_swigregister = _oechem.OEHasRole_swigregister
OEHasRole_swigregister(OEHasRole)

class OEIsTrueRoleSet(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEIsTrue<(OESystem::OERoleSet)> class."""

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

    def __call__(self, arg2: 'OERoleSet') -> "bool":
        """__call__(OEIsTrueRoleSet self, OERoleSet arg2) -> bool"""
        return _oechem.OEIsTrueRoleSet___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OESystem::OERoleSet,bool > *":
        """CreateCopy(OEIsTrueRoleSet self) -> OEUnaryRoleSetBoolFunc"""
        return _oechem.OEIsTrueRoleSet_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OESystem::OERoleSet)> self) -> OEIsTrueRoleSet"""
        this = _oechem.new_OEIsTrueRoleSet()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueRoleSet
    __del__ = lambda self: None
OEIsTrueRoleSet_swigregister = _oechem.OEIsTrueRoleSet_swigregister
OEIsTrueRoleSet_swigregister(OEIsTrueRoleSet)

class OEIsFalseRoleSet(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEIsFalse<(OESystem::OERoleSet)> class."""

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

    def __call__(self, arg2: 'OERoleSet') -> "bool":
        """__call__(OEIsFalseRoleSet self, OERoleSet arg2) -> bool"""
        return _oechem.OEIsFalseRoleSet___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OESystem::OERoleSet,bool > *":
        """CreateCopy(OEIsFalseRoleSet self) -> OEUnaryRoleSetBoolFunc"""
        return _oechem.OEIsFalseRoleSet_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OESystem::OERoleSet)> self) -> OEIsFalseRoleSet"""
        this = _oechem.new_OEIsFalseRoleSet()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseRoleSet
    __del__ = lambda self: None
OEIsFalseRoleSet_swigregister = _oechem.OEIsFalseRoleSet_swigregister
OEIsFalseRoleSet_swigregister(OEIsFalseRoleSet)

class OERoleIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OESystem::OERole)> 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<(q(const).OESystem::OERole)> self) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OERoleIter rhs) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OESystem::OEIterBase< OESystem::OERole const > * rhs) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OERole const >::NonConstA > * rhs) -> OERoleIter
        """
        this = _oechem.new_OERoleIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERoleIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OERole const > *":
        """Copy(OERoleIter self) -> OESystem::OEIterBase< OESystem::OERole const > *"""
        return _oechem.OERoleIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OERoleIter self, OESystem::OEIterBase< OESystem::OERole const > * ib)
        Push(OERoleIter self, OERoleIter iter)
        """
        return _oechem.OERoleIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OERole const,OESystem::OERole const > const &') -> "void":
        """Sort(OERoleIter self, OESystem::OEBinaryPredicate< OESystem::OERole const,OESystem::OERole const > const & sort_criterion)"""
        return _oechem.OERoleIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OERole const > &":
        """ToFirst(OERoleIter self) -> OERoleIter"""
        return _oechem.OERoleIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OERole const > &":
        """ToLast(OERoleIter self) -> OERoleIter"""
        return _oechem.OERoleIter_ToLast(self)


    def __ref__(self) -> "OESystem::OERole const &":
        """__ref__(OERoleIter self) -> OERole"""
        return _oechem.OERoleIter___ref__(self)


    def IsValid(self):
      return _oechem.OERoleIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OERoleIter self) -> PyObject *"""
        return _oechem.OERoleIter_next(self)


    def Target(self) -> "OESystem::OERole const &":
        """Target(OERoleIter self) -> OERole"""
        return _oechem.OERoleIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OERole const > &":
        """
        Next(OERoleIter self) -> OERoleIter
        Next(OERoleIter self, int i) -> OERoleIter
        """
        return _oechem.OERoleIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OERole const > &":
        """
        Prev(OERoleIter self) -> OERoleIter
        Prev(OERoleIter self, int i) -> OERoleIter
        """
        return _oechem.OERoleIter_Prev(self, *args)

OERoleIter_swigregister = _oechem.OERoleIter_swigregister
OERoleIter_swigregister(OERoleIter)

class OEMatchBase(OERoleSet):
    """Proxy of C++ OEChem::OEMatchBase 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__ = _oechem.delete_OEMatchBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEMatchBase self)"""
        return _oechem.OEMatchBase_Clear(self)


    def IsValid(self) -> "bool":
        """IsValid(OEMatchBase self) -> bool"""
        return _oechem.OEMatchBase_IsValid(self)


    def IsValid(self):
      return _oechem.OEMatchBase___nonzero__(self)



    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMatchBase self) -> unsigned int"""
        return _oechem.OEMatchBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMatchBase self) -> unsigned int"""
        return _oechem.OEMatchBase_NumBonds(self)


    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """GetAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatchBase_GetAtoms(self)


    def GetBonds(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """GetBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatchBase_GetBonds(self)


    def GetPatternAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """GetPatternAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEMatchBase_GetPatternAtoms(self)


    def GetPatternBonds(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """GetPatternBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEMatchBase_GetPatternBonds(self)


    def GetTargetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """GetTargetAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEMatchBase_GetTargetAtoms(self)


    def GetTargetBonds(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """GetTargetBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEMatchBase_GetTargetBonds(self)


    def CreateCopy(self) -> "OEChem::OEMatchBase *":
        """CreateCopy(OEMatchBase self) -> OEMatchBase"""
        return _oechem.OEMatchBase_CreateCopy(self)

OEMatchBase_swigregister = _oechem.OEMatchBase_swigregister
OEMatchBase_swigregister(OEMatchBase)

class OEMatch(OEMatchBase):
    """Proxy of C++ OEChem::OEMatch 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__(OEChem::OEMatch self) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEAtomBase >,std::allocator< OEChem::OEMatchPair< OEChem::OEAtomBase > > > const & arg2) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEBondBase >,std::allocator< OEChem::OEMatchPair< OEChem::OEBondBase > > > const & arg2) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEAtomBase >,std::allocator< OEChem::OEMatchPair< OEChem::OEAtomBase > > > * arg2, std::vector< OEChem::OEMatchPair< OEChem::OEBondBase >,std::allocator< OEChem::OEMatchPair< OEChem::OEBondBase > > > * arg3) -> OEMatch
        __init__(OEChem::OEMatch self, OEMatch arg2) -> OEMatch
        __init__(OEChem::OEMatch self, OEMatchBase arg2) -> OEMatch
        """
        this = _oechem.new_OEMatch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatch
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OEMatchBase *":
        """CreateCopy(OEMatch self) -> OEMatchBase"""
        return _oechem.OEMatch_CreateCopy(self)


    def Clear(self) -> "void":
        """Clear(OEMatch self)"""
        return _oechem.OEMatch_Clear(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMatch self) -> unsigned int"""
        return _oechem.OEMatch_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMatch self) -> unsigned int"""
        return _oechem.OEMatch_NumBonds(self)


    def AddPair(self, *args) -> "bool":
        """
        AddPair(OEMatch self, OEAtomBase arg2, OEAtomBase arg3) -> bool
        AddPair(OEMatch self, OEBondBase arg2, OEBondBase arg3) -> bool
        """
        return _oechem.OEMatch_AddPair(self, *args)


    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """GetAtoms(OEMatch self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatch_GetAtoms(self)


    def GetBonds(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """GetBonds(OEMatch self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatch_GetBonds(self)

OEMatch_swigregister = _oechem.OEMatch_swigregister
OEMatch_swigregister(OEMatch)


OECreateOEGraphMol = OEGraphMol
OECreateOEMol = OEMol
OECreateOEQMol = OEQMol

class OEInChIOptions(object):
    """Proxy of C++ OEChem::OEInChIOptions 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__(OEChem::OEInChIOptions self, unsigned int flavor) -> OEInChIOptions
        __init__(OEChem::OEInChIOptions self) -> OEInChIOptions
        __init__(OEChem::OEInChIOptions self, OEInChIOptions arg2) -> OEInChIOptions
        """
        this = _oechem.new_OEInChIOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInChIOptions
    __del__ = lambda self: None

    def SetHydrogens(self, val: 'bool') -> "void":
        """SetHydrogens(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetHydrogens(self, val)


    def GetHydrogens(self) -> "bool":
        """GetHydrogens(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetHydrogens(self)


    def SetStereo(self, val: 'bool') -> "void":
        """SetStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetStereo(self, val)


    def GetStereo(self) -> "bool":
        """GetStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetStereo(self)


    def SetRelativeStereo(self, val: 'bool') -> "void":
        """SetRelativeStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetRelativeStereo(self, val)


    def GetRelativeStereo(self) -> "bool":
        """GetRelativeStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetRelativeStereo(self)


    def SetRacemicStereo(self, val: 'bool') -> "void":
        """SetRacemicStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetRacemicStereo(self, val)


    def GetRacemicStereo(self) -> "bool":
        """GetRacemicStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetRacemicStereo(self)


    def SetChiral(self, val: 'bool') -> "void":
        """SetChiral(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetChiral(self, val)


    def GetChiral(self) -> "bool":
        """GetChiral(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetChiral(self)


    def SetFixedHLayer(self, val: 'bool') -> "void":
        """SetFixedHLayer(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetFixedHLayer(self, val)


    def GetFixedHLayer(self) -> "bool":
        """GetFixedHLayer(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetFixedHLayer(self)


    def SetReconnectedMetals(self, val: 'bool') -> "void":
        """SetReconnectedMetals(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetReconnectedMetals(self, val)


    def GetReconnectedMetals(self) -> "bool":
        """GetReconnectedMetals(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetReconnectedMetals(self)


    def SetTimeout(self, val: 'unsigned int') -> "void":
        """SetTimeout(OEInChIOptions self, unsigned int val)"""
        return _oechem.OEInChIOptions_SetTimeout(self, val)


    def GetTimeout(self) -> "unsigned int":
        """GetTimeout(OEInChIOptions self) -> unsigned int"""
        return _oechem.OEInChIOptions_GetTimeout(self)

OEInChIOptions_swigregister = _oechem.OEInChIOptions_swigregister
OEInChIOptions_swigregister(OEInChIOptions)


def OEParseInChI(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OEParseInChI(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OEParseInChI(mol, str)

def OEMolecularFormula(mol: 'OEMolBase', hydrogenisotopic: 'bool'=False) -> "std::string":
    """
    OEMolecularFormula(OEMolBase mol, bool hydrogenisotopic=False) -> std::string
    OEMolecularFormula(OEMolBase mol) -> std::string
    """
    return _oechem.OEMolecularFormula(mol, hydrogenisotopic)

def OECreateInChI(*args) -> "std::string":
    """
    OECreateInChI(std::string & str, OEMolBase mol, OEInChIOptions arg3)
    OECreateInChI(std::string & str, OEMolBase mol)
    OECreateInChI(OEMolBase mol) -> std::string
    OECreateInChI(OEMolBase mol, OEInChIOptions opts) -> std::string
    """
    return _oechem.OECreateInChI(*args)

def OECreateInChIKey(*args) -> "std::string":
    """
    OECreateInChIKey(std::string & str, OEMolBase mol, OEInChIOptions arg3)
    OECreateInChIKey(std::string & str, OEMolBase mol)
    OECreateInChIKey(OEMolBase mol) -> std::string
    OECreateInChIKey(OEMolBase mol, OEInChIOptions opts) -> std::string
    """
    return _oechem.OECreateInChIKey(*args)
class OEAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEAtomBase)> 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<(OEChem::OEAtomBase)> self) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OEAtomIter rhs) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OESystem::OEIterBase< OEChem::OEAtomBase > * rhs) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBase >::NonConstA > * rhs) -> OEAtomIter
        """
        this = _oechem.new_OEAtomIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """Copy(OEAtomIter self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAtomIter self, OESystem::OEIterBase< OEChem::OEAtomBase > * ib)
        Push(OEAtomIter self, OEAtomIter iter)
        """
        return _oechem.OEAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryAtomPred') -> "void":
        """Sort(OEAtomIter self, OEBinaryAtomPred sort_criterion)"""
        return _oechem.OEAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """ToFirst(OEAtomIter self) -> OEAtomIter"""
        return _oechem.OEAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """ToLast(OEAtomIter self) -> OEAtomIter"""
        return _oechem.OEAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBase &":
        """__ref__(OEAtomIter self) -> OEAtomBase"""
        return _oechem.OEAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAtomIter self) -> PyObject *"""
        return _oechem.OEAtomIter_next(self)


    def Target(self) -> "OEChem::OEAtomBase &":
        """Target(OEAtomIter self) -> OEAtomBase"""
        return _oechem.OEAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """
        Next(OEAtomIter self) -> OEAtomIter
        Next(OEAtomIter self, int i) -> OEAtomIter
        """
        return _oechem.OEAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """
        Prev(OEAtomIter self) -> OEAtomIter
        Prev(OEAtomIter self, int i) -> OEAtomIter
        """
        return _oechem.OEAtomIter_Prev(self, *args)

OEAtomIter_swigregister = _oechem.OEAtomIter_swigregister
OEAtomIter_swigregister(OEAtomIter)

class OEBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEBondBase)> 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<(OEChem::OEBondBase)> self) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OEBondIter rhs) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OESystem::OEIterBase< OEChem::OEBondBase > * rhs) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEBondBase >::NonConstA > * rhs) -> OEBondIter
        """
        this = _oechem.new_OEBondIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """Copy(OEBondIter self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEBondIter self, OESystem::OEIterBase< OEChem::OEBondBase > * ib)
        Push(OEBondIter self, OEBondIter iter)
        """
        return _oechem.OEBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryBondPred') -> "void":
        """Sort(OEBondIter self, OEBinaryBondPred sort_criterion)"""
        return _oechem.OEBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """ToFirst(OEBondIter self) -> OEBondIter"""
        return _oechem.OEBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """ToLast(OEBondIter self) -> OEBondIter"""
        return _oechem.OEBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEBondBase &":
        """__ref__(OEBondIter self) -> OEBondBase"""
        return _oechem.OEBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEBondIter self) -> PyObject *"""
        return _oechem.OEBondIter_next(self)


    def Target(self) -> "OEChem::OEBondBase &":
        """Target(OEBondIter self) -> OEBondBase"""
        return _oechem.OEBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """
        Next(OEBondIter self) -> OEBondIter
        Next(OEBondIter self, int i) -> OEBondIter
        """
        return _oechem.OEBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """
        Prev(OEBondIter self) -> OEBondIter
        Prev(OEBondIter self, int i) -> OEBondIter
        """
        return _oechem.OEBondIter_Prev(self, *args)

OEBondIter_swigregister = _oechem.OEBondIter_swigregister
OEBondIter_swigregister(OEBondIter)

class OEQAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEQAtomBase)> 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<(OEChem::OEQAtomBase)> self) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OEQAtomIter rhs) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OESystem::OEIterBase< OEChem::OEQAtomBase > * rhs) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEQAtomBase >::NonConstA > * rhs) -> OEQAtomIter
        """
        this = _oechem.new_OEQAtomIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """Copy(OEQAtomIter self) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *"""
        return _oechem.OEQAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEQAtomIter self, OESystem::OEIterBase< OEChem::OEQAtomBase > * ib)
        Push(OEQAtomIter self, OEQAtomIter iter)
        """
        return _oechem.OEQAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEQAtomBase,OEChem::OEQAtomBase > const &') -> "void":
        """Sort(OEQAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEQAtomBase,OEChem::OEQAtomBase > const & sort_criterion)"""
        return _oechem.OEQAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """ToFirst(OEQAtomIter self) -> OEQAtomIter"""
        return _oechem.OEQAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """ToLast(OEQAtomIter self) -> OEQAtomIter"""
        return _oechem.OEQAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEQAtomBase &":
        """__ref__(OEQAtomIter self) -> OEQAtomBase"""
        return _oechem.OEQAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEQAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEQAtomIter self) -> PyObject *"""
        return _oechem.OEQAtomIter_next(self)


    def Target(self) -> "OEChem::OEQAtomBase &":
        """Target(OEQAtomIter self) -> OEQAtomBase"""
        return _oechem.OEQAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """
        Next(OEQAtomIter self) -> OEQAtomIter
        Next(OEQAtomIter self, int i) -> OEQAtomIter
        """
        return _oechem.OEQAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """
        Prev(OEQAtomIter self) -> OEQAtomIter
        Prev(OEQAtomIter self, int i) -> OEQAtomIter
        """
        return _oechem.OEQAtomIter_Prev(self, *args)

OEQAtomIter_swigregister = _oechem.OEQAtomIter_swigregister
OEQAtomIter_swigregister(OEQAtomIter)

class OEQBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEQBondBase)> 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<(OEChem::OEQBondBase)> self) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OEQBondIter rhs) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OESystem::OEIterBase< OEChem::OEQBondBase > * rhs) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEQBondBase >::NonConstA > * rhs) -> OEQBondIter
        """
        this = _oechem.new_OEQBondIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """Copy(OEQBondIter self) -> OESystem::OEIterBase< OEChem::OEQBondBase > *"""
        return _oechem.OEQBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEQBondIter self, OESystem::OEIterBase< OEChem::OEQBondBase > * ib)
        Push(OEQBondIter self, OEQBondIter iter)
        """
        return _oechem.OEQBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEQBondBase,OEChem::OEQBondBase > const &') -> "void":
        """Sort(OEQBondIter self, OESystem::OEBinaryPredicate< OEChem::OEQBondBase,OEChem::OEQBondBase > const & sort_criterion)"""
        return _oechem.OEQBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """ToFirst(OEQBondIter self) -> OEQBondIter"""
        return _oechem.OEQBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """ToLast(OEQBondIter self) -> OEQBondIter"""
        return _oechem.OEQBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEQBondBase &":
        """__ref__(OEQBondIter self) -> OEQBondBase"""
        return _oechem.OEQBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEQBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEQBondIter self) -> PyObject *"""
        return _oechem.OEQBondIter_next(self)


    def Target(self) -> "OEChem::OEQBondBase &":
        """Target(OEQBondIter self) -> OEQBondBase"""
        return _oechem.OEQBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """
        Next(OEQBondIter self) -> OEQBondIter
        Next(OEQBondIter self, int i) -> OEQBondIter
        """
        return _oechem.OEQBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """
        Prev(OEQBondIter self) -> OEQBondIter
        Prev(OEQBondIter self, int i) -> OEQBondIter
        """
        return _oechem.OEQBondIter_Prev(self, *args)

OEQBondIter_swigregister = _oechem.OEQBondIter_swigregister
OEQBondIter_swigregister(OEQBondIter)

class OEConfIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEConfBase)> 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<(OEChem::OEConfBase)> self) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OEConfIter rhs) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OESystem::OEIterBase< OEChem::OEConfBase > * rhs) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEConfBase >::NonConstA > * rhs) -> OEConfIter
        """
        this = _oechem.new_OEConfIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConfIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """Copy(OEConfIter self) -> OESystem::OEIterBase< OEChem::OEConfBase > *"""
        return _oechem.OEConfIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConfIter self, OESystem::OEIterBase< OEChem::OEConfBase > * ib)
        Push(OEConfIter self, OEConfIter iter)
        """
        return _oechem.OEConfIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryConfPred') -> "void":
        """Sort(OEConfIter self, OEBinaryConfPred sort_criterion)"""
        return _oechem.OEConfIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """ToFirst(OEConfIter self) -> OEConfIter"""
        return _oechem.OEConfIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """ToLast(OEConfIter self) -> OEConfIter"""
        return _oechem.OEConfIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEConfBase &":
        """__ref__(OEConfIter self) -> OEConfBase"""
        return _oechem.OEConfIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConfIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConfIter self) -> PyObject *"""
        return _oechem.OEConfIter_next(self)


    def Target(self) -> "OEChem::OEConfBase &":
        """Target(OEConfIter self) -> OEConfBase"""
        return _oechem.OEConfIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """
        Next(OEConfIter self) -> OEConfIter
        Next(OEConfIter self, int i) -> OEConfIter
        """
        return _oechem.OEConfIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """
        Prev(OEConfIter self) -> OEConfIter
        Prev(OEConfIter self, int i) -> OEConfIter
        """
        return _oechem.OEConfIter_Prev(self, *args)

OEConfIter_swigregister = _oechem.OEConfIter_swigregister
OEConfIter_swigregister(OEConfIter)

class OEMolBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMolBase)> 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<(OEChem::OEMolBase)> self) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OEMolBaseIter rhs) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OEChem::OEMolBase > * rhs) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMolBase >::NonConstA > * rhs) -> OEMolBaseIter
        """
        this = _oechem.new_OEMolBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """Copy(OEMolBaseIter self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OEMolBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMolBaseIter self, OESystem::OEIterBase< OEChem::OEMolBase > * ib)
        Push(OEMolBaseIter self, OEMolBaseIter iter)
        """
        return _oechem.OEMolBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryMolBasePred') -> "void":
        """Sort(OEMolBaseIter self, OEBinaryMolBasePred sort_criterion)"""
        return _oechem.OEMolBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToFirst(OEMolBaseIter self) -> OEMolBaseIter"""
        return _oechem.OEMolBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToLast(OEMolBaseIter self) -> OEMolBaseIter"""
        return _oechem.OEMolBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMolBase &":
        """__ref__(OEMolBaseIter self) -> OEMolBase"""
        return _oechem.OEMolBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMolBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMolBaseIter self) -> PyObject *"""
        return _oechem.OEMolBaseIter_next(self)


    def Target(self) -> "OEChem::OEMolBase &":
        """Target(OEMolBaseIter self) -> OEMolBase"""
        return _oechem.OEMolBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """
        Next(OEMolBaseIter self) -> OEMolBaseIter
        Next(OEMolBaseIter self, int i) -> OEMolBaseIter
        """
        return _oechem.OEMolBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """
        Prev(OEMolBaseIter self) -> OEMolBaseIter
        Prev(OEMolBaseIter self, int i) -> OEMolBaseIter
        """
        return _oechem.OEMolBaseIter_Prev(self, *args)

OEMolBaseIter_swigregister = _oechem.OEMolBaseIter_swigregister
OEMolBaseIter_swigregister(OEMolBaseIter)

class OEMCMolBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMCMolBase)> 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<(OEChem::OEMCMolBase)> self) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OEMCMolBaseIter rhs) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OESystem::OEIterBase< OEChem::OEMCMolBase > * rhs) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMCMolBase >::NonConstA > * rhs) -> OEMCMolBaseIter
        """
        this = _oechem.new_OEMCMolBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCMolBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """Copy(OEMCMolBaseIter self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *"""
        return _oechem.OEMCMolBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMCMolBaseIter self, OESystem::OEIterBase< OEChem::OEMCMolBase > * ib)
        Push(OEMCMolBaseIter self, OEMCMolBaseIter iter)
        """
        return _oechem.OEMCMolBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMCMolBase,OEChem::OEMCMolBase > const &') -> "void":
        """Sort(OEMCMolBaseIter self, OESystem::OEBinaryPredicate< OEChem::OEMCMolBase,OEChem::OEMCMolBase > const & sort_criterion)"""
        return _oechem.OEMCMolBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """ToFirst(OEMCMolBaseIter self) -> OEMCMolBaseIter"""
        return _oechem.OEMCMolBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """ToLast(OEMCMolBaseIter self) -> OEMCMolBaseIter"""
        return _oechem.OEMCMolBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMCMolBase &":
        """__ref__(OEMCMolBaseIter self) -> OEMCMolBase"""
        return _oechem.OEMCMolBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMCMolBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMCMolBaseIter self) -> PyObject *"""
        return _oechem.OEMCMolBaseIter_next(self)


    def Target(self) -> "OEChem::OEMCMolBase &":
        """Target(OEMCMolBaseIter self) -> OEMCMolBase"""
        return _oechem.OEMCMolBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """
        Next(OEMCMolBaseIter self) -> OEMCMolBaseIter
        Next(OEMCMolBaseIter self, int i) -> OEMCMolBaseIter
        """
        return _oechem.OEMCMolBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """
        Prev(OEMCMolBaseIter self) -> OEMCMolBaseIter
        Prev(OEMCMolBaseIter self, int i) -> OEMCMolBaseIter
        """
        return _oechem.OEMCMolBaseIter_Prev(self, *args)

OEMCMolBaseIter_swigregister = _oechem.OEMCMolBaseIter_swigregister
OEMCMolBaseIter_swigregister(OEMCMolBaseIter)

class OEMatchBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchBase)> 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<(OEChem::OEMatchBase)> self) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OEMatchBaseIter rhs) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OESystem::OEIterBase< OEChem::OEMatchBase > * rhs) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchBase >::NonConstA > * rhs) -> OEMatchBaseIter
        """
        this = _oechem.new_OEMatchBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """Copy(OEMatchBaseIter self) -> OESystem::OEIterBase< OEChem::OEMatchBase > *"""
        return _oechem.OEMatchBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseIter self, OESystem::OEIterBase< OEChem::OEMatchBase > * ib)
        Push(OEMatchBaseIter self, OEMatchBaseIter iter)
        """
        return _oechem.OEMatchBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchBase,OEChem::OEMatchBase > const &') -> "void":
        """Sort(OEMatchBaseIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchBase,OEChem::OEMatchBase > const & sort_criterion)"""
        return _oechem.OEMatchBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """ToFirst(OEMatchBaseIter self) -> OEMatchBaseIter"""
        return _oechem.OEMatchBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """ToLast(OEMatchBaseIter self) -> OEMatchBaseIter"""
        return _oechem.OEMatchBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchBase &":
        """__ref__(OEMatchBaseIter self) -> OEMatchBase"""
        return _oechem.OEMatchBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseIter self) -> PyObject *"""
        return _oechem.OEMatchBaseIter_next(self)


    def Target(self) -> "OEChem::OEMatchBase &":
        """Target(OEMatchBaseIter self) -> OEMatchBase"""
        return _oechem.OEMatchBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """
        Next(OEMatchBaseIter self) -> OEMatchBaseIter
        Next(OEMatchBaseIter self, int i) -> OEMatchBaseIter
        """
        return _oechem.OEMatchBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """
        Prev(OEMatchBaseIter self) -> OEMatchBaseIter
        Prev(OEMatchBaseIter self, int i) -> OEMatchBaseIter
        """
        return _oechem.OEMatchBaseIter_Prev(self, *args)

OEMatchBaseIter_swigregister = _oechem.OEMatchBaseIter_swigregister
OEMatchBaseIter_swigregister(OEMatchBaseIter)

class OEMatchBaseAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> 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<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OEMatchBaseAtomIter rhs) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > * rhs) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > >::NonConstA > * rhs) -> OEMatchBaseAtomIter
        """
        this = _oechem.new_OEMatchBaseAtomIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """Copy(OEMatchBaseAtomIter self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatchBaseAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseAtomIter self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > * ib)
        Push(OEMatchBaseAtomIter self, OEMatchBaseAtomIter iter)
        """
        return _oechem.OEMatchBaseAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEAtomBase >,OEChem::OEMatchPair< OEChem::OEAtomBase > > const &') -> "void":
        """Sort(OEMatchBaseAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEAtomBase >,OEChem::OEMatchPair< OEChem::OEAtomBase > > const & sort_criterion)"""
        return _oechem.OEMatchBaseAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """ToFirst(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter"""
        return _oechem.OEMatchBaseAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """ToLast(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter"""
        return _oechem.OEMatchBaseAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchPair< OEChem::OEAtomBase > &":
        """__ref__(OEMatchBaseAtomIter self) -> OEMatchPairAtom"""
        return _oechem.OEMatchBaseAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseAtomIter self) -> PyObject *"""
        return _oechem.OEMatchBaseAtomIter_next(self)


    def Target(self) -> "OEChem::OEMatchPair< OEChem::OEAtomBase > &":
        """Target(OEMatchBaseAtomIter self) -> OEMatchPairAtom"""
        return _oechem.OEMatchBaseAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """
        Next(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter
        Next(OEMatchBaseAtomIter self, int i) -> OEMatchBaseAtomIter
        """
        return _oechem.OEMatchBaseAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """
        Prev(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter
        Prev(OEMatchBaseAtomIter self, int i) -> OEMatchBaseAtomIter
        """
        return _oechem.OEMatchBaseAtomIter_Prev(self, *args)

OEMatchBaseAtomIter_swigregister = _oechem.OEMatchBaseAtomIter_swigregister
OEMatchBaseAtomIter_swigregister(OEMatchBaseAtomIter)

class OEMatchBaseBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> 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<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OEMatchBaseBondIter rhs) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > * rhs) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > >::NonConstA > * rhs) -> OEMatchBaseBondIter
        """
        this = _oechem.new_OEMatchBaseBondIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """Copy(OEMatchBaseBondIter self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatchBaseBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseBondIter self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > * ib)
        Push(OEMatchBaseBondIter self, OEMatchBaseBondIter iter)
        """
        return _oechem.OEMatchBaseBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEBondBase >,OEChem::OEMatchPair< OEChem::OEBondBase > > const &') -> "void":
        """Sort(OEMatchBaseBondIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEBondBase >,OEChem::OEMatchPair< OEChem::OEBondBase > > const & sort_criterion)"""
        return _oechem.OEMatchBaseBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """ToFirst(OEMatchBaseBondIter self) -> OEMatchBaseBondIter"""
        return _oechem.OEMatchBaseBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """ToLast(OEMatchBaseBondIter self) -> OEMatchBaseBondIter"""
        return _oechem.OEMatchBaseBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchPair< OEChem::OEBondBase > &":
        """__ref__(OEMatchBaseBondIter self) -> OEMatchPairBond"""
        return _oechem.OEMatchBaseBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseBondIter self) -> PyObject *"""
        return _oechem.OEMatchBaseBondIter_next(self)


    def Target(self) -> "OEChem::OEMatchPair< OEChem::OEBondBase > &":
        """Target(OEMatchBaseBondIter self) -> OEMatchPairBond"""
        return _oechem.OEMatchBaseBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """
        Next(OEMatchBaseBondIter self) -> OEMatchBaseBondIter
        Next(OEMatchBaseBondIter self, int i) -> OEMatchBaseBondIter
        """
        return _oechem.OEMatchBaseBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """
        Prev(OEMatchBaseBondIter self) -> OEMatchBaseBondIter
        Prev(OEMatchBaseBondIter self, int i) -> OEMatchBaseBondIter
        """
        return _oechem.OEMatchBaseBondIter_Prev(self, *args)

OEMatchBaseBondIter_swigregister = _oechem.OEMatchBaseBondIter_swigregister
OEMatchBaseBondIter_swigregister(OEMatchBaseBondIter)

class OEMatchPairAtom(object):
    """Proxy of C++ OEChem::OEMatchPair<(OEChem::OEAtomBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    pattern = _swig_property(_oechem.OEMatchPairAtom_pattern_get, _oechem.OEMatchPairAtom_pattern_set)
    target = _swig_property(_oechem.OEMatchPairAtom_target_get, _oechem.OEMatchPairAtom_target_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OEMatchPair<(OEChem::OEAtomBase)> self) -> OEMatchPairAtom
        __init__(OEChem::OEMatchPair<(OEChem::OEAtomBase)> self, OEAtomBase p, OEAtomBase t) -> OEMatchPairAtom
        """
        this = _oechem.new_OEMatchPairAtom(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchPairAtom
    __del__ = lambda self: None
OEMatchPairAtom_swigregister = _oechem.OEMatchPairAtom_swigregister
OEMatchPairAtom_swigregister(OEMatchPairAtom)

class OEMatchPairBond(object):
    """Proxy of C++ OEChem::OEMatchPair<(OEChem::OEBondBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    pattern = _swig_property(_oechem.OEMatchPairBond_pattern_get, _oechem.OEMatchPairBond_pattern_set)
    target = _swig_property(_oechem.OEMatchPairBond_target_get, _oechem.OEMatchPairBond_target_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OEMatchPair<(OEChem::OEBondBase)> self) -> OEMatchPairBond
        __init__(OEChem::OEMatchPair<(OEChem::OEBondBase)> self, OEBondBase p, OEBondBase t) -> OEMatchPairBond
        """
        this = _oechem.new_OEMatchPairBond(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchPairBond
    __del__ = lambda self: None
OEMatchPairBond_swigregister = _oechem.OEMatchPairBond_swigregister
OEMatchPairBond_swigregister(OEMatchPairBond)

class OESDDataIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OESDDataPair)> 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<(OEChem::OESDDataPair)> self) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESDDataIter rhs) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESystem::OEIterBase< OEChem::OESDDataPair > * rhs) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OESDDataPair >::NonConstA > * rhs) -> OESDDataIter
        """
        this = _oechem.new_OESDDataIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESDDataIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OESDDataPair > *":
        """Copy(OESDDataIter self) -> OESystem::OEIterBase< OEChem::OESDDataPair > *"""
        return _oechem.OESDDataIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESDDataIter self, OESystem::OEIterBase< OEChem::OESDDataPair > * ib)
        Push(OESDDataIter self, OESDDataIter iter)
        """
        return _oechem.OESDDataIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OESDDataPair,OEChem::OESDDataPair > const &') -> "void":
        """Sort(OESDDataIter self, OESystem::OEBinaryPredicate< OEChem::OESDDataPair,OEChem::OESDDataPair > const & sort_criterion)"""
        return _oechem.OESDDataIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """ToFirst(OESDDataIter self) -> OESDDataIter"""
        return _oechem.OESDDataIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """ToLast(OESDDataIter self) -> OESDDataIter"""
        return _oechem.OESDDataIter_ToLast(self)


    def __ref__(self) -> "OEChem::OESDDataPair &":
        """__ref__(OESDDataIter self) -> OESDDataPair"""
        return _oechem.OESDDataIter___ref__(self)


    def IsValid(self):
      return _oechem.OESDDataIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESDDataIter self) -> PyObject *"""
        return _oechem.OESDDataIter_next(self)


    def Target(self) -> "OEChem::OESDDataPair &":
        """Target(OESDDataIter self) -> OESDDataPair"""
        return _oechem.OESDDataIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """
        Next(OESDDataIter self) -> OESDDataIter
        Next(OESDDataIter self, int i) -> OESDDataIter
        """
        return _oechem.OESDDataIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """
        Prev(OESDDataIter self) -> OESDDataIter
        Prev(OESDDataIter self, int i) -> OESDDataIter
        """
        return _oechem.OESDDataIter_Prev(self, *args)

OESDDataIter_swigregister = _oechem.OESDDataIter_swigregister
OESDDataIter_swigregister(OESDDataIter)

class OETransBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OETransBase)> 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<(OEChem::OETransBase)> self) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OETransBaseIter rhs) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OESystem::OEIterBase< OEChem::OETransBase > * rhs) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OETransBase >::NonConstA > * rhs) -> OETransBaseIter
        """
        this = _oechem.new_OETransBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETransBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OETransBase > *":
        """Copy(OETransBaseIter self) -> OESystem::OEIterBase< OEChem::OETransBase > *"""
        return _oechem.OETransBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OETransBaseIter self, OESystem::OEIterBase< OEChem::OETransBase > * ib)
        Push(OETransBaseIter self, OETransBaseIter iter)
        """
        return _oechem.OETransBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OETransBase,OEChem::OETransBase > const &') -> "void":
        """Sort(OETransBaseIter self, OESystem::OEBinaryPredicate< OEChem::OETransBase,OEChem::OETransBase > const & sort_criterion)"""
        return _oechem.OETransBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """ToFirst(OETransBaseIter self) -> OETransBaseIter"""
        return _oechem.OETransBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """ToLast(OETransBaseIter self) -> OETransBaseIter"""
        return _oechem.OETransBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OETransBase &":
        """__ref__(OETransBaseIter self) -> OETransBase"""
        return _oechem.OETransBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OETransBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OETransBaseIter self) -> PyObject *"""
        return _oechem.OETransBaseIter_next(self)


    def Target(self) -> "OEChem::OETransBase &":
        """Target(OETransBaseIter self) -> OETransBase"""
        return _oechem.OETransBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """
        Next(OETransBaseIter self) -> OETransBaseIter
        Next(OETransBaseIter self, int i) -> OETransBaseIter
        """
        return _oechem.OETransBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """
        Prev(OETransBaseIter self) -> OETransBaseIter
        Prev(OETransBaseIter self, int i) -> OETransBaseIter
        """
        return _oechem.OETransBaseIter_Prev(self, *args)

OETransBaseIter_swigregister = _oechem.OETransBaseIter_swigregister
OETransBaseIter_swigregister(OETransBaseIter)

class OENbrsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OENbrs)> 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<(OEChem::OENbrs)> self) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OENbrsIter rhs) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OESystem::OEIterBase< OEChem::OENbrs > * rhs) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OENbrs >::NonConstA > * rhs) -> OENbrsIter
        """
        this = _oechem.new_OENbrsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENbrsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
        """Copy(OENbrsIter self) -> OESystem::OEIterBase< OEChem::OENbrs > *"""
        return _oechem.OENbrsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OENbrsIter self, OESystem::OEIterBase< OEChem::OENbrs > * ib)
        Push(OENbrsIter self, OENbrsIter iter)
        """
        return _oechem.OENbrsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OENbrs,OEChem::OENbrs > const &') -> "void":
        """Sort(OENbrsIter self, OESystem::OEBinaryPredicate< OEChem::OENbrs,OEChem::OENbrs > const & sort_criterion)"""
        return _oechem.OENbrsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """ToFirst(OENbrsIter self) -> OENbrsIter"""
        return _oechem.OENbrsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """ToLast(OENbrsIter self) -> OENbrsIter"""
        return _oechem.OENbrsIter_ToLast(self)


    def __ref__(self) -> "OEChem::OENbrs &":
        """__ref__(OENbrsIter self) -> OENbrs"""
        return _oechem.OENbrsIter___ref__(self)


    def IsValid(self):
      return _oechem.OENbrsIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OENbrsIter self) -> PyObject *"""
        return _oechem.OENbrsIter_next(self)


    def Target(self) -> "OEChem::OENbrs &":
        """Target(OENbrsIter self) -> OENbrs"""
        return _oechem.OENbrsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """
        Next(OENbrsIter self) -> OENbrsIter
        Next(OENbrsIter self, int i) -> OENbrsIter
        """
        return _oechem.OENbrsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """
        Prev(OENbrsIter self) -> OENbrsIter
        Prev(OENbrsIter self, int i) -> OENbrsIter
        """
        return _oechem.OENbrsIter_Prev(self, *args)

OENbrsIter_swigregister = _oechem.OENbrsIter_swigregister
OENbrsIter_swigregister(OENbrsIter)

class OEBaseDataIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEBaseData)> 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<(OESystem::OEBaseData)> self) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OEBaseDataIter rhs) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OESystem::OEIterBase< OESystem::OEBaseData > * rhs) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEBaseData >::NonConstA > * rhs) -> OEBaseDataIter
        """
        this = _oechem.new_OEBaseDataIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBaseDataIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEBaseData > *":
        """Copy(OEBaseDataIter self) -> OESystem::OEIterBase< OESystem::OEBaseData > *"""
        return _oechem.OEBaseDataIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEBaseDataIter self, OESystem::OEIterBase< OESystem::OEBaseData > * ib)
        Push(OEBaseDataIter self, OEBaseDataIter iter)
        """
        return _oechem.OEBaseDataIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEBaseData,OESystem::OEBaseData > const &') -> "void":
        """Sort(OEBaseDataIter self, OESystem::OEBinaryPredicate< OESystem::OEBaseData,OESystem::OEBaseData > const & sort_criterion)"""
        return _oechem.OEBaseDataIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """ToFirst(OEBaseDataIter self) -> OEBaseDataIter"""
        return _oechem.OEBaseDataIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """ToLast(OEBaseDataIter self) -> OEBaseDataIter"""
        return _oechem.OEBaseDataIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEBaseData &":
        """__ref__(OEBaseDataIter self) -> OEBaseData"""
        return _oechem.OEBaseDataIter___ref__(self)


    def IsValid(self):
      return _oechem.OEBaseDataIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEBaseDataIter self) -> PyObject *"""
        return _oechem.OEBaseDataIter_next(self)


    def Target(self) -> "OESystem::OEBaseData &":
        """Target(OEBaseDataIter self) -> OEBaseData"""
        return _oechem.OEBaseDataIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """
        Next(OEBaseDataIter self) -> OEBaseDataIter
        Next(OEBaseDataIter self, int i) -> OEBaseDataIter
        """
        return _oechem.OEBaseDataIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """
        Prev(OEBaseDataIter self) -> OEBaseDataIter
        Prev(OEBaseDataIter self, int i) -> OEBaseDataIter
        """
        return _oechem.OEBaseDataIter_Prev(self, *args)

OEBaseDataIter_swigregister = _oechem.OEBaseDataIter_swigregister
OEBaseDataIter_swigregister(OEBaseDataIter)

class OEParameterIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEParameter)> 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<(OESystem::OEParameter)> self) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OEParameterIter rhs) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OESystem::OEIterBase< OESystem::OEParameter > * rhs) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEParameter >::NonConstA > * rhs) -> OEParameterIter
        """
        this = _oechem.new_OEParameterIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEParameterIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEParameter > *":
        """Copy(OEParameterIter self) -> OESystem::OEIterBase< OESystem::OEParameter > *"""
        return _oechem.OEParameterIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEParameterIter self, OESystem::OEIterBase< OESystem::OEParameter > * ib)
        Push(OEParameterIter self, OEParameterIter iter)
        """
        return _oechem.OEParameterIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEParameter,OESystem::OEParameter > const &') -> "void":
        """Sort(OEParameterIter self, OESystem::OEBinaryPredicate< OESystem::OEParameter,OESystem::OEParameter > const & sort_criterion)"""
        return _oechem.OEParameterIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """ToFirst(OEParameterIter self) -> OEParameterIter"""
        return _oechem.OEParameterIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """ToLast(OEParameterIter self) -> OEParameterIter"""
        return _oechem.OEParameterIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEParameter &":
        """__ref__(OEParameterIter self) -> OEParameter"""
        return _oechem.OEParameterIter___ref__(self)


    def IsValid(self):
      return _oechem.OEParameterIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEParameterIter self) -> PyObject *"""
        return _oechem.OEParameterIter_next(self)


    def Target(self) -> "OESystem::OEParameter &":
        """Target(OEParameterIter self) -> OEParameter"""
        return _oechem.OEParameterIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """
        Next(OEParameterIter self) -> OEParameterIter
        Next(OEParameterIter self, int i) -> OEParameterIter
        """
        return _oechem.OEParameterIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """
        Prev(OEParameterIter self) -> OEParameterIter
        Prev(OEParameterIter self, int i) -> OEParameterIter
        """
        return _oechem.OEParameterIter_Prev(self, *args)

OEParameterIter_swigregister = _oechem.OEParameterIter_swigregister
OEParameterIter_swigregister(OEParameterIter)

class OEInterfaceIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEInterface)> 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<(OESystem::OEInterface)> self) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OEInterfaceIter rhs) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OESystem::OEIterBase< OESystem::OEInterface > * rhs) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEInterface >::NonConstA > * rhs) -> OEInterfaceIter
        """
        this = _oechem.new_OEInterfaceIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInterfaceIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEInterface > *":
        """Copy(OEInterfaceIter self) -> OESystem::OEIterBase< OESystem::OEInterface > *"""
        return _oechem.OEInterfaceIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInterfaceIter self, OESystem::OEIterBase< OESystem::OEInterface > * ib)
        Push(OEInterfaceIter self, OEInterfaceIter iter)
        """
        return _oechem.OEInterfaceIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEInterface,OESystem::OEInterface > const &') -> "void":
        """Sort(OEInterfaceIter self, OESystem::OEBinaryPredicate< OESystem::OEInterface,OESystem::OEInterface > const & sort_criterion)"""
        return _oechem.OEInterfaceIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """ToFirst(OEInterfaceIter self) -> OEInterfaceIter"""
        return _oechem.OEInterfaceIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """ToLast(OEInterfaceIter self) -> OEInterfaceIter"""
        return _oechem.OEInterfaceIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEInterface &":
        """__ref__(OEInterfaceIter self) -> OEInterface"""
        return _oechem.OEInterfaceIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInterfaceIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInterfaceIter self) -> PyObject *"""
        return _oechem.OEInterfaceIter_next(self)


    def Target(self) -> "OESystem::OEInterface &":
        """Target(OEInterfaceIter self) -> OEInterface"""
        return _oechem.OEInterfaceIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """
        Next(OEInterfaceIter self) -> OEInterfaceIter
        Next(OEInterfaceIter self, int i) -> OEInterfaceIter
        """
        return _oechem.OEInterfaceIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """
        Prev(OEInterfaceIter self) -> OEInterfaceIter
        Prev(OEInterfaceIter self, int i) -> OEInterfaceIter
        """
        return _oechem.OEInterfaceIter_Prev(self, *args)

OEInterfaceIter_swigregister = _oechem.OEInterfaceIter_swigregister
OEInterfaceIter_swigregister(OEInterfaceIter)

class OEAltLocationIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEAltLocation)> 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<(OEBio::OEAltLocation)> self) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OEAltLocationIter rhs) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OESystem::OEIterBase< OEBio::OEAltLocation > * rhs) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEAltLocation >::NonConstA > * rhs) -> OEAltLocationIter
        """
        this = _oechem.new_OEAltLocationIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEAltLocation > *":
        """Copy(OEAltLocationIter self) -> OESystem::OEIterBase< OEBio::OEAltLocation > *"""
        return _oechem.OEAltLocationIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAltLocationIter self, OESystem::OEIterBase< OEBio::OEAltLocation > * ib)
        Push(OEAltLocationIter self, OEAltLocationIter iter)
        """
        return _oechem.OEAltLocationIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEAltLocation,OEBio::OEAltLocation > const &') -> "void":
        """Sort(OEAltLocationIter self, OESystem::OEBinaryPredicate< OEBio::OEAltLocation,OEBio::OEAltLocation > const & sort_criterion)"""
        return _oechem.OEAltLocationIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """ToFirst(OEAltLocationIter self) -> OEAltLocationIter"""
        return _oechem.OEAltLocationIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """ToLast(OEAltLocationIter self) -> OEAltLocationIter"""
        return _oechem.OEAltLocationIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEAltLocation &":
        """__ref__(OEAltLocationIter self) -> OEAltLocation"""
        return _oechem.OEAltLocationIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAltLocationIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAltLocationIter self) -> PyObject *"""
        return _oechem.OEAltLocationIter_next(self)


    def Target(self) -> "OEBio::OEAltLocation &":
        """Target(OEAltLocationIter self) -> OEAltLocation"""
        return _oechem.OEAltLocationIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """
        Next(OEAltLocationIter self) -> OEAltLocationIter
        Next(OEAltLocationIter self, int i) -> OEAltLocationIter
        """
        return _oechem.OEAltLocationIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """
        Prev(OEAltLocationIter self) -> OEAltLocationIter
        Prev(OEAltLocationIter self, int i) -> OEAltLocationIter
        """
        return _oechem.OEAltLocationIter_Prev(self, *args)

OEAltLocationIter_swigregister = _oechem.OEAltLocationIter_swigregister
OEAltLocationIter_swigregister(OEAltLocationIter)

class OEAltGroupIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEAltGroup)> 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<(OEBio::OEAltGroup)> self) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OEAltGroupIter rhs) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OESystem::OEIterBase< OEBio::OEAltGroup > * rhs) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEAltGroup >::NonConstA > * rhs) -> OEAltGroupIter
        """
        this = _oechem.new_OEAltGroupIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltGroupIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEAltGroup > *":
        """Copy(OEAltGroupIter self) -> OESystem::OEIterBase< OEBio::OEAltGroup > *"""
        return _oechem.OEAltGroupIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAltGroupIter self, OESystem::OEIterBase< OEBio::OEAltGroup > * ib)
        Push(OEAltGroupIter self, OEAltGroupIter iter)
        """
        return _oechem.OEAltGroupIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEAltGroup,OEBio::OEAltGroup > const &') -> "void":
        """Sort(OEAltGroupIter self, OESystem::OEBinaryPredicate< OEBio::OEAltGroup,OEBio::OEAltGroup > const & sort_criterion)"""
        return _oechem.OEAltGroupIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """ToFirst(OEAltGroupIter self) -> OEAltGroupIter"""
        return _oechem.OEAltGroupIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """ToLast(OEAltGroupIter self) -> OEAltGroupIter"""
        return _oechem.OEAltGroupIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEAltGroup &":
        """__ref__(OEAltGroupIter self) -> OEAltGroup"""
        return _oechem.OEAltGroupIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAltGroupIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAltGroupIter self) -> PyObject *"""
        return _oechem.OEAltGroupIter_next(self)


    def Target(self) -> "OEBio::OEAltGroup &":
        """Target(OEAltGroupIter self) -> OEAltGroup"""
        return _oechem.OEAltGroupIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """
        Next(OEAltGroupIter self) -> OEAltGroupIter
        Next(OEAltGroupIter self, int i) -> OEAltGroupIter
        """
        return _oechem.OEAltGroupIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """
        Prev(OEAltGroupIter self) -> OEAltGroupIter
        Prev(OEAltGroupIter self, int i) -> OEAltGroupIter
        """
        return _oechem.OEAltGroupIter_Prev(self, *args)

OEAltGroupIter_swigregister = _oechem.OEAltGroupIter_swigregister
OEAltGroupIter_swigregister(OEAltGroupIter)

class OESequenceAlignmentIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OESequenceAlignment)> 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<(OEBio::OESequenceAlignment)> self) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESequenceAlignmentIter rhs) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESystem::OEIterBase< OEBio::OESequenceAlignment > * rhs) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OESequenceAlignment >::NonConstA > * rhs) -> OESequenceAlignmentIter
        """
        this = _oechem.new_OESequenceAlignmentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESequenceAlignmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OESequenceAlignment > *":
        """Copy(OESequenceAlignmentIter self) -> OESystem::OEIterBase< OEBio::OESequenceAlignment > *"""
        return _oechem.OESequenceAlignmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESequenceAlignmentIter self, OESystem::OEIterBase< OEBio::OESequenceAlignment > * ib)
        Push(OESequenceAlignmentIter self, OESequenceAlignmentIter iter)
        """
        return _oechem.OESequenceAlignmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OESequenceAlignment,OEBio::OESequenceAlignment > const &') -> "void":
        """Sort(OESequenceAlignmentIter self, OESystem::OEBinaryPredicate< OEBio::OESequenceAlignment,OEBio::OESequenceAlignment > const & sort_criterion)"""
        return _oechem.OESequenceAlignmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """ToFirst(OESequenceAlignmentIter self) -> OESequenceAlignmentIter"""
        return _oechem.OESequenceAlignmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """ToLast(OESequenceAlignmentIter self) -> OESequenceAlignmentIter"""
        return _oechem.OESequenceAlignmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OESequenceAlignment &":
        """__ref__(OESequenceAlignmentIter self) -> OESequenceAlignment"""
        return _oechem.OESequenceAlignmentIter___ref__(self)


    def IsValid(self):
      return _oechem.OESequenceAlignmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESequenceAlignmentIter self) -> PyObject *"""
        return _oechem.OESequenceAlignmentIter_next(self)


    def Target(self) -> "OEBio::OESequenceAlignment &":
        """Target(OESequenceAlignmentIter self) -> OESequenceAlignment"""
        return _oechem.OESequenceAlignmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """
        Next(OESequenceAlignmentIter self) -> OESequenceAlignmentIter
        Next(OESequenceAlignmentIter self, int i) -> OESequenceAlignmentIter
        """
        return _oechem.OESequenceAlignmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """
        Prev(OESequenceAlignmentIter self) -> OESequenceAlignmentIter
        Prev(OESequenceAlignmentIter self, int i) -> OESequenceAlignmentIter
        """
        return _oechem.OESequenceAlignmentIter_Prev(self, *args)

OESequenceAlignmentIter_swigregister = _oechem.OESequenceAlignmentIter_swigregister
OESequenceAlignmentIter_swigregister(OESequenceAlignmentIter)

class OEResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEResidue)> 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<(OEChem::OEResidue)> self) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OEResidueIter rhs) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OESystem::OEIterBase< OEChem::OEResidue > * rhs) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEResidue >::NonConstA > * rhs) -> OEResidueIter
        """
        this = _oechem.new_OEResidueIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEResidue > *":
        """Copy(OEResidueIter self) -> OESystem::OEIterBase< OEChem::OEResidue > *"""
        return _oechem.OEResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEResidueIter self, OESystem::OEIterBase< OEChem::OEResidue > * ib)
        Push(OEResidueIter self, OEResidueIter iter)
        """
        return _oechem.OEResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEResidue,OEChem::OEResidue > const &') -> "void":
        """Sort(OEResidueIter self, OESystem::OEBinaryPredicate< OEChem::OEResidue,OEChem::OEResidue > const & sort_criterion)"""
        return _oechem.OEResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """ToFirst(OEResidueIter self) -> OEResidueIter"""
        return _oechem.OEResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """ToLast(OEResidueIter self) -> OEResidueIter"""
        return _oechem.OEResidueIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEResidue &":
        """__ref__(OEResidueIter self) -> OEResidue"""
        return _oechem.OEResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.OEResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEResidueIter self) -> PyObject *"""
        return _oechem.OEResidueIter_next(self)


    def Target(self) -> "OEChem::OEResidue &":
        """Target(OEResidueIter self) -> OEResidue"""
        return _oechem.OEResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """
        Next(OEResidueIter self) -> OEResidueIter
        Next(OEResidueIter self, int i) -> OEResidueIter
        """
        return _oechem.OEResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """
        Prev(OEResidueIter self) -> OEResidueIter
        Prev(OEResidueIter self, int i) -> OEResidueIter
        """
        return _oechem.OEResidueIter_Prev(self, *args)

OEResidueIter_swigregister = _oechem.OEResidueIter_swigregister
OEResidueIter_swigregister(OEResidueIter)

class OEConstStringIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).std::string)> 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<(q(const).std::string)> self) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OEConstStringIter rhs) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OESystem::OEIterBase< std::string const > * rhs) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OESystem::OEIterBase< OESystem::OEIter< std::string const >::NonConstA > * rhs) -> OEConstStringIter
        """
        this = _oechem.new_OEConstStringIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConstStringIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< std::string const > *":
        """Copy(OEConstStringIter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEConstStringIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstStringIter self, OESystem::OEIterBase< std::string const > * ib)
        Push(OEConstStringIter self, OEConstStringIter iter)
        """
        return _oechem.OEConstStringIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< std::string const,std::string const > const &') -> "void":
        """Sort(OEConstStringIter self, OESystem::OEBinaryPredicate< std::string const,std::string const > const & sort_criterion)"""
        return _oechem.OEConstStringIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< std::string const > &":
        """ToFirst(OEConstStringIter self) -> OEConstStringIter"""
        return _oechem.OEConstStringIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< std::string const > &":
        """ToLast(OEConstStringIter self) -> OEConstStringIter"""
        return _oechem.OEConstStringIter_ToLast(self)


    def __ref__(self) -> "std::string const &":
        """__ref__(OEConstStringIter self) -> std::string const &"""
        return _oechem.OEConstStringIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConstStringIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstStringIter self) -> PyObject *"""
        return _oechem.OEConstStringIter_next(self)


    def Target(self) -> "std::string const &":
        """Target(OEConstStringIter self) -> std::string const &"""
        return _oechem.OEConstStringIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< std::string const > &":
        """
        Next(OEConstStringIter self) -> OEConstStringIter
        Next(OEConstStringIter self, int i) -> OEConstStringIter
        """
        return _oechem.OEConstStringIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< std::string const > &":
        """
        Prev(OEConstStringIter self) -> OEConstStringIter
        Prev(OEConstStringIter self, int i) -> OEConstStringIter
        """
        return _oechem.OEConstStringIter_Prev(self, *args)

OEConstStringIter_swigregister = _oechem.OEConstStringIter_swigregister
OEConstStringIter_swigregister(OEConstStringIter)

class OEStringIter(object):
    """Proxy of C++ OESystem::OEIter<(std::string)> 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<(std::string)> self) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OEStringIter rhs) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OESystem::OEIterBase< std::string > * rhs) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OESystem::OEIterBase< OESystem::OEIter< std::string >::NonConstA > * rhs) -> OEStringIter
        """
        this = _oechem.new_OEStringIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< std::string > *":
        """Copy(OEStringIter self) -> OESystem::OEIterBase< std::string > *"""
        return _oechem.OEStringIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEStringIter self, OESystem::OEIterBase< std::string > * ib)
        Push(OEStringIter self, OEStringIter iter)
        """
        return _oechem.OEStringIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< std::string,std::string > const &') -> "void":
        """Sort(OEStringIter self, OESystem::OEBinaryPredicate< std::string,std::string > const & sort_criterion)"""
        return _oechem.OEStringIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< std::string > &":
        """ToFirst(OEStringIter self) -> OEStringIter"""
        return _oechem.OEStringIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< std::string > &":
        """ToLast(OEStringIter self) -> OEStringIter"""
        return _oechem.OEStringIter_ToLast(self)


    def __ref__(self) -> "std::string &":
        """__ref__(OEStringIter self) -> std::string &"""
        return _oechem.OEStringIter___ref__(self)


    def IsValid(self):
      return _oechem.OEStringIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEStringIter self) -> PyObject *"""
        return _oechem.OEStringIter_next(self)


    def Target(self) -> "std::string &":
        """Target(OEStringIter self) -> std::string &"""
        return _oechem.OEStringIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< std::string > &":
        """
        Next(OEStringIter self) -> OEStringIter
        Next(OEStringIter self, int i) -> OEStringIter
        """
        return _oechem.OEStringIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< std::string > &":
        """
        Prev(OEStringIter self) -> OEStringIter
        Prev(OEStringIter self, int i) -> OEStringIter
        """
        return _oechem.OEStringIter_Prev(self, *args)

OEStringIter_swigregister = _oechem.OEStringIter_swigregister
OEStringIter_swigregister(OEStringIter)


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

OEConstStringIter.__iter__ = str_iter
OEStringIter.__iter__ = str_iter

del str_iter


def OEClearAromaticFlags(mol: 'OEMolBase') -> "void":
    """OEClearAromaticFlags(OEMolBase mol)"""
    return _oechem.OEClearAromaticFlags(mol)

def OEAssignAromaticFlags(*args) -> "void":
    """
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True, unsigned int maxpath=0, bool prune=False)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True, unsigned int maxpath=0)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel)
    OEAssignAromaticFlags(OEMolBase mol)
    """
    return _oechem.OEAssignAromaticFlags(*args)

def OEExactGraphMatch(mol1: 'OEMolBase', mol2: 'OEMolBase') -> "bool":
    """OEExactGraphMatch(OEMolBase mol1, OEMolBase mol2) -> bool"""
    return _oechem.OEExactGraphMatch(mol1, mol2)

def OECanonicalOrderAtoms(mol: 'OEMolBase') -> "void":
    """OECanonicalOrderAtoms(OEMolBase mol)"""
    return _oechem.OECanonicalOrderAtoms(mol)

def OECanonicalOrderBonds(mol: 'OEMolBase') -> "void":
    """OECanonicalOrderBonds(OEMolBase mol)"""
    return _oechem.OECanonicalOrderBonds(mol)

def OEClearPartialCharges(mol: 'OEMolBase') -> "void":
    """OEClearPartialCharges(OEMolBase mol)"""
    return _oechem.OEClearPartialCharges(mol)

def OEFormalPartialCharges(mol: 'OEMolBase') -> "void":
    """OEFormalPartialCharges(OEMolBase mol)"""
    return _oechem.OEFormalPartialCharges(mol)

def OEHasPartialCharges(mol: 'OEMolBase') -> "bool":
    """OEHasPartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEHasPartialCharges(mol)

def OENetCharge(mol: 'OEMolBase') -> "int":
    """OENetCharge(OEMolBase mol) -> int"""
    return _oechem.OENetCharge(mol)

def OEGasteigerInitialCharges(mol: 'OEMolBase') -> "bool":
    """OEGasteigerInitialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEGasteigerInitialCharges(mol)

def OEGasteigerPartialCharges(mol: 'OEMolBase') -> "bool":
    """OEGasteigerPartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEGasteigerPartialCharges(mol)

def OEAssignFormalCharges(*args) -> "void":
    """
    OEAssignFormalCharges(OEAtomBase atm)
    OEAssignFormalCharges(OEMolBase mol)
    """
    return _oechem.OEAssignFormalCharges(*args)

def OEPerceiveCIPStereo(*args) -> "unsigned int":
    """
    OEPerceiveCIPStereo(OEMolBase mol, OEAtomBase atom) -> unsigned int
    OEPerceiveCIPStereo(OEMolBase mol, OEBondBase bond) -> unsigned int
    """
    return _oechem.OEPerceiveCIPStereo(*args)

def OESetCIPStereo(*args) -> "bool":
    """
    OESetCIPStereo(OEMolBase mol, OEAtomBase atom, unsigned int cipstereo) -> bool
    OESetCIPStereo(OEMolBase mol, OEBondBase bond, unsigned int cipstereo) -> bool
    """
    return _oechem.OESetCIPStereo(*args)

def OEGetComment(mol: 'OEMolBase') -> "char const *":
    """OEGetComment(OEMolBase mol) -> char const *"""
    return _oechem.OEGetComment(mol)

def OESetComment(mol: 'OEMolBase', c: 'char const *') -> "void":
    """OESetComment(OEMolBase mol, char const * c)"""
    return _oechem.OESetComment(mol, c)

def OEGetAtomComment(atm: 'OEAtomBase') -> "char const *":
    """OEGetAtomComment(OEAtomBase atm) -> char const *"""
    return _oechem.OEGetAtomComment(atm)

def OESetAtomComment(atm: 'OEAtomBase', c: 'char const *') -> "void":
    """OESetAtomComment(OEAtomBase atm, char const * c)"""
    return _oechem.OESetAtomComment(atm, c)

def OEDetermineConnectivity(mol: 'OEMolBase', same_altloc: 'bool'=True) -> "void":
    """
    OEDetermineConnectivity(OEMolBase mol, bool same_altloc=True)
    OEDetermineConnectivity(OEMolBase mol)
    """
    return _oechem.OEDetermineConnectivity(mol, same_altloc)

def OEPerceiveBondOrders(mol: 'OEMolBase') -> "void":
    """OEPerceiveBondOrders(OEMolBase mol)"""
    return _oechem.OEPerceiveBondOrders(mol)
class OENbrs(object):
    """Proxy of C++ OEChem::OENbrs 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, b: 'OEAtomBase', e: 'OEAtomBase', d: 'double'):
        """__init__(OEChem::OENbrs self, OEAtomBase b, OEAtomBase e, double d) -> OENbrs"""
        this = _oechem.new_OENbrs(b, e, d)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetBgn(self) -> "OEChem::OEAtomBase const *":
        """GetBgn(OENbrs self) -> OEAtomBase"""
        return _oechem.OENbrs_GetBgn(self)


    def GetEnd(self) -> "OEChem::OEAtomBase const *":
        """GetEnd(OENbrs self) -> OEAtomBase"""
        return _oechem.OENbrs_GetEnd(self)


    def GetDist2(self) -> "double":
        """GetDist2(OENbrs self) -> double"""
        return _oechem.OENbrs_GetDist2(self)


    def GetDist(self) -> "double":
        """GetDist(OENbrs self) -> double"""
        return _oechem.OENbrs_GetDist(self)

    bgn = _swig_property(_oechem.OENbrs_bgn_get, _oechem.OENbrs_bgn_set)
    end = _swig_property(_oechem.OENbrs_end_get, _oechem.OENbrs_end_set)
    dist2 = _swig_property(_oechem.OENbrs_dist2_get, _oechem.OENbrs_dist2_set)
    __swig_destroy__ = _oechem.delete_OENbrs
    __del__ = lambda self: None
OENbrs_swigregister = _oechem.OENbrs_swigregister
OENbrs_swigregister(OENbrs)
OEAroModelUndefined = cvar.OEAroModelUndefined
OEAroModelDaylight = cvar.OEAroModelDaylight
OEAroModelOpenEye = cvar.OEAroModelOpenEye
OEAroModelTripos = cvar.OEAroModelTripos
OEAroModelMMFF = cvar.OEAroModelMMFF
OEAroModelMDL = cvar.OEAroModelMDL


def OEGetNearestNbrs(*args) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
    """
    OEGetNearestNbrs(OEMolBase mol, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, OEAtomBase atom, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, OEAtomBase atom, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, float const * coords, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, float const * coords, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double const * coords, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double const * coords, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol1, OEMolBase mol2, double maxdist, unsigned int method, bool const sorting=False) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol1, OEMolBase mol2, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol1, OEMolBase mol2, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs > *
    """
    return _oechem.OEGetNearestNbrs(*args)
class OENearestNbrs(object):
    """Proxy of C++ OEChem::OENearestNbrs 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__(OEChem::OENearestNbrs self, OEMolBase mol, double maxdist, unsigned int method) -> OENearestNbrs
        __init__(OEChem::OENearestNbrs self, OEMolBase mol, double maxdist) -> OENearestNbrs
        """
        this = _oechem.new_OENearestNbrs(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENearestNbrs
    __del__ = lambda self: None

    def GetNbrs(self, *args) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
        """
        GetNbrs(OENearestNbrs self, OEMolBase mol) -> OESystem::OEIterBase< OEChem::OENbrs >
        GetNbrs(OENearestNbrs self, OEAtomBase atom) -> OESystem::OEIterBase< OEChem::OENbrs >
        GetNbrs(OENearestNbrs self, float const * coords) -> OESystem::OEIterBase< OEChem::OENbrs > *
        """
        return _oechem.OENearestNbrs_GetNbrs(self, *args)

OENearestNbrs_swigregister = _oechem.OENearestNbrs_swigregister
OENearestNbrs_swigregister(OENearestNbrs)

class OEMolDBException(object):
    """Proxy of C++ OEChem::OEMolDBException 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, msg: 'std::string const &'):
        """__init__(OEChem::OEMolDBException self, std::string const & msg) -> OEMolDBException"""
        this = _oechem.new_OEMolDBException(msg)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolDBException
    __del__ = lambda self: None

    def what(self) -> "char const *":
        """what(OEMolDBException self) -> char const *"""
        return _oechem.OEMolDBException_what(self)

OEMolDBException_swigregister = _oechem.OEMolDBException_swigregister
OEMolDBException_swigregister(OEMolDBException)

class OEMolDatabaseSaveOptions(object):
    """Proxy of C++ OEChem::OEMolDatabaseSaveOptions 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__(OEChem::OEMolDatabaseSaveOptions self) -> OEMolDatabaseSaveOptions
        __init__(OEChem::OEMolDatabaseSaveOptions self, unsigned int format, unsigned int flavor, bool writeIdx, std::string const & idxFileName) -> OEMolDatabaseSaveOptions
        """
        this = _oechem.new_OEMolDatabaseSaveOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetFormat(self) -> "unsigned int":
        """GetFormat(OEMolDatabaseSaveOptions self) -> unsigned int"""
        return _oechem.OEMolDatabaseSaveOptions_GetFormat(self)


    def SetFormat(self, fmt: 'unsigned int') -> "void":
        """SetFormat(OEMolDatabaseSaveOptions self, unsigned int fmt)"""
        return _oechem.OEMolDatabaseSaveOptions_SetFormat(self, fmt)


    def GetFlavor(self) -> "unsigned int":
        """GetFlavor(OEMolDatabaseSaveOptions self) -> unsigned int"""
        return _oechem.OEMolDatabaseSaveOptions_GetFlavor(self)


    def SetFlavor(self, flvr: 'unsigned int') -> "void":
        """SetFlavor(OEMolDatabaseSaveOptions self, unsigned int flvr)"""
        return _oechem.OEMolDatabaseSaveOptions_SetFlavor(self, flvr)


    def GetWriteIdx(self) -> "bool":
        """GetWriteIdx(OEMolDatabaseSaveOptions self) -> bool"""
        return _oechem.OEMolDatabaseSaveOptions_GetWriteIdx(self)


    def SetWriteIdx(self, w: 'bool') -> "void":
        """SetWriteIdx(OEMolDatabaseSaveOptions self, bool w)"""
        return _oechem.OEMolDatabaseSaveOptions_SetWriteIdx(self, w)


    def GetIdxFileName(self) -> "std::string const &":
        """GetIdxFileName(OEMolDatabaseSaveOptions self) -> std::string const &"""
        return _oechem.OEMolDatabaseSaveOptions_GetIdxFileName(self)


    def SetIdxFileName(self, f: 'std::string const &') -> "void":
        """SetIdxFileName(OEMolDatabaseSaveOptions self, std::string const & f)"""
        return _oechem.OEMolDatabaseSaveOptions_SetIdxFileName(self, f)

    __swig_destroy__ = _oechem.delete_OEMolDatabaseSaveOptions
    __del__ = lambda self: None
OEMolDatabaseSaveOptions_swigregister = _oechem.OEMolDatabaseSaveOptions_swigregister
OEMolDatabaseSaveOptions_swigregister(OEMolDatabaseSaveOptions)

class OEMolDatabase(OEBase):
    """Proxy of C++ OEChem::OEMolDatabase class."""

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

    def GetImpl(self, *args) -> "OEChem::OEMolDatabaseImpl &":
        """
        GetImpl(OEMolDatabase self) -> OEChem::OEMolDatabaseImpl const
        GetImpl(OEMolDatabase self) -> OEChem::OEMolDatabaseImpl &
        """
        return _oechem.OEMolDatabase_GetImpl(self, *args)


    def __init__(self, *args):
        """
        __init__(OEChem::OEMolDatabase self) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename, unsigned int format) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oemolistream ifs) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oeistream istr, unsigned int format) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oeistream istr, unsigned int format, unsigned int flavor) -> OEMolDatabase
        """
        this = _oechem.new_OEMolDatabase(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolDatabase
    __del__ = lambda self: None

    def Open(self, *args) -> "bool":
        """
        Open(OEMolDatabase self, std::string const & filename) -> bool
        Open(OEMolDatabase self, std::string const & filename, unsigned int format) -> bool
        Open(OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> bool
        Open(OEMolDatabase self, oemolistream ifs) -> bool
        Open(OEMolDatabase self, oeistream istr, unsigned int format) -> bool
        Open(OEMolDatabase self, oeistream istr, unsigned int format, unsigned int flavor) -> bool
        """
        return _oechem.OEMolDatabase_Open(self, *args)


    def Save(self, *args) -> "bool":
        """
        Save(OEMolDatabase self, std::string const & filename, OEMolDatabaseSaveOptions opts) -> bool
        Save(OEMolDatabase self, std::string const & filename) -> bool
        Save(OEMolDatabase self, std::string const & filename, unsigned int format) -> bool
        Save(OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> bool
        Save(OEMolDatabase self, oemolostream ofs, OEMolDatabaseSaveOptions opts) -> bool
        Save(OEMolDatabase self, oemolostream ofs) -> bool
        Save(OEMolDatabase self, oeostream ostr, unsigned int format) -> bool
        Save(OEMolDatabase self, oeostream ostr, unsigned int format, unsigned int flavor) -> bool
        """
        return _oechem.OEMolDatabase_Save(self, *args)


    def GetFormat(self) -> "unsigned int":
        """GetFormat(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetFormat(self)


    def GetFlavor(self) -> "unsigned int":
        """GetFlavor(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetFlavor(self)


    def GetMolecule(self, *args) -> "bool":
        """
        GetMolecule(OEMolDatabase self, OEMolBase mol, unsigned int idx) -> bool
        GetMolecule(OEMolDatabase self, OEMCMolBase mol, unsigned int idx) -> bool
        GetMolecule(OEMolDatabase self, oemolostream ofs, unsigned int idx) -> bool
        """
        return _oechem.OEMolDatabase_GetMolecule(self, *args)


    def WriteMolecule(self, ofs: 'oemolostream', idx: 'unsigned int') -> "bool":
        """WriteMolecule(OEMolDatabase self, oemolostream ofs, unsigned int idx) -> bool"""
        return _oechem.OEMolDatabase_WriteMolecule(self, ofs, idx)


    def GetMoleculeOffset(self, idx: 'unsigned int') -> "oefpos_t":
        """GetMoleculeOffset(OEMolDatabase self, unsigned int idx) -> oefpos_t"""
        return _oechem.OEMolDatabase_GetMoleculeOffset(self, idx)


    def GetMoleculeSize(self, idx: 'unsigned int') -> "oefpos_t":
        """GetMoleculeSize(OEMolDatabase self, unsigned int idx) -> oefpos_t"""
        return _oechem.OEMolDatabase_GetMoleculeSize(self, idx)


    def GetTitle(self, idx: 'unsigned int') -> "std::string":
        """GetTitle(OEMolDatabase self, unsigned int idx) -> std::string"""
        return _oechem.OEMolDatabase_GetTitle(self, idx)


    def GetTitles(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetTitles(OEMolDatabase self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEMolDatabase_GetTitles(self)


    def Order(self, indices: 'OEUIntVector') -> "bool":
        """Order(OEMolDatabase self, OEUIntVector indices) -> bool"""
        return _oechem.OEMolDatabase_Order(self, indices)


    def Delete(self, *args) -> "bool":
        """
        Delete(OEMolDatabase self, unsigned int idx) -> bool
        Delete(OEMolDatabase self, OEUnaryMolBasePred pred) -> bool
        Delete(OEMolDatabase self, OESystem::OEUnaryPredicate< OEChem::OEMCMolBase > const & pred) -> bool
        Delete(OEMolDatabase self, OEUIntVector indices) -> bool
        """
        return _oechem.OEMolDatabase_Delete(self, *args)


    def IsDeleted(self, idx: 'unsigned int') -> "bool":
        """IsDeleted(OEMolDatabase self, unsigned int idx) -> bool"""
        return _oechem.OEMolDatabase_IsDeleted(self, idx)

    InvalidIdx = _oechem.OEMolDatabase_InvalidIdx

    def GetMaxMolIdx(self) -> "unsigned int":
        """GetMaxMolIdx(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetMaxMolIdx(self)


    def NumMols(self) -> "unsigned int":
        """NumMols(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_NumMols(self)


    def GetIdxs(self, *args) -> "bool":
        """
        GetIdxs(OEMolDatabase self) -> OESystem::OEIterBase< unsigned int >
        GetIdxs(OEMolDatabase self, OEUIntVector indices) -> bool
        """
        return _oechem.OEMolDatabase_GetIdxs(self, *args)


    def GetIdx(self, row: 'unsigned int') -> "unsigned int":
        """GetIdx(OEMolDatabase self, unsigned int row) -> unsigned int"""
        return _oechem.OEMolDatabase_GetIdx(self, row)


    def GetRow(self, idx: 'unsigned int') -> "unsigned int":
        """GetRow(OEMolDatabase self, unsigned int idx) -> unsigned int"""
        return _oechem.OEMolDatabase_GetRow(self, idx)


    def Clear(self) -> "void":
        """Clear(OEMolDatabase self)"""
        return _oechem.OEMolDatabase_Clear(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMolDatabase self) -> void const *"""
        return _oechem.OEMolDatabase_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEMolDatabase self, void const * arg2) -> bool"""
        return _oechem.OEMolDatabase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMolDatabase self) -> OEBase"""
        return _oechem.OEMolDatabase_CreateCopy(self)


    def GetMoleculeString(self, idx: 'unsigned int') -> "PyObject *":
        """GetMoleculeString(OEMolDatabase self, unsigned int idx) -> PyObject *"""
        return _oechem.OEMolDatabase_GetMoleculeString(self, idx)


    def GetOEGraphMols(self):
        for idx in self.GetIdxs():
            mol = OEGraphMol()
            if self.GetMolecule(mol, idx):
                yield mol



    def GetOEMols(self):
        for idx in self.GetIdxs():
            mol = OEMol()
            if self.GetMolecule(mol, idx):
                yield mol


OEMolDatabase_swigregister = _oechem.OEMolDatabase_swigregister
OEMolDatabase_swigregister(OEMolDatabase)


def OEHasMolDBIdx(mol: 'OEBase') -> "bool":
    """OEHasMolDBIdx(OEBase mol) -> bool"""
    return _oechem.OEHasMolDBIdx(mol)

def OEGetMolDBIdx(mol: 'OEBase') -> "unsigned int":
    """OEGetMolDBIdx(OEBase mol) -> unsigned int"""
    return _oechem.OEGetMolDBIdx(mol)

def OECreateMolDatabaseIdx(*args) -> "bool":
    """
    OECreateMolDatabaseIdx(std::string const & databaseFileName) -> bool
    OECreateMolDatabaseIdx(std::string const & databaseFileName, std::string const & indexFileName) -> bool
    """
    return _oechem.OECreateMolDatabaseIdx(*args)

def OEGetMolDatabaseIdxFileName(databaseFileName: 'std::string const &') -> "std::string":
    """OEGetMolDatabaseIdxFileName(std::string const & databaseFileName) -> std::string"""
    return _oechem.OEGetMolDatabaseIdxFileName(databaseFileName)
class OEConfTestBase(object):
    """Proxy of C++ OEChem::OEConfTestBase 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 CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEConfTestBase self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEConfTestBase_CompareMols(self, m1, m2)


    def HasCompareMols(self) -> "bool":
        """HasCompareMols(OEConfTestBase self) -> bool"""
        return _oechem.OEConfTestBase_HasCompareMols(self)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEConfTestBase self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEConfTestBase_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEConfTestBase self) -> OEConfTestBase"""
        return _oechem.OEConfTestBase_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEConfTestBase
    __del__ = lambda self: None
OEConfTestBase_swigregister = _oechem.OEConfTestBase_swigregister
OEConfTestBase_swigregister(OEConfTestBase)

class OEDefaultConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEDefaultConfTest class."""

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

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEDefaultConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEDefaultConfTest_CompareMols(self, m1, m2)


    def HasCompareMols(self) -> "bool":
        """HasCompareMols(OEDefaultConfTest self) -> bool"""
        return _oechem.OEDefaultConfTest_HasCompareMols(self)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEDefaultConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEDefaultConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEDefaultConfTest self) -> OEConfTestBase"""
        return _oechem.OEDefaultConfTest_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEDefaultConfTest self) -> OEDefaultConfTest"""
        this = _oechem.new_OEDefaultConfTest()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDefaultConfTest
    __del__ = lambda self: None
OEDefaultConfTest_swigregister = _oechem.OEDefaultConfTest_swigregister
OEDefaultConfTest_swigregister(OEDefaultConfTest)

class OEAbsCanonicalConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEAbsCanonicalConfTest class."""

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

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEAbsCanonicalConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsCanonicalConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEAbsCanonicalConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsCanonicalConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEAbsCanonicalConfTest self) -> OEConfTestBase"""
        return _oechem.OEAbsCanonicalConfTest_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEAbsCanonicalConfTest self) -> OEAbsCanonicalConfTest"""
        this = _oechem.new_OEAbsCanonicalConfTest()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAbsCanonicalConfTest
    __del__ = lambda self: None
OEAbsCanonicalConfTest_swigregister = _oechem.OEAbsCanonicalConfTest_swigregister
OEAbsCanonicalConfTest_swigregister(OEAbsCanonicalConfTest)

class OEIsomericConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEIsomericConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEIsomericConfTest self, bool compTitles=True) -> OEIsomericConfTest
        __init__(OEChem::OEIsomericConfTest self) -> OEIsomericConfTest
        """
        this = _oechem.new_OEIsomericConfTest(compTitles)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEIsomericConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEIsomericConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEIsomericConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEIsomericConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEIsomericConfTest self) -> OEConfTestBase"""
        return _oechem.OEIsomericConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsomericConfTest
    __del__ = lambda self: None
OEIsomericConfTest_swigregister = _oechem.OEIsomericConfTest_swigregister
OEIsomericConfTest_swigregister(OEIsomericConfTest)

class OEOmegaConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEOmegaConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEOmegaConfTest self, bool compTitles=True) -> OEOmegaConfTest
        __init__(OEChem::OEOmegaConfTest self) -> OEOmegaConfTest
        """
        this = _oechem.new_OEOmegaConfTest(compTitles)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEOmegaConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEOmegaConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEOmegaConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEOmegaConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEOmegaConfTest self) -> OEConfTestBase"""
        return _oechem.OEOmegaConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEOmegaConfTest
    __del__ = lambda self: None
OEOmegaConfTest_swigregister = _oechem.OEOmegaConfTest_swigregister
OEOmegaConfTest_swigregister(OEOmegaConfTest)

class OEAbsoluteConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEAbsoluteConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEAbsoluteConfTest self, bool compTitles=True) -> OEAbsoluteConfTest
        __init__(OEChem::OEAbsoluteConfTest self) -> OEAbsoluteConfTest
        """
        this = _oechem.new_OEAbsoluteConfTest(compTitles)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEAbsoluteConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsoluteConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEAbsoluteConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsoluteConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEAbsoluteConfTest self) -> OEConfTestBase"""
        return _oechem.OEAbsoluteConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEAbsoluteConfTest
    __del__ = lambda self: None
OEAbsoluteConfTest_swigregister = _oechem.OEAbsoluteConfTest_swigregister
OEAbsoluteConfTest_swigregister(OEAbsoluteConfTest)


def OESortConfsBySDTag(mol: 'OEMCMolBase', sdtag: 'std::string const &', biggerIsBetter: 'bool') -> "bool":
    """OESortConfsBySDTag(OEMCMolBase mol, std::string const & sdtag, bool biggerIsBetter) -> bool"""
    return _oechem.OESortConfsBySDTag(mol, sdtag, biggerIsBetter)

def OESortConfsByTag(mol: 'OEMCMolBase', tag: 'std::string const &', biggerIsBetter: 'bool') -> "bool":
    """OESortConfsByTag(OEMCMolBase mol, std::string const & tag, bool biggerIsBetter) -> bool"""
    return _oechem.OESortConfsByTag(mol, tag, biggerIsBetter)

def OETrimConformers(mol: 'OEMCMolBase', N: 'unsigned int') -> "bool":
    """OETrimConformers(OEMCMolBase mol, unsigned int N) -> bool"""
    return _oechem.OETrimConformers(mol, N)

def OEGetAtomicSymbol(elemno: 'unsigned int') -> "char const *":
    """OEGetAtomicSymbol(unsigned int elemno) -> char const *"""
    return _oechem.OEGetAtomicSymbol(elemno)

def OEGetAtomicNum(sym: 'char const *') -> "unsigned int":
    """OEGetAtomicNum(char const * sym) -> unsigned int"""
    return _oechem.OEGetAtomicNum(sym)

def OEGetDefaultMass(elemno: 'unsigned int') -> "unsigned int":
    """OEGetDefaultMass(unsigned int elemno) -> unsigned int"""
    return _oechem.OEGetDefaultMass(elemno)

def OEGetCovalentRadius(elemno: 'unsigned int') -> "double":
    """OEGetCovalentRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetCovalentRadius(elemno)

def OEGetDelphiRadius(elemno: 'unsigned int') -> "double":
    """OEGetDelphiRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetDelphiRadius(elemno)

def OEGetBondiVdWRadius(elemno: 'unsigned int') -> "double":
    """OEGetBondiVdWRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetBondiVdWRadius(elemno)

def OEGetPaulingVdWRadius(elemno: 'unsigned int') -> "double":
    """OEGetPaulingVdWRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetPaulingVdWRadius(elemno)

def OEGetHonigIonicCavityRadius(elemno: 'unsigned int') -> "double":
    """OEGetHonigIonicCavityRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetHonigIonicCavityRadius(elemno)

def OEAssignCovalentRadii(mol: 'OEMolBase') -> "void":
    """OEAssignCovalentRadii(OEMolBase mol)"""
    return _oechem.OEAssignCovalentRadii(mol)

def OEAssignDelphiRadii(mol: 'OEMolBase') -> "void":
    """OEAssignDelphiRadii(OEMolBase mol)"""
    return _oechem.OEAssignDelphiRadii(mol)

def OEAssignBondiVdWRadii(mol: 'OEMolBase') -> "void":
    """OEAssignBondiVdWRadii(OEMolBase mol)"""
    return _oechem.OEAssignBondiVdWRadii(mol)

def OEAssignPaulingVdWRadii(mol: 'OEMolBase') -> "void":
    """OEAssignPaulingVdWRadii(OEMolBase mol)"""
    return _oechem.OEAssignPaulingVdWRadii(mol)

def OEAssignHonigIonicCavityRadii(mol: 'OEMolBase') -> "void":
    """OEAssignHonigIonicCavityRadii(OEMolBase mol)"""
    return _oechem.OEAssignHonigIonicCavityRadii(mol)

def OEAssignZap9Radii(*args) -> "void":
    """
    OEAssignZap9Radii(OEMolBase mol, unsigned int version)
    OEAssignZap9Radii(OEMolBase mol)
    """
    return _oechem.OEAssignZap9Radii(*args)

def OEAssignZap7Radii(*args) -> "void":
    """
    OEAssignZap7Radii(OEMolBase mol, unsigned int version)
    OEAssignZap7Radii(OEMolBase mol)
    """
    return _oechem.OEAssignZap7Radii(*args)

def OEGetAverageWeight(elemno: 'unsigned int') -> "double":
    """OEGetAverageWeight(unsigned int elemno) -> double"""
    return _oechem.OEGetAverageWeight(elemno)

def OEGetIsotopicWeight(elemno: 'unsigned int', mass: 'unsigned int') -> "double":
    """OEGetIsotopicWeight(unsigned int elemno, unsigned int mass) -> double"""
    return _oechem.OEGetIsotopicWeight(elemno, mass)

def OEIsCommonIsotope(elemno: 'unsigned int', mass: 'unsigned int') -> "bool":
    """OEIsCommonIsotope(unsigned int elemno, unsigned int mass) -> bool"""
    return _oechem.OEIsCommonIsotope(elemno, mass)

def OEGetRadiiTypeName(radiiType: 'unsigned int') -> "char const *":
    """OEGetRadiiTypeName(unsigned int radiiType) -> char const *"""
    return _oechem.OEGetRadiiTypeName(radiiType)

def OEAssignRadii(*args) -> "bool":
    """
    OEAssignRadii(OEMolBase mol, unsigned int molRadiiType, unsigned int ionRadiiType) -> bool
    OEAssignRadii(OEMolBase mol, unsigned int molRadiiType) -> bool
    OEAssignRadii(OEMolBase mol) -> bool
    """
    return _oechem.OEAssignRadii(*args)
class OEDefaultErrorLevel(object):
    """Proxy of C++ OESystem::OEDefaultErrorLevel 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__(OESystem::OEDefaultErrorLevel self) -> OEDefaultErrorLevel"""
        this = _oechem.new_OEDefaultErrorLevel()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetLevel(self, level: 'unsigned int') -> "void":
        """SetLevel(OEDefaultErrorLevel self, unsigned int level)"""
        return _oechem.OEDefaultErrorLevel_SetLevel(self, level)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEDefaultErrorLevel self) -> unsigned int"""
        return _oechem.OEDefaultErrorLevel_GetLevel(self)

    __swig_destroy__ = _oechem.delete_OEDefaultErrorLevel
    __del__ = lambda self: None
OEDefaultErrorLevel_swigregister = _oechem.OEDefaultErrorLevel_swigregister
OEDefaultErrorLevel_swigregister(OEDefaultErrorLevel)


def OEErrorLevelToString(level: 'unsigned int') -> "std::string":
    """OEErrorLevelToString(unsigned int level) -> std::string"""
    return _oechem.OEErrorLevelToString(level)
class OEErrorHandlerImplBase(object):
    """Proxy of C++ OESystem::OEErrorHandlerImplBase 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::OEErrorHandlerImplBase self) -> OEErrorHandlerImplBase
        __init__(OESystem::OEErrorHandlerImplBase self, OEErrorHandlerImplBase arg2) -> OEErrorHandlerImplBase
        """
        if self.__class__ == OEErrorHandlerImplBase:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEErrorHandlerImplBase(_self, *args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEErrorHandlerImplBase
    __del__ = lambda self: None

    def GetStrict(self) -> "bool":
        """GetStrict(OEErrorHandlerImplBase self) -> bool"""
        return _oechem.OEErrorHandlerImplBase_GetStrict(self)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEErrorHandlerImplBase self) -> unsigned int"""
        return _oechem.OEErrorHandlerImplBase_GetLevel(self)


    def Count(self, level: 'unsigned int'=0) -> "unsigned int":
        """
        Count(OEErrorHandlerImplBase self, unsigned int level=0) -> unsigned int
        Count(OEErrorHandlerImplBase self) -> unsigned int
        """
        return _oechem.OEErrorHandlerImplBase_Count(self, level)


    def SetStrict(self, strict: 'bool') -> "void":
        """SetStrict(OEErrorHandlerImplBase self, bool strict)"""
        return _oechem.OEErrorHandlerImplBase_SetStrict(self, strict)


    def SetLevel(self, level: 'unsigned int') -> "void":
        """SetLevel(OEErrorHandlerImplBase self, unsigned int level)"""
        return _oechem.OEErrorHandlerImplBase_SetLevel(self, level)


    def IncrementCount(self, level: 'unsigned int') -> "void":
        """IncrementCount(OEErrorHandlerImplBase self, unsigned int level)"""
        return _oechem.OEErrorHandlerImplBase_IncrementCount(self, level)


    def Clear(self) -> "void":
        """Clear(OEErrorHandlerImplBase self)"""
        return _oechem.OEErrorHandlerImplBase_Clear(self)


    def Msg(self, level: 'unsigned int', arg0: 'std::string const &') -> "void":
        """Msg(OEErrorHandlerImplBase self, unsigned int level, std::string const & arg0)"""
        return _oechem.OEErrorHandlerImplBase_Msg(self, level, arg0)


    def CreateCopy(self) -> "OESystem::OEErrorHandlerImplBase *":
        """CreateCopy(OEErrorHandlerImplBase self) -> OEErrorHandlerImplBase"""
        return _oechem.OEErrorHandlerImplBase_CreateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEErrorHandlerImplBase(self)
        return weakref_proxy(self)
OEErrorHandlerImplBase_swigregister = _oechem.OEErrorHandlerImplBase_swigregister
OEErrorHandlerImplBase_swigregister(OEErrorHandlerImplBase)

class OEErrorHandler(object):
    """Proxy of C++ OESystem::OEErrorHandler 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__ = _oechem.delete_OEErrorHandler
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OESystem::OEErrorHandler self) -> OEErrorHandler
        __init__(OESystem::OEErrorHandler self, OEErrorHandler rhs) -> OEErrorHandler
        """
        this = _oechem.new_OEErrorHandler(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetHandlerImpl(self, ptr: 'OEErrorHandlerImplBase', owned: 'bool') -> "void":
        """SetHandlerImpl(OEErrorHandler self, OEErrorHandlerImplBase ptr, bool owned)"""
        return _oechem.OEErrorHandler_SetHandlerImpl(self, ptr, owned)


    def GetHandlerImpl(self) -> "OESystem::OEErrorHandlerImplBase *":
        """GetHandlerImpl(OEErrorHandler self) -> OEErrorHandlerImplBase"""
        return _oechem.OEErrorHandler_GetHandlerImpl(self)


    def SetOutputStream(self, ofs: 'oeostream') -> "void":
        """SetOutputStream(OEErrorHandler self, oeostream ofs)"""
        return _oechem.OEErrorHandler_SetOutputStream(self, ofs)


    def SetStrict(self, strict: 'bool') -> "void":
        """SetStrict(OEErrorHandler self, bool strict)"""
        return _oechem.OEErrorHandler_SetStrict(self, strict)


    def GetStrict(self) -> "bool":
        """GetStrict(OEErrorHandler self) -> bool"""
        return _oechem.OEErrorHandler_GetStrict(self)


    def SetLevel(self, errLevel: 'unsigned int') -> "void":
        """SetLevel(OEErrorHandler self, unsigned int errLevel)"""
        return _oechem.OEErrorHandler_SetLevel(self, errLevel)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEErrorHandler self) -> unsigned int"""
        return _oechem.OEErrorHandler_GetLevel(self)


    def Clear(self) -> "void":
        """Clear(OEErrorHandler self)"""
        return _oechem.OEErrorHandler_Clear(self)


    def Count(self, level: 'unsigned int'=0) -> "unsigned int":
        """
        Count(OEErrorHandler self, unsigned int level=0) -> unsigned int
        Count(OEErrorHandler self) -> unsigned int
        """
        return _oechem.OEErrorHandler_Count(self, level)


    def Info(self, arg2: 'std::string const &') -> "void":
        """Info(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Info(self, arg2)


    def Warning(self, arg2: 'std::string const &') -> "void":
        """Warning(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Warning(self, arg2)


    def Error(self, arg2: 'std::string const &') -> "void":
        """Error(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Error(self, arg2)


    def Fatal(self, arg2: 'std::string const &') -> "void":
        """Fatal(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Fatal(self, arg2)


    def Usage(self, arg2: 'std::string const &') -> "void":
        """Usage(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Usage(self, arg2)


    def Debug(self, arg2: 'std::string const &') -> "void":
        """Debug(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Debug(self, arg2)


    def Verbose(self, arg2: 'std::string const &') -> "void":
        """Verbose(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Verbose(self, arg2)


    def Msg(self, level: 'unsigned int', arg3: 'std::string const &') -> "void":
        """Msg(OEErrorHandler self, unsigned int level, std::string const & arg3)"""
        return _oechem.OEErrorHandler_Msg(self, level, arg3)

OEErrorHandler_swigregister = _oechem.OEErrorHandler_swigregister
OEErrorHandler_swigregister(OEErrorHandler)

class OEScopedErrorLevelOverride(object):
    """Proxy of C++ OESystem::OEScopedErrorLevelOverride 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::OEScopedErrorLevelOverride self, unsigned int level, OEErrorHandler hdlr) -> OEScopedErrorLevelOverride
        __init__(OESystem::OEScopedErrorLevelOverride self, unsigned int level) -> OEScopedErrorLevelOverride
        """
        this = _oechem.new_OEScopedErrorLevelOverride(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEScopedErrorLevelOverride
    __del__ = lambda self: None
OEScopedErrorLevelOverride_swigregister = _oechem.OEScopedErrorLevelOverride_swigregister
OEScopedErrorLevelOverride_swigregister(OEScopedErrorLevelOverride)


def OEHistogramFormula(str: 'std::string &', hist: 'unsigned int const *', charge: 'int') -> "void":
    """OEHistogramFormula(std::string & str, unsigned int const * hist, int charge)"""
    return _oechem.OEHistogramFormula(str, hist, charge)

def OECalculateMolecularWeight(mol: 'OEMolBase', isotopic: 'bool'=False) -> "double":
    """
    OECalculateMolecularWeight(OEMolBase mol, bool isotopic=False) -> double
    OECalculateMolecularWeight(OEMolBase mol) -> double
    """
    return _oechem.OECalculateMolecularWeight(mol, isotopic)
class OECSVHeader(object):
    """Proxy of C++ OEChem::OECSVHeader 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__(OEChem::OECSVHeader self) -> OECSVHeader
        __init__(OEChem::OECSVHeader self, OECSVHeader rhs) -> OECSVHeader
        __init__(OEChem::OECSVHeader self, OEStringVector columnNames) -> OECSVHeader
        """
        this = _oechem.new_OECSVHeader(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OECSVHeader___nonzero__(self)



    def IsValid(self) -> "bool":
        """IsValid(OECSVHeader self) -> bool"""
        return _oechem.OECSVHeader_IsValid(self)


    def Clear(self) -> "void":
        """Clear(OECSVHeader self)"""
        return _oechem.OECSVHeader_Clear(self)


    def GetNumColumns(self) -> "unsigned int":
        """GetNumColumns(OECSVHeader self) -> unsigned int"""
        return _oechem.OECSVHeader_GetNumColumns(self)


    def GetColumnNames(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetColumnNames(OECSVHeader self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OECSVHeader_GetColumnNames(self)


    def GetColumnName(self, fieldIdx: 'unsigned int') -> "std::string const &":
        """GetColumnName(OECSVHeader self, unsigned int fieldIdx) -> std::string const &"""
        return _oechem.OECSVHeader_GetColumnName(self, fieldIdx)

    __swig_destroy__ = _oechem.delete_OECSVHeader
    __del__ = lambda self: None
OECSVHeader_swigregister = _oechem.OECSVHeader_swigregister
OECSVHeader_swigregister(OECSVHeader)


def OECreateCSVHeader(*args) -> "void":
    """
    OECreateCSVHeader(OECSVHeader header, OEMolBase mol)
    OECreateCSVHeader(OECSVHeader header, OEMCMolBase mol)
    """
    return _oechem.OECreateCSVHeader(*args)

def OEGetSubtree(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSubtree(OEBondBase arg1, OEUnaryAtomPred excludeAtoms, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEBondBase arg1, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEAtomBase bgn, OEAtomBase end, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEAtomBase bgn, OEAtomBase end) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSubtree(*args)

def OEGetSmallestSubtree(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSmallestSubtree(OEBondBase bond, OEUnaryAtomPred excludeAtoms, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase bond, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase arg1, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase arg1) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSmallestSubtree(*args)

def OEGetAutomorphs(arg1: 'OEMolBase', includeH: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
    """
    OEGetAutomorphs(OEMolBase arg1, bool includeH=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
    OEGetAutomorphs(OEMolBase arg1) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
    """
    return _oechem.OEGetAutomorphs(arg1, includeH)

def OEGetPathLength(arg1: 'OEAtomBase', arg2: 'OEAtomBase', maxPath: 'unsigned int'=0) -> "unsigned int":
    """
    OEGetPathLength(OEAtomBase arg1, OEAtomBase arg2, unsigned int maxPath=0) -> unsigned int
    OEGetPathLength(OEAtomBase arg1, OEAtomBase arg2) -> unsigned int
    """
    return _oechem.OEGetPathLength(arg1, arg2, maxPath)

def OEScrambleMolecule(arg1: 'OEMolBase') -> "bool":
    """OEScrambleMolecule(OEMolBase arg1) -> bool"""
    return _oechem.OEScrambleMolecule(arg1)

def OEDeleteEverythingExceptTheFirstLargestComponent(arg1: 'OEMolBase') -> "bool":
    """OEDeleteEverythingExceptTheFirstLargestComponent(OEMolBase arg1) -> bool"""
    return _oechem.OEDeleteEverythingExceptTheFirstLargestComponent(arg1)

def OETheFunctionFormerlyKnownAsStripSalts(mol: 'OEMolBase') -> "bool":
    """OETheFunctionFormerlyKnownAsStripSalts(OEMolBase mol) -> bool"""
    return _oechem.OETheFunctionFormerlyKnownAsStripSalts(mol)

def OEAcyclicPath(arg1: 'OEAtomBase', arg2: 'OEAtomBase') -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """OEAcyclicPath(OEAtomBase arg1, OEAtomBase arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
    return _oechem.OEAcyclicPath(arg1, arg2)

def OEShortestPath(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEShortestPath(OEAtomBase a, OEAtomBase b) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEShortestPath(OEAtomBase a, OEAtomBase b, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEShortestPath(OEAtomBase a, OEAtomBase b, OEUnaryBondPred excludeBonds) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEShortestPath(*args)

def OEMolToSmiles(mol: 'OEMolBase') -> "std::string":
    """OEMolToSmiles(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSmiles(mol)

def OESmilesToMol(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OESmilesToMol(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OESmilesToMol(mol, str)

def OEMolToInChI(mol: 'OEMolBase') -> "std::string":
    """OEMolToInChI(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToInChI(mol)

def OEMolToInChIKey(mol: 'OEMolBase') -> "std::string":
    """OEMolToInChIKey(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToInChIKey(mol)

def OEMolToSTDInChI(mol: 'OEMolBase') -> "std::string":
    """OEMolToSTDInChI(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSTDInChI(mol)

def OEMolToSTDInChIKey(mol: 'OEMolBase') -> "std::string":
    """OEMolToSTDInChIKey(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSTDInChIKey(mol)

def OEInChIToMol(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OEInChIToMol(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OEInChIToMol(mol, str)

def OEReadRxnFile(*args) -> "bool":
    """
    OEReadRxnFile(oemolistream ifs, OEMolBase mol, char const * id, bool query=False) -> bool
    OEReadRxnFile(oemolistream ifs, OEMolBase mol, char const * id) -> bool
    OEReadRxnFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadRxnFile(*args)

def OEReadMol2File(ifs: 'oemolistream', mol: 'OEMolBase', m2h: 'bool'=False) -> "bool":
    """
    OEReadMol2File(oemolistream ifs, OEMolBase mol, bool m2h=False) -> bool
    OEReadMol2File(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadMol2File(ifs, mol, m2h)

def OEWriteMol2File(ofs: 'oemolostream', mol: 'OEMolBase', m2h: 'bool'=True, substruct: 'bool'=False) -> "void":
    """
    OEWriteMol2File(oemolostream ofs, OEMolBase mol, bool m2h=True, bool substruct=False)
    OEWriteMol2File(oemolostream ofs, OEMolBase mol, bool m2h=True)
    OEWriteMol2File(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMol2File(ofs, mol, m2h, substruct)

def OEReadXYZFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadXYZFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadXYZFile(ifs, mol)

def OEWriteXYZFile(ofs: 'oemolostream', mol: 'OEMolBase', charges: 'bool'=True, symbols: 'bool'=True, doubleprecision: 'bool'=False) -> "void":
    """
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True, bool symbols=True, bool doubleprecision=False)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True, bool symbols=True)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteXYZFile(ofs, mol, charges, symbols, doubleprecision)

def OEAddCustomFASTAResidue(code: 'char const *', smiles: 'char const *') -> "bool":
    """OEAddCustomFASTAResidue(char const * code, char const * smiles) -> bool"""
    return _oechem.OEAddCustomFASTAResidue(code, smiles)

def OEReadFASTAFile(ifs: 'oemolistream', mol: 'OEMolBase', customResidues: 'bool'=False, embeddedSmiles: 'bool'=False) -> "bool":
    """
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol, bool customResidues=False, bool embeddedSmiles=False) -> bool
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol, bool customResidues=False) -> bool
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadFASTAFile(ifs, mol, customResidues, embeddedSmiles)

def OEWriteFASTAFile(ofs: 'oemolostream', mol: 'OEMolBase', ident: 'char const *') -> "void":
    """OEWriteFASTAFile(oemolostream ofs, OEMolBase mol, char const * ident)"""
    return _oechem.OEWriteFASTAFile(ofs, mol, ident)

def OEWriteCDXFile(ofs: 'oemolostream', mol: 'OEMolBase') -> "bool":
    """OEWriteCDXFile(oemolostream ofs, OEMolBase mol) -> bool"""
    return _oechem.OEWriteCDXFile(ofs, mol)

def OEReadMacroModelFile(*args) -> "bool":
    """
    OEReadMacroModelFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMacroModelFile(oemolistream ifs, OEMCMolBase mol) -> bool
    """
    return _oechem.OEReadMacroModelFile(*args)

def OEWriteMacroModelFile(*args) -> "void":
    """
    OEWriteMacroModelFile(oemolostream ofs, OEMolBase mol)
    OEWriteMacroModelFile(oemolostream ofs, OEMCMolBase mol)
    """
    return _oechem.OEWriteMacroModelFile(*args)

def OEReadSketchFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadSketchFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadSketchFile(ifs, mol)

def OEFastaToMol(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OEFastaToMol(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OEFastaToMol(mol, str)

def OEReadMDLQueryFile(*args) -> "bool":
    """
    OEReadMDLQueryFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMDLQueryFile(oemolistream ifs, OEQMolBase qmol, unsigned int opts) -> bool
    OEReadMDLQueryFile(oemolistream ifs, OEQMolBase qmol) -> bool
    """
    return _oechem.OEReadMDLQueryFile(*args)

def OEReadMDLReactionQueryFile(*args) -> "bool":
    """
    OEReadMDLReactionQueryFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMDLReactionQueryFile(oemolistream ifs, OEQMolBase qmol, unsigned int opts) -> bool
    OEReadMDLReactionQueryFile(oemolistream ifs, OEQMolBase qmol) -> bool
    """
    return _oechem.OEReadMDLReactionQueryFile(*args)

def OEBuildMDLQueryExpressions(*args) -> "bool":
    """
    OEBuildMDLQueryExpressions(OEQMolBase qmol, OEMolBase mol, unsigned int opts) -> bool
    OEBuildMDLQueryExpressions(OEQMolBase qmol, OEMolBase mol) -> bool
    """
    return _oechem.OEBuildMDLQueryExpressions(*args)

def OEIsBinary(format: 'unsigned int') -> "bool":
    """OEIsBinary(unsigned int format) -> bool"""
    return _oechem.OEIsBinary(format)

def OEIsGZip(arg1: 'char const *') -> "bool":
    """OEIsGZip(char const * arg1) -> bool"""
    return _oechem.OEIsGZip(arg1)

def OEIs2DFormat(format: 'unsigned int') -> "bool":
    """OEIs2DFormat(unsigned int format) -> bool"""
    return _oechem.OEIs2DFormat(format)

def OEIs3DFormat(format: 'unsigned int') -> "bool":
    """OEIs3DFormat(unsigned int format) -> bool"""
    return _oechem.OEIs3DFormat(format)

def OEIsSDDataFormat(format: 'unsigned int') -> "bool":
    """OEIsSDDataFormat(unsigned int format) -> bool"""
    return _oechem.OEIsSDDataFormat(format)

def OEGetFormatExtension(tag: 'unsigned int') -> "char const *":
    """OEGetFormatExtension(unsigned int tag) -> char const *"""
    return _oechem.OEGetFormatExtension(tag)

def OEGetFormatString(tag: 'unsigned int') -> "char const *":
    """OEGetFormatString(unsigned int tag) -> char const *"""
    return _oechem.OEGetFormatString(tag)

def OEGetDefaultIFlavor(format: 'unsigned int') -> "unsigned int":
    """OEGetDefaultIFlavor(unsigned int format) -> unsigned int"""
    return _oechem.OEGetDefaultIFlavor(format)

def OEGetDefaultOFlavor(format: 'unsigned int') -> "unsigned int":
    """OEGetDefaultOFlavor(unsigned int format) -> unsigned int"""
    return _oechem.OEGetDefaultOFlavor(format)

def OESetDefaultFlavors(*args) -> "bool":
    """
    OESetDefaultFlavors(oemolostream arg1) -> bool
    OESetDefaultFlavors(oemolistream arg1) -> bool
    """
    return _oechem.OESetDefaultFlavors(*args)

def OESetDefaultIFlavors(arg1: 'oemolstreambase') -> "bool":
    """OESetDefaultIFlavors(oemolstreambase arg1) -> bool"""
    return _oechem.OESetDefaultIFlavors(arg1)

def OESetDefaultOFlavors(arg1: 'oemolstreambase') -> "bool":
    """OESetDefaultOFlavors(oemolstreambase arg1) -> bool"""
    return _oechem.OESetDefaultOFlavors(arg1)

def OEIsReadable(*args) -> "bool":
    """
    OEIsReadable(unsigned int format) -> bool
    OEIsReadable(std::string const & filename) -> bool
    OEIsReadable(unsigned int format, unsigned int flavor) -> bool
    OEIsReadable(std::string const & filename, unsigned int flavor) -> bool
    """
    return _oechem.OEIsReadable(*args)

def OEIsWriteable(*args) -> "bool":
    """
    OEIsWriteable(unsigned int format) -> bool
    OEIsWriteable(std::string const & filename) -> bool
    OEIsWriteable(unsigned int format, unsigned int flavor) -> bool
    OEIsWriteable(std::string const & filename, unsigned int flavor) -> bool
    """
    return _oechem.OEIsWriteable(*args)

def OEIsSameFormat(iformat: 'unsigned int', iflavor: 'unsigned int', oformat: 'unsigned int', oflavor: 'unsigned int') -> "bool":
    """OEIsSameFormat(unsigned int iformat, unsigned int iflavor, unsigned int oformat, unsigned int oflavor) -> bool"""
    return _oechem.OEIsSameFormat(iformat, iflavor, oformat, oflavor)

def OEReadOEBFile(*args) -> "unsigned int":
    """
    OEReadOEBFile(oeistream ifs, OEMolBase mol, OEBinaryIOHandlerBase handler) -> unsigned int
    OEReadOEBFile(oeistream ifs, OEMCMolBase mol, OEBinaryIOHandlerBase handler) -> unsigned int
    """
    return _oechem.OEReadOEBFile(*args)

def OEReadMDLFile(*args) -> "bool":
    """
    OEReadMDLFile(oemolistream ifs, OEMolBase mol, char const * id) -> bool
    OEReadMDLFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadMDLFile(*args)

def OEWriteMDLFile(*args) -> "void":
    """
    OEWriteMDLFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteMDLFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMDLFile(*args)

def OEReadCSVHeader(*args) -> "bool":
    """
    OEReadCSVHeader(oemolistream ifs, OECSVHeader header, unsigned int flavor) -> bool
    OEReadCSVHeader(oemolistream ifs, OECSVHeader header) -> bool
    """
    return _oechem.OEReadCSVHeader(*args)

def OEWriteCSVHeader(*args) -> "void":
    """
    OEWriteCSVHeader(oemolostream ifs, OECSVHeader header, unsigned int flavor)
    OEWriteCSVHeader(oemolostream ifs, OECSVHeader header)
    """
    return _oechem.OEWriteCSVHeader(*args)

def OEReadCSVFile(*args) -> "bool":
    """
    OEReadCSVFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadCSVFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadCSVFile(*args)

def OEWriteCSVFile(*args) -> "void":
    """
    OEWriteCSVFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteCSVFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteCSVFile(*args)

def OEReadPDBFile(*args) -> "bool":
    """
    OEReadPDBFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadPDBFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadPDBFile(*args)

def OEWritePDBFile(*args) -> "void":
    """
    OEWritePDBFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWritePDBFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWritePDBFile(*args)

def OEReadMOPACFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadMOPACFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadMOPACFile(ifs, mol)

def OEWriteMOPACInputFile(*args) -> "void":
    """
    OEWriteMOPACInputFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteMOPACInputFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMOPACInputFile(*args)

def OEReadCDXFile(*args) -> "bool":
    """
    OEReadCDXFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadCDXFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadCDXFile(*args)

def OEReadCIFFile(ifs: 'oemolistream', mol: 'OEMolBase', flavor: 'unsigned int const') -> "bool":
    """OEReadCIFFile(oemolistream ifs, OEMolBase mol, unsigned int const flavor) -> bool"""
    return _oechem.OEReadCIFFile(ifs, mol, flavor)

def OEGetFileExtension(fname: 'char const *') -> "char const *":
    """OEGetFileExtension(char const * fname) -> char const *"""
    return _oechem.OEGetFileExtension(fname)

def OEIsExtension(fname: 'char const *') -> "bool":
    """OEIsExtension(char const * fname) -> bool"""
    return _oechem.OEIsExtension(fname)

def OEGetFileType(ext: 'char const *') -> "unsigned int":
    """OEGetFileType(char const * ext) -> unsigned int"""
    return _oechem.OEGetFileType(ext)

def OEWriteConstMolecule(*args) -> "unsigned int":
    """
    OEWriteConstMolecule(oemolostream ofs, OEMCMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEQMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEMol const & mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEQMol const & mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEGraphMol const & mol) -> unsigned int
    """
    return _oechem.OEWriteConstMolecule(*args)

def OEAssignHybridization(arg1: 'OEMolBase') -> "bool":
    """OEAssignHybridization(OEMolBase arg1) -> bool"""
    return _oechem.OEAssignHybridization(arg1)

def OEGetHybridization(arg1: 'OEAtomBase') -> "unsigned int":
    """OEGetHybridization(OEAtomBase arg1) -> unsigned int"""
    return _oechem.OEGetHybridization(arg1)

def OEHasExplicitHydrogens(mol: 'OEMolBase') -> "bool":
    """OEHasExplicitHydrogens(OEMolBase mol) -> bool"""
    return _oechem.OEHasExplicitHydrogens(mol)

def OEHasImplicitHydrogens(mol: 'OEMolBase') -> "bool":
    """OEHasImplicitHydrogens(OEMolBase mol) -> bool"""
    return _oechem.OEHasImplicitHydrogens(mol)

def OEDefaultImplicitHCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDefaultImplicitHCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDefaultImplicitHCount(atm)

def OEAssignImplicitHydrogens(*args) -> "bool":
    """
    OEAssignImplicitHydrogens(OEAtomBase atm) -> bool
    OEAssignImplicitHydrogens(OEMolBase mol) -> bool
    """
    return _oechem.OEAssignImplicitHydrogens(*args)

def OEDefaultMDLHCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDefaultMDLHCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDefaultMDLHCount(atm)

def OEAssignMDLHydrogens(*args) -> "bool":
    """
    OEAssignMDLHydrogens(OEAtomBase atm) -> bool
    OEAssignMDLHydrogens(OEMolBase mol) -> bool
    """
    return _oechem.OEAssignMDLHydrogens(*args)

def OEAddExplicitHydrogens(*args) -> "bool":
    """
    OEAddExplicitHydrogens(OEMolBase mol, OEAtomBase atm) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol) -> bool
    OEAddExplicitHydrogens(OEMolBase mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEMolBase mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEMolBase mol) -> bool
    """
    return _oechem.OEAddExplicitHydrogens(*args)

def OESuppressHydrogens(*args) -> "bool":
    """
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False, bool retainStereo=False) -> bool
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False) -> bool
    OESuppressHydrogens(OEMolBase mol) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False, bool retainStereo=False) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False) -> bool
    OESuppressHydrogens(OEAtomBase atm) -> bool
    """
    return _oechem.OESuppressHydrogens(*args)

def OEHasStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasStereoHydrogens(atm)

def OEHasAtomStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasAtomStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasAtomStereoHydrogens(atm)

def OEHasBondStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasBondStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasBondStereoHydrogens(atm)

def OESet3DHydrogenGeom(*args) -> "bool":
    """
    OESet3DHydrogenGeom(OEMolBase mol) -> bool
    OESet3DHydrogenGeom(OEMolBase mol, OEAtomBase hatom) -> bool
    """
    return _oechem.OESet3DHydrogenGeom(*args)

def OESet2DHydrogenGeom(mol: 'OEMolBase') -> "bool":
    """OESet2DHydrogenGeom(OEMolBase mol) -> bool"""
    return _oechem.OESet2DHydrogenGeom(mol)

def OECorrectAcidProtonGeometry(*args) -> "bool":
    """
    OECorrectAcidProtonGeometry(OEMolBase mol) -> bool
    OECorrectAcidProtonGeometry(OEMolBase mol, OEAtomBase atom) -> bool
    """
    return _oechem.OECorrectAcidProtonGeometry(*args)

def OEKekulize(arg1: 'OEMolBase') -> "bool":
    """OEKekulize(OEMolBase arg1) -> bool"""
    return _oechem.OEKekulize(arg1)
class OEMCSFunc(object):
    """Proxy of C++ OEChem::OEMCSFunc 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__ = _oechem.delete_OEMCSFunc
    __del__ = lambda self: None

    def __call__(self, pattern: 'OEMolBase', target: 'OEMolBase', amap: 'OEChem::OEAtomBase **', bmap: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSFunc self, OEMolBase pattern, OEMolBase target, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> double"""
        return _oechem.OEMCSFunc___call__(self, pattern, target, amap, bmap)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSFunc self) -> OEMCSFunc"""
        return _oechem.OEMCSFunc_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEMCSFunc self) -> OEMCSFunc"""
        if self.__class__ == OEMCSFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEMCSFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEMCSFunc(self)
        return weakref_proxy(self)
OEMCSFunc_swigregister = _oechem.OEMCSFunc_swigregister
OEMCSFunc_swigregister(OEMCSFunc)

class OEMCSMaxAtoms(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxAtoms class."""

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

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxAtoms self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxAtoms___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxAtoms self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxAtoms_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEMCSMaxAtoms self) -> OEMCSMaxAtoms"""
        this = _oechem.new_OEMCSMaxAtoms()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSMaxAtoms
    __del__ = lambda self: None
OEMCSMaxAtoms_swigregister = _oechem.OEMCSMaxAtoms_swigregister
OEMCSMaxAtoms_swigregister(OEMCSMaxAtoms)

class OEMCSMaxBonds(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxBonds class."""

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

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxBonds self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxBonds___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxBonds self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxBonds_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEMCSMaxBonds self) -> OEMCSMaxBonds"""
        this = _oechem.new_OEMCSMaxBonds()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSMaxBonds
    __del__ = lambda self: None
OEMCSMaxBonds_swigregister = _oechem.OEMCSMaxBonds_swigregister
OEMCSMaxBonds_swigregister(OEMCSMaxBonds)

class OEMCSMaxAtomsCompleteCycles(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxAtomsCompleteCycles 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, a: 'double'=1.0):
        """
        __init__(OEChem::OEMCSMaxAtomsCompleteCycles self, double a=1.0) -> OEMCSMaxAtomsCompleteCycles
        __init__(OEChem::OEMCSMaxAtomsCompleteCycles self) -> OEMCSMaxAtomsCompleteCycles
        """
        this = _oechem.new_OEMCSMaxAtomsCompleteCycles(a)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxAtomsCompleteCycles self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxAtomsCompleteCycles___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxAtomsCompleteCycles self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxAtomsCompleteCycles_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMCSMaxAtomsCompleteCycles
    __del__ = lambda self: None
OEMCSMaxAtomsCompleteCycles_swigregister = _oechem.OEMCSMaxAtomsCompleteCycles_swigregister
OEMCSMaxAtomsCompleteCycles_swigregister(OEMCSMaxAtomsCompleteCycles)

class OEMCSMaxBondsCompleteCycles(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxBondsCompleteCycles 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, a: 'double'=1.0):
        """
        __init__(OEChem::OEMCSMaxBondsCompleteCycles self, double a=1.0) -> OEMCSMaxBondsCompleteCycles
        __init__(OEChem::OEMCSMaxBondsCompleteCycles self) -> OEMCSMaxBondsCompleteCycles
        """
        this = _oechem.new_OEMCSMaxBondsCompleteCycles(a)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxBondsCompleteCycles self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxBondsCompleteCycles___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxBondsCompleteCycles self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxBondsCompleteCycles_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMCSMaxBondsCompleteCycles
    __del__ = lambda self: None
OEMCSMaxBondsCompleteCycles_swigregister = _oechem.OEMCSMaxBondsCompleteCycles_swigregister
OEMCSMaxBondsCompleteCycles_swigregister(OEMCSMaxBondsCompleteCycles)

class OEMCSSearch(object):
    """Proxy of C++ OEChem::OEMCSSearch 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__(OEChem::OEMCSSearch self, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, char const * arg2, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, char const * arg2) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMCSSearch arg2) -> OEMCSSearch
        """
        this = _oechem.new_OEMCSSearch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEMCSSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OEMCSSearch self, char const * arg2) -> bool
        Init(OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True) -> bool
        Init(OEMCSSearch self, OEQMolBase arg2) -> bool
        Init(OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> bool
        """
        return _oechem.OEMCSSearch_Init(self, *args)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OEMCSSearch self, OEMolBase arg2) -> bool
        SingleMatch(OEMCSSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OEMCSSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OEMCSSearch self, OEMolBase arg2, bool umatch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEQMolBase arg2, bool umatch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OEMCSSearch_Match(self, *args)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OEMCSSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OEMCSSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OEMCSSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OEMCSSearch self)"""
        return _oechem.OEMCSSearch_ClearConstraints(self)


    def SetMinAtoms(self, arg2: 'unsigned int') -> "bool":
        """SetMinAtoms(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMinAtoms(self, arg2)


    def SetMaxMatches(self, arg2: 'unsigned int') -> "bool":
        """SetMaxMatches(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMaxMatches(self, arg2)


    def SetSaveRange(self, arg2: 'unsigned int') -> "bool":
        """SetSaveRange(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetSaveRange(self, arg2)


    def GetMinAtoms(self) -> "unsigned int":
        """GetMinAtoms(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetMinAtoms(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetMaxMatches(self)


    def GetSaveRange(self) -> "unsigned int":
        """GetSaveRange(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetSaveRange(self)


    def SetMCSFunc(self, arg2: 'OEMCSFunc') -> "bool":
        """SetMCSFunc(OEMCSSearch self, OEMCSFunc arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMCSFunc(self, arg2)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OEMCSSearch self) -> OEQMolBase"""
        return _oechem.OEMCSSearch_GetPattern(self)

OEMCSSearch_swigregister = _oechem.OEMCSSearch_swigregister
OEMCSSearch_swigregister(OEMCSSearch)


def OEGetMCSExhaustiveSearchTruncationLimit() -> "unsigned int":
    """OEGetMCSExhaustiveSearchTruncationLimit() -> unsigned int"""
    return _oechem.OEGetMCSExhaustiveSearchTruncationLimit()

def OESetMCSExhaustiveSearchTruncationLimit(limit: 'unsigned int') -> "void":
    """OESetMCSExhaustiveSearchTruncationLimit(unsigned int limit)"""
    return _oechem.OESetMCSExhaustiveSearchTruncationLimit(limit)
class OECliqueSearch(object):
    """Proxy of C++ OEChem::OECliqueSearch 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__(OEChem::OECliqueSearch self, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, char const * arg2, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, char const * arg2) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OECliqueSearch arg2) -> OECliqueSearch
        """
        this = _oechem.new_OECliqueSearch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OECliqueSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OECliqueSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OECliqueSearch self, char const * arg2) -> bool
        Init(OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True) -> bool
        Init(OECliqueSearch self, OEQMolBase arg2) -> bool
        Init(OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> bool
        """
        return _oechem.OECliqueSearch_Init(self, *args)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OECliqueSearch self, OEMolBase arg2) -> bool
        SingleMatch(OECliqueSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OECliqueSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OECliqueSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OECliqueSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OECliqueSearch_Match(self, *args)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OECliqueSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OECliqueSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OECliqueSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OECliqueSearch self)"""
        return _oechem.OECliqueSearch_ClearConstraints(self)


    def SetMinAtoms(self, arg2: 'unsigned int') -> "bool":
        """SetMinAtoms(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMinAtoms(self, arg2)


    def SetMaxMatches(self, arg2: 'unsigned int') -> "bool":
        """SetMaxMatches(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMaxMatches(self, arg2)


    def SetSaveRange(self, arg2: 'unsigned int') -> "bool":
        """SetSaveRange(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetSaveRange(self, arg2)


    def GetMinAtoms(self) -> "unsigned int":
        """GetMinAtoms(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetMinAtoms(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetMaxMatches(self)


    def GetSaveRange(self) -> "unsigned int":
        """GetSaveRange(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetSaveRange(self)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OECliqueSearch self) -> OEQMolBase"""
        return _oechem.OECliqueSearch_GetPattern(self)


    def SetMCSFunc(self, arg2: 'OEMCSFunc') -> "bool":
        """SetMCSFunc(OECliqueSearch self, OEMCSFunc arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMCSFunc(self, arg2)

OECliqueSearch_swigregister = _oechem.OECliqueSearch_swigregister
OECliqueSearch_swigregister(OECliqueSearch)


def OEMDLPerceiveParity(mol: 'OEMolBase') -> "void":
    """OEMDLPerceiveParity(OEMolBase mol)"""
    return _oechem.OEMDLPerceiveParity(mol)

def OEMDLStereoFromParity(mol: 'OEMolBase') -> "void":
    """OEMDLStereoFromParity(OEMolBase mol)"""
    return _oechem.OEMDLStereoFromParity(mol)

def OEMDLHasParity(*args) -> "bool":
    """
    OEMDLHasParity(OEMolBase mol) -> bool
    OEMDLHasParity(OEMCMolBase mcmol) -> bool
    """
    return _oechem.OEMDLHasParity(*args)

def OEMDLGetParity(*args) -> "bool":
    """
    OEMDLGetParity(OEMolBase mol) -> bool
    OEMDLGetParity(OEMCMolBase mcmol) -> bool
    """
    return _oechem.OEMDLGetParity(*args)

def OEMDLSetParity(*args) -> "bool":
    """
    OEMDLSetParity(OEMolBase mol, bool value) -> bool
    OEMDLSetParity(OEMCMolBase mcmol, bool value) -> bool
    """
    return _oechem.OEMDLSetParity(*args)

def OEMDLClearParity(*args) -> "void":
    """
    OEMDLClearParity(OEMolBase mol)
    OEMDLClearParity(OEMCMolBase mcmol)
    """
    return _oechem.OEMDLClearParity(*args)

def OEAtomSetMDLParity(atm: 'OEAtomBase', arg2: 'unsigned int') -> "bool":
    """OEAtomSetMDLParity(OEAtomBase atm, unsigned int arg2) -> bool"""
    return _oechem.OEAtomSetMDLParity(atm, arg2)

def OEAtomGetMDLParity(atm: 'OEAtomBase') -> "unsigned int":
    """OEAtomGetMDLParity(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEAtomGetMDLParity(atm)

def OEMDLCorrectBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLCorrectBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLCorrectBondStereo(mol)

def OEMDLHasIncorrectBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLHasIncorrectBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLHasIncorrectBondStereo(mol)

def OEMDLClearBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLClearBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLClearBondStereo(mol)

def OEMDLPerceiveBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLPerceiveBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLPerceiveBondStereo(mol)

def OEMDLStereoFromBondStereo(mol: 'OEMolBase', bAllowMarkCorrections: 'bool'=False) -> "bool":
    """
    OEMDLStereoFromBondStereo(OEMolBase mol, bool bAllowMarkCorrections=False) -> bool
    OEMDLStereoFromBondStereo(OEMolBase mol) -> bool
    """
    return _oechem.OEMDLStereoFromBondStereo(mol, bAllowMarkCorrections)

def OEMDLGetValence(elemno: 'unsigned int', charge: 'int', minval: 'unsigned int') -> "unsigned int":
    """OEMDLGetValence(unsigned int elemno, int charge, unsigned int minval) -> unsigned int"""
    return _oechem.OEMDLGetValence(elemno, charge, minval)

def OEMacroModelAtomTypes(mol: 'OEMolBase') -> "bool":
    """OEMacroModelAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelAtomTypes(mol)

def OEMacroModelAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMacroModelAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelAtomTypeNames(mol)

def OEMacroModelTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMacroModelTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelTypeNames(mol)

def OEMacroModelTypeName(type: 'unsigned int') -> "char const *":
    """OEMacroModelTypeName(unsigned int type) -> char const *"""
    return _oechem.OEMacroModelTypeName(type)

def OEMacroModelTypeElement(type: 'unsigned int') -> "unsigned int":
    """OEMacroModelTypeElement(unsigned int type) -> unsigned int"""
    return _oechem.OEMacroModelTypeElement(type)

def OEIsForceFieldDummyAtom(atom: 'OEAtomBase') -> "bool":
    """OEIsForceFieldDummyAtom(OEAtomBase atom) -> bool"""
    return _oechem.OEIsForceFieldDummyAtom(atom)

def OESetForceFieldDummyAtom(atom: 'OEAtomBase') -> "void":
    """OESetForceFieldDummyAtom(OEAtomBase atom)"""
    return _oechem.OESetForceFieldDummyAtom(atom)

def OEClearForceFieldDummyAtom(atom: 'OEAtomBase') -> "void":
    """OEClearForceFieldDummyAtom(OEAtomBase atom)"""
    return _oechem.OEClearForceFieldDummyAtom(atom)

def OEClearForceFieldDummyAtoms(mol: 'OEMolBase') -> "void":
    """OEClearForceFieldDummyAtoms(OEMolBase mol)"""
    return _oechem.OEClearForceFieldDummyAtoms(mol)
class OEMMFFTypeResult(object):
    """Proxy of C++ OEChem::OEMMFFTypeResult 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__(OEChem::OEMMFFTypeResult self, unsigned int type, bool failed) -> OEMMFFTypeResult
        __init__(OEChem::OEMMFFTypeResult self, OEMMFFTypeResult rhs) -> OEMMFFTypeResult
        """
        this = _oechem.new_OEMMFFTypeResult(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetMMFFType(self) -> "unsigned int":
        """GetMMFFType(OEMMFFTypeResult self) -> unsigned int"""
        return _oechem.OEMMFFTypeResult_GetMMFFType(self)


    def GetFailed(self) -> "bool":
        """GetFailed(OEMMFFTypeResult self) -> bool"""
        return _oechem.OEMMFFTypeResult_GetFailed(self)

    _type = _swig_property(_oechem.OEMMFFTypeResult__type_get, _oechem.OEMMFFTypeResult__type_set)
    _failed = _swig_property(_oechem.OEMMFFTypeResult__failed_get, _oechem.OEMMFFTypeResult__failed_set)
    __swig_destroy__ = _oechem.delete_OEMMFFTypeResult
    __del__ = lambda self: None
OEMMFFTypeResult_swigregister = _oechem.OEMMFFTypeResult_swigregister
OEMMFFTypeResult_swigregister(OEMMFFTypeResult)


def OEMMFFAtomType(atm: 'OEAtomBase') -> "OEChem::OEMMFFTypeResult":
    """OEMMFFAtomType(OEAtomBase atm) -> OEMMFFTypeResult"""
    return _oechem.OEMMFFAtomType(atm)

def OEMMFFAtomTypes(mol: 'OEMolBase') -> "bool":
    """OEMMFFAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFAtomTypes(mol)

def OEMMFFAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMMFFAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFAtomTypeNames(mol)

def OEMMFFTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMMFFTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFTypeNames(mol)

def OEMMFFTypeName(type: 'unsigned int') -> "char const *":
    """OEMMFFTypeName(unsigned int type) -> char const *"""
    return _oechem.OEMMFFTypeName(type)

def OEMMFFTypeIndex(type: 'unsigned int') -> "unsigned int":
    """OEMMFFTypeIndex(unsigned int type) -> unsigned int"""
    return _oechem.OEMMFFTypeIndex(type)

def OEMMFFRemapElement(from_element: 'unsigned int', to_element: 'unsigned int') -> "void":
    """OEMMFFRemapElement(unsigned int from_element, unsigned int to_element)"""
    return _oechem.OEMMFFRemapElement(from_element, to_element)

def OEMMFFClearRemappedElements() -> "void":
    """OEMMFFClearRemappedElements()"""
    return _oechem.OEMMFFClearRemappedElements()

def OEMMFF94InitialCharges(mol: 'OEMolBase') -> "bool":
    """OEMMFF94InitialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEMMFF94InitialCharges(mol)

def OEMMFF94PartialCharges(mol: 'OEMolBase') -> "bool":
    """OEMMFF94PartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEMMFF94PartialCharges(mol)

def OEUncolorMol(*args) -> "bool":
    """
    OEUncolorMol(OEMolBase uncoloredcmol, OEMolBase mol, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMolBase uncoloredcmol, OEMolBase mol) -> bool
    OEUncolorMol(OEMolBase moltouncolor, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMolBase moltouncolor) -> bool
    OEUncolorMol(OEMCMolBase uncoloredcmol, OEMCMolBase mol, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMCMolBase uncoloredcmol, OEMCMolBase mol) -> bool
    OEUncolorMol(OEMCMolBase moltouncolor, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMCMolBase moltouncolor) -> bool
    """
    return _oechem.OEUncolorMol(*args)

def OEGetPackedCoords(*args) -> "void":
    """
    OEGetPackedCoords(OEMolBase mol, float * coords)
    OEGetPackedCoords(OEMolBase mol, double * coords)
    """
    return _oechem.OEGetPackedCoords(*args)

def OESetPackedCoords(*args) -> "void":
    """
    OESetPackedCoords(OEMolBase mol, float const * coords)
    OESetPackedCoords(OEMolBase mol, double const * coords)
    """
    return _oechem.OESetPackedCoords(*args)

def OEGetDistance(*args) -> "double":
    """
    OEGetDistance(OEMolBase arg1, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b) -> double
    OEGetDistance(OEConfBase conf, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b) -> double
    """
    return _oechem.OEGetDistance(*args)

def OEGetDistance2(*args) -> "double":
    """
    OEGetDistance2(OEMolBase arg1, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance2(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b) -> double
    OEGetDistance2(OEConfBase conf, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance2(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b) -> double
    """
    return _oechem.OEGetDistance2(*args)

def OEGetAngle(*args) -> "double":
    """
    OEGetAngle(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c) -> double
    OEGetAngle(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b, OEMolBase mc, OEAtomBase c) -> double
    OEGetAngle(OEConfBase conf, OEAtomBase a, OEAtomBase b, OEAtomBase c) -> double
    OEGetAngle(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b, OEConfBase cc, OEAtomBase c) -> double
    """
    return _oechem.OEGetAngle(*args)

def OEGetAbsTorsion(*args) -> "double":
    """
    OEGetAbsTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetAbsTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    """
    return _oechem.OEGetAbsTorsion(*args)

def OESetDistance(mol: 'OEMolBase', a: 'OEAtomBase', b: 'OEAtomBase', dist: 'double') -> "bool":
    """OESetDistance(OEMolBase mol, OEAtomBase a, OEAtomBase b, double dist) -> bool"""
    return _oechem.OESetDistance(mol, a, b, dist)

def OESetAngle(mol: 'OEMolBase', a: 'OEAtomBase', b: 'OEAtomBase', c: 'OEAtomBase', ang: 'double', axis: 'double *'=None) -> "bool":
    """
    OESetAngle(OEMolBase mol, OEAtomBase a, OEAtomBase b, OEAtomBase c, double ang, double * axis=None) -> bool
    OESetAngle(OEMolBase mol, OEAtomBase a, OEAtomBase b, OEAtomBase c, double ang) -> bool
    """
    return _oechem.OESetAngle(mol, a, b, c, ang, axis)

def OETranslate(*args) -> "void":
    """
    OETranslate(OEMolBase mol, double const * v)
    OETranslate(OEMolBase mol, float const * v)
    OETranslate(OEConfBase conf, double const * v)
    OETranslate(OEConfBase conf, float const * v)
    OETranslate(OEMCMolBase mcmol, double const * v)
    OETranslate(OEMCMolBase mcmol, float const * v)
    """
    return _oechem.OETranslate(*args)

def OERotate(*args) -> "void":
    """
    OERotate(OEMolBase mol, double const * m)
    OERotate(OEMolBase mol, float const * m)
    OERotate(OEConfBase conf, double const * m)
    OERotate(OEConfBase conf, float const * m)
    OERotate(OEMCMolBase mcmol, double const * m)
    OERotate(OEMCMolBase mcmol, float const * m)
    """
    return _oechem.OERotate(*args)

def OEEulerRotate(*args) -> "void":
    """
    OEEulerRotate(OEMolBase mol, double const * angles)
    OEEulerRotate(OEConfBase conf, double const * angles)
    OEEulerRotate(OEMCMolBase mcmol, double const * angles)
    """
    return _oechem.OEEulerRotate(*args)

def OECenter(*args) -> "void":
    """
    OECenter(OEMolBase arg1, double * t=None)
    OECenter(OEMolBase arg1)
    OECenter(OEConfBase conf, double * t=None)
    OECenter(OEConfBase conf)
    OECenter(OEMCMolBase mcmol, double * t=None)
    OECenter(OEMCMolBase mcmol)
    """
    return _oechem.OECenter(*args)

def OEGetCenterOfMass(mol: 'OEMolBase', com: 'float *', weightAtoms: 'bool'=False) -> "void":
    """
    OEGetCenterOfMass(OEMolBase mol, float * com, bool weightAtoms=False)
    OEGetCenterOfMass(OEMolBase mol, float * com)
    """
    return _oechem.OEGetCenterOfMass(mol, com, weightAtoms)

def OEWeightedRMSD(*args) -> "double":
    """
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match) -> double
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match) -> bool
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size) -> double
    """
    return _oechem.OEWeightedRMSD(*args)

def OESymmetryNumber(*args) -> "bool":
    """
    OESymmetryNumber(OEMolBase mol, bool useH=True, double threshold=0.05) -> unsigned int
    OESymmetryNumber(OEMolBase mol, bool useH=True) -> unsigned int
    OESymmetryNumber(OEMolBase mol) -> unsigned int
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray, bool useH=True, double threshold=0.05) -> bool
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray, bool useH=True) -> bool
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray) -> bool
    """
    return _oechem.OESymmetryNumber(*args)
class OETorsion(object):
    """Proxy of C++ OEChem::OETorsion class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    a = _swig_property(_oechem.OETorsion_a_get, _oechem.OETorsion_a_set)
    b = _swig_property(_oechem.OETorsion_b_get, _oechem.OETorsion_b_set)
    c = _swig_property(_oechem.OETorsion_c_get, _oechem.OETorsion_c_set)
    d = _swig_property(_oechem.OETorsion_d_get, _oechem.OETorsion_d_set)
    radians = _swig_property(_oechem.OETorsion_radians_get, _oechem.OETorsion_radians_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OETorsion self) -> OETorsion
        __init__(OEChem::OETorsion self, OEAtomBase a1, OEAtomBase a2, OEAtomBase a3, OEAtomBase a4, double rads) -> OETorsion
        """
        this = _oechem.new_OETorsion(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETorsion
    __del__ = lambda self: None
OETorsion_swigregister = _oechem.OETorsion_swigregister
OETorsion_swigregister(OETorsion)


def OEGetTorsions(*args) -> "OESystem::OEIterBase< OEChem::OETorsion > *":
    """
    OEGetTorsions(OEMolBase arg1, OEUnaryBondPred isRotor) -> OESystem::OEIterBase< OEChem::OETorsion >
    OEGetTorsions(OEMolBase arg1) -> OESystem::OEIterBase< OEChem::OETorsion > *
    """
    return _oechem.OEGetTorsions(*args)

def OERandomizeTorsions(*args) -> "bool":
    """
    OERandomizeTorsions(OEMolBase arg1, double maxRadians) -> bool
    OERandomizeTorsions(OEMolBase arg1, double maxRadians, OEUnaryBondPred isRotor) -> bool
    """
    return _oechem.OERandomizeTorsions(*args)

def OEInvertCenter(*args) -> "bool":
    """
    OEInvertCenter(OEMolBase mol, OEAtomBase atom) -> bool
    OEInvertCenter(OEMolBase mol, OEAtomBase atom, OEAtomBase ref1, OEAtomBase ref2) -> bool
    """
    return _oechem.OEInvertCenter(*args)
class OETorsionIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OETorsion)> 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<(OEChem::OETorsion)> self) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OETorsionIter rhs) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OESystem::OEIterBase< OEChem::OETorsion > * rhs) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OETorsion >::NonConstA > * rhs) -> OETorsionIter
        """
        this = _oechem.new_OETorsionIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETorsionIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OETorsion > *":
        """Copy(OETorsionIter self) -> OESystem::OEIterBase< OEChem::OETorsion > *"""
        return _oechem.OETorsionIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OETorsionIter self, OESystem::OEIterBase< OEChem::OETorsion > * ib)
        Push(OETorsionIter self, OETorsionIter iter)
        """
        return _oechem.OETorsionIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OETorsion,OEChem::OETorsion > const &') -> "void":
        """Sort(OETorsionIter self, OESystem::OEBinaryPredicate< OEChem::OETorsion,OEChem::OETorsion > const & sort_criterion)"""
        return _oechem.OETorsionIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """ToFirst(OETorsionIter self) -> OETorsionIter"""
        return _oechem.OETorsionIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """ToLast(OETorsionIter self) -> OETorsionIter"""
        return _oechem.OETorsionIter_ToLast(self)


    def __ref__(self) -> "OEChem::OETorsion &":
        """__ref__(OETorsionIter self) -> OETorsion"""
        return _oechem.OETorsionIter___ref__(self)


    def IsValid(self):
      return _oechem.OETorsionIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OETorsionIter self) -> PyObject *"""
        return _oechem.OETorsionIter_next(self)


    def Target(self) -> "OEChem::OETorsion &":
        """Target(OETorsionIter self) -> OETorsion"""
        return _oechem.OETorsionIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """
        Next(OETorsionIter self) -> OETorsionIter
        Next(OETorsionIter self, int i) -> OETorsionIter
        """
        return _oechem.OETorsionIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """
        Prev(OETorsionIter self) -> OETorsionIter
        Prev(OETorsionIter self, int i) -> OETorsionIter
        """
        return _oechem.OETorsionIter_Prev(self, *args)

OETorsionIter_swigregister = _oechem.OETorsionIter_swigregister
OETorsionIter_swigregister(OETorsionIter)

class oemolstreambase(object):
    """Proxy of C++ OEChem::oemolstreambase 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__ = _oechem.delete_oemolstreambase
    __del__ = lambda self: None

    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolstreambase self, unsigned int format) -> bool"""
        return _oechem.oemolstreambase_SetFormat(self, format)


    def GetFormat(self) -> "unsigned int":
        """GetFormat(oemolstreambase self) -> unsigned int"""
        return _oechem.oemolstreambase_GetFormat(self)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolstreambase self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolstreambase_SetFlavor(self, format, flavor)


    def GetFlavor(self, format: 'unsigned int') -> "unsigned int":
        """GetFlavor(oemolstreambase self, unsigned int format) -> unsigned int"""
        return _oechem.oemolstreambase_GetFlavor(self, format)


    def HasBinaryIOHandler(self) -> "bool":
        """HasBinaryIOHandler(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_HasBinaryIOHandler(self)


    def GetBinaryIOHandler(self) -> "OESystem::OEBinaryIOHandlerBase &":
        """GetBinaryIOHandler(oemolstreambase self) -> OEBinaryIOHandlerBase"""
        return _oechem.oemolstreambase_GetBinaryIOHandler(self)


    def InitializeBinaryIOHandler(self) -> "bool":
        """InitializeBinaryIOHandler(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_InitializeBinaryIOHandler(self)


    def GetCSVHeader(self) -> "OEChem::OECSVHeader &":
        """GetCSVHeader(oemolstreambase self) -> OECSVHeader"""
        return _oechem.oemolstreambase_GetCSVHeader(self)


    def ClearCSVHeader(self) -> "void":
        """ClearCSVHeader(oemolstreambase self)"""
        return _oechem.oemolstreambase_ClearCSVHeader(self)


    def Getgz(self) -> "bool":
        """Getgz(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_Getgz(self)


    def open(self, *args) -> "bool":
        """
        open(oemolstreambase self, char const * name) -> bool
        open(oemolstreambase self) -> bool
        """
        return _oechem.oemolstreambase_open(self, *args)


    def GetFileName(self) -> "std::string const &":
        """GetFileName(oemolstreambase self) -> std::string const &"""
        return _oechem.oemolstreambase_GetFileName(self)


    def close(self) -> "void":
        """close(oemolstreambase self)"""
        return _oechem.oemolstreambase_close(self)

oemolstreambase_swigregister = _oechem.oemolstreambase_swigregister
oemolstreambase_swigregister(oemolstreambase)

class oemolistream(oemolstreambase):
    """Proxy of C++ OEChem::oemolistream 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__(OEChem::oemolistream self) -> oemolistream
        __init__(OEChem::oemolistream self, char const * arg2) -> oemolistream
        __init__(OEChem::oemolistream self, std::string const & fn) -> oemolistream
        __init__(OEChem::oemolistream self, oeistream arg2, bool owned=True) -> oemolistream
        __init__(OEChem::oemolistream self, oeistream arg2) -> oemolistream
        """
        this = _oechem.new_oemolistream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolistream
    __del__ = lambda self: None

    def oeistreamref(self) -> "OEPlatform::oeistream &":
        """oeistreamref(oemolistream self) -> oeistream"""
        return _oechem.oemolistream_oeistreamref(self)


    def GetFileStream(self) -> "OEPlatform::oeifstream *":
        """GetFileStream(oemolistream self) -> oeifstream"""
        return _oechem.oemolistream_GetFileStream(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolistream self, unsigned int format) -> bool"""
        return _oechem.oemolistream_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolistream self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolistream_SetFlavor(self, format, flavor)


    def Setgz(self, gz: 'bool', sptr: 'oeistream'=None, owned: 'bool'=False) -> "bool":
        """
        Setgz(oemolistream self, bool gz, oeistream sptr=None, bool owned=False) -> bool
        Setgz(oemolistream self, bool gz, oeistream sptr=None) -> bool
        Setgz(oemolistream self, bool gz) -> bool
        """
        return _oechem.oemolistream_Setgz(self, gz, sptr, owned)


    def close(self) -> "void":
        """close(oemolistream self)"""
        return _oechem.oemolistream_close(self)


    def getbyte(self) -> "int":
        """getbyte(oemolistream self) -> int"""
        return _oechem.oemolistream_getbyte(self)


    def skipbyte(self) -> "bool":
        """skipbyte(oemolistream self) -> bool"""
        return _oechem.oemolistream_skipbyte(self)


    def peekbyte(self) -> "int":
        """peekbyte(oemolistream self) -> int"""
        return _oechem.oemolistream_peekbyte(self)


    def skip(self, len: 'oefpos_t') -> "bool":
        """skip(oemolistream self, oefpos_t len) -> bool"""
        return _oechem.oemolistream_skip(self, len)


    def skipline(self) -> "bool":
        """skipline(oemolistream self) -> bool"""
        return _oechem.oemolistream_skipline(self)


    def seek(self, pos: 'oefpos_t') -> "void":
        """seek(oemolistream self, oefpos_t pos)"""
        return _oechem.oemolistream_seek(self, pos)


    def rewind(self) -> "void":
        """rewind(oemolistream self)"""
        return _oechem.oemolistream_rewind(self)


    def size(self) -> "oefpos_t":
        """size(oemolistream self) -> oefpos_t"""
        return _oechem.oemolistream_size(self)


    def tell(self) -> "oefpos_t":
        """tell(oemolistream self) -> oefpos_t"""
        return _oechem.oemolistream_tell(self)


    def eof(self) -> "bool":
        """eof(oemolistream self) -> bool"""
        return _oechem.oemolistream_eof(self)


    def IsValid(self):
      return _oechem.oemolistream___nonzero__(self)



    def getline(self, *args) -> "bool":
        """
        getline(oemolistream self, char * buffer, oesize_t max) -> bool
        getline(oemolistream self, std::string & buffer) -> bool
        """
        return _oechem.oemolistream_getline(self, *args)


    def read(self, buffer: 'unsigned char *', len: 'oesize_t') -> "bool":
        """read(oemolistream self, unsigned char * buffer, oesize_t len) -> bool"""
        return _oechem.oemolistream_read(self, buffer, len)


    def SetConfTest(self, arg2: 'OEConfTestBase') -> "bool":
        """SetConfTest(oemolistream self, OEConfTestBase arg2) -> bool"""
        return _oechem.oemolistream_SetConfTest(self, arg2)


    def GetConfTest(self, *args) -> "OEChem::OEConfTestBase const &":
        """
        GetConfTest(oemolistream self) -> OEConfTestBase
        GetConfTest(oemolistream self) -> OEConfTestBase
        """
        return _oechem.oemolistream_GetConfTest(self, *args)


    def PeekNextMol(self) -> "OEChem::OEMolBase *":
        """PeekNextMol(oemolistream self) -> OEMolBase"""
        return _oechem.oemolistream_PeekNextMol(self)


    def GetNextMol(self) -> "OEChem::OEMolBase *":
        """GetNextMol(oemolistream self) -> OEMolBase"""
        return _oechem.oemolistream_GetNextMol(self)


    def PushNextMol(self, mol: 'OEMolBase', pos: 'oefpos_t'=0) -> "void":
        """
        PushNextMol(oemolistream self, OEMolBase mol, oefpos_t pos=0)
        PushNextMol(oemolistream self, OEMolBase mol)
        """
        return _oechem.oemolistream_PushNextMol(self, mol, pos)


    def HasNextMol(self) -> "bool":
        """HasNextMol(oemolistream self) -> bool"""
        return _oechem.oemolistream_HasNextMol(self)


    def ClearCache(self) -> "void":
        """ClearCache(oemolistream self)"""
        return _oechem.oemolistream_ClearCache(self)


    def GetMolBases(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetMolBases(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.oemolistream_GetMolBases(self)


    def GetMCMolBases(self, single: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """
        GetMCMolBases(oemolistream self, bool single=False) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
        GetMCMolBases(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
        """
        return _oechem.oemolistream_GetMCMolBases(self, single)


    def GetReadFailureCt(self) -> "unsigned int":
        """GetReadFailureCt(oemolistream self) -> unsigned int"""
        return _oechem.oemolistream_GetReadFailureCt(self)


    def IncrementReadFailureCt(self) -> "void":
        """IncrementReadFailureCt(oemolistream self)"""
        return _oechem.oemolistream_IncrementReadFailureCt(self)


    def ResetReadFailureCt(self) -> "void":
        """ResetReadFailureCt(oemolistream self)"""
        return _oechem.oemolistream_ResetReadFailureCt(self)


    def SetTracer(self, tracer: 'OETracerBase', owntracer: 'bool') -> "bool":
        """SetTracer(oemolistream self, OETracerBase tracer, bool owntracer) -> bool"""
        return _oechem.oemolistream_SetTracer(self, tracer, owntracer)


    def GetMolBaseIter(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetMolBaseIter(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.oemolistream_GetMolBaseIter(self)


    def GetMCMolBaseIter(self, single: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """
        GetMCMolBaseIter(oemolistream self, bool single=False) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
        GetMCMolBaseIter(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
        """
        return _oechem.oemolistream_GetMCMolBaseIter(self, single)


    def GetOEGraphMols(self):
        mol=OEGraphMol()
        while OEReadMolecule(self, mol):
            yield mol



    def GetOEMols(self):
        mol=OEMol()
        while OEReadMolecule(self, mol):
            yield mol



    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def openstring(self, *args) -> "PyObject *":
        """
        openstring(oemolistream self, unsigned char const * buffer, oesize_t len) -> bool
        openstring(oemolistream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oemolistream_openstring(self, *args)

oemolistream_swigregister = _oechem.oemolistream_swigregister
oemolistream_swigregister(oemolistream)

class oemolostream(oemolstreambase):
    """Proxy of C++ OEChem::oemolostream 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__ = _oechem.delete_oemolostream
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEChem::oemolostream self) -> oemolostream
        __init__(OEChem::oemolostream self, char const * name) -> oemolostream
        __init__(OEChem::oemolostream self, std::string const & fn) -> oemolostream
        __init__(OEChem::oemolostream self, oeostream arg2, bool owned=True) -> oemolostream
        __init__(OEChem::oemolostream self, oeostream arg2) -> oemolostream
        """
        this = _oechem.new_oemolostream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def oeostreamref(self) -> "OEPlatform::oeostream &":
        """oeostreamref(oemolostream self) -> oeostream"""
        return _oechem.oemolostream_oeostreamref(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolostream self, unsigned int format) -> bool"""
        return _oechem.oemolostream_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolostream self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolostream_SetFlavor(self, format, flavor)


    def Setgz(self, gz: 'bool', sptr: 'oeostream'=None, arg4: 'bool'=False) -> "bool":
        """
        Setgz(oemolostream self, bool gz, oeostream sptr=None, bool arg4=False) -> bool
        Setgz(oemolostream self, bool gz, oeostream sptr=None) -> bool
        Setgz(oemolostream self, bool gz) -> bool
        """
        return _oechem.oemolostream_Setgz(self, gz, sptr, arg4)


    def openstring(self, *args) -> "bool":
        """
        openstring(oemolostream self) -> bool
        openstring(oemolostream self, bool gzip) -> bool
        """
        return _oechem.oemolostream_openstring(self, *args)


    def close(self) -> "void":
        """close(oemolostream self)"""
        return _oechem.oemolostream_close(self)


    def IsValid(self):
      return _oechem.oemolostream___nonzero__(self)



    def tell(self) -> "oefpos_t":
        """tell(oemolostream self) -> oefpos_t"""
        return _oechem.oemolostream_tell(self)


    def put(self, c: 'char') -> "OEChem::oemolostream &":
        """put(oemolostream self, char c) -> oemolostream"""
        return _oechem.oemolostream_put(self, c)


    def write(self, str: 'char const *', size: 'oesize_t') -> "OEChem::oemolostream &":
        """write(oemolostream self, char const * str, oesize_t size) -> oemolostream"""
        return _oechem.oemolostream_write(self, str, size)


    def flush(self) -> "OEChem::oemolostream &":
        """flush(oemolostream self) -> oemolostream"""
        return _oechem.oemolostream_flush(self)


    def SetString(self, *args) -> "void":
        """
        SetString(oemolostream self, char const * c)
        SetString(oemolostream self, unsigned char const * c, oesize_t size)
        """
        return _oechem.oemolostream_SetString(self, *args)


    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetString(self) -> "PyObject *":
        """GetString(oemolostream self) -> PyObject *"""
        return _oechem.oemolostream_GetString(self)

oemolostream_swigregister = _oechem.oemolostream_swigregister
oemolostream_swigregister(oemolostream)


def OEWriteHeader(*args) -> "bool":
    """
    OEWriteHeader(oeostream str, OEHeader header, OEBinaryIOHandlerBase hand) -> bool
    OEWriteHeader(oemolostream str, OEHeader header) -> bool
    OEWriteHeader(oemolothread str, OEHeader header) -> bool
    """
    return _oechem.OEWriteHeader(*args)

def OEReadHeader(*args) -> "bool":
    """
    OEReadHeader(oeistream str, OEHeader header, OEBinaryIOHandlerBase hand) -> bool
    OEReadHeader(oemolistream str, OEHeader header) -> bool
    OEReadHeader(oemolithread str, OEHeader header) -> bool
    """
    return _oechem.OEReadHeader(*args)

def OEPreserveRotCompress(str: 'oemolstreambase') -> "bool":
    """OEPreserveRotCompress(oemolstreambase str) -> bool"""
    return _oechem.OEPreserveRotCompress(str)

def OEReadMolFromString(*args) -> "bool":
    """
    OEReadMolFromString(OEMolBase outMol, std::string const & format, std::string const & input) -> bool
    OEReadMolFromString(OEMolBase outMol, unsigned int format, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMolBase outMol, unsigned int format, unsigned int flavor, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, std::string const & format, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, unsigned int format, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, unsigned int format, unsigned int flavor, bool gzip, std::string const & input) -> bool
    """
    return _oechem.OEReadMolFromString(*args)

def OEWriteMolToString(*args) -> "bool":
    """
    OEWriteMolToString(std::string const & format, OEMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, bool gzip, OEMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> std::string
    OEWriteMolToString(std::string const & format, OEMCMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, bool gzip, OEMCMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> std::string
    OEWriteMolToString(std::string & data, unsigned int format, bool gzip, OEMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, bool gzip, OEMCMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> bool
    """
    return _oechem.OEWriteMolToString(*args)

def OEReadJSONString(*args) -> "bool":
    """
    OEReadJSONString(OEMolBase mol, char const * json) -> bool
    OEReadJSONString(OEMCMolBase mol, char const * json) -> bool
    OEReadJSONString(OEMolBase mol, std::string const & json) -> bool
    OEReadJSONString(OEMCMolBase mol, std::string const & json) -> bool
    """
    return _oechem.OEReadJSONString(*args)

def OEWriteJSONString(*args) -> "std::string":
    """
    OEWriteJSONString(OEMolBase mol, unsigned int flavor) -> std::string
    OEWriteJSONString(OEMolBase mol) -> std::string
    OEWriteJSONString(OEMCMolBase mol, unsigned int flavor) -> std::string
    OEWriteJSONString(OEMCMolBase mol) -> std::string
    """
    return _oechem.OEWriteJSONString(*args)

def OEJSONToMol(*args) -> "bool":
    """
    OEJSONToMol(OEMolBase mol, char const * json) -> bool
    OEJSONToMol(OEMCMolBase mol, char const * json) -> bool
    OEJSONToMol(OEMolBase mol, std::string const & json) -> bool
    OEJSONToMol(OEMCMolBase mol, std::string const & json) -> bool
    """
    return _oechem.OEJSONToMol(*args)

def OEMolToJSON(*args) -> "std::string":
    """
    OEMolToJSON(OEMolBase mol, unsigned int flavor) -> std::string
    OEMolToJSON(OEMolBase mol) -> std::string
    OEMolToJSON(OEMCMolBase mol, unsigned int flavor) -> std::string
    OEMolToJSON(OEMCMolBase mol) -> std::string
    """
    return _oechem.OEMolToJSON(*args)

def OEWriteJSONFile(*args) -> "bool":
    """
    OEWriteJSONFile(oemolostream os, OEMolBase mol, unsigned int flavor) -> bool
    OEWriteJSONFile(oemolostream os, OEMolBase mol) -> bool
    OEWriteJSONFile(oemolostream os, OEMCMolBase mol, unsigned int flavor) -> bool
    OEWriteJSONFile(oemolostream os, OEMCMolBase mol) -> bool
    """
    return _oechem.OEWriteJSONFile(*args)

def OEReadJSONFile(*args) -> "bool":
    """
    OEReadJSONFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadJSONFile(oemolistream ifs, OEMCMolBase mol) -> bool
    """
    return _oechem.OEReadJSONFile(*args)

def GetFileFormat(format: 'char const *') -> "unsigned int":
    """GetFileFormat(char const * format) -> unsigned int"""
    return _oechem.GetFileFormat(format)

def OEReadMolFromBytes(*args) -> "PyObject *":
    """
    OEReadMolFromBytes(OEMolBase mol, char const * format, PyObject * bytes) -> PyObject
    OEReadMolFromBytes(OEMCMolBase mol, char const * format, PyObject * bytes) -> PyObject
    OEReadMolFromBytes(OEMolBase mol, unsigned int format, bool gzip, PyObject * bytes) -> PyObject
    OEReadMolFromBytes(OEMolBase mol, unsigned int format, unsigned int flavor, bool gzip, PyObject * bytes) -> PyObject
    OEReadMolFromBytes(OEMCMolBase mol, unsigned int format, bool gzip, PyObject * bytes) -> PyObject
    OEReadMolFromBytes(OEMCMolBase mol, unsigned int format, unsigned int flavor, bool gzip, PyObject * bytes) -> PyObject *
    """
    return _oechem.OEReadMolFromBytes(*args)

def OEWriteMolToBytes(*args) -> "PyObject *":
    """
    OEWriteMolToBytes(char const * format, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(char const * format, OEMCMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, bool gzip, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, bool gzip, OEMCMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> PyObject *
    """
    return _oechem.OEWriteMolToBytes(*args)

def OEReadJSONBytes(*args) -> "PyObject *":
    """
    OEReadJSONBytes(OEMolBase mol, PyObject * bytes) -> PyObject
    OEReadJSONBytes(OEMCMolBase mol, PyObject * bytes) -> PyObject *
    """
    return _oechem.OEReadJSONBytes(*args)

def OEWriteJSONBytes(*args) -> "PyObject *":
    """
    OEWriteJSONBytes(OEMolBase mol, unsigned int flavor) -> PyObject
    OEWriteJSONBytes(OEMolBase mol) -> PyObject
    OEWriteJSONBytes(OEMCMolBase mol, unsigned int flavor) -> PyObject
    OEWriteJSONBytes(OEMCMolBase mol) -> PyObject *
    """
    return _oechem.OEWriteJSONBytes(*args)

def OEJSONBytesToMol(*args) -> "PyObject *":
    """
    OEJSONBytesToMol(OEMolBase mol, PyObject * json) -> PyObject
    OEJSONBytesToMol(OEMCMolBase mol, PyObject * json) -> PyObject *
    """
    return _oechem.OEJSONBytesToMol(*args)

def OEMolToJSONBytes(*args) -> "PyObject *":
    """
    OEMolToJSONBytes(OEMCMolBase mol, unsigned int flavor) -> PyObject
    OEMolToJSONBytes(OEMCMolBase mol) -> PyObject
    OEMolToJSONBytes(OEMolBase mol, unsigned int flavor) -> PyObject
    OEMolToJSONBytes(OEMolBase mol) -> PyObject *
    """
    return _oechem.OEMolToJSONBytes(*args)

def OEReadDesignUnitFromBytes(du: 'OEDesignUnit', bytes: 'PyObject *') -> "PyObject *":
    """OEReadDesignUnitFromBytes(OEDesignUnit du, PyObject * bytes) -> PyObject *"""
    return _oechem.OEReadDesignUnitFromBytes(du, bytes)

def OEWriteDesignUnitToBytes(du: 'OEDesignUnit') -> "PyObject *":
    """OEWriteDesignUnitToBytes(OEDesignUnit du) -> PyObject *"""
    return _oechem.OEWriteDesignUnitToBytes(du)

def OEFixUnicode(*args) -> "void":
    """
    OEFixUnicode(OEMolBase mol)
    OEFixUnicode(OEMCMolBase mol)
    """
    return _oechem.OEFixUnicode(*args)

def OEJSONBytesToBase(c: 'OEBase', json: 'PyObject *') -> "PyObject *":
    """OEJSONBytesToBase(OEBase c, PyObject * json) -> PyObject *"""
    return _oechem.OEJSONBytesToBase(c, json)

def OEBaseToJSONBytes(c: 'OEBase', flavor: 'unsigned int'=0) -> "PyObject *":
    """
    OEBaseToJSONBytes(OEBase c, unsigned int flavor=0) -> PyObject
    OEBaseToJSONBytes(OEBase c) -> PyObject *
    """
    return _oechem.OEBaseToJSONBytes(c, flavor)
class oemolthreadbase(oemolstreambase):
    """Proxy of C++ OEChem::oemolthreadbase 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
    PROTECTED_BUFFER_SIZE = _oechem.oemolthreadbase_PROTECTED_BUFFER_SIZE
    __swig_destroy__ = _oechem.delete_oemolthreadbase
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.oemolthreadbase___nonzero__(self)



    def GetCSVHeaderMutex(self) -> "OEPlatform::OEMutex &":
        """GetCSVHeaderMutex(oemolthreadbase self) -> OEPlatform::OEMutex &"""
        return _oechem.oemolthreadbase_GetCSVHeaderMutex(self)


    def close(self) -> "void":
        """close(oemolthreadbase self)"""
        return _oechem.oemolthreadbase_close(self)


    def GetMol(self) -> "PyObject *":
        """GetMol(oemolthreadbase self) -> PyObject *"""
        return _oechem.oemolthreadbase_GetMol(self)


    def PeekMol(self) -> "PyObject *":
        """PeekMol(oemolthreadbase self) -> PyObject *"""
        return _oechem.oemolthreadbase_PeekMol(self)


    def PutMol(self, bytes: 'PyObject *') -> "PyObject *":
        """PutMol(oemolthreadbase self, PyObject * bytes) -> PyObject *"""
        return _oechem.oemolthreadbase_PutMol(self, bytes)

oemolthreadbase_swigregister = _oechem.oemolthreadbase_swigregister
oemolthreadbase_swigregister(oemolthreadbase)

class oemolithread(oemolthreadbase):
    """Proxy of C++ OEChem::oemolithread 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__(OEChem::oemolithread self) -> oemolithread
        __init__(OEChem::oemolithread self, char const * fn) -> oemolithread
        __init__(OEChem::oemolithread self, std::string const & fn) -> oemolithread
        """
        this = _oechem.new_oemolithread(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolithread
    __del__ = lambda self: None

    def close(self) -> "void":
        """close(oemolithread self)"""
        return _oechem.oemolithread_close(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolithread self, unsigned int format) -> bool"""
        return _oechem.oemolithread_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolithread self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolithread_SetFlavor(self, format, flavor)


    def GetIStream(self) -> "OEPlatform::oeistream *":
        """GetIStream(oemolithread self) -> oeistream"""
        return _oechem.oemolithread_GetIStream(self)


    def GetMolStream(self) -> "OEChem::oemolistream *":
        """GetMolStream(oemolithread self) -> oemolistream"""
        return _oechem.oemolithread_GetMolStream(self)


    def GetOEGraphMols(self):
        mol=OEGraphMol()
        while OEReadMolecule(self, mol):
            yield mol



    def GetOEMols(self):
        mol=OEMol()
        while OEReadMolecule(self, mol):
            yield mol



    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetMolData(self):
        data = self.GetMol()
        while data is not None:
            yield data
            data = self.GetMol()



    def openstring(self, *args) -> "PyObject *":
        """
        openstring(oemolithread self, unsigned char const * buffer, oesize_t len, bool gz=False) -> bool
        openstring(oemolithread self, unsigned char const * buffer, oesize_t len) -> bool
        openstring(oemolithread self, PyObject * bytes, bool gz=False) -> PyObject
        openstring(oemolithread self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oemolithread_openstring(self, *args)

oemolithread_swigregister = _oechem.oemolithread_swigregister
oemolithread_swigregister(oemolithread)

class oemolothread(oemolthreadbase):
    """Proxy of C++ OEChem::oemolothread 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__(OEChem::oemolothread self) -> oemolothread
        __init__(OEChem::oemolothread self, char const * fn) -> oemolothread
        __init__(OEChem::oemolothread self, std::string const & fn) -> oemolothread
        """
        this = _oechem.new_oemolothread(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolothread
    __del__ = lambda self: None

    def close(self) -> "void":
        """close(oemolothread self)"""
        return _oechem.oemolothread_close(self)


    def openstring(self, gz: 'bool'=False) -> "bool":
        """
        openstring(oemolothread self, bool gz=False) -> bool
        openstring(oemolothread self) -> bool
        """
        return _oechem.oemolothread_openstring(self, gz)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolothread self, unsigned int format) -> bool"""
        return _oechem.oemolothread_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolothread self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolothread_SetFlavor(self, format, flavor)


    def GetOStream(self) -> "OEPlatform::oeostream *":
        """GetOStream(oemolothread self) -> oeostream"""
        return _oechem.oemolothread_GetOStream(self)


    def GetMolStream(self) -> "OEChem::oemolostream *":
        """GetMolStream(oemolothread self) -> oemolostream"""
        return _oechem.oemolothread_GetMolStream(self)


    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetString(self) -> "PyObject *":
        """GetString(oemolothread self) -> PyObject *"""
        return _oechem.oemolothread_GetString(self)

oemolothread_swigregister = _oechem.oemolothread_swigregister
oemolothread_swigregister(oemolothread)


def OEReadMolecule(*args) -> "bool":
    """
    OEReadMolecule(oemolistream ifs, OEMCMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEQMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEMol & mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEQMol & mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEGraphMol & mol) -> bool
    OEReadMolecule(oemolithread ifs, OEMolBase mol) -> bool
    OEReadMolecule(oemolithread ifs, OEMCMolBase mol) -> bool
    OEReadMolecule(oemolithread ifs, OEQMolBase mol) -> bool
    """
    return _oechem.OEReadMolecule(*args)

def OEWriteMolecule(*args) -> "unsigned int":
    """
    OEWriteMolecule(oemolostream ofs, OEMCMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEQMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEMol & mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEQMol & mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEGraphMol & mol) -> unsigned int
    OEWriteMolecule(oemolothread ofs, OEMolBase mol) -> unsigned int
    OEWriteMolecule(oemolothread arg1, OEMCMolBase arg2) -> unsigned int
    OEWriteMolecule(oemolothread arg1, OEQMolBase arg2) -> unsigned int
    """
    return _oechem.OEWriteMolecule(*args)
class OETokenizerBase(object):
    """Proxy of C++ OEChem::OETokenizerBase 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__ = _oechem.delete_OETokenizerBase
    __del__ = lambda self: None

    def GetNextToken(self, ifs: 'oeistream') -> "std::string *":
        """GetNextToken(OETokenizerBase self, oeistream ifs) -> std::string *"""
        return _oechem.OETokenizerBase_GetNextToken(self, ifs)


    def ParseTitle(self, data: 'std::string const &') -> "std::string":
        """ParseTitle(OETokenizerBase self, std::string const & data) -> std::string"""
        return _oechem.OETokenizerBase_ParseTitle(self, data)


    def ReadNextToken(self, ifs: 'oeistream', tags: 'std::set< std::string > &') -> "bool":
        """ReadNextToken(OETokenizerBase self, oeistream ifs, std::set< std::string > & tags) -> bool"""
        return _oechem.OETokenizerBase_ReadNextToken(self, ifs, tags)

OETokenizerBase_swigregister = _oechem.OETokenizerBase_swigregister
OETokenizerBase_swigregister(OETokenizerBase)


def OEHasTokenizer(fmt: 'unsigned int') -> "bool":
    """OEHasTokenizer(unsigned int fmt) -> bool"""
    return _oechem.OEHasTokenizer(fmt)

def OEGetTokenizer(fmt: 'unsigned int', flavor: 'unsigned int') -> "OEChem::OETokenizerBase *":
    """OEGetTokenizer(unsigned int fmt, unsigned int flavor) -> OETokenizerBase"""
    return _oechem.OEGetTokenizer(fmt, flavor)

def OECreateSmiString(*args) -> "void":
    """
    OECreateSmiString(OEMolBase mol, unsigned int flavor) -> std::string
    OECreateSmiString(OEMolBase mol) -> std::string
    OECreateSmiString(std::string & str, OEMolBase mol, unsigned int flavor, std::pair< OEChem::OEAtomBase const *,OEChem::OEAtomBase const * > * atmord)
    OECreateSmiString(std::string & str, OEMolBase mol, unsigned int flavor)
    OECreateSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateSmiString(*args)

def OEGetSmiStringOrder(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSmiStringOrder(OEMolBase mol, unsigned int flavor) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmiStringOrder(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSmiStringOrder(*args)

def OECreateCanSmiString(*args) -> "void":
    """
    OECreateCanSmiString(OEMolBase mol) -> std::string
    OECreateCanSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateCanSmiString(*args)

def OECreateIsoSmiString(*args) -> "void":
    """
    OECreateIsoSmiString(OEMolBase mol) -> std::string
    OECreateIsoSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateIsoSmiString(*args)

def OECreateAbsSmiString(*args) -> "void":
    """
    OECreateAbsSmiString(OEMolBase mol) -> std::string
    OECreateAbsSmiString(std::string & str, OEMolBase mol, std::pair< OEChem::OEAtomBase const *,OEChem::OEAtomBase const * > * atmord)
    OECreateAbsSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateAbsSmiString(*args)

def OECreateSlnString(*args) -> "void":
    """
    OECreateSlnString(OEMolBase mol, unsigned int flavor) -> std::string
    OECreateSlnString(OEMolBase mol) -> std::string
    OECreateSlnString(std::string & str, OEMolBase mol, unsigned int flavor)
    OECreateSlnString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateSlnString(*args)

def OENormalize(*args) -> "void":
    """
    OENormalize(OEMolBase mol, OEChem::OENormModel const model)
    OENormalize(OEMolBase mol)
    """
    return _oechem.OENormalize(*args)

def OEInitDefaultHandler(hand: 'OEBinaryIOHandlerBase', compressMCMol: 'bool'=False, useZstd: 'bool'=False) -> "bool":
    """
    OEInitDefaultHandler(OEBinaryIOHandlerBase hand, bool compressMCMol=False, bool useZstd=False) -> bool
    OEInitDefaultHandler(OEBinaryIOHandlerBase hand, bool compressMCMol=False) -> bool
    OEInitDefaultHandler(OEBinaryIOHandlerBase hand) -> bool
    """
    return _oechem.OEInitDefaultHandler(hand, compressMCMol, useZstd)

def OEInitHandler(hand: 'OEBinaryIOHandlerBase', readOptHex: 'char const *', writeOptHex: 'char const *') -> "bool":
    """OEInitHandler(OEBinaryIOHandlerBase hand, char const * readOptHex, char const * writeOptHex) -> bool"""
    return _oechem.OEInitHandler(hand, readOptHex, writeOptHex)

def OEBDefaultOpts() -> "char const *":
    """OEBDefaultOpts() -> char const *"""
    return _oechem.OEBDefaultOpts()

def OEBGZipCompressOpts() -> "char const *":
    """OEBGZipCompressOpts() -> char const *"""
    return _oechem.OEBGZipCompressOpts()

def OEBRotCompressOpts() -> "char const *":
    """OEBRotCompressOpts() -> char const *"""
    return _oechem.OEBRotCompressOpts()

def OEBAtomIntTypeOpts() -> "char const *":
    """OEBAtomIntTypeOpts() -> char const *"""
    return _oechem.OEBAtomIntTypeOpts()

def OEBCompressConfTorsionsOpts() -> "char const *":
    """OEBCompressConfTorsionsOpts() -> char const *"""
    return _oechem.OEBCompressConfTorsionsOpts()

def OEClearRotorCompressData(mol: 'OEMCMolBase') -> "bool":
    """OEClearRotorCompressData(OEMCMolBase mol) -> bool"""
    return _oechem.OEClearRotorCompressData(mol)

def OEPRECompress(*args) -> "bool":
    """
    OEPRECompress(oemolstreambase str) -> bool
    OEPRECompress(OEChem::OEMol & dst, OEMCMolBase src) -> bool
    """
    return _oechem.OEPRECompress(*args)

def OESweepRotorCompressHydrogens(mol: 'OEMCMolBase', retainPolar: 'bool'=False, retainStereo: 'bool'=False, retainIsotope: 'bool'=True) -> "bool":
    """
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False, bool retainStereo=False) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol) -> bool
    """
    return _oechem.OESweepRotorCompressHydrogens(mol, retainPolar, retainStereo, retainIsotope)
class OEMolBaseReadFxnT(OEReadFxnBase):
    """Proxy of C++ OESystem::OEReadFxn<(OEChem::OEMolBase)> 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, arg2: 'oeistream', arg3: 'OEMolBase', arg4: 'OEULongLong', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEMolBaseReadFxnT self, oeistream arg2, OEMolBase arg3, OEULongLong arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEMolBaseReadFxnT___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEMolBaseReadFxnT
    __del__ = lambda self: None
OEMolBaseReadFxnT_swigregister = _oechem.OEMolBaseReadFxnT_swigregister
OEMolBaseReadFxnT_swigregister(OEMolBaseReadFxnT)
OENormModelDefault = cvar.OENormModelDefault
OENormModelSymmetry = cvar.OENormModelSymmetry
OENormModelPhysical = cvar.OENormModelPhysical
OENormModelHyperVal = cvar.OENormModelHyperVal
OENormModelDative = cvar.OENormModelDative

class OEMolBaseWriteFxnT(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OEChem::OEMolBase)> 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, arg2: 'oeostream', arg3: 'OEMolBase', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEMolBaseWriteFxnT self, oeostream arg2, OEMolBase arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEMolBaseWriteFxnT___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEMolBaseWriteFxnT
    __del__ = lambda self: None
OEMolBaseWriteFxnT_swigregister = _oechem.OEMolBaseWriteFxnT_swigregister
OEMolBaseWriteFxnT_swigregister(OEMolBaseWriteFxnT)

class OEMCMolBaseReadFxnT(OEReadFxnBase):
    """Proxy of C++ OESystem::OEReadFxn<(OEChem::OEMCMolBase)> 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, arg2: 'oeistream', arg3: 'OEMCMolBase', arg4: 'OEULongLong', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEMCMolBaseReadFxnT self, oeistream arg2, OEMCMolBase arg3, OEULongLong arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEMCMolBaseReadFxnT___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEMCMolBaseReadFxnT
    __del__ = lambda self: None
OEMCMolBaseReadFxnT_swigregister = _oechem.OEMCMolBaseReadFxnT_swigregister
OEMCMolBaseReadFxnT_swigregister(OEMCMolBaseReadFxnT)

class OEMCMolBaseWriteFxnT(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OEChem::OEMCMolBase)> 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, arg2: 'oeostream', arg3: 'OEMCMolBase', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEMCMolBaseWriteFxnT self, oeostream arg2, OEMCMolBase arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEMCMolBaseWriteFxnT___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEMCMolBaseWriteFxnT
    __del__ = lambda self: None
OEMCMolBaseWriteFxnT_swigregister = _oechem.OEMCMolBaseWriteFxnT_swigregister
OEMCMolBaseWriteFxnT_swigregister(OEMCMolBaseWriteFxnT)


def OESmartsLexReplace(*args) -> "bool":
    """
    OESmartsLexReplace(std::string const & pattern, PyObject * input) -> PyObject
    OESmartsLexReplace(std::string & arg1, std::vector< std::pair< std::string,std::string >,std::allocator< std::pair< std::string,std::string > > > const & arg2) -> bool
    """
    return _oechem.OESmartsLexReplace(*args)

def OESetDimensionFromCoords(arg1: 'OEMolBase') -> "void":
    """OESetDimensionFromCoords(OEMolBase arg1)"""
    return _oechem.OESetDimensionFromCoords(arg1)

def OEGetDimensionFromCoords(arg1: 'OEMolBase') -> "unsigned int":
    """OEGetDimensionFromCoords(OEMolBase arg1) -> unsigned int"""
    return _oechem.OEGetDimensionFromCoords(arg1)

def OESetMDLDimensionFromCoords(arg1: 'OEMolBase') -> "void":
    """OESetMDLDimensionFromCoords(OEMolBase arg1)"""
    return _oechem.OESetMDLDimensionFromCoords(arg1)

def OEGetMDLDimensionFromCoords(arg1: 'OEMolBase') -> "unsigned int":
    """OEGetMDLDimensionFromCoords(OEMolBase arg1) -> unsigned int"""
    return _oechem.OEGetMDLDimensionFromCoords(arg1)

def OECopyMol(dst: 'OEMolBase', src: 'OEMolBase', atommap: 'OEChem::OEAtomBase **'=None, bondmap: 'OEChem::OEBondBase **'=None) -> "void":
    """
    OECopyMol(OEMolBase dst, OEMolBase src, OEChem::OEAtomBase ** atommap=None, OEChem::OEBondBase ** bondmap=None)
    OECopyMol(OEMolBase dst, OEMolBase src, OEChem::OEAtomBase ** atommap=None)
    OECopyMol(OEMolBase dst, OEMolBase src)
    """
    return _oechem.OECopyMol(dst, src, atommap, bondmap)
class OEParseSmilesOptions(object):
    """Proxy of C++ OEChem::OEParseSmilesOptions 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, canon: 'bool'=False, strict: 'bool'=False, quiet: 'bool'=False):
        """
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False, bool strict=False, bool quiet=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False, bool strict=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self) -> OEParseSmilesOptions
        """
        this = _oechem.new_OEParseSmilesOptions(canon, strict, quiet)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetCanon(self) -> "bool":
        """GetCanon(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetCanon(self)


    def SetCanon(self, c: 'bool') -> "void":
        """SetCanon(OEParseSmilesOptions self, bool c)"""
        return _oechem.OEParseSmilesOptions_SetCanon(self, c)


    def GetStrict(self) -> "bool":
        """GetStrict(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetStrict(self)


    def SetStrict(self, s: 'bool') -> "void":
        """SetStrict(OEParseSmilesOptions self, bool s)"""
        return _oechem.OEParseSmilesOptions_SetStrict(self, s)


    def GetQuiet(self) -> "bool":
        """GetQuiet(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetQuiet(self)


    def SetQuiet(self, q: 'bool') -> "void":
        """SetQuiet(OEParseSmilesOptions self, bool q)"""
        return _oechem.OEParseSmilesOptions_SetQuiet(self, q)

    __swig_destroy__ = _oechem.delete_OEParseSmilesOptions
    __del__ = lambda self: None
OEParseSmilesOptions_swigregister = _oechem.OEParseSmilesOptions_swigregister
OEParseSmilesOptions_swigregister(OEParseSmilesOptions)


def OEParseSmiles(*args) -> "bool":
    """
    OEParseSmiles(OEMolBase mol, char const * str, bool canon=False, bool strict=False) -> bool
    OEParseSmiles(OEMolBase mol, char const * str, bool canon=False) -> bool
    OEParseSmiles(OEMolBase mol, char const * str) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, bool canon=False, bool strict=False) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, bool canon=False) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str) -> bool
    OEParseSmiles(OEMolBase mol, char const * str, OEParseSmilesOptions options) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, OEParseSmilesOptions options) -> bool
    """
    return _oechem.OEParseSmiles(*args)

def OESmilesAtomCount(*args) -> "unsigned int":
    """
    OESmilesAtomCount(std::string const & str) -> unsigned int
    OESmilesAtomCount(char const * str) -> unsigned int
    """
    return _oechem.OESmilesAtomCount(*args)

def OEParseSmarts(*args) -> "bool":
    """
    OEParseSmarts(OEQMolBase arg1, char const * arg2, unsigned int opt) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2, OEVectorBindings vb, unsigned int opt) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2, OEVectorBindings vb) -> bool
    """
    return _oechem.OEParseSmarts(*args)

def OEParseSmirks(*args) -> "bool":
    """
    OEParseSmirks(OEQMolBase arg1, char const * arg2, unsigned int opt) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2, OEVectorBindings vb, unsigned int opt) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2, OEVectorBindings vb) -> bool
    """
    return _oechem.OEParseSmirks(*args)
class OEVectorBindings(object):
    """Proxy of C++ OEChem::OEVectorBindings 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__ = _oechem.delete_OEVectorBindings
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEChem::OEVectorBindings self) -> OEVectorBindings
        __init__(OEChem::OEVectorBindings self, OEVectorBindings arg2) -> OEVectorBindings
        """
        this = _oechem.new_OEVectorBindings(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Add(self, label: 'char const *', pattern: 'char const *') -> "bool":
        """Add(OEVectorBindings self, char const * label, char const * pattern) -> bool"""
        return _oechem.OEVectorBindings_Add(self, label, pattern)


    def Get(self, expr: 'OEChem::OEExprBase const *&', label: 'char const *&', smarts: 'char const *') -> "bool":
        """Get(OEVectorBindings self, OEChem::OEExprBase const *& expr, char const *& label, char const * smarts) -> bool"""
        return _oechem.OEVectorBindings_Get(self, expr, label, smarts)

OEVectorBindings_swigregister = _oechem.OEVectorBindings_swigregister
OEVectorBindings_swigregister(OEVectorBindings)


def OEDetermineReactants(mol: 'OEMolBase', parts: 'unsigned int *') -> "unsigned int":
    """OEDetermineReactants(OEMolBase mol, unsigned int * parts) -> unsigned int"""
    return _oechem.OEDetermineReactants(mol, parts)
class OEUniMolecularRxn(object):
    """Proxy of C++ OEChem::OEUniMolecularRxn 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__(OEChem::OEUniMolecularRxn self) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, char const * arg2, bool strictSmirks=True) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, char const * arg2) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, OEUniMolecularRxn arg2) -> OEUniMolecularRxn
        """
        this = _oechem.new_OEUniMolecularRxn(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUniMolecularRxn
    __del__ = lambda self: None

    def Init(self, *args) -> "bool":
        """
        Init(OEUniMolecularRxn self, char const * c, bool strictSmirks=True) -> bool
        Init(OEUniMolecularRxn self, char const * c) -> bool
        Init(OEUniMolecularRxn self, OEQMolBase arg2, bool strictSmirks=True) -> bool
        Init(OEUniMolecularRxn self, OEQMolBase arg2) -> bool
        """
        return _oechem.OEUniMolecularRxn_Init(self, *args)


    def __call__(self, mol: 'OEMolBase') -> "bool":
        """__call__(OEUniMolecularRxn self, OEMolBase mol) -> bool"""
        return _oechem.OEUniMolecularRxn___call__(self, mol)


    def IsValid(self):
      return _oechem.OEUniMolecularRxn___nonzero__(self)



    def SetValidateKekule(self, arg2: 'bool') -> "bool":
        """SetValidateKekule(OEUniMolecularRxn self, bool arg2) -> bool"""
        return _oechem.OEUniMolecularRxn_SetValidateKekule(self, arg2)


    def GetValidateKekule(self) -> "bool":
        """GetValidateKekule(OEUniMolecularRxn self) -> bool"""
        return _oechem.OEUniMolecularRxn_GetValidateKekule(self)


    def SetClearCoordinates(self, arg2: 'bool') -> "bool":
        """SetClearCoordinates(OEUniMolecularRxn self, bool arg2) -> bool"""
        return _oechem.OEUniMolecularRxn_SetClearCoordinates(self, arg2)


    def GetClearCoordinates(self) -> "bool":
        """GetClearCoordinates(OEUniMolecularRxn self) -> bool"""
        return _oechem.OEUniMolecularRxn_GetClearCoordinates(self)

OEUniMolecularRxn_swigregister = _oechem.OEUniMolecularRxn_swigregister
OEUniMolecularRxn_swigregister(OEUniMolecularRxn)

class OELibraryGen(object):
    """Proxy of C++ OEChem::OELibraryGen 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__(OEChem::OELibraryGen self) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, OELibraryGen rhs) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, char const * arg2, bool strictSmirks=True) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, char const * arg2) -> OELibraryGen
        """
        this = _oechem.new_OELibraryGen(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELibraryGen
    __del__ = lambda self: None

    def Init(self, *args) -> "bool":
        """
        Init(OELibraryGen self, char const * c, bool strictSmirks=True) -> bool
        Init(OELibraryGen self, char const * c) -> bool
        Init(OELibraryGen self, OEQMolBase arg2, bool strictSmirks=True) -> bool
        Init(OELibraryGen self, OEQMolBase arg2) -> bool
        """
        return _oechem.OELibraryGen_Init(self, *args)


    def IsValid(self):
      return _oechem.OELibraryGen___nonzero__(self)



    def __call__(self, arg2: 'OEMolBase') -> "bool":
        """__call__(OELibraryGen self, OEMolBase arg2) -> bool"""
        return _oechem.OELibraryGen___call__(self, arg2)


    def NumReactants(self) -> "unsigned int":
        """NumReactants(OELibraryGen self) -> unsigned int"""
        return _oechem.OELibraryGen_NumReactants(self)


    def NumPossibleProducts(self) -> "unsigned int":
        """NumPossibleProducts(OELibraryGen self) -> unsigned int"""
        return _oechem.OELibraryGen_NumPossibleProducts(self)


    def SetStartingMaterial(self, *args) -> "unsigned int":
        """
        SetStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum) -> unsigned int
        """
        return _oechem.OELibraryGen_SetStartingMaterial(self, *args)


    def AddStartingMaterial(self, *args) -> "unsigned int":
        """
        AddStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum) -> unsigned int
        """
        return _oechem.OELibraryGen_AddStartingMaterial(self, *args)


    def ClearStartingMaterial(self, reacnum: 'unsigned int') -> "void":
        """ClearStartingMaterial(OELibraryGen self, unsigned int reacnum)"""
        return _oechem.OELibraryGen_ClearStartingMaterial(self, reacnum)


    def GetStartingMaterial(self,rnum):
      startiter = self.GetStartingMaterialIter(rnum)
      while startiter.IsValid():
        yield startiter.Target()
        startiter.Next()



    def GetProducts(self):
      proditer = self.GetProductsIter()
      while proditer.IsValid():
        yield proditer.Target()
        proditer.Next()



    def SetValenceCorrection(self, arg2: 'bool') -> "bool":
        """SetValenceCorrection(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetValenceCorrection(self, arg2)


    def GetValenceCorrection(self) -> "bool":
        """GetValenceCorrection(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetValenceCorrection(self)


    def SetExplicitHydrogens(self, arg2: 'bool') -> "bool":
        """SetExplicitHydrogens(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetExplicitHydrogens(self, arg2)


    def GetExplicitHydrogens(self) -> "bool":
        """GetExplicitHydrogens(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetExplicitHydrogens(self)


    def SetRemoveUnmappedFragments(self, arg2: 'bool') -> "bool":
        """SetRemoveUnmappedFragments(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetRemoveUnmappedFragments(self, arg2)


    def GetRemoveUnmappedFragments(self) -> "bool":
        """GetRemoveUnmappedFragments(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetRemoveUnmappedFragments(self)


    def SetAssignMapIdx(self, arg2: 'bool') -> "bool":
        """SetAssignMapIdx(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetAssignMapIdx(self, arg2)


    def GetAssignMapIdx(self) -> "bool":
        """GetAssignMapIdx(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetAssignMapIdx(self)


    def SetValidateKekule(self, arg2: 'bool') -> "bool":
        """SetValidateKekule(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetValidateKekule(self, arg2)


    def GetValidateKekule(self) -> "bool":
        """GetValidateKekule(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetValidateKekule(self)


    def SetClearCoordinates(self, arg2: 'bool') -> "bool":
        """SetClearCoordinates(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetClearCoordinates(self, arg2)


    def GetClearCoordinates(self) -> "bool":
        """GetClearCoordinates(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetClearCoordinates(self)


    def SetTitleSeparator(self, c: 'char const *') -> "bool":
        """SetTitleSeparator(OELibraryGen self, char const * c) -> bool"""
        return _oechem.OELibraryGen_SetTitleSeparator(self, c)


    def GetTitleSeparator(self) -> "std::string const &":
        """GetTitleSeparator(OELibraryGen self) -> std::string const &"""
        return _oechem.OELibraryGen_GetTitleSeparator(self)


    def GetStartingMaterialIter(self, rnum: 'unsigned int') -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetStartingMaterialIter(OELibraryGen self, unsigned int rnum) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OELibraryGen_GetStartingMaterialIter(self, rnum)


    def GetProductsIter(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetProductsIter(OELibraryGen self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OELibraryGen_GetProductsIter(self)

OELibraryGen_swigregister = _oechem.OELibraryGen_swigregister
OELibraryGen_swigregister(OELibraryGen)


def OEGetUniMolecularRxnIter(mol: 'OEMolBase', rxn: 'OEQMolBase', strictSmirks: 'bool'=True, maxMatches: 'unsigned int'=10000, validateKekule: 'bool'=True) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True, unsigned int maxMatches=10000, bool validateKekule=True) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True, unsigned int maxMatches=10000) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEGetUniMolecularRxnIter(mol, rxn, strictSmirks, maxMatches, validateKekule)

def OEHasResidue(atm: 'OEAtomBase') -> "bool":
    """OEHasResidue(OEAtomBase atm) -> bool"""
    return _oechem.OEHasResidue(atm)

def OEAtomSetResidue(atm: 'OEAtomBase', res: 'OEResidue') -> "bool":
    """OEAtomSetResidue(OEAtomBase atm, OEResidue res) -> bool"""
    return _oechem.OEAtomSetResidue(atm, res)

def OEAtomGetResidue(atm: 'OEAtomBase') -> "OEChem::OEResidue const &":
    """OEAtomGetResidue(OEAtomBase atm) -> OEResidue"""
    return _oechem.OEAtomGetResidue(atm)

def OEHasResidues(mol: 'OEMolBase') -> "bool":
    """OEHasResidues(OEMolBase mol) -> bool"""
    return _oechem.OEHasResidues(mol)

def OEClearResidues(mol: 'OEMolBase') -> "void":
    """OEClearResidues(OEMolBase mol)"""
    return _oechem.OEClearResidues(mol)

def OEClearResidue(atom: 'OEAtomBase') -> "void":
    """OEClearResidue(OEAtomBase atom)"""
    return _oechem.OEClearResidue(atom)

def OESameResidue(res1: 'OEResidue', res2: 'OEResidue') -> "bool":
    """OESameResidue(OEResidue res1, OEResidue res2) -> bool"""
    return _oechem.OESameResidue(res1, res2)

def OESameChain(res1: 'OEResidue', res2: 'OEResidue') -> "bool":
    """OESameChain(OEResidue res1, OEResidue res2) -> bool"""
    return _oechem.OESameChain(res1, res2)

def OEResidueHydrogens(*args) -> "void":
    """
    OEResidueHydrogens(OEAtomBase atm, unsigned int style)
    OEResidueHydrogens(OEAtomBase atm)
    OEResidueHydrogens(OEMolBase mol, unsigned int style)
    OEResidueHydrogens(OEMolBase mol)
    """
    return _oechem.OEResidueHydrogens(*args)

def OEPDBOrderAtoms(mol: 'OEMolBase', preserveResOrder: 'bool'=False) -> "bool":
    """
    OEPDBOrderAtoms(OEMolBase mol, bool preserveResOrder=False) -> bool
    OEPDBOrderAtoms(OEMolBase mol) -> bool
    """
    return _oechem.OEPDBOrderAtoms(mol, preserveResOrder)

def OEAssignResidueNumbers(mol: 'OEMolBase') -> "void":
    """OEAssignResidueNumbers(OEMolBase mol)"""
    return _oechem.OEAssignResidueNumbers(mol)

def OEAssignSerialNumbers(mol: 'OEMolBase') -> "void":
    """OEAssignSerialNumbers(OEMolBase mol)"""
    return _oechem.OEAssignSerialNumbers(mol)

def OEPerceiveResidues(*args) -> "void":
    """
    OEPerceiveResidues(OEMolBase mol, unsigned int stable)
    OEPerceiveResidues(OEMolBase mol)
    """
    return _oechem.OEPerceiveResidues(*args)

def OEGetAminoAcidCode(idx: 'unsigned int') -> "char":
    """OEGetAminoAcidCode(unsigned int idx) -> char"""
    return _oechem.OEGetAminoAcidCode(idx)

def OEGetResidueIndexFromCode(name: 'char const') -> "unsigned int":
    """OEGetResidueIndexFromCode(char const name) -> unsigned int"""
    return _oechem.OEGetResidueIndexFromCode(name)

def OEGetResidueIndex(*args) -> "unsigned int":
    """
    OEGetResidueIndex(char const * name) -> unsigned int
    OEGetResidueIndex(OEResidue res) -> unsigned int
    OEGetResidueIndex(OEAtomBase atm) -> unsigned int
    """
    return _oechem.OEGetResidueIndex(*args)

def OEGetResidueName(idx: 'unsigned int') -> "char const *":
    """OEGetResidueName(unsigned int idx) -> char const *"""
    return _oechem.OEGetResidueName(idx)

def OEGetPDBAtomIndex(*args) -> "unsigned int":
    """
    OEGetPDBAtomIndex(char const * name) -> unsigned int
    OEGetPDBAtomIndex(OEAtomBase atm) -> unsigned int
    """
    return _oechem.OEGetPDBAtomIndex(*args)

def OEGetPDBAtomName(idx: 'unsigned int') -> "char const *":
    """OEGetPDBAtomName(unsigned int idx) -> char const *"""
    return _oechem.OEGetPDBAtomName(idx)

def OEFindRingAtomsAndBonds(mol: 'OEMolBase') -> "void":
    """OEFindRingAtomsAndBonds(OEMolBase mol)"""
    return _oechem.OEFindRingAtomsAndBonds(mol)

def OEAtomIsInRingSize(atm: 'OEAtomBase', size: 'unsigned int') -> "bool":
    """OEAtomIsInRingSize(OEAtomBase atm, unsigned int size) -> bool"""
    return _oechem.OEAtomIsInRingSize(atm, size)

def OEBondIsInRingSize(bnd: 'OEBondBase', size: 'unsigned int') -> "bool":
    """OEBondIsInRingSize(OEBondBase bnd, unsigned int size) -> bool"""
    return _oechem.OEBondIsInRingSize(bnd, size)

def OEAtomIsInAromaticRingSize(atm: 'OEAtomBase', size: 'unsigned int') -> "bool":
    """OEAtomIsInAromaticRingSize(OEAtomBase atm, unsigned int size) -> bool"""
    return _oechem.OEAtomIsInAromaticRingSize(atm, size)

def OEBondIsInAromaticRingSize(bnd: 'OEBondBase', size: 'unsigned int') -> "bool":
    """OEBondIsInAromaticRingSize(OEBondBase bnd, unsigned int size) -> bool"""
    return _oechem.OEBondIsInAromaticRingSize(bnd, size)

def OEAtomGetSmallestRingSize(atm: 'OEAtomBase') -> "unsigned int":
    """OEAtomGetSmallestRingSize(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEAtomGetSmallestRingSize(atm)

def OEBondGetSmallestRingSize(bnd: 'OEBondBase') -> "unsigned int":
    """OEBondGetSmallestRingSize(OEBondBase bnd) -> unsigned int"""
    return _oechem.OEBondGetSmallestRingSize(bnd)
class OESDDataPair(object):
    """Proxy of C++ OEChem::OESDDataPair 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__(OEChem::OESDDataPair self) -> OESDDataPair
        __init__(OEChem::OESDDataPair self, std::string t, std::string v) -> OESDDataPair
        """
        this = _oechem.new_OESDDataPair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetTag(self, t: 'char const *') -> "void":
        """SetTag(OESDDataPair self, char const * t)"""
        return _oechem.OESDDataPair_SetTag(self, t)


    def SetValue(self, v: 'char const *') -> "void":
        """SetValue(OESDDataPair self, char const * v)"""
        return _oechem.OESDDataPair_SetValue(self, v)


    def GetTag(self) -> "char const *":
        """GetTag(OESDDataPair self) -> char const *"""
        return _oechem.OESDDataPair_GetTag(self)


    def GetValue(self) -> "char const *":
        """GetValue(OESDDataPair self) -> char const *"""
        return _oechem.OESDDataPair_GetValue(self)

    __swig_destroy__ = _oechem.delete_OESDDataPair
    __del__ = lambda self: None
OESDDataPair_swigregister = _oechem.OESDDataPair_swigregister
OESDDataPair_swigregister(OESDDataPair)


def OEHasSDData(*args) -> "bool":
    """
    OEHasSDData(OEMolBase mol) -> bool
    OEHasSDData(OEMolBase mol, std::string const & tag) -> bool
    """
    return _oechem.OEHasSDData(*args)

def OEDeleteSDData(mol: 'OEMolBase', tag: 'std::string const &') -> "bool":
    """OEDeleteSDData(OEMolBase mol, std::string const & tag) -> bool"""
    return _oechem.OEDeleteSDData(mol, tag)

def OEGetSDData(mol: 'OEMolBase', tag: 'std::string const &') -> "std::string":
    """OEGetSDData(OEMolBase mol, std::string const & tag) -> std::string"""
    return _oechem.OEGetSDData(mol, tag)

def OESetSDData(*args) -> "bool":
    """
    OESetSDData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OESetSDData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OESetSDData(*args)

def OEAddSDData(*args) -> "bool":
    """
    OEAddSDData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OEAddSDData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OEAddSDData(*args)

def OECopySDData(*args) -> "bool":
    """
    OECopySDData(OEMolBase dst, OEMolBase src) -> bool
    OECopySDData(OEMolBase dst, OEContainer src) -> bool
    """
    return _oechem.OECopySDData(*args)

def OEGetSDDataPairs(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OESDDataPair > *":
    """OEGetSDDataPairs(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OESDDataPair > *"""
    return _oechem.OEGetSDDataPairs(mol)

def OEGetSDBaseData(mol: 'OEBase') -> "OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *":
    """OEGetSDBaseData(OEBase mol) -> OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *"""
    return _oechem.OEGetSDBaseData(mol)

def OEClearSDData(*args) -> "bool":
    """
    OEClearSDData(OEMolBase mol) -> bool
    OEClearSDData(OEMCMolBase mol) -> bool
    """
    return _oechem.OEClearSDData(*args)
class OEAnisoUij(object):
    """Proxy of C++ OEChem::OEAnisoUij 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__(OEChem::OEAnisoUij self) -> OEAnisoUij
        __init__(OEChem::OEAnisoUij self, int u11, int u22, int u33, int u12, int u13, int u23) -> OEAnisoUij
        """
        this = _oechem.new_OEAnisoUij(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetU11(self) -> "int":
        """GetU11(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU11(self)


    def SetU11(self, val: 'int') -> "void":
        """SetU11(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU11(self, val)


    def GetU22(self) -> "int":
        """GetU22(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU22(self)


    def SetU22(self, val: 'int') -> "void":
        """SetU22(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU22(self, val)


    def GetU33(self) -> "int":
        """GetU33(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU33(self)


    def SetU33(self, val: 'int') -> "void":
        """SetU33(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU33(self, val)


    def GetU12(self) -> "int":
        """GetU12(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU12(self)


    def SetU12(self, val: 'int') -> "void":
        """SetU12(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU12(self, val)


    def GetU13(self) -> "int":
        """GetU13(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU13(self)


    def SetU13(self, val: 'int') -> "void":
        """SetU13(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU13(self, val)


    def GetU23(self) -> "int":
        """GetU23(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU23(self)


    def SetU23(self, val: 'int') -> "void":
        """SetU23(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU23(self, val)

    __swig_destroy__ = _oechem.delete_OEAnisoUij
    __del__ = lambda self: None
OEAnisoUij_swigregister = _oechem.OEAnisoUij_swigregister
OEAnisoUij_swigregister(OEAnisoUij)


def OEHasPDBData(*args) -> "bool":
    """
    OEHasPDBData(OEMolBase mol) -> bool
    OEHasPDBData(OEMolBase mol, std::string const & tag) -> bool
    """
    return _oechem.OEHasPDBData(*args)

def OEDeletePDBData(mol: 'OEMolBase', tag: 'std::string const &') -> "bool":
    """OEDeletePDBData(OEMolBase mol, std::string const & tag) -> bool"""
    return _oechem.OEDeletePDBData(mol, tag)

def OEGetPDBData(mol: 'OEMolBase', tag: 'std::string const &') -> "std::string":
    """OEGetPDBData(OEMolBase mol, std::string const & tag) -> std::string"""
    return _oechem.OEGetPDBData(mol, tag)

def OESetPDBData(*args) -> "bool":
    """
    OESetPDBData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OESetPDBData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OESetPDBData(*args)

def OEAddPDBData(*args) -> "bool":
    """
    OEAddPDBData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OEAddPDBData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OEAddPDBData(*args)

def OECopyPDBData(dst: 'OEMolBase', src: 'OEMolBase') -> "bool":
    """OECopyPDBData(OEMolBase dst, OEMolBase src) -> bool"""
    return _oechem.OECopyPDBData(dst, src)

def OEGetPDBDataPairs(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEPDBDataPair > *":
    """OEGetPDBDataPairs(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEPDBDataPair > *"""
    return _oechem.OEGetPDBDataPairs(mol)

def OEGetPDBBaseData(mol: 'OEBase') -> "OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *":
    """OEGetPDBBaseData(OEBase mol) -> OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *"""
    return _oechem.OEGetPDBBaseData(mol)

def OEClearPDBData(*args) -> "bool":
    """
    OEClearPDBData(OEMolBase mol) -> bool
    OEClearPDBData(OEMCMolBase mol) -> bool
    """
    return _oechem.OEClearPDBData(*args)
class OEHasAnisou(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAnisou class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAnisou self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAnisou___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAnisou_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEChem::OEHasAnisou self) -> OEHasAnisou"""
        this = _oechem.new_OEHasAnisou()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasAnisou
    __del__ = lambda self: None
OEHasAnisou_swigregister = _oechem.OEHasAnisou_swigregister
OEHasAnisou_swigregister(OEHasAnisou)


def OESetAnisou(*args) -> "void":
    """
    OESetAnisou(OEAtomBase atom, int u11, int u22, int u33, int u12, int u13, int u23)
    OESetAnisou(OEAtomBase atom, OEAnisoUij uij)
    """
    return _oechem.OESetAnisou(*args)

def OEGetAnisou(*args) -> "bool":
    """
    OEGetAnisou(OEAtomBase atom, int & u11, int & u22, int & u33, int & u12, int & u13, int & u23) -> bool
    OEGetAnisou(OEAnisoUij uij, OEAtomBase atom) -> bool
    """
    return _oechem.OEGetAnisou(*args)

def OE3DToAtomStereo(mol: 'OEMolBase') -> "bool":
    """OE3DToAtomStereo(OEMolBase mol) -> bool"""
    return _oechem.OE3DToAtomStereo(mol)

def OE3DToBondStereo(mol: 'OEMolBase', bmask: 'unsigned char *'=None) -> "bool":
    """
    OE3DToBondStereo(OEMolBase mol, unsigned char * bmask=None) -> bool
    OE3DToBondStereo(OEMolBase mol) -> bool
    """
    return _oechem.OE3DToBondStereo(mol, bmask)

def OE3DToInternalStereo(mol: 'OEMolBase') -> "bool":
    """OE3DToInternalStereo(OEMolBase mol) -> bool"""
    return _oechem.OE3DToInternalStereo(mol)

def OEPerceiveSymmetry(mol: 'OEMolBase', includeH: 'bool'=True, automorph: 'bool'=False) -> "bool":
    """
    OEPerceiveSymmetry(OEMolBase mol, bool includeH=True, bool automorph=False) -> bool
    OEPerceiveSymmetry(OEMolBase mol, bool includeH=True) -> bool
    OEPerceiveSymmetry(OEMolBase mol) -> bool
    """
    return _oechem.OEPerceiveSymmetry(mol, includeH, automorph)

def OEPerceiveChiral(mol: 'OEMolBase', carbonOnly: 'bool const'=False) -> "bool":
    """
    OEPerceiveChiral(OEMolBase mol, bool const carbonOnly=False) -> bool
    OEPerceiveChiral(OEMolBase mol) -> bool
    """
    return _oechem.OEPerceiveChiral(mol, carbonOnly)

def OEClearChiralPerception(mol: 'OEMolBase') -> "void":
    """OEClearChiralPerception(OEMolBase mol)"""
    return _oechem.OEClearChiralPerception(mol)
class OEAtomBondSet(OERoleSet):
    """Proxy of C++ OEChem::OEAtomBondSet 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__(OEChem::OEAtomBondSet self) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs, OEChem::OEAtomBase ** amap) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEAtomBase > * atoms) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEBondBase > * bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEAtomBase > * atoms, OESystem::OEIterBase< OEChem::OEBondBase > * bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomIter atoms) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEBondIter bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomIter atoms, OEBondIter bonds) -> OEAtomBondSet
        """
        this = _oechem.new_OEAtomBondSet(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomBondSet
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OEAtomBondSet *":
        """CreateCopy(OEAtomBondSet self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSet_CreateCopy(self)


    def Clear(self) -> "void":
        """Clear(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_Clear(self)


    def ClearAtomsAndBonds(self) -> "void":
        """ClearAtomsAndBonds(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearAtomsAndBonds(self)


    def ClearAtoms(self) -> "void":
        """ClearAtoms(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearAtoms(self)


    def ClearBonds(self) -> "void":
        """ClearBonds(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearBonds(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEAtomBondSet self) -> bool"""
        return _oechem.OEAtomBondSet_IsEmpty(self)


    def NumAtoms(self, *args) -> "unsigned int":
        """
        NumAtoms(OEAtomBondSet self) -> unsigned int
        NumAtoms(OEAtomBondSet self, OEUnaryAtomPred atompred) -> unsigned int
        """
        return _oechem.OEAtomBondSet_NumAtoms(self, *args)


    def NumBonds(self, *args) -> "unsigned int":
        """
        NumBonds(OEAtomBondSet self) -> unsigned int
        NumBonds(OEAtomBondSet self, OEUnaryBondPred bondpred) -> unsigned int
        """
        return _oechem.OEAtomBondSet_NumBonds(self, *args)


    def HasAtom(self, atom: 'OEAtomBase') -> "bool":
        """HasAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_HasAtom(self, atom)


    def HasBond(self, bond: 'OEBondBase') -> "bool":
        """HasBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_HasBond(self, bond)


    def AddAtom(self, atom: 'OEAtomBase') -> "bool":
        """AddAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_AddAtom(self, atom)


    def AddBond(self, bond: 'OEBondBase') -> "bool":
        """AddBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_AddBond(self, bond)


    def AddAtoms(self, atoms: 'OEAtomVector') -> "bool":
        """AddAtoms(OEAtomBondSet self, OEAtomVector atoms) -> bool"""
        return _oechem.OEAtomBondSet_AddAtoms(self, atoms)


    def AddBonds(self, bonds: 'OEBondVector') -> "bool":
        """AddBonds(OEAtomBondSet self, OEBondVector bonds) -> bool"""
        return _oechem.OEAtomBondSet_AddBonds(self, bonds)


    def Add(self, *args) -> "bool":
        """
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred, OEUnaryBondPred bondpred) -> bool
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred) -> bool
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryBondPred bondpred) -> bool
        Add(OEAtomBondSet self, OEAtomBondSet abset) -> bool
        """
        return _oechem.OEAtomBondSet_Add(self, *args)


    def RemoveAtom(self, atom: 'OEAtomBase') -> "bool":
        """RemoveAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_RemoveAtom(self, atom)


    def RemoveBond(self, bond: 'OEBondBase') -> "bool":
        """RemoveBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_RemoveBond(self, bond)


    def RemoveAtoms(self, atoms: 'OEAtomVector') -> "bool":
        """RemoveAtoms(OEAtomBondSet self, OEAtomVector atoms) -> bool"""
        return _oechem.OEAtomBondSet_RemoveAtoms(self, atoms)


    def RemoveBonds(self, bonds: 'OEBondVector') -> "bool":
        """RemoveBonds(OEAtomBondSet self, OEBondVector bonds) -> bool"""
        return _oechem.OEAtomBondSet_RemoveBonds(self, bonds)


    def Remove(self, *args) -> "bool":
        """
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred, OEUnaryBondPred bondpred) -> bool
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred) -> bool
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryBondPred bondpred) -> bool
        Remove(OEAtomBondSet self, OEAtomBondSet abset) -> bool
        """
        return _oechem.OEAtomBondSet_Remove(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEAtomBondSet self) -> bool"""
        return _oechem.OEAtomBondSet_Sweep(self)


    def Translate(self, amap: 'OEChem::OEAtomBase **', bmap: 'OEChem::OEBondBase **') -> "bool":
        """Translate(OEAtomBondSet self, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> bool"""
        return _oechem.OEAtomBondSet_Translate(self, amap, bmap)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEAtomBondSet self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEAtomBondSet self, OEUnaryAtomPred atompred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAtomBondSet_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEAtomBondSet self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEAtomBondSet self, OEUnaryBondPred bondpred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEAtomBondSet_GetBonds(self, *args)


    def GetParent(self) -> "OEChem::OEMolBase const *":
        """GetParent(OEAtomBondSet self) -> OEMolBase"""
        return _oechem.OEAtomBondSet_GetParent(self)


    def __str__(self) -> "std::string":
        """__str__(OEAtomBondSet self) -> std::string"""
        return _oechem.OEAtomBondSet___str__(self)

OEAtomBondSet_swigregister = _oechem.OEAtomBondSet_swigregister
OEAtomBondSet_swigregister(OEAtomBondSet)


def OESubsetMol(*args) -> "bool":
    """
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol) -> bool
    """
    return _oechem.OESubsetMol(*args)
class OEAtomBondSetIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEAtomBondSet)> 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<(OEChem::OEAtomBondSet)> self) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OEAtomBondSetIter rhs) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OESystem::OEIterBase< OEChem::OEAtomBondSet > * rhs) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBondSet >::NonConstA > * rhs) -> OEAtomBondSetIter
        """
        this = _oechem.new_OEAtomBondSetIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomBondSetIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
        """Copy(OEAtomBondSetIter self) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *"""
        return _oechem.OEAtomBondSetIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAtomBondSetIter self, OESystem::OEIterBase< OEChem::OEAtomBondSet > * ib)
        Push(OEAtomBondSetIter self, OEAtomBondSetIter iter)
        """
        return _oechem.OEAtomBondSetIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEAtomBondSet,OEChem::OEAtomBondSet > const &') -> "void":
        """Sort(OEAtomBondSetIter self, OESystem::OEBinaryPredicate< OEChem::OEAtomBondSet,OEChem::OEAtomBondSet > const & sort_criterion)"""
        return _oechem.OEAtomBondSetIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """ToFirst(OEAtomBondSetIter self) -> OEAtomBondSetIter"""
        return _oechem.OEAtomBondSetIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """ToLast(OEAtomBondSetIter self) -> OEAtomBondSetIter"""
        return _oechem.OEAtomBondSetIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBondSet &":
        """__ref__(OEAtomBondSetIter self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAtomBondSetIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAtomBondSetIter self) -> PyObject *"""
        return _oechem.OEAtomBondSetIter_next(self)


    def Target(self) -> "OEChem::OEAtomBondSet &":
        """Target(OEAtomBondSetIter self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """
        Next(OEAtomBondSetIter self) -> OEAtomBondSetIter
        Next(OEAtomBondSetIter self, int i) -> OEAtomBondSetIter
        """
        return _oechem.OEAtomBondSetIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """
        Prev(OEAtomBondSetIter self) -> OEAtomBondSetIter
        Prev(OEAtomBondSetIter self, int i) -> OEAtomBondSetIter
        """
        return _oechem.OEAtomBondSetIter_Prev(self, *args)

OEAtomBondSetIter_swigregister = _oechem.OEAtomBondSetIter_swigregister
OEAtomBondSetIter_swigregister(OEAtomBondSetIter)

class OESubSearch(object):
    """Proxy of C++ OEChem::OESubSearch 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__(OEChem::OESubSearch self) -> OESubSearch
        __init__(OEChem::OESubSearch self, char const * smarts, bool allowReorderAtoms=False) -> OESubSearch
        __init__(OEChem::OESubSearch self, char const * smarts) -> OESubSearch
        __init__(OEChem::OESubSearch self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OESubSearch
        __init__(OEChem::OESubSearch self, OEQMolBase arg2) -> OESubSearch
        __init__(OEChem::OESubSearch self, OESubSearch arg2) -> OESubSearch
        """
        this = _oechem.new_OESubSearch(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OESubSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OESubSearch self, char const * smarts, bool allowReorderAtoms=False) -> bool
        Init(OESubSearch self, char const * smarts) -> bool
        Init(OESubSearch self, OEQMolBase arg2) -> bool
        Init(OESubSearch self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> bool
        """
        return _oechem.OESubSearch_Init(self, *args)


    def AtomMatch(self, arg2: 'OEAtomBase') -> "bool":
        """AtomMatch(OESubSearch self, OEAtomBase arg2) -> bool"""
        return _oechem.OESubSearch_AtomMatch(self, arg2)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OESubSearch self, OEMolBase arg2) -> bool
        SingleMatch(OESubSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OESubSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OESubSearch self, OEMolBase arg2, bool uniquematch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEQMolBase arg2, bool uniquematch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OESubSearch_Match(self, *args)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OESubSearch self) -> OEQMolBase"""
        return _oechem.OESubSearch_GetPattern(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OESubSearch self) -> unsigned int"""
        return _oechem.OESubSearch_GetMaxMatches(self)


    def SetMaxMatches(self, m: 'unsigned int') -> "bool":
        """SetMaxMatches(OESubSearch self, unsigned int m) -> bool"""
        return _oechem.OESubSearch_SetMaxMatches(self, m)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OESubSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OESubSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OESubSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OESubSearch self)"""
        return _oechem.OESubSearch_ClearConstraints(self)


    def GetImpl(self, *args) -> "OEChem::OESearchImpl const *":
        """
        GetImpl(OESubSearch self) -> OEChem::OESearchImpl
        GetImpl(OESubSearch self) -> OEChem::OESearchImpl const *
        """
        return _oechem.OESubSearch_GetImpl(self, *args)

OESubSearch_swigregister = _oechem.OESubSearch_swigregister
OESubSearch_swigregister(OESubSearch)


def OEPrepareSearch(mol: 'OEMolBase', subs: 'OESubSearch', adjustH: 'bool'=False) -> "void":
    """
    OEPrepareSearch(OEMolBase mol, OESubSearch subs, bool adjustH=False)
    OEPrepareSearch(OEMolBase mol, OESubSearch subs)
    """
    return _oechem.OEPrepareSearch(mol, subs, adjustH)

def OECount(*args) -> "unsigned int":
    """
    OECount(OEMolBase arg1, OEUnaryAtomPred arg2) -> unsigned int
    OECount(OEMolBase arg1, OEUnaryBondPred arg2) -> unsigned int
    OECount(OEMolBase arg1, OEUnaryGroupPred arg2) -> unsigned int
    OECount(OEAtomBondSet abset, OEUnaryAtomPred atompred) -> unsigned int
    OECount(OEAtomBondSet abset, OEUnaryBondPred bondpred) -> unsigned int
    OECount(OEMolBase arg1, OESubSearch arg2, bool uniquematch=False) -> unsigned int
    OECount(OEMolBase arg1, OESubSearch arg2) -> unsigned int
    """
    return _oechem.OECount(*args)
class OESubSearchIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OESubSearch)> 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<(OEChem::OESubSearch)> self) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESubSearchIter rhs) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESystem::OEIterBase< OEChem::OESubSearch > * rhs) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OESubSearch >::NonConstA > * rhs) -> OESubSearchIter
        """
        this = _oechem.new_OESubSearchIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OESubSearch > *":
        """Copy(OESubSearchIter self) -> OESystem::OEIterBase< OEChem::OESubSearch > *"""
        return _oechem.OESubSearchIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESubSearchIter self, OESystem::OEIterBase< OEChem::OESubSearch > * ib)
        Push(OESubSearchIter self, OESubSearchIter iter)
        """
        return _oechem.OESubSearchIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OESubSearch,OEChem::OESubSearch > const &') -> "void":
        """Sort(OESubSearchIter self, OESystem::OEBinaryPredicate< OEChem::OESubSearch,OEChem::OESubSearch > const & sort_criterion)"""
        return _oechem.OESubSearchIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """ToFirst(OESubSearchIter self) -> OESubSearchIter"""
        return _oechem.OESubSearchIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """ToLast(OESubSearchIter self) -> OESubSearchIter"""
        return _oechem.OESubSearchIter_ToLast(self)


    def __ref__(self) -> "OEChem::OESubSearch &":
        """__ref__(OESubSearchIter self) -> OESubSearch"""
        return _oechem.OESubSearchIter___ref__(self)


    def IsValid(self):
      return _oechem.OESubSearchIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESubSearchIter self) -> PyObject *"""
        return _oechem.OESubSearchIter_next(self)


    def Target(self) -> "OEChem::OESubSearch &":
        """Target(OESubSearchIter self) -> OESubSearch"""
        return _oechem.OESubSearchIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """
        Next(OESubSearchIter self) -> OESubSearchIter
        Next(OESubSearchIter self, int i) -> OESubSearchIter
        """
        return _oechem.OESubSearchIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """
        Prev(OESubSearchIter self) -> OESubSearchIter
        Prev(OESubSearchIter self, int i) -> OESubSearchIter
        """
        return _oechem.OESubSearchIter_Prev(self, *args)

OESubSearchIter_swigregister = _oechem.OESubSearchIter_swigregister
OESubSearchIter_swigregister(OESubSearchIter)


def OEExpandSuperAtoms(mol: 'OEMolBase') -> "bool":
    """OEExpandSuperAtoms(OEMolBase mol) -> bool"""
    return _oechem.OEExpandSuperAtoms(mol)

def OETriposAtomNames(mol: 'OEMolBase') -> "void":
    """OETriposAtomNames(OEMolBase mol)"""
    return _oechem.OETriposAtomNames(mol)

def OETriposAtomTypes(mol: 'OEMolBase') -> "bool":
    """OETriposAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OETriposAtomTypes(mol)

def OETriposAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OETriposAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OETriposAtomTypeNames(mol)

def OETriposBondTypeNames(mol: 'OEMolBase') -> "void":
    """OETriposBondTypeNames(OEMolBase mol)"""
    return _oechem.OETriposBondTypeNames(mol)

def OETriposResonantTypeNames(mol: 'OEMolBase') -> "void":
    """OETriposResonantTypeNames(OEMolBase mol)"""
    return _oechem.OETriposResonantTypeNames(mol)

def OETriposTypeNames(mol: 'OEMolBase') -> "bool":
    """OETriposTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OETriposTypeNames(mol)

def OETriposAtomType(atm: 'OEAtomBase') -> "unsigned int":
    """OETriposAtomType(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETriposAtomType(atm)

def OETriposTypeName(type: 'unsigned int') -> "char const *":
    """OETriposTypeName(unsigned int type) -> char const *"""
    return _oechem.OETriposTypeName(type)

def OETriposTypeElement(type: 'unsigned int') -> "unsigned int":
    """OETriposTypeElement(unsigned int type) -> unsigned int"""
    return _oechem.OETriposTypeElement(type)

def OETriposTypeIndex(name: 'char const *') -> "unsigned int":
    """OETriposTypeIndex(char const * name) -> unsigned int"""
    return _oechem.OETriposTypeIndex(name)

def OETriposOrderAtoms(mol: 'OEMolBase') -> "void":
    """OETriposOrderAtoms(OEMolBase mol)"""
    return _oechem.OETriposOrderAtoms(mol)

def OEGetSoleNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetSoleNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetSoleNeighbor(atm)

def OEGetSingleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetSingleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetSingleBondNeighbor(atm)

def OEGetDoubleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetDoubleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetDoubleBondNeighbor(atm)

def OEGetTripleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetTripleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetTripleBondNeighbor(atm)

def OEGetSoleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleBond(atm)

def OEGetSoleSingleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleSingleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleSingleBond(atm)

def OEGetSoleDoubleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleDoubleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleDoubleBond(atm)

def OEGetSoleTripleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleTripleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleTripleBond(atm)

def OEGetOtherNeighbor(*args) -> "OEChem::OEBondBase *":
    """
    OEGetOtherNeighbor(OEAtomBase atm, OEAtomBase nbr) -> OEAtomBase
    OEGetOtherNeighbor(OEAtomBase atm, OEBondBase nbr) -> OEBondBase
    """
    return _oechem.OEGetOtherNeighbor(*args)

def OEIsTerminalOxygen(atm: 'OEAtomBase') -> "bool":
    """OEIsTerminalOxygen(OEAtomBase atm) -> bool"""
    return _oechem.OEIsTerminalOxygen(atm)

def OEIsTerminalSulfur(atm: 'OEAtomBase') -> "bool":
    """OEIsTerminalSulfur(OEAtomBase atm) -> bool"""
    return _oechem.OEIsTerminalSulfur(atm)

def OEHasSingleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasSingleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasSingleBond(atm)

def OEHasDoubleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasDoubleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasDoubleBond(atm)

def OEHasTripleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasTripleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasTripleBond(atm)

def OEHasMultipleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasMultipleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasMultipleBond(atm)

def OEHasDoubleBondO(atm: 'OEAtomBase') -> "bool":
    """OEHasDoubleBondO(OEAtomBase atm) -> bool"""
    return _oechem.OEHasDoubleBondO(atm)

def OESingleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OESingleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OESingleBondCount(atm)

def OEDoubleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDoubleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDoubleBondCount(atm)

def OETripleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETripleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETripleBondCount(atm)

def OEMultipleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEMultipleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEMultipleBondCount(atm)

def OEDoubleBondOCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDoubleBondOCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDoubleBondOCount(atm)

def OETerminalOCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETerminalOCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETerminalOCount(atm)

def OETerminalSCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETerminalSCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETerminalSCount(atm)
OE_OECHEM_VERSION = _oechem.OE_OECHEM_VERSION

def OEChemGetRelease() -> "char const *":
    """OEChemGetRelease() -> char const *"""
    return _oechem.OEChemGetRelease()

def OEChemGetVersion() -> "unsigned int":
    """OEChemGetVersion() -> unsigned int"""
    return _oechem.OEChemGetVersion()

def OEChemGetArch() -> "char const *":
    """OEChemGetArch() -> char const *"""
    return _oechem.OEChemGetArch()

def OEChemGetPlatform() -> "char const *":
    """OEChemGetPlatform() -> char const *"""
    return _oechem.OEChemGetPlatform()

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

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

def OEChemGetSite(*args) -> "std::string":
    """
    OEChemGetSite(std::string & site) -> bool
    OEChemGetSite() -> std::string
    """
    return _oechem.OEChemGetSite(*args)
class OELingoSim(object):
    """Proxy of C++ OEChem::OELingoSim 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__(OEChem::OELingoSim self, OEMolBase mol, unsigned int type) -> OELingoSim
        __init__(OEChem::OELingoSim self, OEMolBase mol) -> OELingoSim
        __init__(OEChem::OELingoSim self, char const * str=None, unsigned int type) -> OELingoSim
        __init__(OEChem::OELingoSim self, char const * str=None) -> OELingoSim
        __init__(OEChem::OELingoSim self) -> OELingoSim
        __init__(OEChem::OELingoSim self, std::string const & str) -> OELingoSim
        __init__(OEChem::OELingoSim self, OELingoSim rhs) -> OELingoSim
        """
        this = _oechem.new_OELingoSim(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELingoSim
    __del__ = lambda self: None

    def Similarity(self, *args) -> "float":
        """
        Similarity(OELingoSim self, OEMolBase mol) -> float
        Similarity(OELingoSim self, char const * str) -> float
        """
        return _oechem.OELingoSim_Similarity(self, *args)


    def Init(self, *args) -> "bool":
        """
        Init(OELingoSim self, OEMolBase mol) -> bool
        Init(OELingoSim self, char const * str) -> bool
        """
        return _oechem.OELingoSim_Init(self, *args)


    def IsValid(self) -> "bool":
        """IsValid(OELingoSim self) -> bool"""
        return _oechem.OELingoSim_IsValid(self)


    def GetType(self) -> "unsigned int":
        """GetType(OELingoSim self) -> unsigned int"""
        return _oechem.OELingoSim_GetType(self)

OELingoSim_swigregister = _oechem.OELingoSim_swigregister
OELingoSim_swigregister(OELingoSim)

class OETransBase(object):
    """Proxy of C++ OEChem::OETransBase 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__ = _oechem.delete_OETransBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OETransBase self) -> OETransBase"""
        return _oechem.OETransBase_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OETransBase self) -> OETransBase"""
        return _oechem.OETransBase_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OETransBase self, float * arg2, float * arg3)
        Extract(OETransBase self, float * arg2, double * arg3)
        Extract(OETransBase self, double * arg2, float * arg3)
        Extract(OETransBase self, double * arg2, double * arg3)
        """
        return _oechem.OETransBase_Extract(self, *args)


    def Transform(self, *args) -> "void":
        """
        Transform(OETransBase self, OEMolBase mol)
        Transform(OETransBase self, OEConfBase conf)
        Transform(OETransBase self, float * coords, unsigned int rows, unsigned int dim)
        Transform(OETransBase self, double * coords, unsigned int rows, unsigned int dim)
        """
        return _oechem.OETransBase_Transform(self, *args)

OETransBase_swigregister = _oechem.OETransBase_swigregister
OETransBase_swigregister(OETransBase)

class OEQuaternion(OETransBase):
    """Proxy of C++ OEChem::OEQuaternion 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__(OEChem::OEQuaternion self) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const w, double const x, double const y, double const z) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const w, float const x, float const y, float const z) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const * vec, double angle) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const * vec, float angle) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const * quat) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const * quat) -> OEQuaternion
        """
        this = _oechem.new_OEQuaternion(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetQuaternion(self, *args) -> "void":
        """
        GetQuaternion(OEQuaternion self, double * quat)
        GetQuaternion(OEQuaternion self, float * quat)
        """
        return _oechem.OEQuaternion_GetQuaternion(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OEQuaternion self) -> OETransBase"""
        return _oechem.OEQuaternion_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OEQuaternion self) -> OETransBase"""
        return _oechem.OEQuaternion_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OEQuaternion self, float * r, float * t)
        Extract(OEQuaternion self, float * r, double * t)
        Extract(OEQuaternion self, double * r, float * t)
        Extract(OEQuaternion self, double * r, double * t)
        """
        return _oechem.OEQuaternion_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OEQuaternion
    __del__ = lambda self: None
OEQuaternion_swigregister = _oechem.OEQuaternion_swigregister
OEQuaternion_swigregister(OEQuaternion)

class OEEuler(OETransBase):
    """Proxy of C++ OEChem::OEEuler 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__(OEChem::OEEuler self) -> OEEuler
        __init__(OEChem::OEEuler self, double const * angles) -> OEEuler
        __init__(OEChem::OEEuler self, float const * angles) -> OEEuler
        __init__(OEChem::OEEuler self, double phi, double theta, double psi) -> OEEuler
        """
        this = _oechem.new_OEEuler(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetAngles(self, *args) -> "void":
        """
        GetAngles(OEEuler self, double * angles)
        GetAngles(OEEuler self, float * angles)
        """
        return _oechem.OEEuler_GetAngles(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OEEuler self) -> OETransBase"""
        return _oechem.OEEuler_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OEEuler self) -> OETransBase"""
        return _oechem.OEEuler_GetInverse(self)


    def GetPhi(self) -> "double":
        """GetPhi(OEEuler self) -> double"""
        return _oechem.OEEuler_GetPhi(self)


    def GetTheta(self) -> "double":
        """GetTheta(OEEuler self) -> double"""
        return _oechem.OEEuler_GetTheta(self)


    def GetPsi(self) -> "double":
        """GetPsi(OEEuler self) -> double"""
        return _oechem.OEEuler_GetPsi(self)


    def SetPhi(self, radians: 'double') -> "void":
        """SetPhi(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetPhi(self, radians)


    def SetTheta(self, radians: 'double') -> "void":
        """SetTheta(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetTheta(self, radians)


    def SetPsi(self, radians: 'double') -> "void":
        """SetPsi(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetPsi(self, radians)


    def Extract(self, *args) -> "void":
        """
        Extract(OEEuler self, float * r, float * t)
        Extract(OEEuler self, float * r, double * t)
        Extract(OEEuler self, double * r, float * t)
        Extract(OEEuler self, double * r, double * t)
        """
        return _oechem.OEEuler_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OEEuler
    __del__ = lambda self: None
OEEuler_swigregister = _oechem.OEEuler_swigregister
OEEuler_swigregister(OEEuler)

class OERotMatrix(OETransBase):
    """Proxy of C++ OEChem::OERotMatrix 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__(OEChem::OERotMatrix self) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, double const * mat) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, float const * mat) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, OERotMatrix rhs) -> OERotMatrix
        """
        this = _oechem.new_OERotMatrix(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetRotMatrix(self, *args) -> "void":
        """
        GetRotMatrix(OERotMatrix self, double * mat)
        GetRotMatrix(OERotMatrix self, float * mat)
        """
        return _oechem.OERotMatrix_GetRotMatrix(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OERotMatrix self) -> OETransBase"""
        return _oechem.OERotMatrix_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OERotMatrix self) -> OETransBase"""
        return _oechem.OERotMatrix_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OERotMatrix self, float * r, float * t)
        Extract(OERotMatrix self, float * r, double * t)
        Extract(OERotMatrix self, double * r, float * t)
        Extract(OERotMatrix self, double * r, double * t)
        """
        return _oechem.OERotMatrix_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OERotMatrix
    __del__ = lambda self: None
OERotMatrix_swigregister = _oechem.OERotMatrix_swigregister
OERotMatrix_swigregister(OERotMatrix)

class OETranslation(OETransBase):
    """Proxy of C++ OEChem::OETranslation 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__(OEChem::OETranslation self) -> OETranslation
        __init__(OEChem::OETranslation self, double const * vec) -> OETranslation
        __init__(OEChem::OETranslation self, float const * vec) -> OETranslation
        __init__(OEChem::OETranslation self, double dx, double dy, double dz) -> OETranslation
        """
        this = _oechem.new_OETranslation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iadd__(self, rhs: 'OETranslation') -> "OEChem::OETranslation &":
        """__iadd__(OETranslation self, OETranslation rhs) -> OETranslation"""
        return _oechem.OETranslation___iadd__(self, rhs)


    def GetTranslation(self, *args) -> "void":
        """
        GetTranslation(OETranslation self, double * vec)
        GetTranslation(OETranslation self, float * vec)
        """
        return _oechem.OETranslation_GetTranslation(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OETranslation self) -> OETransBase"""
        return _oechem.OETranslation_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OETranslation self) -> OETransBase"""
        return _oechem.OETranslation_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OETranslation self, float * r, float * t)
        Extract(OETranslation self, float * r, double * t)
        Extract(OETranslation self, double * r, float * t)
        Extract(OETranslation self, double * r, double * t)
        """
        return _oechem.OETranslation_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OETranslation
    __del__ = lambda self: None
OETranslation_swigregister = _oechem.OETranslation_swigregister
OETranslation_swigregister(OETranslation)

class OETrans(object):
    """Proxy of C++ OEChem::OETrans 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__(OEChem::OETrans self) -> OETrans
        __init__(OEChem::OETrans self, OETransBase tr) -> OETrans
        __init__(OEChem::OETrans self, OETrans rhs) -> OETrans
        """
        this = _oechem.new_OETrans(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iadd__(self, rhs: 'OETrans') -> "OEChem::OETrans &":
        """__iadd__(OETrans self, OETrans rhs) -> OETrans"""
        return _oechem.OETrans___iadd__(self, rhs)


    def Clear(self) -> "void":
        """Clear(OETrans self)"""
        return _oechem.OETrans_Clear(self)

    __swig_destroy__ = _oechem.delete_OETrans
    __del__ = lambda self: None

    def GetInverse(self, inverse: 'OETrans') -> "bool":
        """GetInverse(OETrans self, OETrans inverse) -> bool"""
        return _oechem.OETrans_GetInverse(self, inverse)


    def PushFront(self, t: 'OETransBase') -> "void":
        """PushFront(OETrans self, OETransBase t)"""
        return _oechem.OETrans_PushFront(self, t)


    def PushBack(self, t: 'OETransBase') -> "void":
        """PushBack(OETrans self, OETransBase t)"""
        return _oechem.OETrans_PushBack(self, t)


    def Compress(self) -> "void":
        """Compress(OETrans self)"""
        return _oechem.OETrans_Compress(self)


    def GetTransforms(self) -> "OESystem::OEIterBase< OEChem::OETransBase > *":
        """GetTransforms(OETrans self) -> OESystem::OEIterBase< OEChem::OETransBase > *"""
        return _oechem.OETrans_GetTransforms(self)


    def IsValid(self):
      return _oechem.OETrans___nonzero__(self)



    def Transform(self, *args) -> "void":
        """
        Transform(OETrans self, float * coords, unsigned int ncoords, unsigned int dim)
        Transform(OETrans self, double * coords, unsigned int ncoords, unsigned int dim)
        Transform(OETrans self, OEConfBase conf)
        Transform(OETrans self, OEMolBase mol)
        """
        return _oechem.OETrans_Transform(self, *args)


    def Extract(self, *args) -> "void":
        """
        Extract(OETrans self, float * rmat, float * trans, bool clobber=True)
        Extract(OETrans self, float * rmat, float * trans)
        Extract(OETrans self, double * rmat, double * trans, bool clobber=True)
        Extract(OETrans self, double * rmat, double * trans)
        """
        return _oechem.OETrans_Extract(self, *args)

OETrans_swigregister = _oechem.OETrans_swigregister
OETrans_swigregister(OETrans)



def OEAddLicenseFromHttp(url):
    """Retrieve a presumably valid license from url and add its permissions to the licensing system.
       Only HTTP and HTTPS protocols are supported.  Query parameters in url are ignored."""

    import sys
    if sys.version_info[0] >= 3:
        import http.client as httplib
        from urllib.parse import urlparse
    else:
        import httplib
        from urlparse import urlparse

    if not url:
        raise Exception("URL can't be None and must not be empty")

    parts = urlparse(url)
    conn = None
    try:
        if parts.scheme == "http":
            conn = httplib.HTTPConnection(parts.netloc, timeout=10)
        elif parts.scheme == "https":
            conn = httplib.HTTPSConnection(parts.netloc, timeout=10)
        else:
            raise Exception("Invalid url scheme: " + parts.scheme)

        conn.request("GET", parts.path)
        response = conn.getresponse()
        if response.status != httplib.OK:
           raise Exception("Can't download license: server response status: %d %s" % (response.status, response.reason))

        ctype = response.getheader("Content-type")
        if ctype not in ["text/plain", "text/html; charset=utf-8", "text/plain; charset=utf-8"]:
            raise Exception("Invalid Content-type encoding: " + ctype)

        licenseContent = response.read()
        if sys.version_info[0] >= 3:
            licenseContent = licenseContent.decode("UTF-8")
        OEAddLicenseData(licenseContent)
    finally:
        if conn:
            conn.close()


def OEAddLicenseData(data: 'std::string const &') -> "void":
    """OEAddLicenseData(std::string const & data)"""
    return _oechem.OEAddLicenseData(data)

def OEAddLicenseKey(key: 'char const *', licensee: 'char const *', site: 'char const *') -> "int":
    """OEAddLicenseKey(char const * key, char const * licensee, char const * site) -> int"""
    return _oechem.OEAddLicenseKey(key, licensee, site)

def OESetLicenseFile(fname: 'char const *') -> "void":
    """OESetLicenseFile(char const * fname)"""
    return _oechem.OESetLicenseFile(fname)

def OESetLicenseFileCheck(state: 'bool') -> "void":
    """OESetLicenseFileCheck(bool state)"""
    return _oechem.OESetLicenseFileCheck(state)

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

def OEGetIPAddress() -> "unsigned char *":
    """OEGetIPAddress() -> unsigned char *"""
    return _oechem.OEGetIPAddress()

def OEGetHostIdent() -> "unsigned int":
    """OEGetHostIdent() -> unsigned int"""
    return _oechem.OEGetHostIdent()

def OEGetDomainName() -> "char *":
    """OEGetDomainName() -> char *"""
    return _oechem.OEGetDomainName()

def OEGetHostName() -> "char *":
    """OEGetHostName() -> char *"""
    return _oechem.OEGetHostName()

def OEGetNumProcessors() -> "unsigned int":
    """OEGetNumProcessors() -> unsigned int"""
    return _oechem.OEGetNumProcessors()

def OEToolkitsGetRelease() -> "std::string":
    """OEToolkitsGetRelease() -> std::string"""
    return _oechem.OEToolkitsGetRelease()
OE_STREAM_BUFFER_SIZE = _oechem.OE_STREAM_BUFFER_SIZE
OE_FILE_SEP_CHAR = _oechem.OE_FILE_SEP_CHAR
OEEOF = _oechem.OEEOF
class OEIOError(object):
    """Proxy of C++ OEPlatform::OEIOError 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__(OEPlatform::OEIOError self, char const * msg) -> OEIOError
        __init__(OEPlatform::OEIOError self) -> OEIOError
        """
        this = _oechem.new_OEIOError(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def what(self) -> "char const *":
        """what(OEIOError self) -> char const *"""
        return _oechem.OEIOError_what(self)

    __swig_destroy__ = _oechem.delete_OEIOError
    __del__ = lambda self: None
OEIOError_swigregister = _oechem.OEIOError_swigregister
OEIOError_swigregister(OEIOError)

class oestream(object):
    """Proxy of C++ OEPlatform::oestream 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__(OEPlatform::oestream self) -> oestream"""
        this = _oechem.new_oestream()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oestream
    __del__ = lambda self: None
    beg = _oechem.oestream_beg
    cur = _oechem.oestream_cur
    end = _oechem.oestream_end

    def eof(self) -> "bool":
        """eof(oestream self) -> bool"""
        return _oechem.oestream_eof(self)


    def length(self) -> "oefpos_t":
        """length(oestream self) -> oefpos_t"""
        return _oechem.oestream_length(self)


    def size(self) -> "oefpos_t":
        """size(oestream self) -> oefpos_t"""
        return _oechem.oestream_size(self)


    def tell(self) -> "oefpos_t":
        """tell(oestream self) -> oefpos_t"""
        return _oechem.oestream_tell(self)


    def seek(self, *args) -> "bool":
        """
        seek(oestream self, oefpos_t pos) -> bool
        seek(oestream self, oefpos_t offset, OEPlatform::oestream::seek_dir dir) -> bool
        """
        return _oechem.oestream_seek(self, *args)


    def rewind(self) -> "bool":
        """rewind(oestream self) -> bool"""
        return _oechem.oestream_rewind(self)


    def IsValid(self):
      return _oechem.oestream___nonzero__(self)


oestream_swigregister = _oechem.oestream_swigregister
oestream_swigregister(oestream)

class oeistream(oestream):
    """Proxy of C++ OEPlatform::oeistream 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__(OEPlatform::oeistream self) -> oeistream"""
        this = _oechem.new_oeistream()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def open(self, *args) -> "bool":
        """
        open(oeistream self, char const * name) -> bool
        open(oeistream self, unsigned char * buffer, oesize_t len) -> bool
        """
        return _oechem.oeistream_open(self, *args)


    def close(self) -> "void":
        """close(oeistream self)"""
        return _oechem.oeistream_close(self)


    def getbyte(self) -> "int":
        """getbyte(oeistream self) -> int"""
        return _oechem.oeistream_getbyte(self)


    def get(self, *args) -> "bool":
        """
        get(oeistream self, char & c) -> bool
        get(oeistream self, signed char & c) -> bool
        get(oeistream self, unsigned char & c) -> bool
        """
        return _oechem.oeistream_get(self, *args)


    def skipbyte(self) -> "bool":
        """skipbyte(oeistream self) -> bool"""
        return _oechem.oeistream_skipbyte(self)


    def peekbyte(self) -> "int":
        """peekbyte(oeistream self) -> int"""
        return _oechem.oeistream_peekbyte(self)


    def skip(self, len: 'oefpos_t') -> "bool":
        """skip(oeistream self, oefpos_t len) -> bool"""
        return _oechem.oeistream_skip(self, len)


    def skipline(self) -> "bool":
        """skipline(oeistream self) -> bool"""
        return _oechem.oeistream_skipline(self)


    def getline(self, *args) -> "bool":
        """
        getline(oeistream self, std::string & sbuffer, oesize_t max) -> bool
        getline(oeistream self, std::string & sbuffer) -> bool
        """
        return _oechem.oeistream_getline(self, *args)


    def gettoken(self, sbuffer: 'std::string &', max: 'oesize_t') -> "bool":
        """gettoken(oeistream self, std::string & sbuffer, oesize_t max) -> bool"""
        return _oechem.oeistream_gettoken(self, sbuffer, max)


    def read(self, *args) -> "PyObject *":
        """
        read(oeistream self, std::string & sbuffer) -> oesize_t
        read(oeistream self, oesize_t size) -> PyObject
        read(oeistream self) -> PyObject *
        """
        return _oechem.oeistream_read(self, *args)

    __swig_destroy__ = _oechem.delete_oeistream
    __del__ = lambda self: None
oeistream_swigregister = _oechem.oeistream_swigregister
oeistream_swigregister(oeistream)

class oeostream(oestream):
    """Proxy of C++ OEPlatform::oeostream 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__(OEPlatform::oeostream self) -> oeostream"""
        this = _oechem.new_oeostream()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def open(self, *args) -> "bool":
        """
        open(oeostream self, char const * name) -> bool
        open(oeostream self, unsigned char * buffer, oesize_t len) -> bool
        """
        return _oechem.oeostream_open(self, *args)


    def close(self) -> "void":
        """close(oeostream self)"""
        return _oechem.oeostream_close(self)


    def flush(self) -> "bool":
        """flush(oeostream self) -> bool"""
        return _oechem.oeostream_flush(self)


    def putbyte(self, c: 'char') -> "bool":
        """putbyte(oeostream self, char c) -> bool"""
        return _oechem.oeostream_putbyte(self, c)


    def write(self, *args) -> "PyObject *":
        """
        write(oeostream self, char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, unsigned char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, signed char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, std::string const & buffer, oesize_t len) -> oesize_t
        write(oeostream self, std::string const & buffer) -> oesize_t
        write(oeostream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oeostream_write(self, *args)

    __swig_destroy__ = _oechem.delete_oeostream
    __del__ = lambda self: None
oeostream_swigregister = _oechem.oeostream_swigregister
oeostream_swigregister(oeostream)


def OEOpenIStream(arg1: 'char const *') -> "OEPlatform::oeistream *":
    """OEOpenIStream(char const * arg1) -> oeistream"""
    return _oechem.OEOpenIStream(arg1)

def OEOpenOStream(arg1: 'char const *') -> "OEPlatform::oeostream *":
    """OEOpenOStream(char const * arg1) -> oeostream"""
    return _oechem.OEOpenOStream(arg1)

def OECloseIStream(arg1: 'oeistream') -> "void":
    """OECloseIStream(oeistream arg1)"""
    return _oechem.OECloseIStream(arg1)

def OECloseOStream(arg1: 'oeostream') -> "void":
    """OECloseOStream(oeostream arg1)"""
    return _oechem.OECloseOStream(arg1)

def OERegisterIStream(arg1: 'char const *', arg2: 'oeistream_alloc_t', arg3: 'oeistream_dealloc_t') -> "bool":
    """OERegisterIStream(char const * arg1, oeistream_alloc_t arg2, oeistream_dealloc_t arg3) -> bool"""
    return _oechem.OERegisterIStream(arg1, arg2, arg3)

def OERegisterOStream(arg1: 'char const *', arg2: 'oeostream_alloc_t', arg3: 'oeostream_dealloc_t') -> "bool":
    """OERegisterOStream(char const * arg1, oeostream_alloc_t arg2, oeostream_dealloc_t arg3) -> bool"""
    return _oechem.OERegisterOStream(arg1, arg2, arg3)
class oeisstream(oeistream):
    """Proxy of C++ OEPlatform::oeisstream class."""

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

    def clear(self) -> "void":
        """clear(oeisstream self)"""
        return _oechem.oeisstream_clear(self)

    __swig_destroy__ = _oechem.delete_oeisstream
    __del__ = lambda self: None

    def reset(self) -> "bool":
        """reset(oeisstream self) -> bool"""
        return _oechem.oeisstream_reset(self)


    def getbuffer(self, buffer: 'std::string &') -> "bool":
        """getbuffer(oeisstream self, std::string & buffer) -> bool"""
        return _oechem.oeisstream_getbuffer(self, buffer)


    def __str__(self) -> "std::string":
        """__str__(oeisstream self) -> std::string"""
        return _oechem.oeisstream___str__(self)


    def __init__(self, *args):
        """
        __init__(OEPlatform::oeisstream self, char const * buffer, oesize_t len, bool copy=True) -> oeisstream
        __init__(OEPlatform::oeisstream self, char const * buffer, oesize_t len) -> oeisstream
        __init__(OEPlatform::oeisstream self, std::string const & buffer) -> oeisstream
        __init__(OEPlatform::oeisstream self) -> oeisstream
        __init__(OEPlatform::oeisstream self, oeisstream rhs) -> oeisstream
        __init__(OEPlatform::oeisstream self, PyObject * bytes) -> oeisstream
        """
        this = _oechem.new_oeisstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def set(self, *args) -> "PyObject *":
        """
        set(oeisstream self, char const * arg2, oesize_t arg3, bool arg4) -> bool
        set(oeisstream self, std::string const & arg2) -> bool
        set(oeisstream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oeisstream_set(self, *args)

oeisstream_swigregister = _oechem.oeisstream_swigregister
oeisstream_swigregister(oeisstream)

class oeosstream(oeostream):
    """Proxy of C++ OEPlatform::oeosstream 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__(OEPlatform::oeosstream self) -> oeosstream
        __init__(OEPlatform::oeosstream self, unsigned char const * arg2, oesize_t arg3) -> oeosstream
        __init__(OEPlatform::oeosstream self, char const * arg2) -> oeosstream
        """
        this = _oechem.new_oeosstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeosstream
    __del__ = lambda self: None

    def clear(self) -> "void":
        """clear(oeosstream self)"""
        return _oechem.oeosstream_clear(self)


    def set(self, *args) -> "bool":
        """
        set(oeosstream self, char const * arg2) -> bool
        set(oeosstream self, unsigned char const * arg2, oesize_t arg3) -> bool
        """
        return _oechem.oeosstream_set(self, *args)


    def __str__(self) -> "std::string":
        """__str__(oeosstream self) -> std::string"""
        return _oechem.oeosstream___str__(self)


    def str(self) -> "PyObject *":
        """str(oeosstream self) -> PyObject *"""
        return _oechem.oeosstream_str(self)

oeosstream_swigregister = _oechem.oeosstream_swigregister
oeosstream_swigregister(oeosstream)

class oeifstream(oeistream):
    """Proxy of C++ OEPlatform::oeifstream 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__(OEPlatform::oeifstream self) -> oeifstream
        __init__(OEPlatform::oeifstream self, int ifd) -> oeifstream
        __init__(OEPlatform::oeifstream self, char const * filename) -> oeifstream
        """
        this = _oechem.new_oeifstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeifstream
    __del__ = lambda self: None

    def fd(self) -> "int":
        """fd(oeifstream self) -> int"""
        return _oechem.oeifstream_fd(self)


    def openfd(self, ifd: 'int', closefd: 'bool') -> "bool":
        """openfd(oeifstream self, int ifd, bool closefd) -> bool"""
        return _oechem.oeifstream_openfd(self, ifd, closefd)


    def pread(self, buffer: 'char *', len: 'oesize_t', offset: 'oefpos_t') -> "oesize_t":
        """pread(oeifstream self, char * buffer, oesize_t len, oefpos_t offset) -> oesize_t"""
        return _oechem.oeifstream_pread(self, buffer, len, offset)

oeifstream_swigregister = _oechem.oeifstream_swigregister
oeifstream_swigregister(oeifstream)

class oeofstream(oeostream):
    """Proxy of C++ OEPlatform::oeofstream 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__(OEPlatform::oeofstream self) -> oeofstream
        __init__(OEPlatform::oeofstream self, int ofd) -> oeofstream
        __init__(OEPlatform::oeofstream self, char const * filename) -> oeofstream
        """
        this = _oechem.new_oeofstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeofstream
    __del__ = lambda self: None

    def fd(self) -> "int":
        """fd(oeofstream self) -> int"""
        return _oechem.oeofstream_fd(self)


    def openfd(self, ofd: 'int', closefd: 'bool') -> "bool":
        """openfd(oeofstream self, int ofd, bool closefd) -> bool"""
        return _oechem.oeofstream_openfd(self, ofd, closefd)


    def append(self, filename: 'char const *') -> "bool":
        """append(oeofstream self, char const * filename) -> bool"""
        return _oechem.oeofstream_append(self, filename)

oeofstream_swigregister = _oechem.oeofstream_swigregister
oeofstream_swigregister(oeofstream)

class oeiofstream(oeofstream):
    """Proxy of C++ OEPlatform::oeiofstream 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__(OEPlatform::oeiofstream self) -> oeiofstream
        __init__(OEPlatform::oeiofstream self, char const * filename) -> oeiofstream
        __init__(OEPlatform::oeiofstream self, std::string const & filename) -> oeiofstream
        """
        this = _oechem.new_oeiofstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeiofstream
    __del__ = lambda self: None

    def pread(self, buffer: 'char *', len: 'oesize_t', offset: 'oefpos_t') -> "oesize_t":
        """pread(oeiofstream self, char * buffer, oesize_t len, oefpos_t offset) -> oesize_t"""
        return _oechem.oeiofstream_pread(self, buffer, len, offset)

oeiofstream_swigregister = _oechem.oeiofstream_swigregister
oeiofstream_swigregister(oeiofstream)

class oemultiostream(oeostream):
    """Proxy of C++ OEPlatform::oemultiostream 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__(OEPlatform::oemultiostream self) -> oemultiostream"""
        this = _oechem.new_oemultiostream()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemultiostream
    __del__ = lambda self: None

    def addstream(self, ostr: 'oeostream', owned: 'bool'=False) -> "void":
        """
        addstream(oemultiostream self, oeostream ostr, bool owned=False)
        addstream(oemultiostream self, oeostream ostr)
        """
        return _oechem.oemultiostream_addstream(self, ostr, owned)


    def clear(self) -> "void":
        """clear(oemultiostream self)"""
        return _oechem.oemultiostream_clear(self)

oemultiostream_swigregister = _oechem.oemultiostream_swigregister
oemultiostream_swigregister(oemultiostream)

class oeiwrapperstream(oeistream):
    """Proxy of C++ OEPlatform::oeiwrapperstream 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__(OEPlatform::oeiwrapperstream self) -> oeiwrapperstream
        __init__(OEPlatform::oeiwrapperstream self, oeistream isptr, bool deleteptr) -> oeiwrapperstream
        """
        this = _oechem.new_oeiwrapperstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeiwrapperstream
    __del__ = lambda self: None

    def stream(self) -> "OEPlatform::oeistream *":
        """stream(oeiwrapperstream self) -> oeistream"""
        return _oechem.oeiwrapperstream_stream(self)


    def clear(self) -> "void":
        """clear(oeiwrapperstream self)"""
        return _oechem.oeiwrapperstream_clear(self)


    def set(self, isptr: 'oeistream', deleteptr: 'bool') -> "bool":
        """set(oeiwrapperstream self, oeistream isptr, bool deleteptr) -> bool"""
        return _oechem.oeiwrapperstream_set(self, isptr, deleteptr)

oeiwrapperstream_swigregister = _oechem.oeiwrapperstream_swigregister
oeiwrapperstream_swigregister(oeiwrapperstream)

class oeowrapperstream(oeostream):
    """Proxy of C++ OEPlatform::oeowrapperstream 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__(OEPlatform::oeowrapperstream self) -> oeowrapperstream
        __init__(OEPlatform::oeowrapperstream self, oeostream osptr, bool deleteptr) -> oeowrapperstream
        """
        this = _oechem.new_oeowrapperstream(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeowrapperstream
    __del__ = lambda self: None

    def stream(self) -> "OEPlatform::oeostream *":
        """stream(oeowrapperstream self) -> oeostream"""
        return _oechem.oeowrapperstream_stream(self)


    def clear(self) -> "void":
        """clear(oeowrapperstream self)"""
        return _oechem.oeowrapperstream_clear(self)


    def set(self, osptr: 'oeostream', deleteptr: 'bool') -> "bool":
        """set(oeowrapperstream self, oeostream osptr, bool deleteptr) -> bool"""
        return _oechem.oeowrapperstream_set(self, osptr, deleteptr)

oeowrapperstream_swigregister = _oechem.oeowrapperstream_swigregister
oeowrapperstream_swigregister(oeowrapperstream)


def GetListValues(*args) -> "void":
    """
    GetListValues(PyObject * list, unsigned int size, float const * values)
    GetListValues(PyObject * list, unsigned int size, double const * values)
    GetListValues(PyObject * list, unsigned int size, int const * values)
    GetListValues(PyObject * list, unsigned int size, bool const * values)
    """
    return _oechem.GetListValues(*args)

def SetListValues(*args) -> "void":
    """
    SetListValues(float * v, unsigned int size, PyObject * p)
    SetListValues(double * v, unsigned int size, PyObject * p)
    SetListValues(int * v, unsigned int size, PyObject * p)
    SetListValues(bool * v, unsigned int size, PyObject * p)
    """
    return _oechem.SetListValues(*args)

def CheckListValues(*args) -> "bool":
    """
    CheckListValues(float * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(double * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(int * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(bool * arg1, unsigned int size, PyObject * p) -> bool
    """
    return _oechem.CheckListValues(*args)
class OEGridAbstractBase(OEBase):
    """Proxy of C++ OESystem::OEGridAbstractBase 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 GetTitle(self) -> "std::string":
        """GetTitle(OEGridAbstractBase self) -> std::string"""
        return _oechem.OEGridAbstractBase_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEGridAbstractBase self, std::string const & title) -> bool"""
        return _oechem.OEGridAbstractBase_SetTitle(self, title)


    def GetSpacing(self) -> "float":
        """GetSpacing(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetSpacing(self)


    def IsSpacingSet(self) -> "bool":
        """IsSpacingSet(OEGridAbstractBase self) -> bool"""
        return _oechem.OEGridAbstractBase_IsSpacingSet(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetSize(self)


    def GetXDim(self) -> "unsigned int":
        """GetXDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetXDim(self)


    def GetYDim(self) -> "unsigned int":
        """GetYDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetYDim(self)


    def GetZDim(self) -> "unsigned int":
        """GetZDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetZDim(self)


    def GetXMid(self) -> "float":
        """GetXMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetXMid(self)


    def GetYMid(self) -> "float":
        """GetYMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetYMid(self)


    def GetZMid(self) -> "float":
        """GetZMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetZMid(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGridAbstractBase self) -> void const *"""
        return _oechem.OEGridAbstractBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGridAbstractBase self, void const * type) -> bool"""
        return _oechem.OEGridAbstractBase_IsDataType(self, type)


    def Clear(self) -> "void":
        """Clear(OEGridAbstractBase self)"""
        return _oechem.OEGridAbstractBase_Clear(self)


    def GetDim(self) -> "PyObject *":
        """GetDim(OEGridAbstractBase self) -> PyObject *"""
        return _oechem.OEGridAbstractBase_GetDim(self)


    def GetMid(self) -> "PyObject *":
        """GetMid(OEGridAbstractBase self) -> PyObject *"""
        return _oechem.OEGridAbstractBase_GetMid(self)

    __swig_destroy__ = _oechem.delete_OEGridAbstractBase
    __del__ = lambda self: None
OEGridAbstractBase_swigregister = _oechem.OEGridAbstractBase_swigregister
OEGridAbstractBase_swigregister(OEGridAbstractBase)
oein = cvar.oein
oeout = cvar.oeout
oeerr = cvar.oeerr
oenul = cvar.oenul

class OEGridBase(OEGridAbstractBase):
    """Proxy of C++ OESystem::OEGridBase 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")
    __repr__ = _swig_repr

    def Clear(self) -> "void":
        """Clear(OEGridBase self)"""
        return _oechem.OEGridBase_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEGridBase self) -> OEBase"""
        return _oechem.OEGridBase_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGridBase self) -> void const *"""
        return _oechem.OEGridBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGridBase self, void const * type) -> bool"""
        return _oechem.OEGridBase_IsDataType(self, type)


    def GetTitle(self) -> "std::string":
        """GetTitle(OEGridBase self) -> std::string"""
        return _oechem.OEGridBase_GetTitle(self)


    def IsTitleSet(self) -> "bool":
        """IsTitleSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsTitleSet(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEGridBase self, std::string const & title) -> bool"""
        return _oechem.OEGridBase_SetTitle(self, title)


    def GetSpacing(self) -> "float":
        """GetSpacing(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetSpacing(self)


    def IsSpacingSet(self) -> "bool":
        """IsSpacingSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsSpacingSet(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetSize(self)


    def GetXDim(self) -> "unsigned int":
        """GetXDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetXDim(self)


    def GetYDim(self) -> "unsigned int":
        """GetYDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetYDim(self)


    def GetZDim(self) -> "unsigned int":
        """GetZDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetZDim(self)


    def GetXMid(self) -> "float":
        """GetXMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMid(self)


    def GetYMid(self) -> "float":
        """GetYMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMid(self)


    def GetZMid(self) -> "float":
        """GetZMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMid(self)


    def IsXMidSet(self) -> "bool":
        """IsXMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsXMidSet(self)


    def IsYMidSet(self) -> "bool":
        """IsYMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsYMidSet(self)


    def IsZMidSet(self) -> "bool":
        """IsZMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsZMidSet(self)


    def IsInGrid(self, *args) -> "bool":
        """
        IsInGrid(OEGridBase self, float x, float y, float z) -> bool
        IsInGrid(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> bool
        """
        return _oechem.OEGridBase_IsInGrid(self, *args)


    def GetXInc(self) -> "unsigned int":
        """GetXInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetXInc(self)


    def GetYInc(self) -> "unsigned int":
        """GetYInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetYInc(self)


    def GetZInc(self) -> "unsigned int":
        """GetZInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetZInc(self)


    def GetX(self, ix: 'unsigned int') -> "float":
        """GetX(OEGridBase self, unsigned int ix) -> float"""
        return _oechem.OEGridBase_GetX(self, ix)


    def GetY(self, iy: 'unsigned int') -> "float":
        """GetY(OEGridBase self, unsigned int iy) -> float"""
        return _oechem.OEGridBase_GetY(self, iy)


    def GetZ(self, iz: 'unsigned int') -> "float":
        """GetZ(OEGridBase self, unsigned int iz) -> float"""
        return _oechem.OEGridBase_GetZ(self, iz)


    def GetXIdx(self, *args) -> "unsigned int":
        """
        GetXIdx(OEGridBase self, float x) -> unsigned int
        GetXIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetXIdx(self, *args)


    def GetYIdx(self, *args) -> "unsigned int":
        """
        GetYIdx(OEGridBase self, float y) -> unsigned int
        GetYIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetYIdx(self, *args)


    def GetZIdx(self, *args) -> "unsigned int":
        """
        GetZIdx(OEGridBase self, float z) -> unsigned int
        GetZIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetZIdx(self, *args)


    def GetXMax(self) -> "float":
        """GetXMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMax(self)


    def GetXMin(self) -> "float":
        """GetXMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMin(self)


    def GetYMax(self) -> "float":
        """GetYMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMax(self)


    def GetYMin(self) -> "float":
        """GetYMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMin(self)


    def GetZMax(self) -> "float":
        """GetZMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMax(self)


    def GetZMin(self) -> "float":
        """GetZMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMin(self)


    def GridIdxToElement(self, ix: 'unsigned int', iy: 'unsigned int', iz: 'unsigned int') -> "PyObject *":
        """GridIdxToElement(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> PyObject *"""
        return _oechem.OEGridBase_GridIdxToElement(self, ix, iy, iz)


    def SpatialCoordToElement(self, x: 'float', y: 'float', z: 'float') -> "PyObject *":
        """SpatialCoordToElement(OEGridBase self, float x, float y, float z) -> PyObject *"""
        return _oechem.OEGridBase_SpatialCoordToElement(self, x, y, z)


    def ElementToSpatialCoord(self, el: 'unsigned int') -> "PyObject *":
        """ElementToSpatialCoord(OEGridBase self, unsigned int el) -> PyObject *"""
        return _oechem.OEGridBase_ElementToSpatialCoord(self, el)


    def ElementToGridIdx(self, el: 'unsigned int') -> "PyObject *":
        """ElementToGridIdx(OEGridBase self, unsigned int el) -> PyObject *"""
        return _oechem.OEGridBase_ElementToGridIdx(self, el)


    def GridIdxToSpatialCoord(self, ix: 'unsigned int', iy: 'unsigned int', iz: 'unsigned int') -> "PyObject *":
        """GridIdxToSpatialCoord(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> PyObject *"""
        return _oechem.OEGridBase_GridIdxToSpatialCoord(self, ix, iy, iz)


    def SpatialCoordToGridIdx(self, x: 'float', y: 'float', z: 'float') -> "PyObject *":
        """SpatialCoordToGridIdx(OEGridBase self, float x, float y, float z) -> PyObject *"""
        return _oechem.OEGridBase_SpatialCoordToGridIdx(self, x, y, z)

    __swig_destroy__ = _oechem.delete_OEGridBase
    __del__ = lambda self: None
OEGridBase_swigregister = _oechem.OEGridBase_swigregister
OEGridBase_swigregister(OEGridBase)

class OEFixedDoubleGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(double)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedDoubleGrid self) -> OEBase"""
        return _oechem.OEFixedDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedDoubleGrid self) -> void const *"""
        return _oechem.OEFixedDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEFixedDoubleGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "double":
        """
        GetValue(OEFixedDoubleGrid self, unsigned int el) -> double
        GetValue(OEFixedDoubleGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> double
        GetValue(OEFixedDoubleGrid self, float x, float y, float z) -> double
        """
        return _oechem.OEFixedDoubleGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "double":
        """__getitem__(OEFixedDoubleGrid self, unsigned int el) -> double"""
        return _oechem.OEFixedDoubleGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedDoubleGrid self) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedDoubleGrid self) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedDoubleGrid self, unsigned int el, double value)
        SetValue(OEFixedDoubleGrid self, unsigned int ix, unsigned int iy, unsigned int iz, double value)
        SetValue(OEFixedDoubleGrid self, float x, float y, float z, double value)
        """
        return _oechem.OEFixedDoubleGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'double') -> "void":
        """__setitem__(OEFixedDoubleGrid self, unsigned int el, double value)"""
        return _oechem.OEFixedDoubleGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedDoubleGrid self, double const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedDoubleGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedDoubleGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedDoubleGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedDoubleGrid
    __del__ = lambda self: None
OEFixedDoubleGrid_swigregister = _oechem.OEFixedDoubleGrid_swigregister
OEFixedDoubleGrid_swigregister(OEFixedDoubleGrid)

class OEFixedFloatGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(float)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedFloatGrid self) -> OEBase"""
        return _oechem.OEFixedFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedFloatGrid self) -> void const *"""
        return _oechem.OEFixedFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFixedFloatGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "float":
        """
        GetValue(OEFixedFloatGrid self, unsigned int el) -> float
        GetValue(OEFixedFloatGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> float
        GetValue(OEFixedFloatGrid self, float x, float y, float z) -> float
        """
        return _oechem.OEFixedFloatGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "float":
        """__getitem__(OEFixedFloatGrid self, unsigned int el) -> float"""
        return _oechem.OEFixedFloatGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedFloatGrid self) -> PyObject *"""
        return _oechem.OEFixedFloatGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedFloatGrid self) -> PyObject *"""
        return _oechem.OEFixedFloatGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedFloatGrid self, unsigned int el, float value)
        SetValue(OEFixedFloatGrid self, unsigned int ix, unsigned int iy, unsigned int iz, float value)
        SetValue(OEFixedFloatGrid self, float x, float y, float z, float value)
        """
        return _oechem.OEFixedFloatGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'float') -> "void":
        """__setitem__(OEFixedFloatGrid self, unsigned int el, float value)"""
        return _oechem.OEFixedFloatGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedFloatGrid self, float const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedFloatGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedFloatGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedFloatGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedFloatGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedFloatGrid
    __del__ = lambda self: None
OEFixedFloatGrid_swigregister = _oechem.OEFixedFloatGrid_swigregister
OEFixedFloatGrid_swigregister(OEFixedFloatGrid)

class OEFixedIntGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(int)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedIntGrid self) -> OEBase"""
        return _oechem.OEFixedIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedIntGrid self) -> void const *"""
        return _oechem.OEFixedIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedIntGrid self, void const * type) -> bool"""
        return _oechem.OEFixedIntGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "int":
        """
        GetValue(OEFixedIntGrid self, unsigned int el) -> int
        GetValue(OEFixedIntGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> int
        GetValue(OEFixedIntGrid self, float x, float y, float z) -> int
        """
        return _oechem.OEFixedIntGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "int":
        """__getitem__(OEFixedIntGrid self, unsigned int el) -> int"""
        return _oechem.OEFixedIntGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedIntGrid self) -> PyObject *"""
        return _oechem.OEFixedIntGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedIntGrid self) -> PyObject *"""
        return _oechem.OEFixedIntGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedIntGrid self, unsigned int el, int value)
        SetValue(OEFixedIntGrid self, unsigned int ix, unsigned int iy, unsigned int iz, int value)
        SetValue(OEFixedIntGrid self, float x, float y, float z, int value)
        """
        return _oechem.OEFixedIntGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'int') -> "void":
        """__setitem__(OEFixedIntGrid self, unsigned int el, int value)"""
        return _oechem.OEFixedIntGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedIntGrid self, int const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedIntGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedIntGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedIntGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedIntGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedIntGrid
    __del__ = lambda self: None
OEFixedIntGrid_swigregister = _oechem.OEFixedIntGrid_swigregister
OEFixedIntGrid_swigregister(OEFixedIntGrid)

class OEFixedBoolGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(bool)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedBoolGrid self) -> OEBase"""
        return _oechem.OEFixedBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedBoolGrid self) -> void const *"""
        return _oechem.OEFixedBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedBoolGrid self, void const * type) -> bool"""
        return _oechem.OEFixedBoolGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "bool":
        """
        GetValue(OEFixedBoolGrid self, unsigned int el) -> bool
        GetValue(OEFixedBoolGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> bool
        GetValue(OEFixedBoolGrid self, float x, float y, float z) -> bool
        """
        return _oechem.OEFixedBoolGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "bool":
        """__getitem__(OEFixedBoolGrid self, unsigned int el) -> bool"""
        return _oechem.OEFixedBoolGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedBoolGrid self) -> PyObject *"""
        return _oechem.OEFixedBoolGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedBoolGrid self) -> PyObject *"""
        return _oechem.OEFixedBoolGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedBoolGrid self, unsigned int el, bool value)
        SetValue(OEFixedBoolGrid self, unsigned int ix, unsigned int iy, unsigned int iz, bool value)
        SetValue(OEFixedBoolGrid self, float x, float y, float z, bool value)
        """
        return _oechem.OEFixedBoolGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'bool') -> "void":
        """__setitem__(OEFixedBoolGrid self, unsigned int el, bool value)"""
        return _oechem.OEFixedBoolGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedBoolGrid self, bool const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedBoolGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedBoolGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedBoolGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedBoolGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedBoolGrid
    __del__ = lambda self: None
OEFixedBoolGrid_swigregister = _oechem.OEFixedBoolGrid_swigregister
OEFixedBoolGrid_swigregister(OEFixedBoolGrid)

class OEDoubleGrid(OEFixedDoubleGrid):
    """Proxy of C++ OESystem::OEGrid<(double)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEDoubleGrid self)"""
        return _oechem.OEDoubleGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEDoubleGrid self) -> OEBase"""
        return _oechem.OEDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEDoubleGrid self) -> void const *"""
        return _oechem.OEDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEDoubleGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEDoubleGrid self, float spacing) -> bool"""
        return _oechem.OEDoubleGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEDoubleGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEDoubleGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEDoubleGrid self, float x) -> bool"""
        return _oechem.OEDoubleGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEDoubleGrid self, float y) -> bool"""
        return _oechem.OEDoubleGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEDoubleGrid self, float z) -> bool"""
        return _oechem.OEDoubleGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEDoubleGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEDoubleGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEDoubleGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEDoubleGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEDoubleGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEDoubleGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEDoubleGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEDoubleGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'double *') -> "bool":
        """SetAll(OEDoubleGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, double * dataptr) -> bool"""
        return _oechem.OEDoubleGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(double)> self) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, OEDoubleGrid rhs) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, OEFixedDoubleGrid rhs) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, float const [6] minmax, float spacing, char const * title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, float const [6] minmax, float spacing) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, double const [6] minmax, double spacing, char const * title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, double const [6] minmax, double spacing) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, double * dataptr=None) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEDoubleGrid
        """
        this = _oechem.new_OEDoubleGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDoubleGrid
    __del__ = lambda self: None
OEDoubleGrid_swigregister = _oechem.OEDoubleGrid_swigregister
OEDoubleGrid_swigregister(OEDoubleGrid)

class OEFloatGrid(OEFixedFloatGrid):
    """Proxy of C++ OESystem::OEGrid<(float)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEFloatGrid self)"""
        return _oechem.OEFloatGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFloatGrid self) -> OEBase"""
        return _oechem.OEFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFloatGrid self) -> void const *"""
        return _oechem.OEFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFloatGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEFloatGrid self, float spacing) -> bool"""
        return _oechem.OEFloatGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEFloatGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEFloatGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEFloatGrid self, float x) -> bool"""
        return _oechem.OEFloatGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEFloatGrid self, float y) -> bool"""
        return _oechem.OEFloatGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEFloatGrid self, float z) -> bool"""
        return _oechem.OEFloatGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEFloatGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEFloatGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEFloatGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEFloatGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEFloatGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEFloatGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEFloatGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEFloatGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'float *') -> "bool":
        """SetAll(OEFloatGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, float * dataptr) -> bool"""
        return _oechem.OEFloatGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(float)> self) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, OEFloatGrid rhs) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, OEFixedFloatGrid rhs) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, float const [6] minmax, float spacing, char const * title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, float const [6] minmax, float spacing) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, double const [6] minmax, double spacing, char const * title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, double const [6] minmax, double spacing) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, float * dataptr=None) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEFloatGrid
        """
        this = _oechem.new_OEFloatGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatGrid
    __del__ = lambda self: None
OEFloatGrid_swigregister = _oechem.OEFloatGrid_swigregister
OEFloatGrid_swigregister(OEFloatGrid)

class OEIntGrid(OEFixedIntGrid):
    """Proxy of C++ OESystem::OEGrid<(int)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEIntGrid self)"""
        return _oechem.OEIntGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEIntGrid self) -> OEBase"""
        return _oechem.OEIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEIntGrid self) -> void const *"""
        return _oechem.OEIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEIntGrid self, void const * type) -> bool"""
        return _oechem.OEIntGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEIntGrid self, float spacing) -> bool"""
        return _oechem.OEIntGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEIntGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEIntGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEIntGrid self, float x) -> bool"""
        return _oechem.OEIntGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEIntGrid self, float y) -> bool"""
        return _oechem.OEIntGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEIntGrid self, float z) -> bool"""
        return _oechem.OEIntGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEIntGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEIntGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEIntGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEIntGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEIntGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEIntGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEIntGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEIntGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'int *') -> "bool":
        """SetAll(OEIntGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, int * dataptr) -> bool"""
        return _oechem.OEIntGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(int)> self) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, OEIntGrid rhs) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, OEFixedIntGrid rhs) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, float const [6] minmax, float spacing, char const * title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, float const [6] minmax, float spacing) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, double const [6] minmax, double spacing, char const * title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, double const [6] minmax, double spacing) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, int * dataptr=None) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEIntGrid
        """
        this = _oechem.new_OEIntGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntGrid
    __del__ = lambda self: None
OEIntGrid_swigregister = _oechem.OEIntGrid_swigregister
OEIntGrid_swigregister(OEIntGrid)

class OEBoolGrid(OEFixedBoolGrid):
    """Proxy of C++ OESystem::OEGrid<(bool)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEBoolGrid self)"""
        return _oechem.OEBoolGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBoolGrid self) -> OEBase"""
        return _oechem.OEBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBoolGrid self) -> void const *"""
        return _oechem.OEBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEBoolGrid self, void const * type) -> bool"""
        return _oechem.OEBoolGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEBoolGrid self, float spacing) -> bool"""
        return _oechem.OEBoolGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEBoolGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEBoolGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEBoolGrid self, float x) -> bool"""
        return _oechem.OEBoolGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEBoolGrid self, float y) -> bool"""
        return _oechem.OEBoolGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEBoolGrid self, float z) -> bool"""
        return _oechem.OEBoolGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEBoolGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEBoolGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEBoolGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEBoolGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEBoolGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEBoolGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEBoolGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEBoolGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'bool *') -> "bool":
        """SetAll(OEBoolGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, bool * dataptr) -> bool"""
        return _oechem.OEBoolGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(bool)> self) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, OEBoolGrid rhs) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, OEFixedBoolGrid rhs) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, float const [6] minmax, float spacing, char const * title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, float const [6] minmax, float spacing) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, double const [6] minmax, double spacing, char const * title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, double const [6] minmax, double spacing) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, bool * dataptr=None) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEBoolGrid
        """
        this = _oechem.new_OEBoolGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolGrid
    __del__ = lambda self: None
OEBoolGrid_swigregister = _oechem.OEBoolGrid_swigregister
OEBoolGrid_swigregister(OEBoolGrid)

class OEFixedMultiDoubleGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(double)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiDoubleGrid self) -> OEBase"""
        return _oechem.OEFixedMultiDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiDoubleGrid self) -> void const *"""
        return _oechem.OEFixedMultiDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiDoubleGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiDoubleGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiDoubleGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiDoubleGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiDoubleGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiDoubleGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< double > &":
        """__getitem__(OEFixedMultiDoubleGrid self, unsigned int igrid) -> OEFixedDoubleGrid"""
        return _oechem.OEFixedMultiDoubleGrid___getitem__(self, igrid)

OEFixedMultiDoubleGrid_swigregister = _oechem.OEFixedMultiDoubleGrid_swigregister
OEFixedMultiDoubleGrid_swigregister(OEFixedMultiDoubleGrid)

class OEFixedMultiFloatGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(float)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiFloatGrid self) -> OEBase"""
        return _oechem.OEFixedMultiFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiFloatGrid self) -> void const *"""
        return _oechem.OEFixedMultiFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiFloatGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiFloatGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiFloatGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiFloatGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiFloatGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiFloatGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< float > &":
        """__getitem__(OEFixedMultiFloatGrid self, unsigned int igrid) -> OEFixedFloatGrid"""
        return _oechem.OEFixedMultiFloatGrid___getitem__(self, igrid)

OEFixedMultiFloatGrid_swigregister = _oechem.OEFixedMultiFloatGrid_swigregister
OEFixedMultiFloatGrid_swigregister(OEFixedMultiFloatGrid)

class OEFixedMultiIntGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(int)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiIntGrid self) -> OEBase"""
        return _oechem.OEFixedMultiIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiIntGrid self) -> void const *"""
        return _oechem.OEFixedMultiIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiIntGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiIntGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiIntGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiIntGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiIntGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiIntGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiIntGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< int > &":
        """__getitem__(OEFixedMultiIntGrid self, unsigned int igrid) -> OEFixedIntGrid"""
        return _oechem.OEFixedMultiIntGrid___getitem__(self, igrid)

OEFixedMultiIntGrid_swigregister = _oechem.OEFixedMultiIntGrid_swigregister
OEFixedMultiIntGrid_swigregister(OEFixedMultiIntGrid)

class OEFixedMultiBoolGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(bool)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiBoolGrid self) -> OEBase"""
        return _oechem.OEFixedMultiBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiBoolGrid self) -> void const *"""
        return _oechem.OEFixedMultiBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiBoolGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiBoolGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiBoolGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiBoolGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiBoolGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiBoolGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiBoolGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< bool > &":
        """__getitem__(OEFixedMultiBoolGrid self, unsigned int igrid) -> OEFixedBoolGrid"""
        return _oechem.OEFixedMultiBoolGrid___getitem__(self, igrid)

OEFixedMultiBoolGrid_swigregister = _oechem.OEFixedMultiBoolGrid_swigregister
OEFixedMultiBoolGrid_swigregister(OEFixedMultiBoolGrid)

class OEMultiDoubleGrid(OEFixedMultiDoubleGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(double)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiDoubleGrid self) -> OEBase"""
        return _oechem.OEMultiDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiDoubleGrid self) -> void const *"""
        return _oechem.OEMultiDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEMultiDoubleGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiDoubleGrid self, float spacing) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiDoubleGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiDoubleGrid self, float x) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiDoubleGrid self, float y) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiDoubleGrid self, float z) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiDoubleGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiDoubleGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiDoubleGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiDoubleGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiDoubleGrid self)"""
        return _oechem.OEMultiDoubleGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(double)> self) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, double * dataptr) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, OEMultiDoubleGrid rhs) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, OEFixedMultiDoubleGrid rhs) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiDoubleGrid
        """
        this = _oechem.new_OEMultiDoubleGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiDoubleGrid
    __del__ = lambda self: None
OEMultiDoubleGrid_swigregister = _oechem.OEMultiDoubleGrid_swigregister
OEMultiDoubleGrid_swigregister(OEMultiDoubleGrid)

class OEMultiFloatGrid(OEFixedMultiFloatGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(float)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiFloatGrid self) -> OEBase"""
        return _oechem.OEMultiFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiFloatGrid self) -> void const *"""
        return _oechem.OEMultiFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiFloatGrid self, void const * type) -> bool"""
        return _oechem.OEMultiFloatGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiFloatGrid self, float spacing) -> bool"""
        return _oechem.OEMultiFloatGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiFloatGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiFloatGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiFloatGrid self, float x) -> bool"""
        return _oechem.OEMultiFloatGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiFloatGrid self, float y) -> bool"""
        return _oechem.OEMultiFloatGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiFloatGrid self, float z) -> bool"""
        return _oechem.OEMultiFloatGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiFloatGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiFloatGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiFloatGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiFloatGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiFloatGrid self)"""
        return _oechem.OEMultiFloatGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(float)> self) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, float * dataptr) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, OEMultiFloatGrid rhs) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, OEFixedMultiFloatGrid rhs) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiFloatGrid
        """
        this = _oechem.new_OEMultiFloatGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiFloatGrid
    __del__ = lambda self: None
OEMultiFloatGrid_swigregister = _oechem.OEMultiFloatGrid_swigregister
OEMultiFloatGrid_swigregister(OEMultiFloatGrid)

class OEMultiIntGrid(OEFixedMultiIntGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(int)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiIntGrid self) -> OEBase"""
        return _oechem.OEMultiIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiIntGrid self) -> void const *"""
        return _oechem.OEMultiIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiIntGrid self, void const * type) -> bool"""
        return _oechem.OEMultiIntGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiIntGrid self, float spacing) -> bool"""
        return _oechem.OEMultiIntGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiIntGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiIntGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiIntGrid self, float x) -> bool"""
        return _oechem.OEMultiIntGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiIntGrid self, float y) -> bool"""
        return _oechem.OEMultiIntGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiIntGrid self, float z) -> bool"""
        return _oechem.OEMultiIntGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiIntGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiIntGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiIntGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiIntGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiIntGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiIntGrid self)"""
        return _oechem.OEMultiIntGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(int)> self) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, int * dataptr) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, OEMultiIntGrid rhs) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, OEFixedMultiIntGrid rhs) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiIntGrid
        """
        this = _oechem.new_OEMultiIntGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiIntGrid
    __del__ = lambda self: None
OEMultiIntGrid_swigregister = _oechem.OEMultiIntGrid_swigregister
OEMultiIntGrid_swigregister(OEMultiIntGrid)

class OEMultiBoolGrid(OEFixedMultiBoolGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(bool)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiBoolGrid self) -> OEBase"""
        return _oechem.OEMultiBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiBoolGrid self) -> void const *"""
        return _oechem.OEMultiBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiBoolGrid self, void const * type) -> bool"""
        return _oechem.OEMultiBoolGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiBoolGrid self, float spacing) -> bool"""
        return _oechem.OEMultiBoolGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiBoolGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiBoolGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiBoolGrid self, float x) -> bool"""
        return _oechem.OEMultiBoolGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiBoolGrid self, float y) -> bool"""
        return _oechem.OEMultiBoolGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiBoolGrid self, float z) -> bool"""
        return _oechem.OEMultiBoolGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiBoolGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiBoolGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiBoolGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiBoolGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiBoolGrid self)"""
        return _oechem.OEMultiBoolGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(bool)> self) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, bool * dataptr) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, OEMultiBoolGrid rhs) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, OEFixedMultiBoolGrid rhs) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiBoolGrid
        """
        this = _oechem.new_OEMultiBoolGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiBoolGrid
    __del__ = lambda self: None
OEMultiBoolGrid_swigregister = _oechem.OEMultiBoolGrid_swigregister
OEMultiBoolGrid_swigregister(OEMultiBoolGrid)


def OEReadOldStyleGrid(istr: 'oeistream', grid: 'OEMultiFloatGrid') -> "bool":
    """OEReadOldStyleGrid(oeistream istr, OEMultiFloatGrid grid) -> bool"""
    return _oechem.OEReadOldStyleGrid(istr, grid)

def OEWriteOldStyleGrid(*args) -> "bool":
    """
    OEWriteOldStyleGrid(oeostream ostr, OEFixedMultiFloatGrid grid, unsigned int cur_grid=0) -> bool
    OEWriteOldStyleGrid(oeostream ostr, OEFixedMultiFloatGrid grid) -> bool
    OEWriteOldStyleGrid(oeostream ostr, OEFixedFloatGrid grid) -> bool
    """
    return _oechem.OEWriteOldStyleGrid(*args)

def OEDoubleGridMaxVal(grid: 'OEFixedDoubleGrid') -> "double":
    """OEDoubleGridMaxVal(OEFixedDoubleGrid grid) -> double"""
    return _oechem.OEDoubleGridMaxVal(grid)

def OEFloatGridMaxVal(grid: 'OEFixedFloatGrid') -> "float":
    """OEFloatGridMaxVal(OEFixedFloatGrid grid) -> float"""
    return _oechem.OEFloatGridMaxVal(grid)

def OEIntGridMaxVal(grid: 'OEFixedIntGrid') -> "int":
    """OEIntGridMaxVal(OEFixedIntGrid grid) -> int"""
    return _oechem.OEIntGridMaxVal(grid)

def OEDoubleGridAvgVal(grid: 'OEFixedDoubleGrid') -> "double":
    """OEDoubleGridAvgVal(OEFixedDoubleGrid grid) -> double"""
    return _oechem.OEDoubleGridAvgVal(grid)

def OEFloatGridAvgVal(grid: 'OEFixedFloatGrid') -> "float":
    """OEFloatGridAvgVal(OEFixedFloatGrid grid) -> float"""
    return _oechem.OEFloatGridAvgVal(grid)

def OEIntGridAvgVal(grid: 'OEFixedIntGrid') -> "int":
    """OEIntGridAvgVal(OEFixedIntGrid grid) -> int"""
    return _oechem.OEIntGridAvgVal(grid)

def OEDoubleGridMinVal(grid: 'OEFixedDoubleGrid') -> "double":
    """OEDoubleGridMinVal(OEFixedDoubleGrid grid) -> double"""
    return _oechem.OEDoubleGridMinVal(grid)

def OEFloatGridMinVal(grid: 'OEFixedFloatGrid') -> "float":
    """OEFloatGridMinVal(OEFixedFloatGrid grid) -> float"""
    return _oechem.OEFloatGridMinVal(grid)

def OEIntGridMinVal(grid: 'OEFixedIntGrid') -> "int":
    """OEIntGridMinVal(OEFixedIntGrid grid) -> int"""
    return _oechem.OEIntGridMinVal(grid)

def OELinearInterpolate(grid: 'OEFixedFloatGrid', x: 'float', y: 'float', z: 'float', outside_grid_val: 'float const &') -> "float":
    """OELinearInterpolate(OEFixedFloatGrid grid, float x, float y, float z, float const & outside_grid_val) -> float"""
    return _oechem.OELinearInterpolate(grid, x, y, z, outside_grid_val)

def OEFloatGridLinearInterpolate(grid: 'OEFixedFloatGrid', x: 'float', y: 'float', z: 'float', outside_grid_val: 'float const &') -> "float":
    """OEFloatGridLinearInterpolate(OEFixedFloatGrid grid, float x, float y, float z, float const & outside_grid_val) -> float"""
    return _oechem.OEFloatGridLinearInterpolate(grid, x, y, z, outside_grid_val)

def OEDoubleGridLinearInterpolate(grid: 'OEFixedDoubleGrid', x: 'float', y: 'float', z: 'float', outside_grid_val: 'double const &') -> "double":
    """OEDoubleGridLinearInterpolate(OEFixedDoubleGrid grid, float x, float y, float z, double const & outside_grid_val) -> double"""
    return _oechem.OEDoubleGridLinearInterpolate(grid, x, y, z, outside_grid_val)

def OEIntGridLinearInterpolate(grid: 'OEFixedIntGrid', x: 'float', y: 'float', z: 'float', outside_grid_val: 'int const &') -> "int":
    """OEIntGridLinearInterpolate(OEFixedIntGrid grid, float x, float y, float z, int const & outside_grid_val) -> int"""
    return _oechem.OEIntGridLinearInterpolate(grid, x, y, z, outside_grid_val)

def OEZeroGridBoundary(grid: 'OEFixedFloatGrid') -> "bool":
    """OEZeroGridBoundary(OEFixedFloatGrid grid) -> bool"""
    return _oechem.OEZeroGridBoundary(grid)

def OEZeroFloatGridBoundary(grid: 'OEFixedFloatGrid') -> "bool":
    """OEZeroFloatGridBoundary(OEFixedFloatGrid grid) -> bool"""
    return _oechem.OEZeroFloatGridBoundary(grid)

def OEZeroDoubleGridBoundary(grid: 'OEFixedDoubleGrid') -> "bool":
    """OEZeroDoubleGridBoundary(OEFixedDoubleGrid grid) -> bool"""
    return _oechem.OEZeroDoubleGridBoundary(grid)

def OEZeroIntGridBoundary(grid: 'OEFixedIntGrid') -> "bool":
    """OEZeroIntGridBoundary(OEFixedIntGrid grid) -> bool"""
    return _oechem.OEZeroIntGridBoundary(grid)

def OEGetCenterAndExtents(*args) -> "void":
    """
    OEGetCenterAndExtents(OEMolBase mol, float * center, float * extents)
    OEGetCenterAndExtents(OEGridBase grid, float * center, float * extents)
    """
    return _oechem.OEGetCenterAndExtents(*args)

def OEGetBytesFromGrid(*args) -> "PyObject *":
    """
    OEGetBytesFromGrid(OESystem::OEScalarGrid & grid, int gType) -> PyObject
    OEGetBytesFromGrid(OESystem::OESkewGrid & grid, int gType) -> PyObject *
    """
    return _oechem.OEGetBytesFromGrid(*args)

def OEGetScalarGridFromBytes(bytes: 'PyObject *', gType: 'int') -> "PyObject *":
    """OEGetScalarGridFromBytes(PyObject * bytes, int gType) -> PyObject *"""
    return _oechem.OEGetScalarGridFromBytes(bytes, gType)

def OEGetSkewGridFromBytes(bytes: 'PyObject *', gType: 'int') -> "PyObject *":
    """OEGetSkewGridFromBytes(PyObject * bytes, int gType) -> PyObject *"""
    return _oechem.OEGetSkewGridFromBytes(bytes, gType)
class OEParameter(object):
    """Proxy of C++ OESystem::OEParameter 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__ = _oechem.delete_OEParameter
    __del__ = lambda self: None

    def SetName(self, name: 'std::string const &') -> "bool":
        """SetName(OEParameter self, std::string const & name) -> bool"""
        return _oechem.OEParameter_SetName(self, name)


    def SetBrief(self, brief: 'std::string const &') -> "bool":
        """SetBrief(OEParameter self, std::string const & brief) -> bool"""
        return _oechem.OEParameter_SetBrief(self, brief)


    def SetRequired(self, required: 'bool const') -> "bool":
        """SetRequired(OEParameter self, bool const required) -> bool"""
        return _oechem.OEParameter_SetRequired(self, required)


    def SetKeyless(self, keyless: 'unsigned int const') -> "bool":
        """SetKeyless(OEParameter self, unsigned int const keyless) -> bool"""
        return _oechem.OEParameter_SetKeyless(self, keyless)


    def SetVisibility(self, visibility: 'unsigned int const') -> "bool":
        """SetVisibility(OEParameter self, unsigned int const visibility) -> bool"""
        return _oechem.OEParameter_SetVisibility(self, visibility)


    def SetOrderPriority(self, order: 'int const') -> "bool":
        """SetOrderPriority(OEParameter self, int const order) -> bool"""
        return _oechem.OEParameter_SetOrderPriority(self, order)


    def SetInput(self, chunksize: 'unsigned int const') -> "bool":
        """SetInput(OEParameter self, unsigned int const chunksize) -> bool"""
        return _oechem.OEParameter_SetInput(self, chunksize)


    def SetOutput(self, isOutput: 'bool const') -> "bool":
        """SetOutput(OEParameter self, bool const isOutput) -> bool"""
        return _oechem.OEParameter_SetOutput(self, isOutput)


    def AddDetail(self, detail: 'std::string const &') -> "bool":
        """AddDetail(OEParameter self, std::string const & detail) -> bool"""
        return _oechem.OEParameter_AddDetail(self, detail)


    def AddAlias(self, alias: 'std::string const &') -> "bool":
        """AddAlias(OEParameter self, std::string const & alias) -> bool"""
        return _oechem.OEParameter_AddAlias(self, alias)


    def SetElement(self, element: 'std::string const &') -> "bool":
        """SetElement(OEParameter self, std::string const & element) -> bool"""
        return _oechem.OEParameter_SetElement(self, element)


    def SetCommand(self, cmd: 'std::string const &') -> "bool":
        """SetCommand(OEParameter self, std::string const & cmd) -> bool"""
        return _oechem.OEParameter_SetCommand(self, cmd)


    def SetIsList(self, isList: 'bool const') -> "bool":
        """SetIsList(OEParameter self, bool const isList) -> bool"""
        return _oechem.OEParameter_SetIsList(self, isList)


    def GetName(self) -> "std::string":
        """GetName(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetName(self)


    def GetBrief(self) -> "std::string":
        """GetBrief(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetBrief(self)


    def GetStringValue(self, idx: 'unsigned int const'=0) -> "std::string":
        """
        GetStringValue(OEParameter self, unsigned int const idx=0) -> std::string
        GetStringValue(OEParameter self) -> std::string
        """
        return _oechem.OEParameter_GetStringValue(self, idx)


    def GetStringDefault(self, idx: 'unsigned int const'=0) -> "std::string":
        """
        GetStringDefault(OEParameter self, unsigned int const idx=0) -> std::string
        GetStringDefault(OEParameter self) -> std::string
        """
        return _oechem.OEParameter_GetStringDefault(self, idx)


    def GetStringValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetStringValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetStringValues(self)


    def GetStringDefaults(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetStringDefaults(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetStringDefaults(self)


    def GetRequired(self) -> "bool":
        """GetRequired(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetRequired(self)


    def GetKeyless(self) -> "unsigned int":
        """GetKeyless(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetKeyless(self)


    def GetVisibility(self) -> "unsigned int":
        """GetVisibility(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetVisibility(self)


    def GetInput(self) -> "unsigned int":
        """GetInput(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetInput(self)


    def GetOutput(self) -> "bool":
        """GetOutput(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetOutput(self)


    def GetOrderPriority(self) -> "int":
        """GetOrderPriority(OEParameter self) -> int"""
        return _oechem.OEParameter_GetOrderPriority(self)


    def GetDetail(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDetail(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetDetail(self)


    def GetAliases(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetAliases(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetAliases(self)


    def GetLegalValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetLegalValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetLegalValues(self)


    def GetIllegalValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetIllegalValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetIllegalValues(self)


    def GetLegalRanges(self) -> "OESystem::OEIterBase< std::pair< std::string,std::string > const > *":
        """GetLegalRanges(OEParameter self) -> OESystem::OEIterBase< std::pair< std::string,std::string > const > *"""
        return _oechem.OEParameter_GetLegalRanges(self)


    def GetIllegalRanges(self) -> "OESystem::OEIterBase< std::pair< std::string,std::string > const > *":
        """GetIllegalRanges(OEParameter self) -> OESystem::OEIterBase< std::pair< std::string,std::string > const > *"""
        return _oechem.OEParameter_GetIllegalRanges(self)


    def GetElement(self) -> "std::string":
        """GetElement(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetElement(self)


    def GetCommand(self) -> "std::string":
        """GetCommand(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetCommand(self)


    def GetIsList(self) -> "bool":
        """GetIsList(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetIsList(self)


    def SetStringValue(self, value: 'std::string const &') -> "bool":
        """SetStringValue(OEParameter self, std::string const & value) -> bool"""
        return _oechem.OEParameter_SetStringValue(self, value)


    def SetStringDefault(self, value: 'std::string const &') -> "bool":
        """SetStringDefault(OEParameter self, std::string const & value) -> bool"""
        return _oechem.OEParameter_SetStringDefault(self, value)


    def AddStringValue(self, value: 'std::string const &') -> "bool":
        """AddStringValue(OEParameter self, std::string const & value) -> bool"""
        return _oechem.OEParameter_AddStringValue(self, value)


    def AddStringDefault(self, value: 'std::string const &') -> "bool":
        """AddStringDefault(OEParameter self, std::string const & value) -> bool"""
        return _oechem.OEParameter_AddStringDefault(self, value)


    def ClearValues(self) -> "bool":
        """ClearValues(OEParameter self) -> bool"""
        return _oechem.OEParameter_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(OEParameter self) -> bool"""
        return _oechem.OEParameter_ClearDefaults(self)


    def AddLegalValue(self, val: 'std::string const &') -> "bool":
        """AddLegalValue(OEParameter self, std::string const & val) -> bool"""
        return _oechem.OEParameter_AddLegalValue(self, val)


    def AddIllegalValue(self, val: 'std::string const &') -> "bool":
        """AddIllegalValue(OEParameter self, std::string const & val) -> bool"""
        return _oechem.OEParameter_AddIllegalValue(self, val)


    def AddLegalRange(self, hi: 'std::string const &', low: 'std::string const &') -> "bool":
        """AddLegalRange(OEParameter self, std::string const & hi, std::string const & low) -> bool"""
        return _oechem.OEParameter_AddLegalRange(self, hi, low)


    def AddIllegalRange(self, hi: 'std::string const &', low: 'std::string const &') -> "bool":
        """AddIllegalRange(OEParameter self, std::string const & hi, std::string const & low) -> bool"""
        return _oechem.OEParameter_AddIllegalRange(self, hi, low)


    def IsLegalString(self, value: 'std::string const &') -> "bool":
        """IsLegalString(OEParameter self, std::string const & value) -> bool"""
        return _oechem.OEParameter_IsLegalString(self, value)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(OEParameter self, std::string const & val) -> bool"""
        return _oechem.OEParameter_IsSetToString(self, val)


    def Load(self) -> "bool":
        """Load(OEParameter self) -> bool"""
        return _oechem.OEParameter_Load(self)


    def LoadValue(self) -> "bool":
        """LoadValue(OEParameter self) -> bool"""
        return _oechem.OEParameter_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(OEParameter self) -> bool"""
        return _oechem.OEParameter_LoadDefault(self)


    def IsSet(self, idx: 'unsigned int const'=0) -> "bool":
        """
        IsSet(OEParameter self, unsigned int const idx=0) -> bool
        IsSet(OEParameter self) -> bool
        """
        return _oechem.OEParameter_IsSet(self, idx)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(OEParameter self, unsigned int const idx=0) -> bool
        GetHasValue(OEParameter self) -> bool
        """
        return _oechem.OEParameter_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(OEParameter self, unsigned int const idx=0) -> bool
        GetHasDefault(OEParameter self) -> bool
        """
        return _oechem.OEParameter_GetHasDefault(self, idx)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(OEParameter self) -> void const *"""
        return _oechem.OEParameter_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(OEParameter self) -> std::string"""
        return _oechem.OEParameter_ClassID(self)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEParameter self, unsigned char * arg2) -> size_t"""
        return _oechem.OEParameter_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEParameter self, unsigned char const * arg2) -> size_t"""
        return _oechem.OEParameter_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEParameter self) -> size_t"""
        return _oechem.OEParameter_ValueAndDefaultBinarySize(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEParameter self) -> OEParameter"""
        return _oechem.OEParameter_CreateCopy(self)

OEParameter_swigregister = _oechem.OEParameter_swigregister
OEParameter_swigregister(OEParameter)

class FloatParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(float)> 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__ = _oechem.delete_FloatParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(FloatParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(FloatParameterTyped self) -> bool
        """
        return _oechem.FloatParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(FloatParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(FloatParameterTyped self) -> bool
        """
        return _oechem.FloatParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'float &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(FloatParameterTyped self, float & value, unsigned int const idx=0) -> bool
        GetValue(FloatParameterTyped self, float & value) -> bool
        """
        return _oechem.FloatParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'float &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(FloatParameterTyped self, float & dflt, unsigned int const idx=0) -> bool
        GetDefault(FloatParameterTyped self, float & dflt) -> bool
        """
        return _oechem.FloatParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'float &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(FloatParameterTyped self, float & setting, unsigned int const idx=0) -> bool
        GetSetting(FloatParameterTyped self, float & setting) -> bool
        """
        return _oechem.FloatParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(FloatParameterTyped self) -> bool"""
        return _oechem.FloatParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(FloatParameterTyped self) -> bool"""
        return _oechem.FloatParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(FloatParameterTyped self) -> bool"""
        return _oechem.FloatParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(FloatParameterTyped self) -> bool"""
        return _oechem.FloatParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'float const &') -> "bool":
        """AddValue(FloatParameterTyped self, float const & value) -> bool"""
        return _oechem.FloatParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'float const &') -> "bool":
        """AddDefault(FloatParameterTyped self, float const & dflt) -> bool"""
        return _oechem.FloatParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'float const &') -> "bool":
        """SetValue(FloatParameterTyped self, float const & value) -> bool"""
        return _oechem.FloatParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'float const &') -> "bool":
        """SetDefault(FloatParameterTyped self, float const & dflt) -> bool"""
        return _oechem.FloatParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(FloatParameterTyped self) -> void const *"""
        return _oechem.FloatParameterTyped_TypedParameterTypeID(self)

FloatParameterTyped_swigregister = _oechem.FloatParameterTyped_swigregister
FloatParameterTyped_swigregister(FloatParameterTyped)

class FloatParameterPOD(FloatParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(float)> 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__ = _oechem.delete_FloatParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(FloatParameterPOD self, std::string const & val) -> bool"""
        return _oechem.FloatParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(FloatParameterPOD self, std::string const & val) -> bool"""
        return _oechem.FloatParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'OEFloatVector') -> "bool":
        """SetValues(FloatParameterPOD self, OEFloatVector values) -> bool"""
        return _oechem.FloatParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'OEFloatVector') -> "bool":
        """SetDefaults(FloatParameterPOD self, OEFloatVector values) -> bool"""
        return _oechem.FloatParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(FloatParameterPOD self, std::string const & values) -> bool"""
        return _oechem.FloatParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(FloatParameterPOD self, std::string const & values) -> bool"""
        return _oechem.FloatParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< float,std::allocator< float > >":
        """GetValuesVector(FloatParameterPOD self) -> OEFloatVector"""
        return _oechem.FloatParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< float,std::allocator< float > >":
        """GetDefaultsVector(FloatParameterPOD self) -> OEFloatVector"""
        return _oechem.FloatParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< float,std::allocator< float > >":
        """GetSettingsVector(FloatParameterPOD self) -> OEFloatVector"""
        return _oechem.FloatParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(FloatParameterPOD self) -> std::string"""
        return _oechem.FloatParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(FloatParameterPOD self) -> void const *"""
        return _oechem.FloatParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(FloatParameterPOD self) -> OEParameter"""
        return _oechem.FloatParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(FloatParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.FloatParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(FloatParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.FloatParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(FloatParameterPOD self) -> size_t"""
        return _oechem.FloatParameterPOD_ValueAndDefaultBinarySize(self)

FloatParameterPOD_swigregister = _oechem.FloatParameterPOD_swigregister
FloatParameterPOD_swigregister(FloatParameterPOD)

class DoubleParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(double)> 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__ = _oechem.delete_DoubleParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(DoubleParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(DoubleParameterTyped self) -> bool
        """
        return _oechem.DoubleParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(DoubleParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(DoubleParameterTyped self) -> bool
        """
        return _oechem.DoubleParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'double &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(DoubleParameterTyped self, double & value, unsigned int const idx=0) -> bool
        GetValue(DoubleParameterTyped self, double & value) -> bool
        """
        return _oechem.DoubleParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'double &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(DoubleParameterTyped self, double & dflt, unsigned int const idx=0) -> bool
        GetDefault(DoubleParameterTyped self, double & dflt) -> bool
        """
        return _oechem.DoubleParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'double &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(DoubleParameterTyped self, double & setting, unsigned int const idx=0) -> bool
        GetSetting(DoubleParameterTyped self, double & setting) -> bool
        """
        return _oechem.DoubleParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(DoubleParameterTyped self) -> bool"""
        return _oechem.DoubleParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(DoubleParameterTyped self) -> bool"""
        return _oechem.DoubleParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(DoubleParameterTyped self) -> bool"""
        return _oechem.DoubleParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(DoubleParameterTyped self) -> bool"""
        return _oechem.DoubleParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'double const &') -> "bool":
        """AddValue(DoubleParameterTyped self, double const & value) -> bool"""
        return _oechem.DoubleParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'double const &') -> "bool":
        """AddDefault(DoubleParameterTyped self, double const & dflt) -> bool"""
        return _oechem.DoubleParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'double const &') -> "bool":
        """SetValue(DoubleParameterTyped self, double const & value) -> bool"""
        return _oechem.DoubleParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'double const &') -> "bool":
        """SetDefault(DoubleParameterTyped self, double const & dflt) -> bool"""
        return _oechem.DoubleParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(DoubleParameterTyped self) -> void const *"""
        return _oechem.DoubleParameterTyped_TypedParameterTypeID(self)

DoubleParameterTyped_swigregister = _oechem.DoubleParameterTyped_swigregister
DoubleParameterTyped_swigregister(DoubleParameterTyped)

class DoubleParameterPOD(DoubleParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(double)> 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__ = _oechem.delete_DoubleParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(DoubleParameterPOD self, std::string const & val) -> bool"""
        return _oechem.DoubleParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(DoubleParameterPOD self, std::string const & val) -> bool"""
        return _oechem.DoubleParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'OEDoubleVector') -> "bool":
        """SetValues(DoubleParameterPOD self, OEDoubleVector values) -> bool"""
        return _oechem.DoubleParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'OEDoubleVector') -> "bool":
        """SetDefaults(DoubleParameterPOD self, OEDoubleVector values) -> bool"""
        return _oechem.DoubleParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(DoubleParameterPOD self, std::string const & values) -> bool"""
        return _oechem.DoubleParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(DoubleParameterPOD self, std::string const & values) -> bool"""
        return _oechem.DoubleParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< double,std::allocator< double > >":
        """GetValuesVector(DoubleParameterPOD self) -> OEDoubleVector"""
        return _oechem.DoubleParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< double,std::allocator< double > >":
        """GetDefaultsVector(DoubleParameterPOD self) -> OEDoubleVector"""
        return _oechem.DoubleParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< double,std::allocator< double > >":
        """GetSettingsVector(DoubleParameterPOD self) -> OEDoubleVector"""
        return _oechem.DoubleParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(DoubleParameterPOD self) -> std::string"""
        return _oechem.DoubleParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(DoubleParameterPOD self) -> void const *"""
        return _oechem.DoubleParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(DoubleParameterPOD self) -> OEParameter"""
        return _oechem.DoubleParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(DoubleParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.DoubleParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(DoubleParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.DoubleParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(DoubleParameterPOD self) -> size_t"""
        return _oechem.DoubleParameterPOD_ValueAndDefaultBinarySize(self)

DoubleParameterPOD_swigregister = _oechem.DoubleParameterPOD_swigregister
DoubleParameterPOD_swigregister(DoubleParameterPOD)

class BoolParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(bool)> 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__ = _oechem.delete_BoolParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(BoolParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(BoolParameterTyped self) -> bool
        """
        return _oechem.BoolParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(BoolParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(BoolParameterTyped self) -> bool
        """
        return _oechem.BoolParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'bool &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(BoolParameterTyped self, bool & value, unsigned int const idx=0) -> bool
        GetValue(BoolParameterTyped self, bool & value) -> bool
        """
        return _oechem.BoolParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'bool &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(BoolParameterTyped self, bool & dflt, unsigned int const idx=0) -> bool
        GetDefault(BoolParameterTyped self, bool & dflt) -> bool
        """
        return _oechem.BoolParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'bool &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(BoolParameterTyped self, bool & setting, unsigned int const idx=0) -> bool
        GetSetting(BoolParameterTyped self, bool & setting) -> bool
        """
        return _oechem.BoolParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(BoolParameterTyped self) -> bool"""
        return _oechem.BoolParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(BoolParameterTyped self) -> bool"""
        return _oechem.BoolParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(BoolParameterTyped self) -> bool"""
        return _oechem.BoolParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(BoolParameterTyped self) -> bool"""
        return _oechem.BoolParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'bool const &') -> "bool":
        """AddValue(BoolParameterTyped self, bool const & value) -> bool"""
        return _oechem.BoolParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'bool const &') -> "bool":
        """AddDefault(BoolParameterTyped self, bool const & dflt) -> bool"""
        return _oechem.BoolParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'bool const &') -> "bool":
        """SetValue(BoolParameterTyped self, bool const & value) -> bool"""
        return _oechem.BoolParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'bool const &') -> "bool":
        """SetDefault(BoolParameterTyped self, bool const & dflt) -> bool"""
        return _oechem.BoolParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(BoolParameterTyped self) -> void const *"""
        return _oechem.BoolParameterTyped_TypedParameterTypeID(self)

BoolParameterTyped_swigregister = _oechem.BoolParameterTyped_swigregister
BoolParameterTyped_swigregister(BoolParameterTyped)

class BoolParameterPOD(BoolParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(bool)> 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__ = _oechem.delete_BoolParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(BoolParameterPOD self, std::string const & val) -> bool"""
        return _oechem.BoolParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(BoolParameterPOD self, std::string const & val) -> bool"""
        return _oechem.BoolParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'std::vector< bool,std::allocator< bool > > const &') -> "bool":
        """SetValues(BoolParameterPOD self, std::vector< bool,std::allocator< bool > > const & values) -> bool"""
        return _oechem.BoolParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'std::vector< bool,std::allocator< bool > > const &') -> "bool":
        """SetDefaults(BoolParameterPOD self, std::vector< bool,std::allocator< bool > > const & values) -> bool"""
        return _oechem.BoolParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(BoolParameterPOD self, std::string const & values) -> bool"""
        return _oechem.BoolParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(BoolParameterPOD self, std::string const & values) -> bool"""
        return _oechem.BoolParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< bool,std::allocator< bool > >":
        """GetValuesVector(BoolParameterPOD self) -> std::vector< bool,std::allocator< bool > >"""
        return _oechem.BoolParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< bool,std::allocator< bool > >":
        """GetDefaultsVector(BoolParameterPOD self) -> std::vector< bool,std::allocator< bool > >"""
        return _oechem.BoolParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< bool,std::allocator< bool > >":
        """GetSettingsVector(BoolParameterPOD self) -> std::vector< bool,std::allocator< bool > >"""
        return _oechem.BoolParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(BoolParameterPOD self) -> std::string"""
        return _oechem.BoolParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(BoolParameterPOD self) -> void const *"""
        return _oechem.BoolParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(BoolParameterPOD self) -> OEParameter"""
        return _oechem.BoolParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(BoolParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.BoolParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(BoolParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.BoolParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(BoolParameterPOD self) -> size_t"""
        return _oechem.BoolParameterPOD_ValueAndDefaultBinarySize(self)

BoolParameterPOD_swigregister = _oechem.BoolParameterPOD_swigregister
BoolParameterPOD_swigregister(BoolParameterPOD)

class IntParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(int)> 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__ = _oechem.delete_IntParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(IntParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(IntParameterTyped self) -> bool
        """
        return _oechem.IntParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(IntParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(IntParameterTyped self) -> bool
        """
        return _oechem.IntParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(IntParameterTyped self, int & value, unsigned int const idx=0) -> bool
        GetValue(IntParameterTyped self, int & value) -> bool
        """
        return _oechem.IntParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(IntParameterTyped self, int & dflt, unsigned int const idx=0) -> bool
        GetDefault(IntParameterTyped self, int & dflt) -> bool
        """
        return _oechem.IntParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(IntParameterTyped self, int & setting, unsigned int const idx=0) -> bool
        GetSetting(IntParameterTyped self, int & setting) -> bool
        """
        return _oechem.IntParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(IntParameterTyped self) -> bool"""
        return _oechem.IntParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(IntParameterTyped self) -> bool"""
        return _oechem.IntParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(IntParameterTyped self) -> bool"""
        return _oechem.IntParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(IntParameterTyped self) -> bool"""
        return _oechem.IntParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'int const &') -> "bool":
        """AddValue(IntParameterTyped self, int const & value) -> bool"""
        return _oechem.IntParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'int const &') -> "bool":
        """AddDefault(IntParameterTyped self, int const & dflt) -> bool"""
        return _oechem.IntParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'int const &') -> "bool":
        """SetValue(IntParameterTyped self, int const & value) -> bool"""
        return _oechem.IntParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'int const &') -> "bool":
        """SetDefault(IntParameterTyped self, int const & dflt) -> bool"""
        return _oechem.IntParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(IntParameterTyped self) -> void const *"""
        return _oechem.IntParameterTyped_TypedParameterTypeID(self)

IntParameterTyped_swigregister = _oechem.IntParameterTyped_swigregister
IntParameterTyped_swigregister(IntParameterTyped)

class IntParameterPOD(IntParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(int)> 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__ = _oechem.delete_IntParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(IntParameterPOD self, std::string const & val) -> bool"""
        return _oechem.IntParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(IntParameterPOD self, std::string const & val) -> bool"""
        return _oechem.IntParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'OEIntVector') -> "bool":
        """SetValues(IntParameterPOD self, OEIntVector values) -> bool"""
        return _oechem.IntParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'OEIntVector') -> "bool":
        """SetDefaults(IntParameterPOD self, OEIntVector values) -> bool"""
        return _oechem.IntParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(IntParameterPOD self, std::string const & values) -> bool"""
        return _oechem.IntParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(IntParameterPOD self, std::string const & values) -> bool"""
        return _oechem.IntParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< int,std::allocator< int > >":
        """GetValuesVector(IntParameterPOD self) -> OEIntVector"""
        return _oechem.IntParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< int,std::allocator< int > >":
        """GetDefaultsVector(IntParameterPOD self) -> OEIntVector"""
        return _oechem.IntParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< int,std::allocator< int > >":
        """GetSettingsVector(IntParameterPOD self) -> OEIntVector"""
        return _oechem.IntParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(IntParameterPOD self) -> std::string"""
        return _oechem.IntParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(IntParameterPOD self) -> void const *"""
        return _oechem.IntParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(IntParameterPOD self) -> OEParameter"""
        return _oechem.IntParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(IntParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.IntParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(IntParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.IntParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(IntParameterPOD self) -> size_t"""
        return _oechem.IntParameterPOD_ValueAndDefaultBinarySize(self)

IntParameterPOD_swigregister = _oechem.IntParameterPOD_swigregister
IntParameterPOD_swigregister(IntParameterPOD)

class UIntParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(unsigned int)> 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__ = _oechem.delete_UIntParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(UIntParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(UIntParameterTyped self) -> bool
        """
        return _oechem.UIntParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(UIntParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(UIntParameterTyped self) -> bool
        """
        return _oechem.UIntParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'unsigned int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(UIntParameterTyped self, unsigned int & value, unsigned int const idx=0) -> bool
        GetValue(UIntParameterTyped self, unsigned int & value) -> bool
        """
        return _oechem.UIntParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'unsigned int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(UIntParameterTyped self, unsigned int & dflt, unsigned int const idx=0) -> bool
        GetDefault(UIntParameterTyped self, unsigned int & dflt) -> bool
        """
        return _oechem.UIntParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'unsigned int &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(UIntParameterTyped self, unsigned int & setting, unsigned int const idx=0) -> bool
        GetSetting(UIntParameterTyped self, unsigned int & setting) -> bool
        """
        return _oechem.UIntParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(UIntParameterTyped self) -> bool"""
        return _oechem.UIntParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(UIntParameterTyped self) -> bool"""
        return _oechem.UIntParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(UIntParameterTyped self) -> bool"""
        return _oechem.UIntParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(UIntParameterTyped self) -> bool"""
        return _oechem.UIntParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'unsigned int const &') -> "bool":
        """AddValue(UIntParameterTyped self, unsigned int const & value) -> bool"""
        return _oechem.UIntParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'unsigned int const &') -> "bool":
        """AddDefault(UIntParameterTyped self, unsigned int const & dflt) -> bool"""
        return _oechem.UIntParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'unsigned int const &') -> "bool":
        """SetValue(UIntParameterTyped self, unsigned int const & value) -> bool"""
        return _oechem.UIntParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'unsigned int const &') -> "bool":
        """SetDefault(UIntParameterTyped self, unsigned int const & dflt) -> bool"""
        return _oechem.UIntParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(UIntParameterTyped self) -> void const *"""
        return _oechem.UIntParameterTyped_TypedParameterTypeID(self)

UIntParameterTyped_swigregister = _oechem.UIntParameterTyped_swigregister
UIntParameterTyped_swigregister(UIntParameterTyped)

class UIntParameterPOD(UIntParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(unsigned int)> 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__ = _oechem.delete_UIntParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(UIntParameterPOD self, std::string const & val) -> bool"""
        return _oechem.UIntParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(UIntParameterPOD self, std::string const & val) -> bool"""
        return _oechem.UIntParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'OEUIntVector') -> "bool":
        """SetValues(UIntParameterPOD self, OEUIntVector values) -> bool"""
        return _oechem.UIntParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'OEUIntVector') -> "bool":
        """SetDefaults(UIntParameterPOD self, OEUIntVector values) -> bool"""
        return _oechem.UIntParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(UIntParameterPOD self, std::string const & values) -> bool"""
        return _oechem.UIntParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(UIntParameterPOD self, std::string const & values) -> bool"""
        return _oechem.UIntParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        """GetValuesVector(UIntParameterPOD self) -> OEUIntVector"""
        return _oechem.UIntParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        """GetDefaultsVector(UIntParameterPOD self) -> OEUIntVector"""
        return _oechem.UIntParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< unsigned int,std::allocator< unsigned int > >":
        """GetSettingsVector(UIntParameterPOD self) -> OEUIntVector"""
        return _oechem.UIntParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(UIntParameterPOD self) -> std::string"""
        return _oechem.UIntParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(UIntParameterPOD self) -> void const *"""
        return _oechem.UIntParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(UIntParameterPOD self) -> OEParameter"""
        return _oechem.UIntParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(UIntParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.UIntParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(UIntParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.UIntParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(UIntParameterPOD self) -> size_t"""
        return _oechem.UIntParameterPOD_ValueAndDefaultBinarySize(self)

UIntParameterPOD_swigregister = _oechem.UIntParameterPOD_swigregister
UIntParameterPOD_swigregister(UIntParameterPOD)

class StringParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(std::string)> 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__ = _oechem.delete_StringParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(StringParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(StringParameterTyped self) -> bool
        """
        return _oechem.StringParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(StringParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(StringParameterTyped self) -> bool
        """
        return _oechem.StringParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'std::string &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(StringParameterTyped self, std::string & value, unsigned int const idx=0) -> bool
        GetValue(StringParameterTyped self, std::string & value) -> bool
        """
        return _oechem.StringParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'std::string &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(StringParameterTyped self, std::string & dflt, unsigned int const idx=0) -> bool
        GetDefault(StringParameterTyped self, std::string & dflt) -> bool
        """
        return _oechem.StringParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'std::string &', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(StringParameterTyped self, std::string & setting, unsigned int const idx=0) -> bool
        GetSetting(StringParameterTyped self, std::string & setting) -> bool
        """
        return _oechem.StringParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(StringParameterTyped self) -> bool"""
        return _oechem.StringParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(StringParameterTyped self) -> bool"""
        return _oechem.StringParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(StringParameterTyped self) -> bool"""
        return _oechem.StringParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(StringParameterTyped self) -> bool"""
        return _oechem.StringParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'std::string const &') -> "bool":
        """AddValue(StringParameterTyped self, std::string const & value) -> bool"""
        return _oechem.StringParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'std::string const &') -> "bool":
        """AddDefault(StringParameterTyped self, std::string const & dflt) -> bool"""
        return _oechem.StringParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'std::string const &') -> "bool":
        """SetValue(StringParameterTyped self, std::string const & value) -> bool"""
        return _oechem.StringParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'std::string const &') -> "bool":
        """SetDefault(StringParameterTyped self, std::string const & dflt) -> bool"""
        return _oechem.StringParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(StringParameterTyped self) -> void const *"""
        return _oechem.StringParameterTyped_TypedParameterTypeID(self)

StringParameterTyped_swigregister = _oechem.StringParameterTyped_swigregister
StringParameterTyped_swigregister(StringParameterTyped)

class StringParameterPOD(StringParameterTyped):
    """Proxy of C++ OESystem::OEPODParameter<(std::string)> 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__ = _oechem.delete_StringParameterPOD
    __del__ = lambda self: None

    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(StringParameterPOD self, std::string const & val) -> bool"""
        return _oechem.StringParameterPOD_IsLegalString(self, val)


    def IsSetToString(self, val: 'std::string const &') -> "bool":
        """IsSetToString(StringParameterPOD self, std::string const & val) -> bool"""
        return _oechem.StringParameterPOD_IsSetToString(self, val)


    def SetValues(self, values: 'OEStringVector') -> "bool":
        """SetValues(StringParameterPOD self, OEStringVector values) -> bool"""
        return _oechem.StringParameterPOD_SetValues(self, values)


    def SetDefaults(self, values: 'OEStringVector') -> "bool":
        """SetDefaults(StringParameterPOD self, OEStringVector values) -> bool"""
        return _oechem.StringParameterPOD_SetDefaults(self, values)


    def SetStringValues(self, values: 'std::string const &') -> "bool":
        """SetStringValues(StringParameterPOD self, std::string const & values) -> bool"""
        return _oechem.StringParameterPOD_SetStringValues(self, values)


    def SetStringDefaults(self, values: 'std::string const &') -> "bool":
        """SetStringDefaults(StringParameterPOD self, std::string const & values) -> bool"""
        return _oechem.StringParameterPOD_SetStringDefaults(self, values)


    def GetValuesVector(self) -> "std::vector< std::string,std::allocator< std::string > >":
        """GetValuesVector(StringParameterPOD self) -> OEStringVector"""
        return _oechem.StringParameterPOD_GetValuesVector(self)


    def GetDefaultsVector(self) -> "std::vector< std::string,std::allocator< std::string > >":
        """GetDefaultsVector(StringParameterPOD self) -> OEStringVector"""
        return _oechem.StringParameterPOD_GetDefaultsVector(self)


    def GetSettingsVector(self) -> "std::vector< std::string,std::allocator< std::string > >":
        """GetSettingsVector(StringParameterPOD self) -> OEStringVector"""
        return _oechem.StringParameterPOD_GetSettingsVector(self)


    def ClassID(self) -> "std::string":
        """ClassID(StringParameterPOD self) -> std::string"""
        return _oechem.StringParameterPOD_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(StringParameterPOD self) -> void const *"""
        return _oechem.StringParameterPOD_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(StringParameterPOD self) -> OEParameter"""
        return _oechem.StringParameterPOD_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(StringParameterPOD self, unsigned char * ccc) -> size_t"""
        return _oechem.StringParameterPOD_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(StringParameterPOD self, unsigned char const * ccc) -> size_t"""
        return _oechem.StringParameterPOD_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(StringParameterPOD self) -> size_t"""
        return _oechem.StringParameterPOD_ValueAndDefaultBinarySize(self)

StringParameterPOD_swigregister = _oechem.StringParameterPOD_swigregister
StringParameterPOD_swigregister(StringParameterPOD)

class OEFloatParameter(FloatParameterPOD):
    """Proxy of C++ OESystem::OEFloatParameter 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::OEFloatParameter self, std::string const & name) -> OEFloatParameter
        __init__(OESystem::OEFloatParameter self, std::string const & name, float const defValue) -> OEFloatParameter
        __init__(OESystem::OEFloatParameter self) -> OEFloatParameter
        __init__(OESystem::OEFloatParameter self, OEFloatParameter arg2) -> OEFloatParameter
        """
        this = _oechem.new_OEFloatParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEFloatParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEFloatParameter self) -> std::string"""
        return _oechem.OEFloatParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEFloatParameter self) -> void const *"""
        return _oechem.OEFloatParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEFloatParameter self) -> OEParameter"""
        return _oechem.OEFloatParameter_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEFloatParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEFloatParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEFloatParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEFloatParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEFloatParameter self) -> size_t"""
        return _oechem.OEFloatParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEFloatParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEFloatParameter self) -> PyObject *
        """
        return _oechem.OEFloatParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEFloatParameter self) -> PyObject *"""
        return _oechem.OEFloatParameter_GetDefaults(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEFloatParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEFloatParameter self) -> PyObject *
        """
        return _oechem.OEFloatParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEFloatParameter self) -> PyObject *"""
        return _oechem.OEFloatParameter_GetSettings(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEFloatParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEFloatParameter self) -> PyObject *
        """
        return _oechem.OEFloatParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFloatParameter self) -> PyObject *"""
        return _oechem.OEFloatParameter_GetValues(self)

OEFloatParameter_swigregister = _oechem.OEFloatParameter_swigregister
OEFloatParameter_swigregister(OEFloatParameter)

def OEFloatParameter_StaticClassID() -> "std::string":
    """OEFloatParameter_StaticClassID() -> std::string"""
    return _oechem.OEFloatParameter_StaticClassID()

class OEDoubleParameter(DoubleParameterPOD):
    """Proxy of C++ OESystem::OEDoubleParameter 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::OEDoubleParameter self, std::string const & name) -> OEDoubleParameter
        __init__(OESystem::OEDoubleParameter self, std::string const & name, double const defValue) -> OEDoubleParameter
        __init__(OESystem::OEDoubleParameter self) -> OEDoubleParameter
        __init__(OESystem::OEDoubleParameter self, OEDoubleParameter arg2) -> OEDoubleParameter
        """
        this = _oechem.new_OEDoubleParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDoubleParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEDoubleParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEDoubleParameter self) -> std::string"""
        return _oechem.OEDoubleParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEDoubleParameter self) -> void const *"""
        return _oechem.OEDoubleParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEDoubleParameter self) -> OEParameter"""
        return _oechem.OEDoubleParameter_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEDoubleParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEDoubleParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEDoubleParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEDoubleParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEDoubleParameter self) -> size_t"""
        return _oechem.OEDoubleParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEDoubleParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEDoubleParameter self) -> PyObject *
        """
        return _oechem.OEDoubleParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEDoubleParameter self) -> PyObject *"""
        return _oechem.OEDoubleParameter_GetDefaults(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEDoubleParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEDoubleParameter self) -> PyObject *
        """
        return _oechem.OEDoubleParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEDoubleParameter self) -> PyObject *"""
        return _oechem.OEDoubleParameter_GetSettings(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEDoubleParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEDoubleParameter self) -> PyObject *
        """
        return _oechem.OEDoubleParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEDoubleParameter self) -> PyObject *"""
        return _oechem.OEDoubleParameter_GetValues(self)

OEDoubleParameter_swigregister = _oechem.OEDoubleParameter_swigregister
OEDoubleParameter_swigregister(OEDoubleParameter)

def OEDoubleParameter_StaticClassID() -> "std::string":
    """OEDoubleParameter_StaticClassID() -> std::string"""
    return _oechem.OEDoubleParameter_StaticClassID()

class OEIntParameter(IntParameterPOD):
    """Proxy of C++ OESystem::OEIntParameter 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::OEIntParameter self, std::string const & name) -> OEIntParameter
        __init__(OESystem::OEIntParameter self, std::string const & name, int const defValue) -> OEIntParameter
        __init__(OESystem::OEIntParameter self) -> OEIntParameter
        __init__(OESystem::OEIntParameter self, OEIntParameter arg2) -> OEIntParameter
        """
        this = _oechem.new_OEIntParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEIntParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEIntParameter self) -> std::string"""
        return _oechem.OEIntParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEIntParameter self) -> void const *"""
        return _oechem.OEIntParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEIntParameter self) -> OEParameter"""
        return _oechem.OEIntParameter_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEIntParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEIntParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEIntParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEIntParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEIntParameter self) -> size_t"""
        return _oechem.OEIntParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEIntParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEIntParameter self) -> PyObject *
        """
        return _oechem.OEIntParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEIntParameter self) -> PyObject *"""
        return _oechem.OEIntParameter_GetDefaults(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEIntParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEIntParameter self) -> PyObject *
        """
        return _oechem.OEIntParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEIntParameter self) -> PyObject *"""
        return _oechem.OEIntParameter_GetSettings(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEIntParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEIntParameter self) -> PyObject *
        """
        return _oechem.OEIntParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEIntParameter self) -> PyObject *"""
        return _oechem.OEIntParameter_GetValues(self)

OEIntParameter_swigregister = _oechem.OEIntParameter_swigregister
OEIntParameter_swigregister(OEIntParameter)

def OEIntParameter_StaticClassID() -> "std::string":
    """OEIntParameter_StaticClassID() -> std::string"""
    return _oechem.OEIntParameter_StaticClassID()

class OEUIntParameter(UIntParameterPOD):
    """Proxy of C++ OESystem::OEUIntParameter 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::OEUIntParameter self, std::string const & name) -> OEUIntParameter
        __init__(OESystem::OEUIntParameter self, std::string const & name, unsigned int const defValue) -> OEUIntParameter
        __init__(OESystem::OEUIntParameter self) -> OEUIntParameter
        __init__(OESystem::OEUIntParameter self, OEUIntParameter arg2) -> OEUIntParameter
        """
        this = _oechem.new_OEUIntParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUIntParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEUIntParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEUIntParameter self) -> std::string"""
        return _oechem.OEUIntParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEUIntParameter self) -> void const *"""
        return _oechem.OEUIntParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEUIntParameter self) -> OEParameter"""
        return _oechem.OEUIntParameter_CreateCopy(self)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEUIntParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEUIntParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEUIntParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEUIntParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEUIntParameter self) -> size_t"""
        return _oechem.OEUIntParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEUIntParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEUIntParameter self) -> PyObject *
        """
        return _oechem.OEUIntParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEUIntParameter self) -> PyObject *"""
        return _oechem.OEUIntParameter_GetDefaults(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEUIntParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEUIntParameter self) -> PyObject *
        """
        return _oechem.OEUIntParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEUIntParameter self) -> PyObject *"""
        return _oechem.OEUIntParameter_GetSettings(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEUIntParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEUIntParameter self) -> PyObject *
        """
        return _oechem.OEUIntParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEUIntParameter self) -> PyObject *"""
        return _oechem.OEUIntParameter_GetValues(self)

OEUIntParameter_swigregister = _oechem.OEUIntParameter_swigregister
OEUIntParameter_swigregister(OEUIntParameter)

def OEUIntParameter_StaticClassID() -> "std::string":
    """OEUIntParameter_StaticClassID() -> std::string"""
    return _oechem.OEUIntParameter_StaticClassID()

class OEBoolParameter(BoolParameterPOD):
    """Proxy of C++ OESystem::OEBoolParameter 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::OEBoolParameter self, std::string const & name) -> OEBoolParameter
        __init__(OESystem::OEBoolParameter self, std::string const & name, bool const defValue) -> OEBoolParameter
        __init__(OESystem::OEBoolParameter self) -> OEBoolParameter
        __init__(OESystem::OEBoolParameter self, OEBoolParameter arg2) -> OEBoolParameter
        """
        this = _oechem.new_OEBoolParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEBoolParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEBoolParameter self) -> std::string"""
        return _oechem.OEBoolParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEBoolParameter self) -> void const *"""
        return _oechem.OEBoolParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEBoolParameter self) -> OEParameter"""
        return _oechem.OEBoolParameter_CreateCopy(self)


    def AddLegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddLegalValue(OEBoolParameter self, std::string const & arg2) -> bool"""
        return _oechem.OEBoolParameter_AddLegalValue(self, arg2)


    def AddIllegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddIllegalValue(OEBoolParameter self, std::string const & arg2) -> bool"""
        return _oechem.OEBoolParameter_AddIllegalValue(self, arg2)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(OEBoolParameter self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.OEBoolParameter_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(OEBoolParameter self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.OEBoolParameter_AddIllegalRange(self, arg2, arg3)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEBoolParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEBoolParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEBoolParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEBoolParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEBoolParameter self) -> size_t"""
        return _oechem.OEBoolParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEBoolParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEBoolParameter self) -> PyObject *
        """
        return _oechem.OEBoolParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEBoolParameter self) -> PyObject *"""
        return _oechem.OEBoolParameter_GetDefaults(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEBoolParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEBoolParameter self) -> PyObject *
        """
        return _oechem.OEBoolParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEBoolParameter self) -> PyObject *"""
        return _oechem.OEBoolParameter_GetSettings(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEBoolParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEBoolParameter self) -> PyObject *
        """
        return _oechem.OEBoolParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEBoolParameter self) -> PyObject *"""
        return _oechem.OEBoolParameter_GetValues(self)

OEBoolParameter_swigregister = _oechem.OEBoolParameter_swigregister
OEBoolParameter_swigregister(OEBoolParameter)

def OEBoolParameter_StaticClassID() -> "std::string":
    """OEBoolParameter_StaticClassID() -> std::string"""
    return _oechem.OEBoolParameter_StaticClassID()

class OEStringParameter(StringParameterPOD):
    """Proxy of C++ OESystem::OEStringParameter 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::OEStringParameter self, std::string const & name) -> OEStringParameter
        __init__(OESystem::OEStringParameter self, std::string const & name, std::string const & defValue) -> OEStringParameter
        __init__(OESystem::OEStringParameter self) -> OEStringParameter
        __init__(OESystem::OEStringParameter self, OEStringParameter arg2) -> OEStringParameter
        """
        this = _oechem.new_OEStringParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEStringParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEStringParameter self) -> std::string"""
        return _oechem.OEStringParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEStringParameter self) -> void const *"""
        return _oechem.OEStringParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEStringParameter self) -> OEParameter"""
        return _oechem.OEStringParameter_CreateCopy(self)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(OEStringParameter self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.OEStringParameter_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(OEStringParameter self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.OEStringParameter_AddIllegalRange(self, arg2, arg3)


    def IsLegal(self, value: 'std::string const &') -> "bool":
        """IsLegal(OEStringParameter self, std::string const & value) -> bool"""
        return _oechem.OEStringParameter_IsLegal(self, value)


    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(OEStringParameter self, std::string const & val) -> bool"""
        return _oechem.OEStringParameter_IsLegalString(self, val)


    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEStringParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEStringParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEStringParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEStringParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEStringParameter self) -> size_t"""
        return _oechem.OEStringParameter_ValueAndDefaultBinarySize(self)


    def GetDefault(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetDefault(OEStringParameter self, unsigned int idx=0) -> PyObject
        GetDefault(OEStringParameter self) -> PyObject *
        """
        return _oechem.OEStringParameter_GetDefault(self, idx)


    def GetDefaults(self) -> "PyObject *":
        """GetDefaults(OEStringParameter self) -> PyObject *"""
        return _oechem.OEStringParameter_GetDefaults(self)


    def GetValue(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetValue(OEStringParameter self, unsigned int idx=0) -> PyObject
        GetValue(OEStringParameter self) -> PyObject *
        """
        return _oechem.OEStringParameter_GetValue(self, idx)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEStringParameter self) -> PyObject *"""
        return _oechem.OEStringParameter_GetValues(self)


    def GetSetting(self, idx: 'unsigned int'=0) -> "PyObject *":
        """
        GetSetting(OEStringParameter self, unsigned int idx=0) -> PyObject
        GetSetting(OEStringParameter self) -> PyObject *
        """
        return _oechem.OEStringParameter_GetSetting(self, idx)


    def GetSettings(self) -> "PyObject *":
        """GetSettings(OEStringParameter self) -> PyObject *"""
        return _oechem.OEStringParameter_GetSettings(self)

OEStringParameter_swigregister = _oechem.OEStringParameter_swigregister
OEStringParameter_swigregister(OEStringParameter)

def OEStringParameter_StaticClassID() -> "std::string":
    """OEStringParameter_StaticClassID() -> std::string"""
    return _oechem.OEStringParameter_StaticClassID()

class OEConstParameter(OEUIntParameter):
    """Proxy of C++ OESystem::OEConstParameter 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::OEConstParameter self, std::string const & name) -> OEConstParameter
        __init__(OESystem::OEConstParameter self, std::string const & name, unsigned int const defValue, std::string const & defKey) -> OEConstParameter
        __init__(OESystem::OEConstParameter self) -> OEConstParameter
        __init__(OESystem::OEConstParameter self, OEConstParameter arg2) -> OEConstParameter
        """
        this = _oechem.new_OEConstParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConstParameter
    __del__ = lambda self: None

    def StaticClassID() -> "std::string":
        """StaticClassID() -> std::string"""
        return _oechem.OEConstParameter_StaticClassID()

    StaticClassID = staticmethod(StaticClassID)

    def ClassID(self) -> "std::string":
        """ClassID(OEConstParameter self) -> std::string"""
        return _oechem.OEConstParameter_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(OEConstParameter self) -> void const *"""
        return _oechem.OEConstParameter_FactoryTypeID(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEConstParameter self) -> OEParameter"""
        return _oechem.OEConstParameter_CreateCopy(self)


    def IsLegalString(self, val: 'std::string const &') -> "bool":
        """IsLegalString(OEConstParameter self, std::string const & val) -> bool"""
        return _oechem.OEConstParameter_IsLegalString(self, val)


    def AddLegalEntry(self, value: 'unsigned int const', key: 'std::string const &') -> "bool":
        """AddLegalEntry(OEConstParameter self, unsigned int const value, std::string const & key) -> bool"""
        return _oechem.OEConstParameter_AddLegalEntry(self, value, key)


    def AddValue(self, *args) -> "bool":
        """
        AddValue(OEConstParameter self, std::string const & value) -> bool
        AddValue(OEConstParameter self, unsigned int const & value) -> bool
        """
        return _oechem.OEConstParameter_AddValue(self, *args)


    def AddDefault(self, *args) -> "bool":
        """
        AddDefault(OEConstParameter self, std::string const & dflt) -> bool
        AddDefault(OEConstParameter self, unsigned int const & dflt) -> bool
        """
        return _oechem.OEConstParameter_AddDefault(self, *args)


    def SetValue(self, *args) -> "bool":
        """
        SetValue(OEConstParameter self, std::string const & value) -> bool
        SetValue(OEConstParameter self, unsigned int const & value) -> bool
        """
        return _oechem.OEConstParameter_SetValue(self, *args)


    def SetDefault(self, *args) -> "bool":
        """
        SetDefault(OEConstParameter self, std::string const & dflt) -> bool
        SetDefault(OEConstParameter self, unsigned int const & dflt) -> bool
        """
        return _oechem.OEConstParameter_SetDefault(self, *args)

OEConstParameter_swigregister = _oechem.OEConstParameter_swigregister
OEConstParameter_swigregister(OEConstParameter)

def OEConstParameter_StaticClassID() -> "std::string":
    """OEConstParameter_StaticClassID() -> std::string"""
    return _oechem.OEConstParameter_StaticClassID()


def OERegisterMolParameters() -> "bool":
    """OERegisterMolParameters() -> bool"""
    return _oechem.OERegisterMolParameters()
class OEOptions(object):
    """Proxy of C++ OESystem::OEOptions 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__ = _oechem.delete_OEOptions
    __del__ = lambda self: None

    def Validate(self) -> "bool":
        """Validate(OEOptions self) -> bool"""
        return _oechem.OEOptions_Validate(self)


    def CreateCopy(self) -> "OESystem::OEOptions *":
        """CreateCopy(OEOptions self) -> OEOptions"""
        return _oechem.OEOptions_CreateCopy(self)


    def GetOrderPriority(self) -> "int":
        """GetOrderPriority(OEOptions self) -> int"""
        return _oechem.OEOptions_GetOrderPriority(self)


    def SetOrderPriority(self, priority: 'int const') -> "bool":
        """SetOrderPriority(OEOptions self, int const priority) -> bool"""
        return _oechem.OEOptions_SetOrderPriority(self, priority)


    def GetName(self) -> "std::string":
        """GetName(OEOptions self) -> std::string"""
        return _oechem.OEOptions_GetName(self)


    def SetName(self, name: 'std::string const &') -> "bool":
        """SetName(OEOptions self, std::string const & name) -> bool"""
        return _oechem.OEOptions_SetName(self, name)


    def GetBrief(self) -> "std::string":
        """GetBrief(OEOptions self) -> std::string"""
        return _oechem.OEOptions_GetBrief(self)


    def SetBrief(self, brief: 'std::string const &') -> "bool":
        """SetBrief(OEOptions self, std::string const & brief) -> bool"""
        return _oechem.OEOptions_SetBrief(self, brief)


    def GetDetail(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDetail(OEOptions self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEOptions_GetDetail(self)


    def AddDetail(self, detail: 'std::string const &') -> "bool":
        """AddDetail(OEOptions self, std::string const & detail) -> bool"""
        return _oechem.OEOptions_AddDetail(self, detail)


    def HasParameter(self, name: 'std::string const &') -> "bool":
        """HasParameter(OEOptions self, std::string const & name) -> bool"""
        return _oechem.OEOptions_HasParameter(self, name)


    def GetParameter(self, *args) -> "OESystem::OEParameter const *":
        """
        GetParameter(OEOptions self, std::string const & name) -> OEParameter
        GetParameter(OEOptions self, std::string const & name) -> OEParameter
        """
        return _oechem.OEOptions_GetParameter(self, *args)


    def GetParameters(self, *args) -> "OESystem::OEIterBase< OESystem::OEParameter > *":
        """
        GetParameters(OEOptions self, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEOptions self) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEOptions self, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEOptions self) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEOptions self, std::string const & name, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEOptions self, std::string const & name) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEOptions self, std::string const & name, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEOptions self, std::string const & name) -> OESystem::OEIterBase< OESystem::OEParameter > *
        """
        return _oechem.OEOptions_GetParameters(self, *args)


    def AddParameter(self, param: 'OEParameter') -> "OESystem::OEParameter *":
        """AddParameter(OEOptions self, OEParameter param) -> OEParameter"""
        return _oechem.OEOptions_AddParameter(self, param)


    def DeleteParameter(self, param: 'OEParameter') -> "bool":
        """DeleteParameter(OEOptions self, OEParameter param) -> bool"""
        return _oechem.OEOptions_DeleteParameter(self, param)


    def SetParameterVisibility(self, *args) -> "bool":
        """
        SetParameterVisibility(OEOptions self, unsigned int const visibility) -> bool
        SetParameterVisibility(OEOptions self, std::string const & name, unsigned int const visibility) -> bool
        """
        return _oechem.OEOptions_SetParameterVisibility(self, *args)


    def FindDupParameters(self, *args) -> "OESystem::OEIterBase< OESystem::OEParameter const > *":
        """
        FindDupParameters(OEOptions self, bool const visibleOnly=True) -> OESystem::OEIterBase< OESystem::OEParameter >
        FindDupParameters(OEOptions self) -> OESystem::OEIterBase< OESystem::OEParameter >
        FindDupParameters(OEOptions self, bool const visibleOnly=True) -> OESystem::OEIterBase< OESystem::OEParameter const >
        FindDupParameters(OEOptions self) -> OESystem::OEIterBase< OESystem::OEParameter const > *
        """
        return _oechem.OEOptions_FindDupParameters(self, *args)


    def HasDupParameters(self, visibleOnly: 'bool const'=True) -> "bool":
        """
        HasDupParameters(OEOptions self, bool const visibleOnly=True) -> bool
        HasDupParameters(OEOptions self) -> bool
        """
        return _oechem.OEOptions_HasDupParameters(self, visibleOnly)


    def AddParameterSuffix(self, suffix: 'std::string const &') -> "bool":
        """AddParameterSuffix(OEOptions self, std::string const & suffix) -> bool"""
        return _oechem.OEOptions_AddParameterSuffix(self, suffix)


    def Clear(self) -> "void":
        """Clear(OEOptions self)"""
        return _oechem.OEOptions_Clear(self)


    def HasOption(self, name: 'std::string const &') -> "bool":
        """HasOption(OEOptions self, std::string const & name) -> bool"""
        return _oechem.OEOptions_HasOption(self, name)


    def GetOption(self, *args) -> "OESystem::OEOptions const *":
        """
        GetOption(OEOptions self, std::string const & name) -> OEOptions
        GetOption(OEOptions self, std::string const & name) -> OEOptions
        """
        return _oechem.OEOptions_GetOption(self, *args)


    def GetOptions(self, *args) -> "OESystem::OEIterBase< OESystem::OEOptions > *":
        """
        GetOptions(OEOptions self, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEOptions const >
        GetOptions(OEOptions self) -> OESystem::OEIterBase< OESystem::OEOptions const >
        GetOptions(OEOptions self, bool const recursive=True) -> OESystem::OEIterBase< OESystem::OEOptions >
        GetOptions(OEOptions self) -> OESystem::OEIterBase< OESystem::OEOptions > *
        """
        return _oechem.OEOptions_GetOptions(self, *args)


    def DeleteOptions(self, arg2: 'OEOptions') -> "bool":
        """DeleteOptions(OEOptions self, OEOptions arg2) -> bool"""
        return _oechem.OEOptions_DeleteOptions(self, arg2)


    def UpdateValues(self, opts: 'OEOptions') -> "bool":
        """UpdateValues(OEOptions self, OEOptions opts) -> bool"""
        return _oechem.OEOptions_UpdateValues(self, opts)


    def __init__(self, *args):
        """
        __init__(OESystem::OEOptions self, std::string const & name) -> OEOptions
        __init__(OESystem::OEOptions self, OEOptions arg2) -> OEOptions
        __init__(OESystem::OEOptions self, std::string const & name, size_t const numParams, size_t const numSubOpts) -> OEOptions
        """
        if self.__class__ == OEOptions:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEOptions(_self, *args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEOptions(self)
        return weakref_proxy(self)
OEOptions_swigregister = _oechem.OEOptions_swigregister
OEOptions_swigregister(OEOptions)

class OEConfRMSDOptions(OEOptions):
    """Proxy of C++ OEChem::OEConfRMSDOptions 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__(OEChem::OEConfRMSDOptions self) -> OEConfRMSDOptions
        __init__(OEChem::OEConfRMSDOptions self, OEConfRMSDOptions arg2) -> OEConfRMSDOptions
        """
        this = _oechem.new_OEConfRMSDOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConfRMSDOptions
    __del__ = lambda self: None

    def Validate(self) -> "bool":
        """Validate(OEConfRMSDOptions self) -> bool"""
        return _oechem.OEConfRMSDOptions_Validate(self)


    def GetIgnoreHydrogens(self) -> "bool":
        """GetIgnoreHydrogens(OEConfRMSDOptions self) -> bool"""
        return _oechem.OEConfRMSDOptions_GetIgnoreHydrogens(self)


    def SetIgnoreHydrogens(self, value: 'bool const') -> "bool":
        """SetIgnoreHydrogens(OEConfRMSDOptions self, bool const value) -> bool"""
        return _oechem.OEConfRMSDOptions_SetIgnoreHydrogens(self, value)


    def GetIgnoreTerminalHeavy(self) -> "bool":
        """GetIgnoreTerminalHeavy(OEConfRMSDOptions self) -> bool"""
        return _oechem.OEConfRMSDOptions_GetIgnoreTerminalHeavy(self)


    def SetIgnoreTerminalHeavy(self, value: 'bool const') -> "bool":
        """SetIgnoreTerminalHeavy(OEConfRMSDOptions self, bool const value) -> bool"""
        return _oechem.OEConfRMSDOptions_SetIgnoreTerminalHeavy(self, value)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OEConfRMSDOptions self) -> unsigned int"""
        return _oechem.OEConfRMSDOptions_GetMaxMatches(self)


    def SetMaxMatches(self, value: 'unsigned int const') -> "bool":
        """SetMaxMatches(OEConfRMSDOptions self, unsigned int const value) -> bool"""
        return _oechem.OEConfRMSDOptions_SetMaxMatches(self, value)


    def CreateCopy(self) -> "OEChem::OEConfRMSDOptions *":
        """CreateCopy(OEConfRMSDOptions self) -> OEConfRMSDOptions"""
        return _oechem.OEConfRMSDOptions_CreateCopy(self)

OEConfRMSDOptions_swigregister = _oechem.OEConfRMSDOptions_swigregister
OEConfRMSDOptions_swigregister(OEConfRMSDOptions)

class OEConfRMSD(object):
    """Proxy of C++ OEChem::OEConfRMSD 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__(OEChem::OEConfRMSD self, OEMolBase mol, OEConfRMSDOptions opts) -> OEConfRMSD
        __init__(OEChem::OEConfRMSD self, OEMolBase mol) -> OEConfRMSD
        """
        this = _oechem.new_OEConfRMSD(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConfRMSD
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OEConfRMSD self) -> bool"""
        return _oechem.OEConfRMSD_IsValid(self)


    def GetOptions(self) -> "OEChem::OEConfRMSDOptions":
        """GetOptions(OEConfRMSD self) -> OEConfRMSDOptions"""
        return _oechem.OEConfRMSD_GetOptions(self)


    def NumAutomorphs(self) -> "unsigned int":
        """NumAutomorphs(OEConfRMSD self) -> unsigned int"""
        return _oechem.OEConfRMSD_NumAutomorphs(self)


    def CalculateRMSD(self, *args) -> "double":
        """
        CalculateRMSD(OEConfRMSD self, OEConfBase refconf, OEConfBase fitconf) -> double
        CalculateRMSD(OEConfRMSD self, double const * refcoords, double const * fitcoords) -> double
        """
        return _oechem.OEConfRMSD_CalculateRMSD(self, *args)


    def MinimizeRMSD(self, *args) -> "double":
        """
        MinimizeRMSD(OEConfRMSD self, OEConfBase refconf, OEConfBase fitconf, OETrans trans) -> double
        MinimizeRMSD(OEConfRMSD self, double const * refcoords, double const * fitcoords, OETrans trans) -> double
        """
        return _oechem.OEConfRMSD_MinimizeRMSD(self, *args)

OEConfRMSD_swigregister = _oechem.OEConfRMSD_swigregister
OEConfRMSD_swigregister(OEConfRMSD)


def OEOverlayConfsByRMSD(mol: 'OEMCMolBase', maxTermHeavyAtoms: 'unsigned int const'=25) -> "bool":
    """
    OEOverlayConfsByRMSD(OEMCMolBase mol, unsigned int const maxTermHeavyAtoms=25) -> bool
    OEOverlayConfsByRMSD(OEMCMolBase mol) -> bool
    """
    return _oechem.OEOverlayConfsByRMSD(mol, maxTermHeavyAtoms)

def GetArgVFromPythonSequence(argv: 'std::vector< char *,std::allocator< char * > > &', input: 'PyObject *') -> "bool":
    """GetArgVFromPythonSequence(std::vector< char *,std::allocator< char * > > & argv, PyObject * input) -> bool"""
    return _oechem.GetArgVFromPythonSequence(argv, input)
class OEInterface(object):
    """Proxy of C++ OESystem::OEInterface class."""

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

    def Factory() -> "OESimpleFactory< std::string,OESystem::OEParameter > &":
        """Factory() -> OESimpleFactory< std::string,OESystem::OEParameter > &"""
        return _oechem.OEInterface_Factory()

    Factory = staticmethod(Factory)

    def SetOrderPriority(self, priority: 'int') -> "bool":
        """SetOrderPriority(OEInterface self, int priority) -> bool"""
        return _oechem.OEInterface_SetOrderPriority(self, priority)


    def SetName(self, name: 'std::string') -> "bool":
        """SetName(OEInterface self, std::string name) -> bool"""
        return _oechem.OEInterface_SetName(self, name)


    def SetBrief(self, brief: 'std::string') -> "bool":
        """SetBrief(OEInterface self, std::string brief) -> bool"""
        return _oechem.OEInterface_SetBrief(self, brief)


    def AddDetail(self, detail: 'std::string const &') -> "bool":
        """AddDetail(OEInterface self, std::string const & detail) -> bool"""
        return _oechem.OEInterface_AddDetail(self, detail)


    def GetOrderPriority(self) -> "int":
        """GetOrderPriority(OEInterface self) -> int"""
        return _oechem.OEInterface_GetOrderPriority(self)


    def GetName(self) -> "std::string":
        """GetName(OEInterface self) -> std::string"""
        return _oechem.OEInterface_GetName(self)


    def GetBrief(self) -> "std::string":
        """GetBrief(OEInterface self) -> std::string"""
        return _oechem.OEInterface_GetBrief(self)


    def GetDetail(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDetail(OEInterface self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEInterface_GetDetail(self)


    def AddParameter(self, *args) -> "OESystem::OEParameter *":
        """
        AddParameter(OEInterface self, std::string classid) -> OEParameter
        AddParameter(OEInterface self, OEParameter param) -> OEParameter
        """
        return _oechem.OEInterface_AddParameter(self, *args)


    def DeleteParameter(self, param: 'OEParameter') -> "bool":
        """DeleteParameter(OEInterface self, OEParameter param) -> bool"""
        return _oechem.OEInterface_DeleteParameter(self, param)


    def GetParameter(self, *args) -> "OESystem::OEParameter const *":
        """
        GetParameter(OEInterface self, std::string name) -> OEParameter
        GetParameter(OEInterface self, std::string name) -> OEParameter
        """
        return _oechem.OEInterface_GetParameter(self, *args)


    def GetParameters(self, *args) -> "OESystem::OEIterBase< OESystem::OEParameter const > *":
        """
        GetParameters(OEInterface self, bool recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEInterface self) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEInterface self, bool recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEInterface self) -> OESystem::OEIterBase< OESystem::OEParameter const > *
        """
        return _oechem.OEInterface_GetParameters(self, *args)


    def AddInterface(self) -> "OESystem::OEInterface *":
        """AddInterface(OEInterface self) -> OEInterface"""
        return _oechem.OEInterface_AddInterface(self)


    def DeleteInterface(self, itf: 'OEInterface') -> "bool":
        """DeleteInterface(OEInterface self, OEInterface itf) -> bool"""
        return _oechem.OEInterface_DeleteInterface(self, itf)


    def GetInterface(self, *args) -> "OESystem::OEInterface const *":
        """
        GetInterface(OEInterface self, std::string name) -> OEInterface
        GetInterface(OEInterface self, std::string name) -> OEInterface
        """
        return _oechem.OEInterface_GetInterface(self, *args)


    def GetInterfaces(self, *args) -> "OESystem::OEIterBase< OESystem::OEInterface const > *":
        """
        GetInterfaces(OEInterface self, bool recursive=False) -> OESystem::OEIterBase< OESystem::OEInterface >
        GetInterfaces(OEInterface self) -> OESystem::OEIterBase< OESystem::OEInterface >
        GetInterfaces(OEInterface self, bool recursive=False) -> OESystem::OEIterBase< OESystem::OEInterface const >
        GetInterfaces(OEInterface self) -> OESystem::OEIterBase< OESystem::OEInterface const > *
        """
        return _oechem.OEInterface_GetInterfaces(self, *args)


    def Parent(self, *args) -> "OESystem::OEInterface *":
        """
        Parent(OEInterface self) -> OEInterface
        Parent(OEInterface self) -> OEInterface
        """
        return _oechem.OEInterface_Parent(self, *args)


    def Clear(self) -> "bool":
        """Clear(OEInterface self) -> bool"""
        return _oechem.OEInterface_Clear(self)

    __swig_destroy__ = _oechem.delete_OEInterface
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OESystem::OEInterface self) -> OEInterface
        __init__(OESystem::OEInterface self, OEInterface arg2) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr, int argc, char ** argv) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr, PyObject * input) -> OEInterface
        """
        this = _oechem.new_OEInterface(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def HasBool(self, name: 'char const *', ilist: 'unsigned int'=0) -> "bool":
        """
        HasBool(OEInterface self, char const * name, unsigned int ilist=0) -> bool
        HasBool(OEInterface self, char const * name) -> bool
        """
        return _oechem.OEInterface_HasBool(self, name, ilist)


    def GetBool(self, name: 'char const *', ilist: 'unsigned int'=0) -> "bool":
        """
        GetBool(OEInterface self, char const * name, unsigned int ilist=0) -> bool
        GetBool(OEInterface self, char const * name) -> bool
        """
        return _oechem.OEInterface_GetBool(self, name, ilist)


    def GetBoolList(self, name: 'char const *') -> "OESystem::OEIterBase< bool const > *":
        """GetBoolList(OEInterface self, char const * name) -> OESystem::OEIterBase< bool const > *"""
        return _oechem.OEInterface_GetBoolList(self, name)


    def HasInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasInt(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasInt(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasInt(self, name, ilist)


    def GetInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "int":
        """
        GetInt(OEInterface self, std::string name, unsigned int ilist=0) -> int
        GetInt(OEInterface self, std::string name) -> int
        """
        return _oechem.OEInterface_GetInt(self, name, ilist)


    def GetIntList(self, name: 'std::string') -> "OESystem::OEIterBase< int const > *":
        """GetIntList(OEInterface self, std::string name) -> OESystem::OEIterBase< int const > *"""
        return _oechem.OEInterface_GetIntList(self, name)


    def HasUnsignedInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasUnsignedInt(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasUnsignedInt(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasUnsignedInt(self, name, ilist)


    def GetUnsignedInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "int":
        """
        GetUnsignedInt(OEInterface self, std::string name, unsigned int ilist=0) -> int
        GetUnsignedInt(OEInterface self, std::string name) -> int
        """
        return _oechem.OEInterface_GetUnsignedInt(self, name, ilist)


    def HasFloat(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasFloat(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasFloat(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasFloat(self, name, ilist)


    def GetFloat(self, name: 'std::string', ilist: 'unsigned int'=0) -> "float":
        """
        GetFloat(OEInterface self, std::string name, unsigned int ilist=0) -> float
        GetFloat(OEInterface self, std::string name) -> float
        """
        return _oechem.OEInterface_GetFloat(self, name, ilist)


    def GetFloatList(self, name: 'std::string') -> "OESystem::OEIterBase< float const > *":
        """GetFloatList(OEInterface self, std::string name) -> OESystem::OEIterBase< float const > *"""
        return _oechem.OEInterface_GetFloatList(self, name)


    def HasDouble(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasDouble(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasDouble(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasDouble(self, name, ilist)


    def GetDouble(self, name: 'std::string', ilist: 'unsigned int'=0) -> "double":
        """
        GetDouble(OEInterface self, std::string name, unsigned int ilist=0) -> double
        GetDouble(OEInterface self, std::string name) -> double
        """
        return _oechem.OEInterface_GetDouble(self, name, ilist)


    def GetDoubleList(self, name: 'std::string') -> "OESystem::OEIterBase< double const > *":
        """GetDoubleList(OEInterface self, std::string name) -> OESystem::OEIterBase< double const > *"""
        return _oechem.OEInterface_GetDoubleList(self, name)


    def HasString(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasString(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasString(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasString(self, name, ilist)


    def GetString(self, name: 'std::string', ilist: 'unsigned int'=0) -> "std::string":
        """
        GetString(OEInterface self, std::string name, unsigned int ilist=0) -> std::string
        GetString(OEInterface self, std::string name) -> std::string
        """
        return _oechem.OEInterface_GetString(self, name, ilist)


    def GetStringList(self, name: 'std::string') -> "OESystem::OEIterBase< std::string const > *":
        """GetStringList(OEInterface self, std::string name) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEInterface_GetStringList(self, name)


    def HasOEMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasOEMol(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasOEMol(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasOEMol(self, name, ilist)


    def GetOEMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "OEMolWrapper *":
        """
        GetOEMol(OEInterface self, std::string name, unsigned int ilist=0) -> OEMol
        GetOEMol(OEInterface self, std::string name) -> OEMol
        """
        return _oechem.OEInterface_GetOEMol(self, name, ilist)


    def HasOEGraphMol(self, name: 'std::string', ilist: 'unsigned int') -> "bool":
        """HasOEGraphMol(OEInterface self, std::string name, unsigned int ilist) -> bool"""
        return _oechem.OEInterface_HasOEGraphMol(self, name, ilist)


    def GetOEGraphMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "OEGraphMolWrapper *":
        """
        GetOEGraphMol(OEInterface self, std::string name, unsigned int ilist=0) -> OEGraphMol
        GetOEGraphMol(OEInterface self, std::string name) -> OEGraphMol
        """
        return _oechem.OEInterface_GetOEGraphMol(self, name, ilist)

OEInterface_swigregister = _oechem.OEInterface_swigregister
OEInterface_swigregister(OEInterface)

def OEInterface_Factory() -> "OESimpleFactory< std::string,OESystem::OEParameter > &":
    """OEInterface_Factory() -> OESimpleFactory< std::string,OESystem::OEParameter > &"""
    return _oechem.OEInterface_Factory()


def OEParseCommandLineLW(*args) -> "bool":
    """
    OEParseCommandLineLW(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv) -> bool
    """
    return _oechem.OEParseCommandLineLW(*args)

def OEWriteHtml(itf: 'OEInterface', ostr: 'oeostream', program_name: 'std::string', program_version: 'std::string') -> "bool":
    """OEWriteHtml(OEInterface itf, oeostream ostr, std::string program_name, std::string program_version) -> bool"""
    return _oechem.OEWriteHtml(itf, ostr, program_name, program_version)

def OEWriteSettings(*args) -> "bool":
    """
    OEWriteSettings(OEInterface itf, oeostream ostr, bool include_default=True, std::string mode) -> bool
    OEWriteSettings(OEInterface itf, oeostream ostr, bool include_default=True) -> bool
    OEWriteSettings(OEInterface itf, oeostream ostr) -> bool
    OEWriteSettings(OEInterface itf) -> bool
    """
    return _oechem.OEWriteSettings(*args)

def OEParseParameterFile(*args) -> "bool":
    """
    OEParseParameterFile(OEInterface itf, oeistream istr, bool over_ride=True, unsigned int error_level) -> bool
    OEParseParameterFile(OEInterface itf, oeistream istr, bool over_ride=True) -> bool
    OEParseParameterFile(OEInterface itf, oeistream istr) -> bool
    """
    return _oechem.OEParseParameterFile(*args)

def OEWriteInterfaceConfigurationFile(itf: 'OEInterface', ostr: 'oeostream') -> "bool":
    """OEWriteInterfaceConfigurationFile(OEInterface itf, oeostream ostr) -> bool"""
    return _oechem.OEWriteInterfaceConfigurationFile(itf, ostr)

def OEWriteJSON(itf: 'OEInterface', ostr: 'oeostream') -> "bool":
    """OEWriteJSON(OEInterface itf, oeostream ostr) -> bool"""
    return _oechem.OEWriteJSON(itf, ostr)

def OEConfigure(*args) -> "bool":
    """
    OEConfigure(OEInterface itf, oeistream istr) -> bool
    OEConfigure(OEInterface itf, char const * itfdata) -> bool
    """
    return _oechem.OEConfigure(*args)

def OECheckHelp(*args) -> "PyObject *":
    """
    OECheckHelp(OEInterface itf, PyObject * input, bool help_for_no_args=True, oeostream ostr) -> PyObject
    OECheckHelp(OEInterface itf, PyObject * input, bool help_for_no_args=True) -> PyObject
    OECheckHelp(OEInterface itf, PyObject * input) -> PyObject *
    """
    return _oechem.OECheckHelp(*args)

def OEParseCommandLine(*args) -> "PyObject *":
    """
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level, bool checkhelp=True) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level, bool checkhelp=True) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv) -> bool
    OEParseCommandLine(OEInterface itf, PyObject * input, char const * requirements=None, unsigned int error_level) -> PyObject
    OEParseCommandLine(OEInterface itf, PyObject * input, char const * requirements=None) -> PyObject
    OEParseCommandLine(OEInterface itf, PyObject * input) -> PyObject *
    """
    return _oechem.OEParseCommandLine(*args)

def OEConfigureFromFile(itf: 'OEInterface', filename: 'std::string const &') -> "bool":
    """OEConfigureFromFile(OEInterface itf, std::string const & filename) -> bool"""
    return _oechem.OEConfigureFromFile(itf, filename)

def OEConfigureOpts(*args) -> "PyObject *":
    """
    OEConfigureOpts(OEOptions opts, int argc, char ** argv, bool const writeSettings=True) -> unsigned int
    OEConfigureOpts(OEOptions opts, int argc, char ** argv) -> unsigned int
    OEConfigureOpts(OEOptions opts, PyObject * input, bool const writeSettings=True) -> PyObject
    OEConfigureOpts(OEOptions opts, PyObject * input) -> PyObject *
    """
    return _oechem.OEConfigureOpts(*args)
class OEInteractionHintComponentTypeBase(object):
    """Proxy of C++ OEBio::OEInteractionHintComponentTypeBase 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__ = _oechem.delete_OEInteractionHintComponentTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OEInteractionHintComponentTypeBase self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEInteractionHintComponentTypeBase_CreateCopy(self)


    def GetName(self) -> "std::string":
        """GetName(OEInteractionHintComponentTypeBase self) -> std::string"""
        return _oechem.OEInteractionHintComponentTypeBase_GetName(self)


    def __eq__(self, arg2: 'OEInteractionHintComponentTypeBase') -> "bool":
        """__eq__(OEInteractionHintComponentTypeBase self, OEInteractionHintComponentTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEInteractionHintComponentTypeBase') -> "bool":
        """__ne__(OEInteractionHintComponentTypeBase self, OEInteractionHintComponentTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase___ne__(self, arg2)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEInteractionHintComponentTypeBase self, OEMolBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase_IsValid(self, arg2)


    def GetImpl(self) -> "OEBio::OEInteractionHintComponentTypeBaseImpl const *":
        """GetImpl(OEInteractionHintComponentTypeBase self) -> OEBio::OEInteractionHintComponentTypeBaseImpl const *"""
        return _oechem.OEInteractionHintComponentTypeBase_GetImpl(self)

OEInteractionHintComponentTypeBase_swigregister = _oechem.OEInteractionHintComponentTypeBase_swigregister
OEInteractionHintComponentTypeBase_swigregister(OEInteractionHintComponentTypeBase)

class OEProteinInteractionHintComponent(OEInteractionHintComponentTypeBase):
    """Proxy of C++ OEBio::OEProteinInteractionHintComponent 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__(OEBio::OEProteinInteractionHintComponent self) -> OEProteinInteractionHintComponent
        __init__(OEBio::OEProteinInteractionHintComponent self, OEProteinInteractionHintComponent arg2) -> OEProteinInteractionHintComponent
        """
        this = _oechem.new_OEProteinInteractionHintComponent(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEProteinInteractionHintComponent
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OEProteinInteractionHintComponent self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEProteinInteractionHintComponent_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEProteinInteractionHintComponent self, OEMolBase arg2) -> bool"""
        return _oechem.OEProteinInteractionHintComponent_IsValid(self, arg2)

OEProteinInteractionHintComponent_swigregister = _oechem.OEProteinInteractionHintComponent_swigregister
OEProteinInteractionHintComponent_swigregister(OEProteinInteractionHintComponent)

class OELigandInteractionHintComponent(OEInteractionHintComponentTypeBase):
    """Proxy of C++ OEBio::OELigandInteractionHintComponent 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__(OEBio::OELigandInteractionHintComponent self) -> OELigandInteractionHintComponent
        __init__(OEBio::OELigandInteractionHintComponent self, OELigandInteractionHintComponent arg2) -> OELigandInteractionHintComponent
        """
        this = _oechem.new_OELigandInteractionHintComponent(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELigandInteractionHintComponent
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OELigandInteractionHintComponent self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OELigandInteractionHintComponent_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OELigandInteractionHintComponent self, OEMolBase arg2) -> bool"""
        return _oechem.OELigandInteractionHintComponent_IsValid(self, arg2)


    def GetMaxHeavyAtom(self) -> "unsigned int":
        """GetMaxHeavyAtom(OELigandInteractionHintComponent self) -> unsigned int"""
        return _oechem.OELigandInteractionHintComponent_GetMaxHeavyAtom(self)


    def SetMaxHeavyAtom(self, maxhvy: 'unsigned int') -> "void":
        """SetMaxHeavyAtom(OELigandInteractionHintComponent self, unsigned int maxhvy)"""
        return _oechem.OELigandInteractionHintComponent_SetMaxHeavyAtom(self, maxhvy)

OELigandInteractionHintComponent_swigregister = _oechem.OELigandInteractionHintComponent_swigregister
OELigandInteractionHintComponent_swigregister(OELigandInteractionHintComponent)

class OEInteractionHintFragment(OEBase):
    """Proxy of C++ OEBio::OEInteractionHintFragment 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, rhs: 'OEInteractionHintFragment'):
        """__init__(OEBio::OEInteractionHintFragment self, OEInteractionHintFragment rhs) -> OEInteractionHintFragment"""
        this = _oechem.new_OEInteractionHintFragment(rhs)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintFragment
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEInteractionHintFragment self) -> OEBase"""
        return _oechem.OEInteractionHintFragment_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEInteractionHintFragment self) -> void const *"""
        return _oechem.OEInteractionHintFragment_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEInteractionHintFragment self, void const * arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_IsDataType(self, arg2)


    def AddAtom(self, arg2: 'OEAtomBase') -> "bool":
        """AddAtom(OEInteractionHintFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_AddAtom(self, arg2)


    def HasAtom(self, arg2: 'OEAtomBase') -> "bool":
        """HasAtom(OEInteractionHintFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_HasAtom(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEInteractionHintFragment self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAtoms(OEInteractionHintFragment self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEInteractionHintFragment_GetAtoms(self, *args)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase const *":
        """GetAtom(OEInteractionHintFragment self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEInteractionHintFragment_GetAtom(self, arg2)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEInteractionHintFragment self) -> unsigned int"""
        return _oechem.OEInteractionHintFragment_NumAtoms(self)


    def GetComponentType(self) -> "OEBio::OEInteractionHintComponentTypeBase const &":
        """GetComponentType(OEInteractionHintFragment self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEInteractionHintFragment_GetComponentType(self)

OEInteractionHintFragment_swigregister = _oechem.OEInteractionHintFragment_swigregister
OEInteractionHintFragment_swigregister(OEInteractionHintFragment)


def OEGetCalculatedInteractionGeometries(itype: 'OEInteractionHintTypeBase') -> "OESystem::OEIterBase< std::string const > *":
    """OEGetCalculatedInteractionGeometries(OEInteractionHintTypeBase itype) -> OESystem::OEIterBase< std::string const > *"""
    return _oechem.OEGetCalculatedInteractionGeometries(itype)
class OEConstAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEChem::OEAtomBase)> 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<(q(const).OEChem::OEAtomBase)> self) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OEConstAtomIter rhs) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OESystem::OEIterBase< OEChem::OEAtomBase const > * rhs) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBase const >::NonConstA > * rhs) -> OEConstAtomIter
        """
        this = _oechem.new_OEConstAtomIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConstAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """Copy(OEConstAtomIter self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *"""
        return _oechem.OEConstAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstAtomIter self, OESystem::OEIterBase< OEChem::OEAtomBase const > * ib)
        Push(OEConstAtomIter self, OEConstAtomIter iter)
        """
        return _oechem.OEConstAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEAtomBase const,OEChem::OEAtomBase const > const &') -> "void":
        """Sort(OEConstAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEAtomBase const,OEChem::OEAtomBase const > const & sort_criterion)"""
        return _oechem.OEConstAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """ToFirst(OEConstAtomIter self) -> OEConstAtomIter"""
        return _oechem.OEConstAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """ToLast(OEConstAtomIter self) -> OEConstAtomIter"""
        return _oechem.OEConstAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBase const &":
        """__ref__(OEConstAtomIter self) -> OEAtomBase"""
        return _oechem.OEConstAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConstAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstAtomIter self) -> PyObject *"""
        return _oechem.OEConstAtomIter_next(self)


    def Target(self) -> "OEChem::OEAtomBase const &":
        """Target(OEConstAtomIter self) -> OEAtomBase"""
        return _oechem.OEConstAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """
        Next(OEConstAtomIter self) -> OEConstAtomIter
        Next(OEConstAtomIter self, int i) -> OEConstAtomIter
        """
        return _oechem.OEConstAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """
        Prev(OEConstAtomIter self) -> OEConstAtomIter
        Prev(OEConstAtomIter self, int i) -> OEConstAtomIter
        """
        return _oechem.OEConstAtomIter_Prev(self, *args)

OEConstAtomIter_swigregister = _oechem.OEConstAtomIter_swigregister
OEConstAtomIter_swigregister(OEConstAtomIter)

class OEInteractionHintTypeBase(object):
    """Proxy of C++ OEBio::OEInteractionHintTypeBase 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__ = _oechem.delete_OEInteractionHintTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEInteractionHintTypeBase self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBase_CreateCopy(self)


    def GetName(self) -> "std::string":
        """GetName(OEInteractionHintTypeBase self) -> std::string"""
        return _oechem.OEInteractionHintTypeBase_GetName(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEInteractionHintTypeBase self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool
        IsValid(OEInteractionHintTypeBase self, OEInteractionHint arg2) -> bool
        """
        return _oechem.OEInteractionHintTypeBase_IsValid(self, *args)


    def __eq__(self, arg2: 'OEInteractionHintTypeBase') -> "bool":
        """__eq__(OEInteractionHintTypeBase self, OEInteractionHintTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEInteractionHintTypeBase') -> "bool":
        """__ne__(OEInteractionHintTypeBase self, OEInteractionHintTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintTypeBase___ne__(self, arg2)

OEInteractionHintTypeBase_swigregister = _oechem.OEInteractionHintTypeBase_swigregister
OEInteractionHintTypeBase_swigregister(OEInteractionHintTypeBase)


def OEGetActiveSiteInteractionHintTypes() -> "OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *":
    """OEGetActiveSiteInteractionHintTypes() -> OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *"""
    return _oechem.OEGetActiveSiteInteractionHintTypes()
class OEContactInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEContactInteractionHint 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__(OEBio::OEContactInteractionHint self) -> OEContactInteractionHint
        __init__(OEBio::OEContactInteractionHint self, OEContactInteractionHint rhs) -> OEContactInteractionHint
        """
        this = _oechem.new_OEContactInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEContactInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEContactInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEContactInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEContactInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEContactInteractionHint_IsValid(self, arg2, arg3)

OEContactInteractionHint_swigregister = _oechem.OEContactInteractionHint_swigregister
OEContactInteractionHint_swigregister(OEContactInteractionHint)

class OEHBondInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEHBondInteractionHint 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__(OEBio::OEHBondInteractionHint self, unsigned int type, bool charged=False) -> OEHBondInteractionHint
        __init__(OEBio::OEHBondInteractionHint self, unsigned int type) -> OEHBondInteractionHint
        __init__(OEBio::OEHBondInteractionHint self, OEHBondInteractionHint rhs) -> OEHBondInteractionHint
        """
        this = _oechem.new_OEHBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHBondInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEHBondInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEHBondInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEHBondInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEHBondInteractionHint_IsValid(self, arg2, arg3)


    def IsCharged(self) -> "bool":
        """IsCharged(OEHBondInteractionHint self) -> bool"""
        return _oechem.OEHBondInteractionHint_IsCharged(self)


    def GetHBondType(self) -> "unsigned int":
        """GetHBondType(OEHBondInteractionHint self) -> unsigned int"""
        return _oechem.OEHBondInteractionHint_GetHBondType(self)

OEHBondInteractionHint_swigregister = _oechem.OEHBondInteractionHint_swigregister
OEHBondInteractionHint_swigregister(OEHBondInteractionHint)

class OEChelatorInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEChelatorInteractionHint 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__(OEBio::OEChelatorInteractionHint self, unsigned int type) -> OEChelatorInteractionHint
        __init__(OEBio::OEChelatorInteractionHint self, OEChelatorInteractionHint rhs) -> OEChelatorInteractionHint
        """
        this = _oechem.new_OEChelatorInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEChelatorInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEChelatorInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEChelatorInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEChelatorInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEChelatorInteractionHint_IsValid(self, arg2, arg3)


    def GetChelatorType(self) -> "unsigned int":
        """GetChelatorType(OEChelatorInteractionHint self) -> unsigned int"""
        return _oechem.OEChelatorInteractionHint_GetChelatorType(self)

OEChelatorInteractionHint_swigregister = _oechem.OEChelatorInteractionHint_swigregister
OEChelatorInteractionHint_swigregister(OEChelatorInteractionHint)

class OECovalentInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OECovalentInteractionHint 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__(OEBio::OECovalentInteractionHint self) -> OECovalentInteractionHint
        __init__(OEBio::OECovalentInteractionHint self, OECovalentInteractionHint rhs) -> OECovalentInteractionHint
        """
        this = _oechem.new_OECovalentInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OECovalentInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OECovalentInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OECovalentInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OECovalentInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OECovalentInteractionHint_IsValid(self, arg2, arg3)

OECovalentInteractionHint_swigregister = _oechem.OECovalentInteractionHint_swigregister
OECovalentInteractionHint_swigregister(OECovalentInteractionHint)

class OEClashInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEClashInteractionHint 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__(OEBio::OEClashInteractionHint self) -> OEClashInteractionHint
        __init__(OEBio::OEClashInteractionHint self, OEClashInteractionHint rhs) -> OEClashInteractionHint
        """
        this = _oechem.new_OEClashInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEClashInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEClashInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEClashInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEClashInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEClashInteractionHint_IsValid(self, arg2, arg3)

OEClashInteractionHint_swigregister = _oechem.OEClashInteractionHint_swigregister
OEClashInteractionHint_swigregister(OEClashInteractionHint)

class OESaltBridgeInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OESaltBridgeInteractionHint 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__(OEBio::OESaltBridgeInteractionHint self, unsigned int type) -> OESaltBridgeInteractionHint
        __init__(OEBio::OESaltBridgeInteractionHint self, OESaltBridgeInteractionHint rhs) -> OESaltBridgeInteractionHint
        """
        this = _oechem.new_OESaltBridgeInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESaltBridgeInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OESaltBridgeInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OESaltBridgeInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OESaltBridgeInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OESaltBridgeInteractionHint_IsValid(self, arg2, arg3)


    def GetSaltBridgeType(self) -> "unsigned int":
        """GetSaltBridgeType(OESaltBridgeInteractionHint self) -> unsigned int"""
        return _oechem.OESaltBridgeInteractionHint_GetSaltBridgeType(self)

OESaltBridgeInteractionHint_swigregister = _oechem.OESaltBridgeInteractionHint_swigregister
OESaltBridgeInteractionHint_swigregister(OESaltBridgeInteractionHint)

class OEStackingInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEStackingInteractionHint 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__(OEBio::OEStackingInteractionHint self, unsigned int type) -> OEStackingInteractionHint
        __init__(OEBio::OEStackingInteractionHint self, OEStackingInteractionHint rhs) -> OEStackingInteractionHint
        """
        this = _oechem.new_OEStackingInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStackingInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEStackingInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEStackingInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEStackingInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEStackingInteractionHint_IsValid(self, arg2, arg3)


    def GetStackingType(self) -> "unsigned int":
        """GetStackingType(OEStackingInteractionHint self) -> unsigned int"""
        return _oechem.OEStackingInteractionHint_GetStackingType(self)

OEStackingInteractionHint_swigregister = _oechem.OEStackingInteractionHint_swigregister
OEStackingInteractionHint_swigregister(OEStackingInteractionHint)

class OECationPiInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OECationPiInteractionHint 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__(OEBio::OECationPiInteractionHint self, unsigned int type) -> OECationPiInteractionHint
        __init__(OEBio::OECationPiInteractionHint self, OECationPiInteractionHint rhs) -> OECationPiInteractionHint
        """
        this = _oechem.new_OECationPiInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OECationPiInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OECationPiInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OECationPiInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OECationPiInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OECationPiInteractionHint_IsValid(self, arg2, arg3)


    def GetCationPiType(self) -> "unsigned int":
        """GetCationPiType(OECationPiInteractionHint self) -> unsigned int"""
        return _oechem.OECationPiInteractionHint_GetCationPiType(self)

OECationPiInteractionHint_swigregister = _oechem.OECationPiInteractionHint_swigregister
OECationPiInteractionHint_swigregister(OECationPiInteractionHint)

class OEHalogenBondInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEHalogenBondInteractionHint 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__(OEBio::OEHalogenBondInteractionHint self, unsigned int type) -> OEHalogenBondInteractionHint
        __init__(OEBio::OEHalogenBondInteractionHint self, OEHalogenBondInteractionHint rhs) -> OEHalogenBondInteractionHint
        """
        this = _oechem.new_OEHalogenBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHalogenBondInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEHalogenBondInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEHalogenBondInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEHalogenBondInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEHalogenBondInteractionHint_IsValid(self, arg2, arg3)


    def GetHalogenBondType(self) -> "unsigned int":
        """GetHalogenBondType(OEHalogenBondInteractionHint self) -> unsigned int"""
        return _oechem.OEHalogenBondInteractionHint_GetHalogenBondType(self)

OEHalogenBondInteractionHint_swigregister = _oechem.OEHalogenBondInteractionHint_swigregister
OEHalogenBondInteractionHint_swigregister(OEHalogenBondInteractionHint)

class OEInteractionHintTypeBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> 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<(q(const).OEBio::OEInteractionHintTypeBase)> self) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OEInteractionHintTypeBaseIter rhs) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > * rhs) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEInteractionHintTypeBase const >::NonConstA > * rhs) -> OEInteractionHintTypeBaseIter
        """
        this = _oechem.new_OEInteractionHintTypeBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintTypeBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *":
        """Copy(OEInteractionHintTypeBaseIter self) -> OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *"""
        return _oechem.OEInteractionHintTypeBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionHintTypeBaseIter self, OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > * ib)
        Push(OEInteractionHintTypeBaseIter self, OEInteractionHintTypeBaseIter iter)
        """
        return _oechem.OEInteractionHintTypeBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEInteractionHintTypeBase const,OEBio::OEInteractionHintTypeBase const > const &') -> "void":
        """Sort(OEInteractionHintTypeBaseIter self, OESystem::OEBinaryPredicate< OEBio::OEInteractionHintTypeBase const,OEBio::OEInteractionHintTypeBase const > const & sort_criterion)"""
        return _oechem.OEInteractionHintTypeBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """ToFirst(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter"""
        return _oechem.OEInteractionHintTypeBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """ToLast(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter"""
        return _oechem.OEInteractionHintTypeBaseIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """__ref__(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInteractionHintTypeBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInteractionHintTypeBaseIter self) -> PyObject *"""
        return _oechem.OEInteractionHintTypeBaseIter_next(self)


    def Target(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """Target(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """
        Next(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter
        Next(OEInteractionHintTypeBaseIter self, int i) -> OEInteractionHintTypeBaseIter
        """
        return _oechem.OEInteractionHintTypeBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """
        Prev(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter
        Prev(OEInteractionHintTypeBaseIter self, int i) -> OEInteractionHintTypeBaseIter
        """
        return _oechem.OEInteractionHintTypeBaseIter_Prev(self, *args)

OEInteractionHintTypeBaseIter_swigregister = _oechem.OEInteractionHintTypeBaseIter_swigregister
OEInteractionHintTypeBaseIter_swigregister(OEInteractionHintTypeBaseIter)

class OEUnaryInteractionHintBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEBio::OEInteractionHint,bool)> 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__ = _oechem.delete_OEUnaryInteractionHintBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEInteractionHint') -> "bool":
        """__call__(OEUnaryInteractionHintBoolFunc self, OEInteractionHint arg0) -> bool"""
        return _oechem.OEUnaryInteractionHintBoolFunc___call__(self, arg0)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryInteractionHintBoolFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEBio::OEInteractionHint,bool)> self) -> OEUnaryInteractionHintBoolFunc"""
        if self.__class__ == OEUnaryInteractionHintBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryInteractionHintBoolFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryInteractionHintBoolFunc(self)
        return weakref_proxy(self)
OEUnaryInteractionHintBoolFunc_swigregister = _oechem.OEUnaryInteractionHintBoolFunc_swigregister
OEUnaryInteractionHintBoolFunc_swigregister(OEUnaryInteractionHintBoolFunc)

class OEUnaryInteractionHintPred(OEUnaryInteractionHintBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEBio::OEInteractionHint)> 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__(OESystem::OEUnaryPredicate<(OEBio::OEInteractionHint)> self) -> OEUnaryInteractionHintPred"""
        if self.__class__ == OEUnaryInteractionHintPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryInteractionHintPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryInteractionHintPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEInteractionHint') -> "bool":
        """__call__(OEUnaryInteractionHintPred self, OEInteractionHint a) -> bool"""
        return _oechem.OEUnaryInteractionHintPred___call__(self, a)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEUnaryInteractionHintPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEBio::OEInteractionHint > *":
        """CreatePredicateCopy(OEUnaryInteractionHintPred self) -> OEUnaryInteractionHintPred"""
        return _oechem.OEUnaryInteractionHintPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryInteractionHintPred(self)
        return weakref_proxy(self)
OEUnaryInteractionHintPred_swigregister = _oechem.OEUnaryInteractionHintPred_swigregister
OEUnaryInteractionHintPred_swigregister(OEUnaryInteractionHintPred)

class OEBinaryInteractionHintFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEBio::OEInteractionHint,OEBio::OEInteractionHint,bool)> 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__ = _oechem.delete_OEBinaryInteractionHintFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEInteractionHint', a2: 'OEInteractionHint') -> "bool":
        """__call__(OEBinaryInteractionHintFunc self, OEInteractionHint a1, OEInteractionHint a2) -> bool"""
        return _oechem.OEBinaryInteractionHintFunc___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryInteractionHintFunc_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEBio::OEInteractionHint,OEBio::OEInteractionHint,bool)> self) -> OEBinaryInteractionHintFunc"""
        if self.__class__ == OEBinaryInteractionHintFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryInteractionHintFunc(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryInteractionHintFunc(self)
        return weakref_proxy(self)
OEBinaryInteractionHintFunc_swigregister = _oechem.OEBinaryInteractionHintFunc_swigregister
OEBinaryInteractionHintFunc_swigregister(OEBinaryInteractionHintFunc)

class OEBinaryInteractionHintPred(OEBinaryInteractionHintFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEBio::OEInteractionHint,OEBio::OEInteractionHint)> class."""

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

    def __call__(self, a1: 'OEInteractionHint', a2: 'OEInteractionHint') -> "bool":
        """__call__(OEBinaryInteractionHintPred self, OEInteractionHint a1, OEInteractionHint a2) -> bool"""
        return _oechem.OEBinaryInteractionHintPred___call__(self, a1, a2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEBinaryInteractionHintPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEBio::OEInteractionHint,OEBio::OEInteractionHint > *":
        """CreatePredicateCopy(OEBinaryInteractionHintPred self) -> OEBinaryInteractionHintPred"""
        return _oechem.OEBinaryInteractionHintPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEBio::OEInteractionHint,OEBio::OEInteractionHint)> self) -> OEBinaryInteractionHintPred"""
        if self.__class__ == OEBinaryInteractionHintPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryInteractionHintPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryInteractionHintPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryInteractionHintPred(self)
        return weakref_proxy(self)
OEBinaryInteractionHintPred_swigregister = _oechem.OEBinaryInteractionHintPred_swigregister
OEBinaryInteractionHintPred_swigregister(OEBinaryInteractionHintPred)


class OENotInteractionHint(OEUnaryInteractionHintPred):
    """Negation of an OEUnary InteractionHint Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary InteractionHint Pred func) -> OENotNAME"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndInteractionHint(OEUnaryInteractionHintPred):
    """Logical 'and' of two OEUnary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary InteractionHint Pred func1, OEUnary InteractionHint Pred func2) -> OEAnd InteractionHint"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrInteractionHint(OEUnaryInteractionHintPred):
    """Logical 'or' of two OEUnary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotInteractionHint(OEBinaryInteractionHintPred):
    """Negation of an OEBinary InteractionHint Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary InteractionHint Pred func) -> OENot InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndInteractionHint(OEBinaryInteractionHintPred):
    """Logical 'and' of two OEBinary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrInteractionHint(OEBinaryInteractionHintPred):
    """Logical 'or' of two OEBinary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEInteractionHint(OEBase):
    """Proxy of C++ OEBio::OEInteractionHint 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, rhs: 'OEInteractionHint'):
        """__init__(OEBio::OEInteractionHint self, OEInteractionHint rhs) -> OEInteractionHint"""
        this = _oechem.new_OEInteractionHint(rhs)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEInteractionHint self) -> OEBase"""
        return _oechem.OEInteractionHint_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEInteractionHint self) -> void const *"""
        return _oechem.OEInteractionHint_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEInteractionHint self, void const * arg2) -> bool"""
        return _oechem.OEInteractionHint_IsDataType(self, arg2)


    def IsValid(self) -> "bool":
        """IsValid(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsValid(self)


    def IsIntra(self) -> "bool":
        """IsIntra(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsIntra(self)


    def IsInter(self) -> "bool":
        """IsInter(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsInter(self)


    def SetDetails(self, details: 'std::string const &') -> "void":
        """SetDetails(OEInteractionHint self, std::string const & details)"""
        return _oechem.OEInteractionHint_SetDetails(self, details)


    def GetDetails(self) -> "std::string":
        """GetDetails(OEInteractionHint self) -> std::string"""
        return _oechem.OEInteractionHint_GetDetails(self)


    def GetBgnFragment(self) -> "OEBio::OEInteractionHintFragment const *":
        """GetBgnFragment(OEInteractionHint self) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetBgnFragment(self)


    def GetEndFragment(self) -> "OEBio::OEInteractionHintFragment const *":
        """GetEndFragment(OEInteractionHint self) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetEndFragment(self)


    def GetFragment(self, arg2: 'OEInteractionHintComponentTypeBase') -> "OEBio::OEInteractionHintFragment const *":
        """GetFragment(OEInteractionHint self, OEInteractionHintComponentTypeBase arg2) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetFragment(self, arg2)


    def GetInteractionType(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """GetInteractionType(OEInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHint_GetInteractionType(self)


    def SetWeight(self, arg2: 'double') -> "void":
        """SetWeight(OEInteractionHint self, double arg2)"""
        return _oechem.OEInteractionHint_SetWeight(self, arg2)


    def GetWeight(self) -> "double":
        """GetWeight(OEInteractionHint self) -> double"""
        return _oechem.OEInteractionHint_GetWeight(self)


    def HasCalculatedGeometry(self, name: 'std::string const &') -> "bool":
        """HasCalculatedGeometry(OEInteractionHint self, std::string const & name) -> bool"""
        return _oechem.OEInteractionHint_HasCalculatedGeometry(self, name)


    def GetCalculatedGeometry(self, name: 'std::string const &') -> "double":
        """GetCalculatedGeometry(OEInteractionHint self, std::string const & name) -> double"""
        return _oechem.OEInteractionHint_GetCalculatedGeometry(self, name)


    def GetCalculatedGeometries(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetCalculatedGeometries(OEInteractionHint self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEInteractionHint_GetCalculatedGeometries(self)

OEInteractionHint_swigregister = _oechem.OEInteractionHint_swigregister
OEInteractionHint_swigregister(OEInteractionHint)

class OEInteractionHintIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> 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<(q(const).OEBio::OEInteractionHint)> self) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OEInteractionHintIter rhs) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OESystem::OEIterBase< OEBio::OEInteractionHint const > * rhs) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEInteractionHint const >::NonConstA > * rhs) -> OEInteractionHintIter
        """
        this = _oechem.new_OEInteractionHintIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
        """Copy(OEInteractionHintIter self) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *"""
        return _oechem.OEInteractionHintIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionHintIter self, OESystem::OEIterBase< OEBio::OEInteractionHint const > * ib)
        Push(OEInteractionHintIter self, OEInteractionHintIter iter)
        """
        return _oechem.OEInteractionHintIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEInteractionHint const,OEBio::OEInteractionHint const > const &') -> "void":
        """Sort(OEInteractionHintIter self, OESystem::OEBinaryPredicate< OEBio::OEInteractionHint const,OEBio::OEInteractionHint const > const & sort_criterion)"""
        return _oechem.OEInteractionHintIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """ToFirst(OEInteractionHintIter self) -> OEInteractionHintIter"""
        return _oechem.OEInteractionHintIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """ToLast(OEInteractionHintIter self) -> OEInteractionHintIter"""
        return _oechem.OEInteractionHintIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEInteractionHint const &":
        """__ref__(OEInteractionHintIter self) -> OEInteractionHint"""
        return _oechem.OEInteractionHintIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInteractionHintIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInteractionHintIter self) -> PyObject *"""
        return _oechem.OEInteractionHintIter_next(self)


    def Target(self) -> "OEBio::OEInteractionHint const &":
        """Target(OEInteractionHintIter self) -> OEInteractionHint"""
        return _oechem.OEInteractionHintIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """
        Next(OEInteractionHintIter self) -> OEInteractionHintIter
        Next(OEInteractionHintIter self, int i) -> OEInteractionHintIter
        """
        return _oechem.OEInteractionHintIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """
        Prev(OEInteractionHintIter self) -> OEInteractionHintIter
        Prev(OEInteractionHintIter self, int i) -> OEInteractionHintIter
        """
        return _oechem.OEInteractionHintIter_Prev(self, *args)

OEInteractionHintIter_swigregister = _oechem.OEInteractionHintIter_swigregister
OEInteractionHintIter_swigregister(OEInteractionHintIter)

class OEHasInteractionHintType(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasInteractionHintType 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__(OEBio::OEHasInteractionHintType self, OEInteractionHintTypeBase itype) -> OEHasInteractionHintType
        __init__(OEBio::OEHasInteractionHintType self, OEHasInteractionHintType arg2) -> OEHasInteractionHintType
        """
        this = _oechem.new_OEHasInteractionHintType(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasInteractionHintType
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEHasInteractionHintType self, OEInteractionHint i) -> bool"""
        return _oechem.OEHasInteractionHintType___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasInteractionHintType self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasInteractionHintType_CreateCopy(self)

OEHasInteractionHintType_swigregister = _oechem.OEHasInteractionHintType_swigregister
OEHasInteractionHintType_swigregister(OEHasInteractionHintType)

class OEHasInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasInteractionHint 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__(OEBio::OEHasInteractionHint self, OEAtomBase arg2) -> OEHasInteractionHint
        __init__(OEBio::OEHasInteractionHint self, OEHasInteractionHint arg2) -> OEHasInteractionHint
        """
        this = _oechem.new_OEHasInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEHasInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEHasInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasInteractionHint_CreateCopy(self)

OEHasInteractionHint_swigregister = _oechem.OEHasInteractionHint_swigregister
OEHasInteractionHint_swigregister(OEHasInteractionHint)

class OEIsContactInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsContactInteractionHint 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__(OEBio::OEIsContactInteractionHint self) -> OEIsContactInteractionHint
        __init__(OEBio::OEIsContactInteractionHint self, OEIsContactInteractionHint arg2) -> OEIsContactInteractionHint
        """
        this = _oechem.new_OEIsContactInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsContactInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsContactInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsContactInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsContactInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsContactInteractionHint_CreateCopy(self)

OEIsContactInteractionHint_swigregister = _oechem.OEIsContactInteractionHint_swigregister
OEIsContactInteractionHint_swigregister(OEIsContactInteractionHint)

class OEIsHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsHBondInteractionHint 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__(OEBio::OEIsHBondInteractionHint self) -> OEIsHBondInteractionHint
        __init__(OEBio::OEIsHBondInteractionHint self, OEIsHBondInteractionHint arg2) -> OEIsHBondInteractionHint
        """
        this = _oechem.new_OEIsHBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHBondInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsHBondInteractionHint_CreateCopy(self)

OEIsHBondInteractionHint_swigregister = _oechem.OEIsHBondInteractionHint_swigregister
OEIsHBondInteractionHint_swigregister(OEIsHBondInteractionHint)

class OEIsIntermolecularHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntermolecularHBondInteractionHint 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__(OEBio::OEIsIntermolecularHBondInteractionHint self) -> OEIsIntermolecularHBondInteractionHint
        __init__(OEBio::OEIsIntermolecularHBondInteractionHint self, OEIsIntermolecularHBondInteractionHint arg2) -> OEIsIntermolecularHBondInteractionHint
        """
        this = _oechem.new_OEIsIntermolecularHBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntermolecularHBondInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntermolecularHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntermolecularHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntermolecularHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntermolecularHBondInteractionHint_CreateCopy(self)

OEIsIntermolecularHBondInteractionHint_swigregister = _oechem.OEIsIntermolecularHBondInteractionHint_swigregister
OEIsIntermolecularHBondInteractionHint_swigregister(OEIsIntermolecularHBondInteractionHint)

class OEIsIntramolecularHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntramolecularHBondInteractionHint 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__(OEBio::OEIsIntramolecularHBondInteractionHint self) -> OEIsIntramolecularHBondInteractionHint
        __init__(OEBio::OEIsIntramolecularHBondInteractionHint self, OEIsIntramolecularHBondInteractionHint arg2) -> OEIsIntramolecularHBondInteractionHint
        """
        this = _oechem.new_OEIsIntramolecularHBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntramolecularHBondInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntramolecularHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntramolecularHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntramolecularHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntramolecularHBondInteractionHint_CreateCopy(self)

OEIsIntramolecularHBondInteractionHint_swigregister = _oechem.OEIsIntramolecularHBondInteractionHint_swigregister
OEIsIntramolecularHBondInteractionHint_swigregister(OEIsIntramolecularHBondInteractionHint)

class OEIsNonIdealHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsNonIdealHBondInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsNonIdealHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsNonIdealHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsNonIdealHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsNonIdealHBondInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsNonIdealHBondInteractionHint self) -> OEIsNonIdealHBondInteractionHint"""
        this = _oechem.new_OEIsNonIdealHBondInteractionHint()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNonIdealHBondInteractionHint
    __del__ = lambda self: None
OEIsNonIdealHBondInteractionHint_swigregister = _oechem.OEIsNonIdealHBondInteractionHint_swigregister
OEIsNonIdealHBondInteractionHint_swigregister(OEIsNonIdealHBondInteractionHint)

class OEIsChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsChelatorInteractionHint 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__(OEBio::OEIsChelatorInteractionHint self) -> OEIsChelatorInteractionHint
        __init__(OEBio::OEIsChelatorInteractionHint self, OEIsChelatorInteractionHint arg2) -> OEIsChelatorInteractionHint
        """
        this = _oechem.new_OEIsChelatorInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChelatorInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsChelatorInteractionHint_CreateCopy(self)

OEIsChelatorInteractionHint_swigregister = _oechem.OEIsChelatorInteractionHint_swigregister
OEIsChelatorInteractionHint_swigregister(OEIsChelatorInteractionHint)

class OEIsIntermolecularChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntermolecularChelatorInteractionHint 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__(OEBio::OEIsIntermolecularChelatorInteractionHint self) -> OEIsIntermolecularChelatorInteractionHint
        __init__(OEBio::OEIsIntermolecularChelatorInteractionHint self, OEIsIntermolecularChelatorInteractionHint arg2) -> OEIsIntermolecularChelatorInteractionHint
        """
        this = _oechem.new_OEIsIntermolecularChelatorInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntermolecularChelatorInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntermolecularChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntermolecularChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntermolecularChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntermolecularChelatorInteractionHint_CreateCopy(self)

OEIsIntermolecularChelatorInteractionHint_swigregister = _oechem.OEIsIntermolecularChelatorInteractionHint_swigregister
OEIsIntermolecularChelatorInteractionHint_swigregister(OEIsIntermolecularChelatorInteractionHint)

class OEIsIntramolecularChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntramolecularChelatorInteractionHint 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__(OEBio::OEIsIntramolecularChelatorInteractionHint self) -> OEIsIntramolecularChelatorInteractionHint
        __init__(OEBio::OEIsIntramolecularChelatorInteractionHint self, OEIsIntramolecularChelatorInteractionHint arg2) -> OEIsIntramolecularChelatorInteractionHint
        """
        this = _oechem.new_OEIsIntramolecularChelatorInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntramolecularChelatorInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntramolecularChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntramolecularChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntramolecularChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntramolecularChelatorInteractionHint_CreateCopy(self)

OEIsIntramolecularChelatorInteractionHint_swigregister = _oechem.OEIsIntramolecularChelatorInteractionHint_swigregister
OEIsIntramolecularChelatorInteractionHint_swigregister(OEIsIntramolecularChelatorInteractionHint)

class OEIsCovalentInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsCovalentInteractionHint 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__(OEBio::OEIsCovalentInteractionHint self) -> OEIsCovalentInteractionHint
        __init__(OEBio::OEIsCovalentInteractionHint self, OEIsCovalentInteractionHint arg2) -> OEIsCovalentInteractionHint
        """
        this = _oechem.new_OEIsCovalentInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCovalentInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsCovalentInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsCovalentInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsCovalentInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsCovalentInteractionHint_CreateCopy(self)

OEIsCovalentInteractionHint_swigregister = _oechem.OEIsCovalentInteractionHint_swigregister
OEIsCovalentInteractionHint_swigregister(OEIsCovalentInteractionHint)

class OEIsClashInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsClashInteractionHint 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__(OEBio::OEIsClashInteractionHint self) -> OEIsClashInteractionHint
        __init__(OEBio::OEIsClashInteractionHint self, OEIsClashInteractionHint arg2) -> OEIsClashInteractionHint
        """
        this = _oechem.new_OEIsClashInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsClashInteractionHint
    __del__ = lambda self: None

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsClashInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsClashInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsClashInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsClashInteractionHint_CreateCopy(self)

OEIsClashInteractionHint_swigregister = _oechem.OEIsClashInteractionHint_swigregister
OEIsClashInteractionHint_swigregister(OEIsClashInteractionHint)

class OEIsSaltBridgeInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsSaltBridgeInteractionHint 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__(OEBio::OEIsSaltBridgeInteractionHint self) -> OEIsSaltBridgeInteractionHint
        __init__(OEBio::OEIsSaltBridgeInteractionHint self, OEIsSaltBridgeInteractionHint arg2) -> OEIsSaltBridgeInteractionHint
        """
        this = _oechem.new_OEIsSaltBridgeInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsSaltBridgeInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsSaltBridgeInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsSaltBridgeInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsSaltBridgeInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsSaltBridgeInteractionHint_CreateCopy(self)

OEIsSaltBridgeInteractionHint_swigregister = _oechem.OEIsSaltBridgeInteractionHint_swigregister
OEIsSaltBridgeInteractionHint_swigregister(OEIsSaltBridgeInteractionHint)

class OEIsStackingInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsStackingInteractionHint 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__(OEBio::OEIsStackingInteractionHint self) -> OEIsStackingInteractionHint
        __init__(OEBio::OEIsStackingInteractionHint self, OEIsStackingInteractionHint arg2) -> OEIsStackingInteractionHint
        """
        this = _oechem.new_OEIsStackingInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsStackingInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsStackingInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsStackingInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsStackingInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsStackingInteractionHint_CreateCopy(self)

OEIsStackingInteractionHint_swigregister = _oechem.OEIsStackingInteractionHint_swigregister
OEIsStackingInteractionHint_swigregister(OEIsStackingInteractionHint)

class OEIsCationPiInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsCationPiInteractionHint 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__(OEBio::OEIsCationPiInteractionHint self) -> OEIsCationPiInteractionHint
        __init__(OEBio::OEIsCationPiInteractionHint self, OEIsCationPiInteractionHint arg2) -> OEIsCationPiInteractionHint
        """
        this = _oechem.new_OEIsCationPiInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCationPiInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsCationPiInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsCationPiInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsCationPiInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsCationPiInteractionHint_CreateCopy(self)

OEIsCationPiInteractionHint_swigregister = _oechem.OEIsCationPiInteractionHint_swigregister
OEIsCationPiInteractionHint_swigregister(OEIsCationPiInteractionHint)

class OEIsHalogenBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsHalogenBondInteractionHint 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__(OEBio::OEIsHalogenBondInteractionHint self) -> OEIsHalogenBondInteractionHint
        __init__(OEBio::OEIsHalogenBondInteractionHint self, OEIsHalogenBondInteractionHint arg2) -> OEIsHalogenBondInteractionHint
        """
        this = _oechem.new_OEIsHalogenBondInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHalogenBondInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsHalogenBondInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsHalogenBondInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsHalogenBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsHalogenBondInteractionHint_CreateCopy(self)

OEIsHalogenBondInteractionHint_swigregister = _oechem.OEIsHalogenBondInteractionHint_swigregister
OEIsHalogenBondInteractionHint_swigregister(OEIsHalogenBondInteractionHint)

class OEIsInterInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsInterInteractionHint 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__(OEBio::OEIsInterInteractionHint self) -> OEIsInterInteractionHint
        __init__(OEBio::OEIsInterInteractionHint self, OEIsInterInteractionHint arg2) -> OEIsInterInteractionHint
        """
        this = _oechem.new_OEIsInterInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsInterInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsInterInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsInterInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsInterInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsInterInteractionHint_CreateCopy(self)

OEIsInterInteractionHint_swigregister = _oechem.OEIsInterInteractionHint_swigregister
OEIsInterInteractionHint_swigregister(OEIsInterInteractionHint)

class OEIsIntraInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntraInteractionHint 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__(OEBio::OEIsIntraInteractionHint self) -> OEIsIntraInteractionHint
        __init__(OEBio::OEIsIntraInteractionHint self, OEIsIntraInteractionHint arg2) -> OEIsIntraInteractionHint
        """
        this = _oechem.new_OEIsIntraInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntraInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntraInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsIntraInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntraInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntraInteractionHint_CreateCopy(self)

OEIsIntraInteractionHint_swigregister = _oechem.OEIsIntraInteractionHint_swigregister
OEIsIntraInteractionHint_swigregister(OEIsIntraInteractionHint)

class OEIsUnpairedLigandInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsUnpairedLigandInteractionHint 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__(OEBio::OEIsUnpairedLigandInteractionHint self) -> OEIsUnpairedLigandInteractionHint
        __init__(OEBio::OEIsUnpairedLigandInteractionHint self, OEIsUnpairedLigandInteractionHint arg2) -> OEIsUnpairedLigandInteractionHint
        """
        this = _oechem.new_OEIsUnpairedLigandInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsUnpairedLigandInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsUnpairedLigandInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsUnpairedLigandInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsUnpairedLigandInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsUnpairedLigandInteractionHint_CreateCopy(self)

OEIsUnpairedLigandInteractionHint_swigregister = _oechem.OEIsUnpairedLigandInteractionHint_swigregister
OEIsUnpairedLigandInteractionHint_swigregister(OEIsUnpairedLigandInteractionHint)

class OEIsUnpairedProteinInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsUnpairedProteinInteractionHint 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__(OEBio::OEIsUnpairedProteinInteractionHint self) -> OEIsUnpairedProteinInteractionHint
        __init__(OEBio::OEIsUnpairedProteinInteractionHint self, OEIsUnpairedProteinInteractionHint arg2) -> OEIsUnpairedProteinInteractionHint
        """
        this = _oechem.new_OEIsUnpairedProteinInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsUnpairedProteinInteractionHint
    __del__ = lambda self: None

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsUnpairedProteinInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsUnpairedProteinInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsUnpairedProteinInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsUnpairedProteinInteractionHint_CreateCopy(self)

OEIsUnpairedProteinInteractionHint_swigregister = _oechem.OEIsUnpairedProteinInteractionHint_swigregister
OEIsUnpairedProteinInteractionHint_swigregister(OEIsUnpairedProteinInteractionHint)

class OEHasResidueInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasResidueInteractionHint 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__(OEBio::OEHasResidueInteractionHint self, OEResidue arg2) -> OEHasResidueInteractionHint
        __init__(OEBio::OEHasResidueInteractionHint self, OEResidue arg2, OEInteractionHintComponentTypeBase ctype) -> OEHasResidueInteractionHint
        __init__(OEBio::OEHasResidueInteractionHint self, OEHasResidueInteractionHint rhs) -> OEHasResidueInteractionHint
        """
        this = _oechem.new_OEHasResidueInteractionHint(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasResidueInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasResidueInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasResidueInteractionHint_CreateCopy(self)


    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEHasResidueInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEHasResidueInteractionHint___call__(self, i)

OEHasResidueInteractionHint_swigregister = _oechem.OEHasResidueInteractionHint_swigregister
OEHasResidueInteractionHint_swigregister(OEHasResidueInteractionHint)

class OEInteractionHintContainer(object):
    """Proxy of C++ OEBio::OEInteractionHintContainer 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__(OEBio::OEInteractionHintContainer self) -> OEInteractionHintContainer
        __init__(OEBio::OEInteractionHintContainer self, OEMolBase protein, OEMolBase ligand) -> OEInteractionHintContainer
        """
        this = _oechem.new_OEInteractionHintContainer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintContainer
    __del__ = lambda self: None

    def AddMolecule(self, mol: 'OEMolBase', itype: 'OEInteractionHintComponentTypeBase') -> "OEChem::OEMolBase const *":
        """AddMolecule(OEInteractionHintContainer self, OEMolBase mol, OEInteractionHintComponentTypeBase itype) -> OEMolBase"""
        return _oechem.OEInteractionHintContainer_AddMolecule(self, mol, itype)


    def GetMolecule(self, itype: 'OEInteractionHintComponentTypeBase') -> "OEChem::OEMolBase const *":
        """GetMolecule(OEInteractionHintContainer self, OEInteractionHintComponentTypeBase itype) -> OEMolBase"""
        return _oechem.OEInteractionHintContainer_GetMolecule(self, itype)


    def GetMolecules(self, *args) -> "OESystem::OEIterBase< OEChem::OEMolBase const > *":
        """
        GetMolecules(OEInteractionHintContainer self) -> OESystem::OEIterBase< OEChem::OEMolBase const >
        GetMolecules(OEInteractionHintContainer self, OEInteractionHintComponentTypeBase itype) -> OESystem::OEIterBase< OEChem::OEMolBase const > *
        """
        return _oechem.OEInteractionHintContainer_GetMolecules(self, *args)


    def HasInteraction(self, pred: 'OEUnaryInteractionHintPred') -> "bool":
        """HasInteraction(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> bool"""
        return _oechem.OEInteractionHintContainer_HasInteraction(self, pred)


    def GetInteractions(self, *args) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
        """
        GetInteractions(OEInteractionHintContainer self) -> OESystem::OEIterBase< OEBio::OEInteractionHint const >
        GetInteractions(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *
        """
        return _oechem.OEInteractionHintContainer_GetInteractions(self, *args)


    def DeleteInteraction(self, arg2: 'OEInteractionHint') -> "bool":
        """DeleteInteraction(OEInteractionHintContainer self, OEInteractionHint arg2) -> bool"""
        return _oechem.OEInteractionHintContainer_DeleteInteraction(self, arg2)


    def DeleteInteractions(self) -> "bool":
        """DeleteInteractions(OEInteractionHintContainer self) -> bool"""
        return _oechem.OEInteractionHintContainer_DeleteInteractions(self)


    def IsValid(self) -> "bool":
        """IsValid(OEInteractionHintContainer self) -> bool"""
        return _oechem.OEInteractionHintContainer_IsValid(self)


    def IsValid(self):
      return _oechem.OEInteractionHintContainer___nonzero__(self)



    def GetTitle(self) -> "std::string const &":
        """GetTitle(OEInteractionHintContainer self) -> std::string const &"""
        return _oechem.OEInteractionHintContainer_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "void":
        """SetTitle(OEInteractionHintContainer self, std::string const & title)"""
        return _oechem.OEInteractionHintContainer_SetTitle(self, title)


    def NumMolecules(self) -> "unsigned int":
        """NumMolecules(OEInteractionHintContainer self) -> unsigned int"""
        return _oechem.OEInteractionHintContainer_NumMolecules(self)


    def NumFragments(self) -> "unsigned int":
        """NumFragments(OEInteractionHintContainer self) -> unsigned int"""
        return _oechem.OEInteractionHintContainer_NumFragments(self)


    def NumInteractions(self, *args) -> "unsigned int":
        """
        NumInteractions(OEInteractionHintContainer self) -> unsigned int
        NumInteractions(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> unsigned int
        """
        return _oechem.OEInteractionHintContainer_NumInteractions(self, *args)

OEInteractionHintContainer_swigregister = _oechem.OEInteractionHintContainer_swigregister
OEInteractionHintContainer_swigregister(OEInteractionHintContainer)


def OEIsValidActiveSite(asite: 'OEInteractionHintContainer') -> "bool":
    """OEIsValidActiveSite(OEInteractionHintContainer asite) -> bool"""
    return _oechem.OEIsValidActiveSite(asite)

def OEGetInteractions(*args) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
    """
    OEGetInteractions(OEMolBase mol, OEInteractionHintContainer arg2) -> OESystem::OEIterBase< OEBio::OEInteractionHint const >
    OEGetInteractions(OEAtomBase atom, OEInteractionHintContainer arg2) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *
    """
    return _oechem.OEGetInteractions(*args)

def OESetInteractionsHintSerializationIds(mol: 'OEMolBase') -> "void":
    """OESetInteractionsHintSerializationIds(OEMolBase mol)"""
    return _oechem.OESetInteractionsHintSerializationIds(mol)

def OEDeleteInteractionsHintSerializationIds(mol: 'OEMolBase') -> "void":
    """OEDeleteInteractionsHintSerializationIds(OEMolBase mol)"""
    return _oechem.OEDeleteInteractionsHintSerializationIds(mol)

def OEDeleteInteractionsHintSerializationData(mol: 'OEMolBase') -> "void":
    """OEDeleteInteractionsHintSerializationData(OEMolBase mol)"""
    return _oechem.OEDeleteInteractionsHintSerializationData(mol)

def OESerializeInteractionsHintContainer(protein: 'OEMolBase', ligand: 'OEMolBase', asite: 'OEInteractionHintContainer') -> "bool":
    """OESerializeInteractionsHintContainer(OEMolBase protein, OEMolBase ligand, OEInteractionHintContainer asite) -> bool"""
    return _oechem.OESerializeInteractionsHintContainer(protein, ligand, asite)

def OEConstructInteractionHintContainer(asite: 'OEInteractionHintContainer', protein: 'OEMolBase', ligand: 'OEMolBase') -> "bool":
    """OEConstructInteractionHintContainer(OEInteractionHintContainer asite, OEMolBase protein, OEMolBase ligand) -> bool"""
    return _oechem.OEConstructInteractionHintContainer(asite, protein, ligand)
class OEPerceiveInteractionOptions(object):
    """Proxy of C++ OEBio::OEPerceiveInteractionOptions 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__(OEBio::OEPerceiveInteractionOptions self) -> OEPerceiveInteractionOptions
        __init__(OEBio::OEPerceiveInteractionOptions self, OEPerceiveInteractionOptions arg2) -> OEPerceiveInteractionOptions
        """
        this = _oechem.new_OEPerceiveInteractionOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPerceiveInteractionOptions
    __del__ = lambda self: None

    def SetMinCovalentFraction(self, frac: 'double') -> "void":
        """SetMinCovalentFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinCovalentFraction(self, frac)


    def GetMinCovalentFraction(self) -> "double":
        """GetMinCovalentFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinCovalentFraction(self)


    def SetMaxCovalentFraction(self, frac: 'double') -> "void":
        """SetMaxCovalentFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCovalentFraction(self, frac)


    def GetMaxCovalentFraction(self) -> "double":
        """GetMaxCovalentFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCovalentFraction(self)


    def SetMinContactFraction(self, frac: 'double') -> "void":
        """SetMinContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinContactFraction(self, frac)


    def GetMinContactFraction(self) -> "double":
        """GetMinContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinContactFraction(self)


    def SetMaxContactFraction(self, frac: 'double') -> "void":
        """SetMaxContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxContactFraction(self, frac)


    def GetMaxContactFraction(self) -> "double":
        """GetMaxContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxContactFraction(self)


    def SetMinHBondContactFraction(self, frac: 'double') -> "void":
        """SetMinHBondContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinHBondContactFraction(self, frac)


    def GetMinHBondContactFraction(self) -> "double":
        """GetMinHBondContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinHBondContactFraction(self)


    def SetMaxPiStackDistance(self, dist: 'double') -> "void":
        """SetMaxPiStackDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxPiStackDistance(self, dist)


    def GetMaxPiStackDistance(self) -> "double":
        """GetMaxPiStackDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxPiStackDistance(self)


    def SetMaxPiStackAngle(self, radians: 'double') -> "void":
        """SetMaxPiStackAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxPiStackAngle(self, radians)


    def GetMaxPiStackAngle(self) -> "double":
        """GetMaxPiStackAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxPiStackAngle(self)


    def SetMaxTStackDistance(self, dist: 'double') -> "void":
        """SetMaxTStackDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxTStackDistance(self, dist)


    def GetMaxTStackDistance(self) -> "double":
        """GetMaxTStackDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxTStackDistance(self)


    def SetMaxTStackAngle(self, radians: 'double') -> "void":
        """SetMaxTStackAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxTStackAngle(self, radians)


    def GetMaxTStackAngle(self) -> "double":
        """GetMaxTStackAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxTStackAngle(self)


    def SetMaxHBondDistance(self, dist: 'double') -> "void":
        """SetMaxHBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHBondDistance(self, dist)


    def GetMaxHBondDistance(self) -> "double":
        """GetMaxHBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHBondDistance(self)


    def SetMaxChargeAidedHBondDistance(self, dist: 'double') -> "void":
        """SetMaxChargeAidedHBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxChargeAidedHBondDistance(self, dist)


    def GetMaxChargeAidedHBondDistance(self) -> "double":
        """GetMaxChargeAidedHBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxChargeAidedHBondDistance(self)


    def SetMaxNonIdealHBondDistance(self, dist: 'double') -> "void":
        """SetMaxNonIdealHBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxNonIdealHBondDistance(self, dist)


    def GetMaxNonIdealHBondDistance(self) -> "double":
        """GetMaxNonIdealHBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxNonIdealHBondDistance(self)


    def SetMaxDonorAngle(self, radians: 'double') -> "void":
        """SetMaxDonorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxDonorAngle(self, radians)


    def GetMaxDonorAngle(self) -> "double":
        """GetMaxDonorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxDonorAngle(self)


    def SetMaxAcceptorAngle(self, radians: 'double') -> "void":
        """SetMaxAcceptorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxAcceptorAngle(self, radians)


    def GetMaxAcceptorAngle(self) -> "double":
        """GetMaxAcceptorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxAcceptorAngle(self)


    def SetMaxNonIdealDonorAngle(self, radians: 'double') -> "void":
        """SetMaxNonIdealDonorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxNonIdealDonorAngle(self, radians)


    def GetMaxNonIdealDonorAngle(self) -> "double":
        """GetMaxNonIdealDonorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxNonIdealDonorAngle(self)


    def SetMaxNonIdealAcceptorAngle(self, radians: 'double') -> "void":
        """SetMaxNonIdealAcceptorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxNonIdealAcceptorAngle(self, radians)


    def GetMaxNonIdealAcceptorAngle(self) -> "double":
        """GetMaxNonIdealAcceptorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxNonIdealAcceptorAngle(self)


    def SetMaxMetalBondDistance(self, dist: 'double') -> "void":
        """SetMaxMetalBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxMetalBondDistance(self, dist)


    def GetMaxMetalBondDistance(self) -> "double":
        """GetMaxMetalBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxMetalBondDistance(self)


    def SetMaxSaltBridgeDistance(self, dist: 'double') -> "void":
        """SetMaxSaltBridgeDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxSaltBridgeDistance(self, dist)


    def GetMaxSaltBridgeDistance(self) -> "double":
        """GetMaxSaltBridgeDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxSaltBridgeDistance(self)


    def GetExtendedSaltBridgeDistance(self) -> "double":
        """GetExtendedSaltBridgeDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetExtendedSaltBridgeDistance(self)


    def SetMaxCationPiDistance(self, dist: 'double') -> "void":
        """SetMaxCationPiDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCationPiDistance(self, dist)


    def GetMaxCationPiDistance(self) -> "double":
        """GetMaxCationPiDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCationPiDistance(self)


    def SetMaxCationPiAngle(self, radians: 'double') -> "void":
        """SetMaxCationPiAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCationPiAngle(self, radians)


    def GetMaxCationPiAngle(self) -> "double":
        """GetMaxCationPiAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCationPiAngle(self)


    def SetMaxHalogenBondDistance(self, dist: 'double') -> "void":
        """SetMaxHalogenBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHalogenBondDistance(self, dist)


    def GetMaxHalogenBondDistance(self) -> "double":
        """GetMaxHalogenBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHalogenBondDistance(self)


    def SetMaxHalogenAngle(self, radians: 'double') -> "void":
        """SetMaxHalogenAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHalogenAngle(self, radians)


    def GetMaxHalogenAngle(self) -> "double":
        """GetMaxHalogenAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHalogenAngle(self)


    def SetMaxUnpairedDistance(self, dist: 'double') -> "void":
        """SetMaxUnpairedDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxUnpairedDistance(self, dist)


    def GetMaxUnpairedDistance(self) -> "double":
        """GetMaxUnpairedDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxUnpairedDistance(self)


    def SetMaxUnpairedAngle(self, radians: 'double') -> "void":
        """SetMaxUnpairedAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxUnpairedAngle(self, radians)


    def GetMaxUnpairedAngle(self) -> "double":
        """GetMaxUnpairedAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxUnpairedAngle(self)


    def GetMaxAtomPairDistance(self) -> "double":
        """GetMaxAtomPairDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxAtomPairDistance(self)

OEPerceiveInteractionOptions_swigregister = _oechem.OEPerceiveInteractionOptions_swigregister
OEPerceiveInteractionOptions_swigregister(OEPerceiveInteractionOptions)


def OEPerceiveInteractionHints(*args) -> "bool":
    """
    OEPerceiveInteractionHints(OEInteractionHintContainer asite) -> bool
    OEPerceiveInteractionHints(OEInteractionHintContainer asite, OEPerceiveInteractionOptions opts) -> bool
    """
    return _oechem.OEPerceiveInteractionHints(*args)
class OEDesignUnitImpl(object):
    """Proxy of C++ OEBio::OEDesignUnitImpl class."""

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

    def IsValid(self):
      return _oechem.OEDesignUnitImpl___nonzero__(self)



    def Clear(self) -> "void":
        """Clear(OEDesignUnitImpl self)"""
        return _oechem.OEDesignUnitImpl_Clear(self)


    def GetTitle(self) -> "std::string":
        """GetTitle(OEDesignUnitImpl self) -> std::string"""
        return _oechem.OEDesignUnitImpl_GetTitle(self)


    def GetTargetComponentTag(self) -> "std::string":
        """GetTargetComponentTag(OEDesignUnitImpl self) -> std::string"""
        return _oechem.OEDesignUnitImpl_GetTargetComponentTag(self)


    def GetComponentTag(self, componentID: 'unsigned int') -> "std::string":
        """GetComponentTag(OEDesignUnitImpl self, unsigned int componentID) -> std::string"""
        return _oechem.OEDesignUnitImpl_GetComponentTag(self, componentID)


    def GetTargetComponentID(self) -> "unsigned int":
        """GetTargetComponentID(OEDesignUnitImpl self) -> unsigned int"""
        return _oechem.OEDesignUnitImpl_GetTargetComponentID(self)


    def GetComponentID(self, componentTag: 'std::string const &') -> "unsigned int":
        """GetComponentID(OEDesignUnitImpl self, std::string const & componentTag) -> unsigned int"""
        return _oechem.OEDesignUnitImpl_GetComponentID(self, componentTag)


    def GetSiteResidues(self) -> "std::vector< std::string,std::allocator< std::string > > const":
        """GetSiteResidues(OEDesignUnitImpl self) -> OEStringVector"""
        return _oechem.OEDesignUnitImpl_GetSiteResidues(self)


    def GetTags(self) -> "std::vector< std::string,std::allocator< std::string > > const":
        """GetTags(OEDesignUnitImpl self) -> OEStringVector"""
        return _oechem.OEDesignUnitImpl_GetTags(self)


    def GetIDs(self) -> "std::vector< unsigned int,std::allocator< unsigned int > > const":
        """GetIDs(OEDesignUnitImpl self) -> OEUIntVector"""
        return _oechem.OEDesignUnitImpl_GetIDs(self)


    def GetComponents(self, *args) -> "bool":
        """
        GetComponents(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, bool setTmpTags=False, bool includePDBData=False, bool bondCovalent=True) -> bool
        GetComponents(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, bool setTmpTags=False, bool includePDBData=False) -> bool
        GetComponents(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, bool setTmpTags=False) -> bool
        GetComponents(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask) -> bool
        GetComponents(OEDesignUnitImpl self, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnitImpl_GetComponents(self, *args)


    def GetComponentsWithin(self, *args) -> "bool":
        """
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0, bool includeSelf=False, bool includePDBData=True, bool bondCovalent=True) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0, bool includeSelf=False, bool includePDBData=True) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0, bool includeSelf=False) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol, unsigned int componentMask) -> bool
        GetComponentsWithin(OEDesignUnitImpl self, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnitImpl_GetComponentsWithin(self, *args)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEDesignUnitImpl self, std::string const & title) -> bool"""
        return _oechem.OEDesignUnitImpl_SetTitle(self, title)


    def HasComponent(self, componentID: 'unsigned int') -> "bool":
        """HasComponent(OEDesignUnitImpl self, unsigned int componentID) -> bool"""
        return _oechem.OEDesignUnitImpl_HasComponent(self, componentID)


    def HasTitle(self) -> "bool":
        """HasTitle(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasTitle(self)


    def HasProtein(self) -> "bool":
        """HasProtein(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasProtein(self)


    def HasLigand(self) -> "bool":
        """HasLigand(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasLigand(self)


    def HasSolvent(self) -> "bool":
        """HasSolvent(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasSolvent(self)


    def HasNucleicAcid(self) -> "bool":
        """HasNucleicAcid(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasNucleicAcid(self)


    def HasTarget(self) -> "bool":
        """HasTarget(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasTarget(self)


    def HasPackingResidues(self) -> "bool":
        """HasPackingResidues(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasPackingResidues(self)


    def HasSiteResidues(self) -> "bool":
        """HasSiteResidues(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasSiteResidues(self)


    def HasMetal(self) -> "bool":
        """HasMetal(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasMetal(self)


    def HasStructureQuality(self) -> "bool":
        """HasStructureQuality(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasStructureQuality(self)


    def __init__(self, *args):
        """
        __init__(OEBio::OEDesignUnitImpl self) -> OEDesignUnitImpl
        __init__(OEBio::OEDesignUnitImpl self, OEDesignUnitImpl rhs) -> OEDesignUnitImpl
        """
        this = _oechem.new_OEDesignUnitImpl(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDesignUnitImpl
    __del__ = lambda self: None

    def GetMetaData(self) -> "std::map< std::string,std::string > const":
        """GetMetaData(OEDesignUnitImpl self) -> std::map< std::string,std::string > const"""
        return _oechem.OEDesignUnitImpl_GetMetaData(self)


    def GetNewUserComponentID(self) -> "unsigned int":
        """GetNewUserComponentID(OEDesignUnitImpl self) -> unsigned int"""
        return _oechem.OEDesignUnitImpl_GetNewUserComponentID(self)


    def GetPDBMetaData(self, mol: 'OEMolBase') -> "bool":
        """GetPDBMetaData(OEDesignUnitImpl self, OEMolBase mol) -> bool"""
        return _oechem.OEDesignUnitImpl_GetPDBMetaData(self, mol)


    def GetAltLoc(self) -> "std::string":
        """GetAltLoc(OEDesignUnitImpl self) -> std::string"""
        return _oechem.OEDesignUnitImpl_GetAltLoc(self)


    def GetSymAltNum(self) -> "unsigned int":
        """GetSymAltNum(OEDesignUnitImpl self) -> unsigned int"""
        return _oechem.OEDesignUnitImpl_GetSymAltNum(self)


    def GetMaxCovalentIdx(self) -> "unsigned int":
        """GetMaxCovalentIdx(OEDesignUnitImpl self) -> unsigned int"""
        return _oechem.OEDesignUnitImpl_GetMaxCovalentIdx(self)


    def GetListComponents(self, *args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """
        GetListComponents(OEDesignUnitImpl self, unsigned int componentID) -> OESystem::OEIterBase< OEChem::OEMolBase const >
        GetListComponents(OEDesignUnitImpl self, unsigned int componentID) -> OESystem::OEIterBase< OEChem::OEMolBase > *
        """
        return _oechem.OEDesignUnitImpl_GetListComponents(self, *args)


    def GetComponent(self, *args) -> "OEChem::OEMolBase &":
        """
        GetComponent(OEDesignUnitImpl self, OEMolBase molecule, unsigned int componentID) -> bool
        GetComponent(OEDesignUnitImpl self, unsigned int componentID) -> OEMolBase
        GetComponent(OEDesignUnitImpl self, unsigned int componentID) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetComponent(self, *args)


    def GetProtein(self, *args) -> "OEChem::OEMolBase &":
        """
        GetProtein(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetProtein(OEDesignUnitImpl self) -> OEMolBase
        GetProtein(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetProtein(self, *args)


    def GetLigand(self, *args) -> "OEChem::OEMolBase &":
        """
        GetLigand(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetLigand(OEDesignUnitImpl self) -> OEMolBase
        GetLigand(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetLigand(self, *args)


    def GetSolvent(self, *args) -> "OEChem::OEMolBase &":
        """
        GetSolvent(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetSolvent(OEDesignUnitImpl self) -> OEMolBase
        GetSolvent(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetSolvent(self, *args)


    def GetMetal(self, *args) -> "OEChem::OEMolBase &":
        """
        GetMetal(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetMetal(OEDesignUnitImpl self) -> OEMolBase
        GetMetal(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetMetal(self, *args)


    def GetTarget(self, *args) -> "OEChem::OEMolBase &":
        """
        GetTarget(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetTarget(OEDesignUnitImpl self) -> OEMolBase
        GetTarget(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetTarget(self, *args)


    def GetNucleicAcid(self, *args) -> "OEChem::OEMolBase &":
        """
        GetNucleicAcid(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetNucleicAcid(OEDesignUnitImpl self) -> OEMolBase
        GetNucleicAcid(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetNucleicAcid(self, *args)


    def GetPackingResidues(self, *args) -> "OEChem::OEMolBase &":
        """
        GetPackingResidues(OEDesignUnitImpl self, OEMolBase molecule) -> bool
        GetPackingResidues(OEDesignUnitImpl self) -> OEMolBase
        GetPackingResidues(OEDesignUnitImpl self) -> OEMolBase
        """
        return _oechem.OEDesignUnitImpl_GetPackingResidues(self, *args)


    def GetStructureQuality(self, *args) -> "OEBio::OEStructureQuality":
        """
        GetStructureQuality(OEDesignUnitImpl self) -> OEStructureQuality
        GetStructureQuality(OEDesignUnitImpl self) -> OEStructureQuality
        """
        return _oechem.OEDesignUnitImpl_GetStructureQuality(self, *args)


    def GetTransform(self, *args) -> "OEChem::OETrans &":
        """
        GetTransform(OEDesignUnitImpl self) -> OETrans
        GetTransform(OEDesignUnitImpl self) -> OETrans
        """
        return _oechem.OEDesignUnitImpl_GetTransform(self, *args)


    def GetComponentMap(self) -> "std::map< unsigned int,std::unique_ptr< OEChem::OEMolBase > > const &":
        """GetComponentMap(OEDesignUnitImpl self) -> std::map< unsigned int,std::unique_ptr< OEChem::OEMolBase > > const &"""
        return _oechem.OEDesignUnitImpl_GetComponentMap(self)


    def GetContainerMap(self) -> "std::map< unsigned int,std::map< std::string,std::unique_ptr< OEChem::OEMolBase > > > const &":
        """GetContainerMap(OEDesignUnitImpl self) -> std::map< unsigned int,std::map< std::string,std::unique_ptr< OEChem::OEMolBase > > > const &"""
        return _oechem.OEDesignUnitImpl_GetContainerMap(self)


    def GetTagMap(self) -> "std::map< unsigned int,std::string > const &":
        """GetTagMap(OEDesignUnitImpl self) -> std::map< unsigned int,std::string > const &"""
        return _oechem.OEDesignUnitImpl_GetTagMap(self)


    def GetPDBMetaDataMol(self) -> "OEChem::OEMolBase const &":
        """GetPDBMetaDataMol(OEDesignUnitImpl self) -> OEMolBase"""
        return _oechem.OEDesignUnitImpl_GetPDBMetaDataMol(self)


    def SetAltLoc(self, altloc: 'std::string const &') -> "bool":
        """SetAltLoc(OEDesignUnitImpl self, std::string const & altloc) -> bool"""
        return _oechem.OEDesignUnitImpl_SetAltLoc(self, altloc)


    def SetMaxCovalentIdx(self, maxCovIdx: 'unsigned int') -> "bool":
        """SetMaxCovalentIdx(OEDesignUnitImpl self, unsigned int maxCovIdx) -> bool"""
        return _oechem.OEDesignUnitImpl_SetMaxCovalentIdx(self, maxCovIdx)


    def SetSymAltNum(self, symAltNum: 'unsigned int const') -> "bool":
        """SetSymAltNum(OEDesignUnitImpl self, unsigned int const symAltNum) -> bool"""
        return _oechem.OEDesignUnitImpl_SetSymAltNum(self, symAltNum)


    def SetSymOp(self, symop: 'bool') -> "bool":
        """SetSymOp(OEDesignUnitImpl self, bool symop) -> bool"""
        return _oechem.OEDesignUnitImpl_SetSymOp(self, symop)


    def SetTargetComponent(self, *args) -> "bool":
        """
        SetTargetComponent(OEDesignUnitImpl self, unsigned int componentID) -> bool
        SetTargetComponent(OEDesignUnitImpl self, std::string const & componentTag) -> bool
        """
        return _oechem.OEDesignUnitImpl_SetTargetComponent(self, *args)


    def SetComponent(self, *args) -> "bool":
        """
        SetComponent(OEDesignUnitImpl self, unsigned int componentID, OEMolBase mol) -> bool
        SetComponent(OEDesignUnitImpl self, std::string const & componentTag, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnitImpl_SetComponent(self, *args)


    def SetUserComponent(self, componentTag: 'std::string const &', mol: 'OEMolBase') -> "bool":
        """SetUserComponent(OEDesignUnitImpl self, std::string const & componentTag, OEMolBase mol) -> bool"""
        return _oechem.OEDesignUnitImpl_SetUserComponent(self, componentTag, mol)


    def SetTarget(self, target: 'OEMolBase') -> "bool":
        """SetTarget(OEDesignUnitImpl self, OEMolBase target) -> bool"""
        return _oechem.OEDesignUnitImpl_SetTarget(self, target)


    def SetProtein(self, protein: 'OEMolBase') -> "bool":
        """SetProtein(OEDesignUnitImpl self, OEMolBase protein) -> bool"""
        return _oechem.OEDesignUnitImpl_SetProtein(self, protein)


    def SetNucleicAcid(self, nucleicAcid: 'OEMolBase') -> "bool":
        """SetNucleicAcid(OEDesignUnitImpl self, OEMolBase nucleicAcid) -> bool"""
        return _oechem.OEDesignUnitImpl_SetNucleicAcid(self, nucleicAcid)


    def SetLigand(self, ligand: 'OEMolBase') -> "bool":
        """SetLigand(OEDesignUnitImpl self, OEMolBase ligand) -> bool"""
        return _oechem.OEDesignUnitImpl_SetLigand(self, ligand)


    def SetSolvent(self, solvent: 'OEMolBase') -> "bool":
        """SetSolvent(OEDesignUnitImpl self, OEMolBase solvent) -> bool"""
        return _oechem.OEDesignUnitImpl_SetSolvent(self, solvent)


    def SetMetal(self, metal: 'OEMolBase') -> "bool":
        """SetMetal(OEDesignUnitImpl self, OEMolBase metal) -> bool"""
        return _oechem.OEDesignUnitImpl_SetMetal(self, metal)


    def SetLipid(self, lipid: 'OEMolBase') -> "bool":
        """SetLipid(OEDesignUnitImpl self, OEMolBase lipid) -> bool"""
        return _oechem.OEDesignUnitImpl_SetLipid(self, lipid)


    def SetPackingResidues(self, packingResidues: 'OEMolBase') -> "bool":
        """SetPackingResidues(OEDesignUnitImpl self, OEMolBase packingResidues) -> bool"""
        return _oechem.OEDesignUnitImpl_SetPackingResidues(self, packingResidues)


    def SetPDBMetaData(self, sourceMol: 'OEMolBase') -> "bool":
        """SetPDBMetaData(OEDesignUnitImpl self, OEMolBase sourceMol) -> bool"""
        return _oechem.OEDesignUnitImpl_SetPDBMetaData(self, sourceMol)


    def SetMetaData(self, meta: 'std::map< std::string,std::string > const &') -> "bool":
        """SetMetaData(OEDesignUnitImpl self, std::map< std::string,std::string > const & meta) -> bool"""
        return _oechem.OEDesignUnitImpl_SetMetaData(self, meta)


    def SetTransform(self, *args) -> "bool":
        """
        SetTransform(OEDesignUnitImpl self, OETrans transform) -> bool
        SetTransform(OEDesignUnitImpl self, OETransBase transform) -> bool
        """
        return _oechem.OEDesignUnitImpl_SetTransform(self, *args)


    def AddTransform(self, *args) -> "bool":
        """
        AddTransform(OEDesignUnitImpl self, OETrans transform) -> bool
        AddTransform(OEDesignUnitImpl self, OETransBase transform) -> bool
        """
        return _oechem.OEDesignUnitImpl_AddTransform(self, *args)


    def SetStructureQuality(self, structureQuality: 'OEStructureQuality') -> "bool":
        """SetStructureQuality(OEDesignUnitImpl self, OEStructureQuality structureQuality) -> bool"""
        return _oechem.OEDesignUnitImpl_SetStructureQuality(self, structureQuality)


    def SetComponentsFromData(self, mol: 'OEMolBase', updateAtomSerials: 'bool'=True) -> "bool":
        """
        SetComponentsFromData(OEDesignUnitImpl self, OEMolBase mol, bool updateAtomSerials=True) -> bool
        SetComponentsFromData(OEDesignUnitImpl self, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnitImpl_SetComponentsFromData(self, mol, updateAtomSerials)


    def ClearComponent(self, *args) -> "bool":
        """
        ClearComponent(OEDesignUnitImpl self, std::string const & componentTag) -> bool
        ClearComponent(OEDesignUnitImpl self, unsigned int componentID) -> bool
        """
        return _oechem.OEDesignUnitImpl_ClearComponent(self, *args)


    def OECleanRGroupData(self, mol: 'OEMolBase', tag: 'std::string') -> "void":
        """OECleanRGroupData(OEDesignUnitImpl self, OEMolBase mol, std::string tag)"""
        return _oechem.OEDesignUnitImpl_OECleanRGroupData(self, mol, tag)


    def CleanAtomData(self, updateAtomSerials: 'bool'=True, rGroupRepos: 'bool'=True) -> "void":
        """
        CleanAtomData(OEDesignUnitImpl self, bool updateAtomSerials=True, bool rGroupRepos=True)
        CleanAtomData(OEDesignUnitImpl self, bool updateAtomSerials=True)
        CleanAtomData(OEDesignUnitImpl self)
        """
        return _oechem.OEDesignUnitImpl_CleanAtomData(self, updateAtomSerials, rGroupRepos)


    def OESetInternalComponentName(self, mol: 'OEMolBase') -> "void":
        """OESetInternalComponentName(OEDesignUnitImpl self, OEMolBase mol)"""
        return _oechem.OEDesignUnitImpl_OESetInternalComponentName(self, mol)


    def HasTransform(self) -> "bool":
        """HasTransform(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasTransform(self)


    def HasPDBMetaData(self) -> "bool":
        """HasPDBMetaData(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasPDBMetaData(self)


    def HasMetaData(self) -> "bool":
        """HasMetaData(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasMetaData(self)


    def HasSymOp(self) -> "bool":
        """HasSymOp(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasSymOp(self)


    def HasAltLoc(self) -> "bool":
        """HasAltLoc(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasAltLoc(self)


    def HasSymAltNum(self) -> "bool":
        """HasSymAltNum(OEDesignUnitImpl self) -> bool"""
        return _oechem.OEDesignUnitImpl_HasSymAltNum(self)


    def SetSiteResidues(self, list: 'PyObject *') -> "bool":
        """SetSiteResidues(OEDesignUnitImpl self, PyObject * list) -> bool"""
        return _oechem.OEDesignUnitImpl_SetSiteResidues(self, list)

OEDesignUnitImpl_swigregister = _oechem.OEDesignUnitImpl_swigregister
OEDesignUnitImpl_swigregister(OEDesignUnitImpl)


def OEGetIridiumCategoryName(iridiumCategory: 'unsigned int') -> "std::string":
    """OEGetIridiumCategoryName(unsigned int iridiumCategory) -> std::string"""
    return _oechem.OEGetIridiumCategoryName(iridiumCategory)

def OEGetIridiumCategoryFromName(categoryName: 'std::string') -> "unsigned int":
    """OEGetIridiumCategoryFromName(std::string categoryName) -> unsigned int"""
    return _oechem.OEGetIridiumCategoryFromName(categoryName)
class OEIridiumData(object):
    """Proxy of C++ OEBio::OEIridiumData 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__(OEBio::OEIridiumData self) -> OEIridiumData
        __init__(OEBio::OEIridiumData self, OEIridiumData rhs) -> OEIridiumData
        """
        this = _oechem.new_OEIridiumData(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEIridiumData___nonzero__(self)



    def Clear(self) -> "void":
        """Clear(OEIridiumData self)"""
        return _oechem.OEIridiumData_Clear(self)


    def DetermineCategory(self) -> "void":
        """DetermineCategory(OEIridiumData self)"""
        return _oechem.OEIridiumData_DetermineCategory(self)


    def GetLigandDensity(self) -> "double":
        """GetLigandDensity(OEIridiumData self) -> double"""
        return _oechem.OEIridiumData_GetLigandDensity(self)


    def GetAsDensity(self) -> "double":
        """GetAsDensity(OEIridiumData self) -> double"""
        return _oechem.OEIridiumData_GetAsDensity(self)


    def GetDPI(self) -> "double":
        """GetDPI(OEIridiumData self) -> double"""
        return _oechem.OEIridiumData_GetDPI(self)


    def GetRFree(self) -> "double":
        """GetRFree(OEIridiumData self) -> double"""
        return _oechem.OEIridiumData_GetRFree(self)


    def GetResolution(self) -> "double":
        """GetResolution(OEIridiumData self) -> double"""
        return _oechem.OEIridiumData_GetResolution(self)


    def GetPartOccupancyLigand(self) -> "bool":
        """GetPartOccupancyLigand(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetPartOccupancyLigand(self)


    def GetPartOccupancyProtein(self) -> "bool":
        """GetPartOccupancyProtein(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetPartOccupancyProtein(self)


    def GetAltConfs(self) -> "bool":
        """GetAltConfs(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetAltConfs(self)


    def GetPackingResidues(self) -> "bool":
        """GetPackingResidues(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetPackingResidues(self)


    def GetExcipients(self) -> "bool":
        """GetExcipients(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetExcipients(self)


    def GetIrrationalRfree(self) -> "bool":
        """GetIrrationalRfree(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetIrrationalRfree(self)


    def GetPossibleCovalent(self) -> "bool":
        """GetPossibleCovalent(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetPossibleCovalent(self)


    def GetHasMTZ(self) -> "bool":
        """GetHasMTZ(OEIridiumData self) -> bool"""
        return _oechem.OEIridiumData_GetHasMTZ(self)


    def GetCategory(self) -> "unsigned int":
        """GetCategory(OEIridiumData self) -> unsigned int"""
        return _oechem.OEIridiumData_GetCategory(self)


    def SetLigandDensity(self, ligandDensity: 'double') -> "bool":
        """SetLigandDensity(OEIridiumData self, double ligandDensity) -> bool"""
        return _oechem.OEIridiumData_SetLigandDensity(self, ligandDensity)


    def SetAsDensity(self, asDensity: 'double') -> "bool":
        """SetAsDensity(OEIridiumData self, double asDensity) -> bool"""
        return _oechem.OEIridiumData_SetAsDensity(self, asDensity)


    def SetDPI(self, dpi: 'double') -> "bool":
        """SetDPI(OEIridiumData self, double dpi) -> bool"""
        return _oechem.OEIridiumData_SetDPI(self, dpi)


    def SetPartOccupancyLigand(self, partOccupancyLigand: 'bool') -> "bool":
        """SetPartOccupancyLigand(OEIridiumData self, bool partOccupancyLigand) -> bool"""
        return _oechem.OEIridiumData_SetPartOccupancyLigand(self, partOccupancyLigand)


    def SetPartOccupancyProtein(self, partOccupancyProtein: 'bool') -> "bool":
        """SetPartOccupancyProtein(OEIridiumData self, bool partOccupancyProtein) -> bool"""
        return _oechem.OEIridiumData_SetPartOccupancyProtein(self, partOccupancyProtein)


    def SetAltConfs(self, altConfs: 'bool') -> "bool":
        """SetAltConfs(OEIridiumData self, bool altConfs) -> bool"""
        return _oechem.OEIridiumData_SetAltConfs(self, altConfs)


    def SetPackingResidues(self, packingResidues: 'bool') -> "bool":
        """SetPackingResidues(OEIridiumData self, bool packingResidues) -> bool"""
        return _oechem.OEIridiumData_SetPackingResidues(self, packingResidues)


    def SetExcipients(self, excipients: 'bool') -> "bool":
        """SetExcipients(OEIridiumData self, bool excipients) -> bool"""
        return _oechem.OEIridiumData_SetExcipients(self, excipients)


    def SetIrrationalRfree(self, irrationalRfree: 'bool') -> "bool":
        """SetIrrationalRfree(OEIridiumData self, bool irrationalRfree) -> bool"""
        return _oechem.OEIridiumData_SetIrrationalRfree(self, irrationalRfree)


    def SetPossibleCovalent(self, possibleCovalent: 'bool') -> "bool":
        """SetPossibleCovalent(OEIridiumData self, bool possibleCovalent) -> bool"""
        return _oechem.OEIridiumData_SetPossibleCovalent(self, possibleCovalent)


    def SetRFree(self, rFree: 'double') -> "bool":
        """SetRFree(OEIridiumData self, double rFree) -> bool"""
        return _oechem.OEIridiumData_SetRFree(self, rFree)


    def SetResolution(self, resolution: 'double') -> "bool":
        """SetResolution(OEIridiumData self, double resolution) -> bool"""
        return _oechem.OEIridiumData_SetResolution(self, resolution)


    def SetHasMTZ(self, hasMTZ: 'bool') -> "bool":
        """SetHasMTZ(OEIridiumData self, bool hasMTZ) -> bool"""
        return _oechem.OEIridiumData_SetHasMTZ(self, hasMTZ)


    def SetCategory(self, category: 'unsigned int') -> "bool":
        """SetCategory(OEIridiumData self, unsigned int category) -> bool"""
        return _oechem.OEIridiumData_SetCategory(self, category)


    def Json(self) -> "std::string":
        """Json(OEIridiumData self) -> std::string"""
        return _oechem.OEIridiumData_Json(self)


    def Log(self) -> "std::string":
        """Log(OEIridiumData self) -> std::string"""
        return _oechem.OEIridiumData_Log(self)

    __swig_destroy__ = _oechem.delete_OEIridiumData
    __del__ = lambda self: None
OEIridiumData_swigregister = _oechem.OEIridiumData_swigregister
OEIridiumData_swigregister(OEIridiumData)


def OEIridiumDataFromJson(metadata: 'OEIridiumData', json: 'std::string const &') -> "bool":
    """OEIridiumDataFromJson(OEIridiumData metadata, std::string const & json) -> bool"""
    return _oechem.OEIridiumDataFromJson(metadata, json)

def OEIridiumDataToJson(metadata: 'OEIridiumData', prettyPrint: 'bool const'=True) -> "std::string":
    """
    OEIridiumDataToJson(OEIridiumData metadata, bool const prettyPrint=True) -> std::string
    OEIridiumDataToJson(OEIridiumData metadata) -> std::string
    """
    return _oechem.OEIridiumDataToJson(metadata, prettyPrint)
class OEStructureQuality(object):
    """Proxy of C++ OEBio::OEStructureQuality 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__(OEBio::OEStructureQuality self) -> OEStructureQuality
        __init__(OEBio::OEStructureQuality self, OEIridiumData id) -> OEStructureQuality
        __init__(OEBio::OEStructureQuality self, OEStructureQuality rhs) -> OEStructureQuality
        """
        this = _oechem.new_OEStructureQuality(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEStructureQuality___nonzero__(self)



    def Clear(self) -> "void":
        """Clear(OEStructureQuality self)"""
        return _oechem.OEStructureQuality_Clear(self)


    def HasIridiumData(self) -> "bool":
        """HasIridiumData(OEStructureQuality self) -> bool"""
        return _oechem.OEStructureQuality_HasIridiumData(self)


    def SetIridiumData(self, id: 'OEIridiumData') -> "bool":
        """SetIridiumData(OEStructureQuality self, OEIridiumData id) -> bool"""
        return _oechem.OEStructureQuality_SetIridiumData(self, id)


    def GetIridiumData(self, *args) -> "OEBio::OEIridiumData":
        """
        GetIridiumData(OEStructureQuality self) -> OEIridiumData
        GetIridiumData(OEStructureQuality self) -> OEIridiumData
        """
        return _oechem.OEStructureQuality_GetIridiumData(self, *args)

    __swig_destroy__ = _oechem.delete_OEStructureQuality
    __del__ = lambda self: None
OEStructureQuality_swigregister = _oechem.OEStructureQuality_swigregister
OEStructureQuality_swigregister(OEStructureQuality)


def OECalculateDPI(irid: 'OEIridiumData', mol: 'OEMolBase') -> "bool":
    """OECalculateDPI(OEIridiumData irid, OEMolBase mol) -> bool"""
    return _oechem.OECalculateDPI(irid, mol)
class OEDesignUnit(OEBase):
    """Proxy of C++ OEBio::OEDesignUnit 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__(OEBio::OEDesignUnit self) -> OEDesignUnit
        __init__(OEBio::OEDesignUnit self, OEDesignUnit rhs) -> OEDesignUnit
        """
        this = _oechem.new_OEDesignUnit(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDesignUnit
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEDesignUnit *":
        """CreateCopy(OEDesignUnit self) -> OEDesignUnit"""
        return _oechem.OEDesignUnit_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEDesignUnit self) -> void const *"""
        return _oechem.OEDesignUnit_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEDesignUnit self, void const * arg2) -> bool"""
        return _oechem.OEDesignUnit_IsDataType(self, arg2)


    def IsValid(self):
      return _oechem.OEDesignUnit___nonzero__(self)



    def Clear(self) -> "void":
        """Clear(OEDesignUnit self)"""
        return _oechem.OEDesignUnit_Clear(self)


    def GetTitle(self) -> "std::string":
        """GetTitle(OEDesignUnit self) -> std::string"""
        return _oechem.OEDesignUnit_GetTitle(self)


    def GetTargetComponentTag(self) -> "std::string":
        """GetTargetComponentTag(OEDesignUnit self) -> std::string"""
        return _oechem.OEDesignUnit_GetTargetComponentTag(self)


    def GetComponentTag(self, componentID: 'unsigned int') -> "std::string":
        """GetComponentTag(OEDesignUnit self, unsigned int componentID) -> std::string"""
        return _oechem.OEDesignUnit_GetComponentTag(self, componentID)


    def GetTargetComponentID(self) -> "unsigned int":
        """GetTargetComponentID(OEDesignUnit self) -> unsigned int"""
        return _oechem.OEDesignUnit_GetTargetComponentID(self)


    def GetComponentID(self, componentTag: 'std::string const &') -> "unsigned int":
        """GetComponentID(OEDesignUnit self, std::string const & componentTag) -> unsigned int"""
        return _oechem.OEDesignUnit_GetComponentID(self, componentTag)


    def GetPDBMetaData(self, mol: 'OEMolBase') -> "bool":
        """GetPDBMetaData(OEDesignUnit self, OEMolBase mol) -> bool"""
        return _oechem.OEDesignUnit_GetPDBMetaData(self, mol)


    def GetComponents(self, *args) -> "bool":
        """
        GetComponents(OEDesignUnit self, OEMolBase mol, unsigned int componentMask, bool bondCovalent=True) -> bool
        GetComponents(OEDesignUnit self, OEMolBase mol, unsigned int componentMask) -> bool
        GetComponents(OEDesignUnit self, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnit_GetComponents(self, *args)


    def GetComponentsWithin(self, *args) -> "bool":
        """
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0, bool includeSelf=False, bool bondCovalent=True) -> bool
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0, bool includeSelf=False) -> bool
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask, double dist=5.0) -> bool
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol, unsigned int componentMask, unsigned int withinMask) -> bool
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol, unsigned int componentMask) -> bool
        GetComponentsWithin(OEDesignUnit self, OEMolBase mol) -> bool
        """
        return _oechem.OEDesignUnit_GetComponentsWithin(self, *args)


    def GetProtein(self, molecule: 'OEMolBase') -> "bool":
        """GetProtein(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetProtein(self, molecule)


    def GetNucleicAcid(self, molecule: 'OEMolBase') -> "bool":
        """GetNucleicAcid(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetNucleicAcid(self, molecule)


    def GetLigand(self, molecule: 'OEMolBase') -> "bool":
        """GetLigand(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetLigand(self, molecule)


    def GetSolvent(self, molecule: 'OEMolBase') -> "bool":
        """GetSolvent(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetSolvent(self, molecule)


    def GetMetal(self, molecule: 'OEMolBase') -> "bool":
        """GetMetal(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetMetal(self, molecule)


    def GetTarget(self, molecule: 'OEMolBase') -> "bool":
        """GetTarget(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetTarget(self, molecule)


    def GetPackingResidues(self, molecule: 'OEMolBase') -> "bool":
        """GetPackingResidues(OEDesignUnit self, OEMolBase molecule) -> bool"""
        return _oechem.OEDesignUnit_GetPackingResidues(self, molecule)


    def GetComponent(self, molecule: 'OEMolBase', componentID: 'unsigned int') -> "bool":
        """GetComponent(OEDesignUnit self, OEMolBase molecule, unsigned int componentID) -> bool"""
        return _oechem.OEDesignUnit_GetComponent(self, molecule, componentID)


    def GetStructureQuality(self) -> "OEBio::OEStructureQuality const":
        """GetStructureQuality(OEDesignUnit self) -> OEStructureQuality"""
        return _oechem.OEDesignUnit_GetStructureQuality(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEDesignUnit self, std::string const & title) -> bool"""
        return _oechem.OEDesignUnit_SetTitle(self, title)


    def HasPDBMetaData(self) -> "bool":
        """HasPDBMetaData(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasPDBMetaData(self)


    def HasComponent(self, componentID: 'unsigned int') -> "bool":
        """HasComponent(OEDesignUnit self, unsigned int componentID) -> bool"""
        return _oechem.OEDesignUnit_HasComponent(self, componentID)


    def HasTitle(self) -> "bool":
        """HasTitle(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasTitle(self)


    def HasProtein(self) -> "bool":
        """HasProtein(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasProtein(self)


    def HasLigand(self) -> "bool":
        """HasLigand(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasLigand(self)


    def HasSolvent(self) -> "bool":
        """HasSolvent(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasSolvent(self)


    def HasNucleicAcid(self) -> "bool":
        """HasNucleicAcid(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasNucleicAcid(self)


    def HasTarget(self) -> "bool":
        """HasTarget(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasTarget(self)


    def HasPackingResidues(self) -> "bool":
        """HasPackingResidues(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasPackingResidues(self)


    def HasSiteResidues(self) -> "bool":
        """HasSiteResidues(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasSiteResidues(self)


    def HasMetal(self) -> "bool":
        """HasMetal(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasMetal(self)


    def HasStructureQuality(self) -> "bool":
        """HasStructureQuality(OEDesignUnit self) -> bool"""
        return _oechem.OEDesignUnit_HasStructureQuality(self)


    def GetImpl(self, *args) -> "OEBio::OEDesignUnitImpl const &":
        """
        GetImpl(OEDesignUnit self) -> OEDesignUnitImpl
        GetImpl(OEDesignUnit self) -> OEDesignUnitImpl
        """
        return _oechem.OEDesignUnit_GetImpl(self, *args)


    def GetTags(self) -> "PyObject *":
        """GetTags(OEDesignUnit self) -> PyObject *"""
        return _oechem.OEDesignUnit_GetTags(self)


    def GetSiteResidues(self) -> "PyObject *":
        """GetSiteResidues(OEDesignUnit self) -> PyObject *"""
        return _oechem.OEDesignUnit_GetSiteResidues(self)


    def GetIDs(self) -> "PyObject *":
        """GetIDs(OEDesignUnit self) -> PyObject *"""
        return _oechem.OEDesignUnit_GetIDs(self)


    def GetTaggedComponents(self, *args) -> "PyObject *":
        """
        GetTaggedComponents(OEDesignUnit self, unsigned int componentMask) -> PyObject
        GetTaggedComponents(OEDesignUnit self) -> PyObject *
        """
        return _oechem.OEDesignUnit_GetTaggedComponents(self, *args)


    def __getstate__(self):
        return OEWriteDesignUnitToBytes(self)



    def __setstate__(self, state):
        du = OEDesignUnit()
        if OEReadDesignUnitFromBytes(du, state):
            self.__init__(du)
        else:
            self.__init__()
        del du


OEDesignUnit_swigregister = _oechem.OEDesignUnit_swigregister
OEDesignUnit_swigregister(OEDesignUnit)


def OESubsetDesignUnit(du: 'OEDesignUnit', refDu: 'OEDesignUnit', componentMask: 'unsigned int const') -> "bool":
    """OESubsetDesignUnit(OEDesignUnit du, OEDesignUnit refDu, unsigned int const componentMask) -> bool"""
    return _oechem.OESubsetDesignUnit(du, refDu, componentMask)

def OEUpdateDesignUnit(du: 'OEDesignUnit', mol: 'OEMolBase', componentId: 'unsigned int const') -> "bool":
    """OEUpdateDesignUnit(OEDesignUnit du, OEMolBase mol, unsigned int const componentId) -> bool"""
    return _oechem.OEUpdateDesignUnit(du, mol, componentId)

def OETransformDesignUnit(*args) -> "void":
    """
    OETransformDesignUnit(OEDesignUnit du, double const * rmat, double const * trns)
    OETransformDesignUnit(OEDesignUnit du, OETrans trans)
    """
    return _oechem.OETransformDesignUnit(*args)

def OEIsReadableDesignUnit(filename: 'std::string const &') -> "bool":
    """OEIsReadableDesignUnit(std::string const & filename) -> bool"""
    return _oechem.OEIsReadableDesignUnit(filename)

def OEIsWriteableDesignUnit(filename: 'std::string const &') -> "bool":
    """OEIsWriteableDesignUnit(std::string const & filename) -> bool"""
    return _oechem.OEIsWriteableDesignUnit(filename)

def OEReadDesignUnit(*args) -> "bool":
    """
    OEReadDesignUnit(std::string const & fname, OEDesignUnit du) -> bool
    OEReadDesignUnit(oeistream ifs, OEDesignUnit du, unsigned int type) -> bool
    OEReadDesignUnit(oeistream ifs, OEDesignUnit du) -> bool
    """
    return _oechem.OEReadDesignUnit(*args)

def OEWriteDesignUnit(*args) -> "bool":
    """
    OEWriteDesignUnit(std::string const & fname, OEDesignUnit du) -> bool
    OEWriteDesignUnit(oeostream ofs, OEDesignUnit du) -> bool
    """
    return _oechem.OEWriteDesignUnit(*args)

def OEWriteDesignUnitToString(du: 'OEDesignUnit') -> "std::string":
    """OEWriteDesignUnitToString(OEDesignUnit du) -> std::string"""
    return _oechem.OEWriteDesignUnitToString(du)

def OEReadDesignUnitFromString(du: 'OEDesignUnit', input: 'std::string const &') -> "bool":
    """OEReadDesignUnitFromString(OEDesignUnit du, std::string const & input) -> bool"""
    return _oechem.OEReadDesignUnitFromString(du, input)

def OEGetDesignUnitComponentName(componentID: 'unsigned int const') -> "std::string":
    """OEGetDesignUnitComponentName(unsigned int const componentID) -> std::string"""
    return _oechem.OEGetDesignUnitComponentName(componentID)

def OEGetDesignUnitComponentID(componentName: 'std::string const &') -> "unsigned int":
    """OEGetDesignUnitComponentID(std::string const & componentName) -> unsigned int"""
    return _oechem.OEGetDesignUnitComponentID(componentName)

def OEGetDesignUnitComponentNamesFromMask(*args) -> "std::string":
    """
    OEGetDesignUnitComponentNamesFromMask(unsigned int const componentMask, std::string const & delimiter) -> std::string
    OEGetDesignUnitComponentNamesFromMask(unsigned int const componentMask) -> std::string
    """
    return _oechem.OEGetDesignUnitComponentNamesFromMask(*args)
class OEDesignUnitVector(object):
    """Proxy of C++ std::vector<(p.OEBio::OEDesignUnit)> class."""

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

    def iterator(self) -> "swig::SwigPyIterator *":
        """iterator(OEDesignUnitVector self) -> SwigPyIterator"""
        return _oechem.OEDesignUnitVector_iterator(self)

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

    def __nonzero__(self) -> "bool":
        """__nonzero__(OEDesignUnitVector self) -> bool"""
        return _oechem.OEDesignUnitVector___nonzero__(self)


    def __bool__(self) -> "bool":
        """__bool__(OEDesignUnitVector self) -> bool"""
        return _oechem.OEDesignUnitVector___bool__(self)


    def __len__(self) -> "std::vector< OEBio::OEDesignUnit * >::size_type":
        """__len__(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::size_type"""
        return _oechem.OEDesignUnitVector___len__(self)


    def __getslice__(self, i: 'std::vector< OEBio::OEDesignUnit * >::difference_type', j: 'std::vector< OEBio::OEDesignUnit * >::difference_type') -> "std::vector< OEBio::OEDesignUnit *,std::allocator< OEBio::OEDesignUnit * > > *":
        """__getslice__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i, std::vector< OEBio::OEDesignUnit * >::difference_type j) -> OEDesignUnitVector"""
        return _oechem.OEDesignUnitVector___getslice__(self, i, j)


    def __setslice__(self, *args) -> "void":
        """
        __setslice__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i, std::vector< OEBio::OEDesignUnit * >::difference_type j)
        __setslice__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i, std::vector< OEBio::OEDesignUnit * >::difference_type j, OEDesignUnitVector v)
        """
        return _oechem.OEDesignUnitVector___setslice__(self, *args)


    def __delslice__(self, i: 'std::vector< OEBio::OEDesignUnit * >::difference_type', j: 'std::vector< OEBio::OEDesignUnit * >::difference_type') -> "void":
        """__delslice__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i, std::vector< OEBio::OEDesignUnit * >::difference_type j)"""
        return _oechem.OEDesignUnitVector___delslice__(self, i, j)


    def __delitem__(self, *args) -> "void":
        """
        __delitem__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i)
        __delitem__(OEDesignUnitVector self, PySliceObject * slice)
        """
        return _oechem.OEDesignUnitVector___delitem__(self, *args)


    def __getitem__(self, *args) -> "std::vector< OEBio::OEDesignUnit * >::value_type":
        """
        __getitem__(OEDesignUnitVector self, PySliceObject * slice) -> OEDesignUnitVector
        __getitem__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i) -> OEDesignUnit
        """
        return _oechem.OEDesignUnitVector___getitem__(self, *args)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEDesignUnitVector self, PySliceObject * slice, OEDesignUnitVector v)
        __setitem__(OEDesignUnitVector self, PySliceObject * slice)
        __setitem__(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::difference_type i, OEDesignUnit x)
        """
        return _oechem.OEDesignUnitVector___setitem__(self, *args)


    def pop(self) -> "std::vector< OEBio::OEDesignUnit * >::value_type":
        """pop(OEDesignUnitVector self) -> OEDesignUnit"""
        return _oechem.OEDesignUnitVector_pop(self)


    def append(self, x: 'OEDesignUnit') -> "void":
        """append(OEDesignUnitVector self, OEDesignUnit x)"""
        return _oechem.OEDesignUnitVector_append(self, x)


    def empty(self) -> "bool":
        """empty(OEDesignUnitVector self) -> bool"""
        return _oechem.OEDesignUnitVector_empty(self)


    def size(self) -> "std::vector< OEBio::OEDesignUnit * >::size_type":
        """size(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::size_type"""
        return _oechem.OEDesignUnitVector_size(self)


    def swap(self, v: 'OEDesignUnitVector') -> "void":
        """swap(OEDesignUnitVector self, OEDesignUnitVector v)"""
        return _oechem.OEDesignUnitVector_swap(self, v)


    def begin(self) -> "std::vector< OEBio::OEDesignUnit * >::iterator":
        """begin(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::iterator"""
        return _oechem.OEDesignUnitVector_begin(self)


    def end(self) -> "std::vector< OEBio::OEDesignUnit * >::iterator":
        """end(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::iterator"""
        return _oechem.OEDesignUnitVector_end(self)


    def rbegin(self) -> "std::vector< OEBio::OEDesignUnit * >::reverse_iterator":
        """rbegin(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::reverse_iterator"""
        return _oechem.OEDesignUnitVector_rbegin(self)


    def rend(self) -> "std::vector< OEBio::OEDesignUnit * >::reverse_iterator":
        """rend(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::reverse_iterator"""
        return _oechem.OEDesignUnitVector_rend(self)


    def clear(self) -> "void":
        """clear(OEDesignUnitVector self)"""
        return _oechem.OEDesignUnitVector_clear(self)


    def get_allocator(self) -> "std::vector< OEBio::OEDesignUnit * >::allocator_type":
        """get_allocator(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::allocator_type"""
        return _oechem.OEDesignUnitVector_get_allocator(self)


    def pop_back(self) -> "void":
        """pop_back(OEDesignUnitVector self)"""
        return _oechem.OEDesignUnitVector_pop_back(self)


    def erase(self, *args) -> "std::vector< OEBio::OEDesignUnit * >::iterator":
        """
        erase(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::iterator pos) -> std::vector< OEBio::OEDesignUnit * >::iterator
        erase(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::iterator first, std::vector< OEBio::OEDesignUnit * >::iterator last) -> std::vector< OEBio::OEDesignUnit * >::iterator
        """
        return _oechem.OEDesignUnitVector_erase(self, *args)


    def __init__(self, *args):
        """
        __init__(std::vector<(p.OEBio::OEDesignUnit)> self) -> OEDesignUnitVector
        __init__(std::vector<(p.OEBio::OEDesignUnit)> self, OEDesignUnitVector arg2) -> OEDesignUnitVector
        __init__(std::vector<(p.OEBio::OEDesignUnit)> self, std::vector< OEBio::OEDesignUnit * >::size_type size) -> OEDesignUnitVector
        __init__(std::vector<(p.OEBio::OEDesignUnit)> self, std::vector< OEBio::OEDesignUnit * >::size_type size, OEDesignUnit value) -> OEDesignUnitVector
        """
        this = _oechem.new_OEDesignUnitVector(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def push_back(self, x: 'OEDesignUnit') -> "void":
        """push_back(OEDesignUnitVector self, OEDesignUnit x)"""
        return _oechem.OEDesignUnitVector_push_back(self, x)


    def front(self) -> "std::vector< OEBio::OEDesignUnit * >::value_type":
        """front(OEDesignUnitVector self) -> OEDesignUnit"""
        return _oechem.OEDesignUnitVector_front(self)


    def back(self) -> "std::vector< OEBio::OEDesignUnit * >::value_type":
        """back(OEDesignUnitVector self) -> OEDesignUnit"""
        return _oechem.OEDesignUnitVector_back(self)


    def assign(self, n: 'std::vector< OEBio::OEDesignUnit * >::size_type', x: 'OEDesignUnit') -> "void":
        """assign(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::size_type n, OEDesignUnit x)"""
        return _oechem.OEDesignUnitVector_assign(self, n, x)


    def resize(self, *args) -> "void":
        """
        resize(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::size_type new_size)
        resize(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::size_type new_size, OEDesignUnit x)
        """
        return _oechem.OEDesignUnitVector_resize(self, *args)


    def insert(self, *args) -> "void":
        """
        insert(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::iterator pos, OEDesignUnit x) -> std::vector< OEBio::OEDesignUnit * >::iterator
        insert(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::iterator pos, std::vector< OEBio::OEDesignUnit * >::size_type n, OEDesignUnit x)
        """
        return _oechem.OEDesignUnitVector_insert(self, *args)


    def reserve(self, n: 'std::vector< OEBio::OEDesignUnit * >::size_type') -> "void":
        """reserve(OEDesignUnitVector self, std::vector< OEBio::OEDesignUnit * >::size_type n)"""
        return _oechem.OEDesignUnitVector_reserve(self, n)


    def capacity(self) -> "std::vector< OEBio::OEDesignUnit * >::size_type":
        """capacity(OEDesignUnitVector self) -> std::vector< OEBio::OEDesignUnit * >::size_type"""
        return _oechem.OEDesignUnitVector_capacity(self)

    __swig_destroy__ = _oechem.delete_OEDesignUnitVector
    __del__ = lambda self: None
OEDesignUnitVector_swigregister = _oechem.OEDesignUnitVector_swigregister
OEDesignUnitVector_swigregister(OEDesignUnitVector)

class OEHierResidue(object):
    """Proxy of C++ OEBio::OEHierResidue 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__ = _oechem.delete_OEHierResidue
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierResidue self, OEBio::OEHierResImpl * i) -> OEHierResidue
        __init__(OEBio::OEHierResidue self) -> OEHierResidue
        __init__(OEBio::OEHierResidue self, OEHierResidue arg2) -> OEHierResidue
        """
        this = _oechem.new_OEHierResidue(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierResImpl *":
        """GetImpl(OEHierResidue self) -> OEBio::OEHierResImpl *"""
        return _oechem.OEHierResidue_GetImpl(self)


    def GetResidueNumber(self) -> "int":
        """GetResidueNumber(OEHierResidue self) -> int"""
        return _oechem.OEHierResidue_GetResidueNumber(self)


    def GetResidueName(self) -> "char const *":
        """GetResidueName(OEHierResidue self) -> char const *"""
        return _oechem.OEHierResidue_GetResidueName(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierResidue self) -> OEResidue"""
        return _oechem.OEHierResidue_GetOEResidue(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEHierResidue self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEHierResidue self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEHierResidue_GetAtoms(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierResidue self, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierResidue self, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierResidue_GetAtom(self, *args)

OEHierResidue_swigregister = _oechem.OEHierResidue_swigregister
OEHierResidue_swigregister(OEHierResidue)

class OEHierFragment(object):
    """Proxy of C++ OEBio::OEHierFragment 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__ = _oechem.delete_OEHierFragment
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierFragment self, OEBio::OEHierFragImpl * i) -> OEHierFragment
        __init__(OEBio::OEHierFragment self) -> OEHierFragment
        __init__(OEBio::OEHierFragment self, OEHierFragment arg2) -> OEHierFragment
        """
        this = _oechem.new_OEHierFragment(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierFragImpl *":
        """GetImpl(OEHierFragment self) -> OEBio::OEHierFragImpl *"""
        return _oechem.OEHierFragment_GetImpl(self)


    def GetFragmentNumber(self) -> "int":
        """GetFragmentNumber(OEHierFragment self) -> int"""
        return _oechem.OEHierFragment_GetFragmentNumber(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierFragment self) -> OEResidue"""
        return _oechem.OEHierFragment_GetOEResidue(self)


    def GetResidues(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """
        GetResidues(OEHierFragment self) -> OESystem::OEIterBase< OEBio::OEHierResidue >
        GetResidues(OEHierFragment self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *
        """
        return _oechem.OEHierFragment_GetResidues(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierFragment self, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierFragment self, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierFragment_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierFragment self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierFragment self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierFragment_GetAtom(self, *args)

OEHierFragment_swigregister = _oechem.OEHierFragment_swigregister
OEHierFragment_swigregister(OEHierFragment)

class OEHierChain(object):
    """Proxy of C++ OEBio::OEHierChain 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__ = _oechem.delete_OEHierChain
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierChain self, OEBio::OEHierChainImpl * i) -> OEHierChain
        __init__(OEBio::OEHierChain self) -> OEHierChain
        __init__(OEBio::OEHierChain self, OEHierChain arg2) -> OEHierChain
        """
        this = _oechem.new_OEHierChain(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierChainImpl *":
        """GetImpl(OEHierChain self) -> OEBio::OEHierChainImpl *"""
        return _oechem.OEHierChain_GetImpl(self)


    def GetChainID(self) -> "char":
        """GetChainID(OEHierChain self) -> char"""
        return _oechem.OEHierChain_GetChainID(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierChain self) -> OEResidue"""
        return _oechem.OEHierChain_GetOEResidue(self)


    def GetFragments(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """
        GetFragments(OEHierChain self) -> OESystem::OEIterBase< OEBio::OEHierFragment >
        GetFragments(OEHierChain self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *
        """
        return _oechem.OEHierChain_GetFragments(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierChain self, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierChain self, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierChain_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierChain self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierChain self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierChain_GetAtom(self, *args)

OEHierChain_swigregister = _oechem.OEHierChain_swigregister
OEHierChain_swigregister(OEHierChain)

class OEHierView(object):
    """Proxy of C++ OEBio::OEHierView 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__ = _oechem.delete_OEHierView
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierView self, OEBio::OEHierViewImpl * i) -> OEHierView
        __init__(OEBio::OEHierView self) -> OEHierView
        __init__(OEBio::OEHierView self, OEHierView arg2) -> OEHierView
        __init__(OEBio::OEHierView self, OEMolBase arg2, unsigned int assume) -> OEHierView
        __init__(OEBio::OEHierView self, OEMolBase arg2) -> OEHierView
        """
        this = _oechem.new_OEHierView(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierViewImpl *":
        """GetImpl(OEHierView self) -> OEBio::OEHierViewImpl *"""
        return _oechem.OEHierView_GetImpl(self)


    def GetChains(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierChain const > *":
        """
        GetChains(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierChain >
        GetChains(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierChain const > *
        """
        return _oechem.OEHierView_GetChains(self, *args)


    def GetFragments(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """
        GetFragments(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierFragment >
        GetFragments(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *
        """
        return _oechem.OEHierView_GetFragments(self, *args)


    def GetResidues(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """
        GetResidues(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierResidue >
        GetResidues(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *
        """
        return _oechem.OEHierView_GetResidues(self, *args)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEHierView self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEHierView self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEHierView_GetAtoms(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierView self, char chainID, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierView self, char chainID, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierView_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierView self, char chainID, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierView self, char chainID, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierView_GetAtom(self, *args)

OEHierView_swigregister = _oechem.OEHierView_swigregister
OEHierView_swigregister(OEHierView)

class OEHierResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierResidue)> 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<(OEBio::OEHierResidue)> self) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OEHierResidueIter rhs) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OESystem::OEIterBase< OEBio::OEHierResidue > * rhs) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierResidue >::NonConstA > * rhs) -> OEHierResidueIter
        """
        this = _oechem.new_OEHierResidueIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierResidue > *":
        """Copy(OEHierResidueIter self) -> OESystem::OEIterBase< OEBio::OEHierResidue > *"""
        return _oechem.OEHierResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierResidueIter self, OESystem::OEIterBase< OEBio::OEHierResidue > * ib)
        Push(OEHierResidueIter self, OEHierResidueIter iter)
        """
        return _oechem.OEHierResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierResidue,OEBio::OEHierResidue > const &') -> "void":
        """Sort(OEHierResidueIter self, OESystem::OEBinaryPredicate< OEBio::OEHierResidue,OEBio::OEHierResidue > const & sort_criterion)"""
        return _oechem.OEHierResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """ToFirst(OEHierResidueIter self) -> OEHierResidueIter"""
        return _oechem.OEHierResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """ToLast(OEHierResidueIter self) -> OEHierResidueIter"""
        return _oechem.OEHierResidueIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierResidue &":
        """__ref__(OEHierResidueIter self) -> OEHierResidue"""
        return _oechem.OEHierResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierResidueIter self) -> PyObject *"""
        return _oechem.OEHierResidueIter_next(self)


    def Target(self) -> "OEBio::OEHierResidue &":
        """Target(OEHierResidueIter self) -> OEHierResidue"""
        return _oechem.OEHierResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """
        Next(OEHierResidueIter self) -> OEHierResidueIter
        Next(OEHierResidueIter self, int i) -> OEHierResidueIter
        """
        return _oechem.OEHierResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """
        Prev(OEHierResidueIter self) -> OEHierResidueIter
        Prev(OEHierResidueIter self, int i) -> OEHierResidueIter
        """
        return _oechem.OEHierResidueIter_Prev(self, *args)

OEHierResidueIter_swigregister = _oechem.OEHierResidueIter_swigregister
OEHierResidueIter_swigregister(OEHierResidueIter)

class OEHierFragmentIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierFragment)> 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<(OEBio::OEHierFragment)> self) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OEHierFragmentIter rhs) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OESystem::OEIterBase< OEBio::OEHierFragment > * rhs) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierFragment >::NonConstA > * rhs) -> OEHierFragmentIter
        """
        this = _oechem.new_OEHierFragmentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierFragmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierFragment > *":
        """Copy(OEHierFragmentIter self) -> OESystem::OEIterBase< OEBio::OEHierFragment > *"""
        return _oechem.OEHierFragmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierFragmentIter self, OESystem::OEIterBase< OEBio::OEHierFragment > * ib)
        Push(OEHierFragmentIter self, OEHierFragmentIter iter)
        """
        return _oechem.OEHierFragmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierFragment,OEBio::OEHierFragment > const &') -> "void":
        """Sort(OEHierFragmentIter self, OESystem::OEBinaryPredicate< OEBio::OEHierFragment,OEBio::OEHierFragment > const & sort_criterion)"""
        return _oechem.OEHierFragmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """ToFirst(OEHierFragmentIter self) -> OEHierFragmentIter"""
        return _oechem.OEHierFragmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """ToLast(OEHierFragmentIter self) -> OEHierFragmentIter"""
        return _oechem.OEHierFragmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierFragment &":
        """__ref__(OEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.OEHierFragmentIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierFragmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierFragmentIter self) -> PyObject *"""
        return _oechem.OEHierFragmentIter_next(self)


    def Target(self) -> "OEBio::OEHierFragment &":
        """Target(OEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.OEHierFragmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """
        Next(OEHierFragmentIter self) -> OEHierFragmentIter
        Next(OEHierFragmentIter self, int i) -> OEHierFragmentIter
        """
        return _oechem.OEHierFragmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """
        Prev(OEHierFragmentIter self) -> OEHierFragmentIter
        Prev(OEHierFragmentIter self, int i) -> OEHierFragmentIter
        """
        return _oechem.OEHierFragmentIter_Prev(self, *args)

OEHierFragmentIter_swigregister = _oechem.OEHierFragmentIter_swigregister
OEHierFragmentIter_swigregister(OEHierFragmentIter)

class OEHierChainIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierChain)> 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<(OEBio::OEHierChain)> self) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OEHierChainIter rhs) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OESystem::OEIterBase< OEBio::OEHierChain > * rhs) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierChain >::NonConstA > * rhs) -> OEHierChainIter
        """
        this = _oechem.new_OEHierChainIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierChainIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierChain > *":
        """Copy(OEHierChainIter self) -> OESystem::OEIterBase< OEBio::OEHierChain > *"""
        return _oechem.OEHierChainIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierChainIter self, OESystem::OEIterBase< OEBio::OEHierChain > * ib)
        Push(OEHierChainIter self, OEHierChainIter iter)
        """
        return _oechem.OEHierChainIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierChain,OEBio::OEHierChain > const &') -> "void":
        """Sort(OEHierChainIter self, OESystem::OEBinaryPredicate< OEBio::OEHierChain,OEBio::OEHierChain > const & sort_criterion)"""
        return _oechem.OEHierChainIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """ToFirst(OEHierChainIter self) -> OEHierChainIter"""
        return _oechem.OEHierChainIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """ToLast(OEHierChainIter self) -> OEHierChainIter"""
        return _oechem.OEHierChainIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierChain &":
        """__ref__(OEHierChainIter self) -> OEHierChain"""
        return _oechem.OEHierChainIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierChainIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierChainIter self) -> PyObject *"""
        return _oechem.OEHierChainIter_next(self)


    def Target(self) -> "OEBio::OEHierChain &":
        """Target(OEHierChainIter self) -> OEHierChain"""
        return _oechem.OEHierChainIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """
        Next(OEHierChainIter self) -> OEHierChainIter
        Next(OEHierChainIter self, int i) -> OEHierChainIter
        """
        return _oechem.OEHierChainIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """
        Prev(OEHierChainIter self) -> OEHierChainIter
        Prev(OEHierChainIter self, int i) -> OEHierChainIter
        """
        return _oechem.OEHierChainIter_Prev(self, *args)

OEHierChainIter_swigregister = _oechem.OEHierChainIter_swigregister
OEHierChainIter_swigregister(OEHierChainIter)

class OERotamerIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OERotamer)> 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<(OEBio::OERotamer)> self) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OERotamerIter rhs) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OESystem::OEIterBase< OEBio::OERotamer > * rhs) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OERotamer >::NonConstA > * rhs) -> OERotamerIter
        """
        this = _oechem.new_OERotamerIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERotamerIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OERotamer > *":
        """Copy(OERotamerIter self) -> OESystem::OEIterBase< OEBio::OERotamer > *"""
        return _oechem.OERotamerIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OERotamerIter self, OESystem::OEIterBase< OEBio::OERotamer > * ib)
        Push(OERotamerIter self, OERotamerIter iter)
        """
        return _oechem.OERotamerIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OERotamer,OEBio::OERotamer > const &') -> "void":
        """Sort(OERotamerIter self, OESystem::OEBinaryPredicate< OEBio::OERotamer,OEBio::OERotamer > const & sort_criterion)"""
        return _oechem.OERotamerIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """ToFirst(OERotamerIter self) -> OERotamerIter"""
        return _oechem.OERotamerIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """ToLast(OERotamerIter self) -> OERotamerIter"""
        return _oechem.OERotamerIter_ToLast(self)


    def __ref__(self) -> "OEBio::OERotamer &":
        """__ref__(OERotamerIter self) -> OERotamer"""
        return _oechem.OERotamerIter___ref__(self)


    def IsValid(self):
      return _oechem.OERotamerIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OERotamerIter self) -> PyObject *"""
        return _oechem.OERotamerIter_next(self)


    def Target(self) -> "OEBio::OERotamer &":
        """Target(OERotamerIter self) -> OERotamer"""
        return _oechem.OERotamerIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """
        Next(OERotamerIter self) -> OERotamerIter
        Next(OERotamerIter self, int i) -> OERotamerIter
        """
        return _oechem.OERotamerIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """
        Prev(OERotamerIter self) -> OERotamerIter
        Prev(OERotamerIter self, int i) -> OERotamerIter
        """
        return _oechem.OERotamerIter_Prev(self, *args)

OERotamerIter_swigregister = _oechem.OERotamerIter_swigregister
OERotamerIter_swigregister(OERotamerIter)

class ConstOEHierResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierResidue)> 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<(q(const).OEBio::OEHierResidue)> self) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, ConstOEHierResidueIter rhs) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, OESystem::OEIterBase< OEBio::OEHierResidue const > * rhs) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierResidue const >::NonConstA > * rhs) -> ConstOEHierResidueIter
        """
        this = _oechem.new_ConstOEHierResidueIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """Copy(ConstOEHierResidueIter self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *"""
        return _oechem.ConstOEHierResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierResidueIter self, OESystem::OEIterBase< OEBio::OEHierResidue const > * ib)
        Push(ConstOEHierResidueIter self, ConstOEHierResidueIter iter)
        """
        return _oechem.ConstOEHierResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierResidue const,OEBio::OEHierResidue const > const &') -> "void":
        """Sort(ConstOEHierResidueIter self, OESystem::OEBinaryPredicate< OEBio::OEHierResidue const,OEBio::OEHierResidue const > const & sort_criterion)"""
        return _oechem.ConstOEHierResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """ToFirst(ConstOEHierResidueIter self) -> ConstOEHierResidueIter"""
        return _oechem.ConstOEHierResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """ToLast(ConstOEHierResidueIter self) -> ConstOEHierResidueIter"""
        return _oechem.ConstOEHierResidueIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierResidue const &":
        """__ref__(ConstOEHierResidueIter self) -> OEHierResidue"""
        return _oechem.ConstOEHierResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierResidueIter self) -> PyObject *"""
        return _oechem.ConstOEHierResidueIter_next(self)


    def Target(self) -> "OEBio::OEHierResidue const &":
        """Target(ConstOEHierResidueIter self) -> OEHierResidue"""
        return _oechem.ConstOEHierResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """
        Next(ConstOEHierResidueIter self) -> ConstOEHierResidueIter
        Next(ConstOEHierResidueIter self, int i) -> ConstOEHierResidueIter
        """
        return _oechem.ConstOEHierResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """
        Prev(ConstOEHierResidueIter self) -> ConstOEHierResidueIter
        Prev(ConstOEHierResidueIter self, int i) -> ConstOEHierResidueIter
        """
        return _oechem.ConstOEHierResidueIter_Prev(self, *args)

ConstOEHierResidueIter_swigregister = _oechem.ConstOEHierResidueIter_swigregister
ConstOEHierResidueIter_swigregister(ConstOEHierResidueIter)

class ConstOEHierFragmentIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierFragment)> 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<(q(const).OEBio::OEHierFragment)> self) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, ConstOEHierFragmentIter rhs) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, OESystem::OEIterBase< OEBio::OEHierFragment const > * rhs) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierFragment const >::NonConstA > * rhs) -> ConstOEHierFragmentIter
        """
        this = _oechem.new_ConstOEHierFragmentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierFragmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """Copy(ConstOEHierFragmentIter self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *"""
        return _oechem.ConstOEHierFragmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierFragmentIter self, OESystem::OEIterBase< OEBio::OEHierFragment const > * ib)
        Push(ConstOEHierFragmentIter self, ConstOEHierFragmentIter iter)
        """
        return _oechem.ConstOEHierFragmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierFragment const,OEBio::OEHierFragment const > const &') -> "void":
        """Sort(ConstOEHierFragmentIter self, OESystem::OEBinaryPredicate< OEBio::OEHierFragment const,OEBio::OEHierFragment const > const & sort_criterion)"""
        return _oechem.ConstOEHierFragmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """ToFirst(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter"""
        return _oechem.ConstOEHierFragmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """ToLast(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter"""
        return _oechem.ConstOEHierFragmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierFragment const &":
        """__ref__(ConstOEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.ConstOEHierFragmentIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierFragmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierFragmentIter self) -> PyObject *"""
        return _oechem.ConstOEHierFragmentIter_next(self)


    def Target(self) -> "OEBio::OEHierFragment const &":
        """Target(ConstOEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.ConstOEHierFragmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """
        Next(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter
        Next(ConstOEHierFragmentIter self, int i) -> ConstOEHierFragmentIter
        """
        return _oechem.ConstOEHierFragmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """
        Prev(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter
        Prev(ConstOEHierFragmentIter self, int i) -> ConstOEHierFragmentIter
        """
        return _oechem.ConstOEHierFragmentIter_Prev(self, *args)

ConstOEHierFragmentIter_swigregister = _oechem.ConstOEHierFragmentIter_swigregister
ConstOEHierFragmentIter_swigregister(ConstOEHierFragmentIter)

class ConstOEHierChainIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierChain)> 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<(q(const).OEBio::OEHierChain)> self) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, ConstOEHierChainIter rhs) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, OESystem::OEIterBase< OEBio::OEHierChain const > * rhs) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierChain const >::NonConstA > * rhs) -> ConstOEHierChainIter
        """
        this = _oechem.new_ConstOEHierChainIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierChainIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierChain const > *":
        """Copy(ConstOEHierChainIter self) -> OESystem::OEIterBase< OEBio::OEHierChain const > *"""
        return _oechem.ConstOEHierChainIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierChainIter self, OESystem::OEIterBase< OEBio::OEHierChain const > * ib)
        Push(ConstOEHierChainIter self, ConstOEHierChainIter iter)
        """
        return _oechem.ConstOEHierChainIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierChain const,OEBio::OEHierChain const > const &') -> "void":
        """Sort(ConstOEHierChainIter self, OESystem::OEBinaryPredicate< OEBio::OEHierChain const,OEBio::OEHierChain const > const & sort_criterion)"""
        return _oechem.ConstOEHierChainIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """ToFirst(ConstOEHierChainIter self) -> ConstOEHierChainIter"""
        return _oechem.ConstOEHierChainIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """ToLast(ConstOEHierChainIter self) -> ConstOEHierChainIter"""
        return _oechem.ConstOEHierChainIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierChain const &":
        """__ref__(ConstOEHierChainIter self) -> OEHierChain"""
        return _oechem.ConstOEHierChainIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierChainIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierChainIter self) -> PyObject *"""
        return _oechem.ConstOEHierChainIter_next(self)


    def Target(self) -> "OEBio::OEHierChain const &":
        """Target(ConstOEHierChainIter self) -> OEHierChain"""
        return _oechem.ConstOEHierChainIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """
        Next(ConstOEHierChainIter self) -> ConstOEHierChainIter
        Next(ConstOEHierChainIter self, int i) -> ConstOEHierChainIter
        """
        return _oechem.ConstOEHierChainIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """
        Prev(ConstOEHierChainIter self) -> ConstOEHierChainIter
        Prev(ConstOEHierChainIter self, int i) -> ConstOEHierChainIter
        """
        return _oechem.ConstOEHierChainIter_Prev(self, *args)

ConstOEHierChainIter_swigregister = _oechem.ConstOEHierChainIter_swigregister
ConstOEHierChainIter_swigregister(ConstOEHierChainIter)


def OERMSD(*args) -> "double":
    """
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match) -> double
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match) -> bool
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False, double * rot=None) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False, double * rot=None) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align) -> double
    """
    return _oechem.OERMSD(*args)

def OEGetTorsion(*args) -> "double":
    """
    OEGetTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetTorsion(OEHierResidue res, unsigned int torType) -> double
    OEGetTorsion(OEAtomBase atom, unsigned int torType, unsigned int assume) -> double
    OEGetTorsion(OEAtomBase atom, unsigned int torType) -> double
    """
    return _oechem.OEGetTorsion(*args)

def OESetTorsion(*args) -> "bool":
    """
    OESetTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double ang) -> bool
    OESetTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double ang) -> bool
    OESetTorsion(OEHierResidue res, unsigned int torType, double radians) -> bool
    OESetTorsion(OEAtomBase atom, unsigned int torType, double radians, unsigned int assume) -> bool
    OESetTorsion(OEAtomBase atom, unsigned int torType, double radians) -> bool
    """
    return _oechem.OESetTorsion(*args)

def OEGetChis(*args) -> "PyObject *":
    """
    OEGetChis(OEHierResidue res) -> PyObject
    OEGetChis(OEAtomBase atom, unsigned int assume) -> PyObject
    OEGetChis(OEAtomBase atom) -> PyObject *
    """
    return _oechem.OEGetChis(*args)

def OEGetResidues(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEResidue > *":
    """OEGetResidues(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEResidue > *"""
    return _oechem.OEGetResidues(mol)

def OEGetProteinTorsionName(torType: 'unsigned int') -> "char const *":
    """OEGetProteinTorsionName(unsigned int torType) -> char const *"""
    return _oechem.OEGetProteinTorsionName(torType)

def OEGetPhi(*args) -> "double":
    """
    OEGetPhi(OEHierResidue res) -> double
    OEGetPhi(OEAtomBase atom, unsigned int assume) -> double
    OEGetPhi(OEAtomBase atom) -> double
    """
    return _oechem.OEGetPhi(*args)

def OEGetPsi(*args) -> "double":
    """
    OEGetPsi(OEHierResidue res) -> double
    OEGetPsi(OEAtomBase atom, unsigned int assume) -> double
    OEGetPsi(OEAtomBase atom) -> double
    """
    return _oechem.OEGetPsi(*args)

def OESwapAIEResidueAtoms(*args) -> "bool":
    """
    OESwapAIEResidueAtoms(OEMolBase mol, OEHierResidue res) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEHierResidue res) -> bool
    OESwapAIEResidueAtoms(OEMolBase mol, OEAtomBase atom, unsigned int assume) -> bool
    OESwapAIEResidueAtoms(OEMolBase mol, OEAtomBase atom) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEAtomBase atom, unsigned int assume) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEAtomBase atom) -> bool
    """
    return _oechem.OESwapAIEResidueAtoms(*args)

def OEIsStandardProteinResidue(*args) -> "bool":
    """
    OEIsStandardProteinResidue(OEAtomBase atom) -> bool
    OEIsStandardProteinResidue(OEHierResidue hres) -> bool
    OEIsStandardProteinResidue(OEResidue res) -> bool
    OEIsStandardProteinResidue(unsigned int resIdx) -> bool
    OEIsStandardProteinResidue(OEHierResidueIter hit) -> bool
    """
    return _oechem.OEIsStandardProteinResidue(*args)

def OEIsStandardNucleicAcidResidue(*args) -> "bool":
    """
    OEIsStandardNucleicAcidResidue(OEAtomBase atom) -> bool
    OEIsStandardNucleicAcidResidue(OEHierResidue hres) -> bool
    OEIsStandardNucleicAcidResidue(OEResidue res) -> bool
    OEIsStandardNucleicAcidResidue(unsigned int resIdx) -> bool
    OEIsStandardNucleicAcidResidue(OEHierResidueIter hit) -> bool
    """
    return _oechem.OEIsStandardNucleicAcidResidue(*args)
class OERamachandranAnalysis(object):
    """Proxy of C++ OEBio::OERamachandranAnalysis 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__(OEBio::OERamachandranAnalysis self, double phi, double psi, unsigned int const ramaType) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEAtomBase atom) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEHierResidue res) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEMolBase mol, OEResidue res) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OERamachandranAnalysis arg2) -> OERamachandranAnalysis
        """
        this = _oechem.new_OERamachandranAnalysis(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERamachandranAnalysis
    __del__ = lambda self: None

    def GetRamaScore(self) -> "double":
        """GetRamaScore(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetRamaScore(self)


    def GetPhi(self) -> "double":
        """GetPhi(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetPhi(self)


    def GetPsi(self) -> "double":
        """GetPsi(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetPsi(self)


    def GetRamaType(self) -> "unsigned int":
        """GetRamaType(OERamachandranAnalysis self) -> unsigned int"""
        return _oechem.OERamachandranAnalysis_GetRamaType(self)


    def GetRamaCategory(self) -> "unsigned int":
        """GetRamaCategory(OERamachandranAnalysis self) -> unsigned int"""
        return _oechem.OERamachandranAnalysis_GetRamaCategory(self)

OERamachandranAnalysis_swigregister = _oechem.OERamachandranAnalysis_swigregister
OERamachandranAnalysis_swigregister(OERamachandranAnalysis)


def OEGetRamachandranTypeName(ramaType: 'unsigned int const') -> "std::string":
    """OEGetRamachandranTypeName(unsigned int const ramaType) -> std::string"""
    return _oechem.OEGetRamachandranTypeName(ramaType)

def OEGetRamachandranCategoryName(ramaCategory: 'unsigned int const') -> "std::string":
    """OEGetRamachandranCategoryName(unsigned int const ramaCategory) -> std::string"""
    return _oechem.OEGetRamachandranCategoryName(ramaCategory)

def OEPerceiveSecondaryStructure(mol: 'OEMolBase', force: 'bool'=False) -> "bool":
    """
    OEPerceiveSecondaryStructure(OEMolBase mol, bool force=False) -> bool
    OEPerceiveSecondaryStructure(OEMolBase mol) -> bool
    """
    return _oechem.OEPerceiveSecondaryStructure(mol, force)

def OEGetSecondaryStructureName(ssValue: 'int') -> "std::string":
    """OEGetSecondaryStructureName(int ssValue) -> std::string"""
    return _oechem.OEGetSecondaryStructureName(ssValue)

def OEGetSecondaryStructureID(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureID(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureID(ssValue)

def OEGetSecondaryStructureStrandID(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureStrandID(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureStrandID(ssValue)

def OEGetSecondaryStructureType(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureType(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureType(ssValue)

def OESecondaryStructurePacked(ssType: 'int', ssIDNumber: 'int', strandID: 'int'=0) -> "int":
    """
    OESecondaryStructurePacked(int ssType, int ssIDNumber, int strandID=0) -> int
    OESecondaryStructurePacked(int ssType, int ssIDNumber) -> int
    """
    return _oechem.OESecondaryStructurePacked(ssType, ssIDNumber, strandID)
class OEHasSecondaryStructure(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasSecondaryStructure 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__(OEBio::OEHasSecondaryStructure self, int ssType) -> OEHasSecondaryStructure
        __init__(OEBio::OEHasSecondaryStructure self) -> OEHasSecondaryStructure
        __init__(OEBio::OEHasSecondaryStructure self, OEHasSecondaryStructure rhs) -> OEHasSecondaryStructure
        """
        this = _oechem.new_OEHasSecondaryStructure(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasSecondaryStructure self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasSecondaryStructure___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasSecondaryStructure_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasSecondaryStructure
    __del__ = lambda self: None
OEHasSecondaryStructure_swigregister = _oechem.OEHasSecondaryStructure_swigregister
OEHasSecondaryStructure_swigregister(OEHasSecondaryStructure)


def OEGetColorSchemeName(colorScheme: 'unsigned int') -> "char const *":
    """OEGetColorSchemeName(unsigned int colorScheme) -> char const *"""
    return _oechem.OEGetColorSchemeName(colorScheme)
class OEMolStyleColorer(object):
    """Proxy of C++ OEChem::OEMolStyleColorer 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__(OEChem::OEMolStyleColorer self) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, OEColor col) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, OEMolStyleColorer other) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, unsigned int colorScheme) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, unsigned int colorScheme, OEColor defaultColor) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, std::string const & propertyName) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, std::string const & propertyName, OEColor defaultColor) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, char const * propertyName) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, char const * propertyName, OEColor defaultColor) -> OEMolStyleColorer
        """
        this = _oechem.new_OEMolStyleColorer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolStyleColorer
    __del__ = lambda self: None

    def GetColorScheme(self) -> "unsigned int":
        """GetColorScheme(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetColorScheme(self)


    def GetPropertyName(self) -> "std::string":
        """GetPropertyName(OEMolStyleColorer self) -> std::string"""
        return _oechem.OEMolStyleColorer_GetPropertyName(self)


    def AddColor(self, *args) -> "bool":
        """
        AddColor(OEMolStyleColorer self, double value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, std::string const & value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, int value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, unsigned int value, OEColor col) -> bool
        """
        return _oechem.OEMolStyleColorer_AddColor(self, *args)


    def ClearColors(self) -> "void":
        """ClearColors(OEMolStyleColorer self)"""
        return _oechem.OEMolStyleColorer_ClearColors(self)


    def GetNumColors(self) -> "unsigned int":
        """GetNumColors(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetNumColors(self)


    def GetValues(self, *args) -> "bool":
        """
        GetValues(OEMolStyleColorer self, OEDoubleVector vals) -> bool
        GetValues(OEMolStyleColorer self, OEStringVector vals) -> bool
        GetValues(OEMolStyleColorer self, OEIntVector vals) -> bool
        """
        return _oechem.OEMolStyleColorer_GetValues(self, *args)


    def GetColor(self, *args) -> "OESystem::OEColor":
        """
        GetColor(OEMolStyleColorer self, double val) -> OEColor
        GetColor(OEMolStyleColorer self, double val, double scaleMin, double scaleMax) -> OEColor
        GetColor(OEMolStyleColorer self, std::string const & val) -> OEColor
        GetColor(OEMolStyleColorer self, int val) -> OEColor
        GetColor(OEMolStyleColorer self, unsigned int val) -> OEColor
        GetColor(OEMolStyleColorer self) -> OEColor
        """
        return _oechem.OEMolStyleColorer_GetColor(self, *args)


    def GetDefaultColor(self) -> "OESystem::OEColor":
        """GetDefaultColor(OEMolStyleColorer self) -> OEColor"""
        return _oechem.OEMolStyleColorer_GetDefaultColor(self)


    def SetDefaultColor(self, col: 'OEColor') -> "void":
        """SetDefaultColor(OEMolStyleColorer self, OEColor col)"""
        return _oechem.OEMolStyleColorer_SetDefaultColor(self, col)


    def GetDataTypes(self) -> "unsigned int":
        """GetDataTypes(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetDataTypes(self)


    def __lt__(self, rhs: 'OEMolStyleColorer') -> "bool":
        """__lt__(OEMolStyleColorer self, OEMolStyleColorer rhs) -> bool"""
        return _oechem.OEMolStyleColorer___lt__(self, rhs)


    def __eq__(self, rhs: 'OEMolStyleColorer') -> "bool":
        """__eq__(OEMolStyleColorer self, OEMolStyleColorer rhs) -> bool"""
        return _oechem.OEMolStyleColorer___eq__(self, rhs)


    def GetImpl(self, *args) -> "OEChem::OEMolStyleColorerImpl *":
        """
        GetImpl(OEMolStyleColorer self) -> OEChem::OEMolStyleColorerImpl const
        GetImpl(OEMolStyleColorer self) -> OEChem::OEMolStyleColorerImpl *
        """
        return _oechem.OEMolStyleColorer_GetImpl(self, *args)

OEMolStyleColorer_swigregister = _oechem.OEMolStyleColorer_swigregister
OEMolStyleColorer_swigregister(OEMolStyleColorer)

class OE3DMolStyle(object):
    """Proxy of C++ OEChem::OE3DMolStyle 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__(OEChem::OE3DMolStyle self) -> OE3DMolStyle
        __init__(OEChem::OE3DMolStyle self, OE3DMolStyle other) -> OE3DMolStyle
        """
        this = _oechem.new_OE3DMolStyle(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE3DMolStyle
    __del__ = lambda self: None

    def __eq__(self, rhs: 'OE3DMolStyle') -> "bool":
        """__eq__(OE3DMolStyle self, OE3DMolStyle rhs) -> bool"""
        return _oechem.OE3DMolStyle___eq__(self, rhs)


    def __lt__(self, rhs: 'OE3DMolStyle') -> "bool":
        """__lt__(OE3DMolStyle self, OE3DMolStyle rhs) -> bool"""
        return _oechem.OE3DMolStyle___lt__(self, rhs)


    def SetAtomStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetAtomStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomStyle(self, displayStyle)


    def GetAtomStyle(self) -> "unsigned int":
        """GetAtomStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomStyle(self)


    def HasAtomStyle(self) -> "bool":
        """HasAtomStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomStyle(self)


    def ClearAtomStyle(self) -> "void":
        """ClearAtomStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomStyle(self)


    def SetAtomColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetAtomColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomColorer(self, colorer)


    def GetAtomColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetAtomColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetAtomColorer(self)


    def HasAtomColorer(self) -> "bool":
        """HasAtomColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomColorer(self)


    def ClearAtomColorer(self) -> "void":
        """ClearAtomColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomColorer(self)


    def SetHydrogenVisibility(self, mode: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetHydrogenVisibility(OE3DMolStyle self, unsigned int mode) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetHydrogenVisibility(self, mode)


    def GetHydrogenVisibility(self) -> "unsigned int":
        """GetHydrogenVisibility(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetHydrogenVisibility(self)


    def HasHydrogenVisibility(self) -> "bool":
        """HasHydrogenVisibility(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasHydrogenVisibility(self)


    def ClearHydrogenVisibility(self) -> "void":
        """ClearHydrogenVisibility(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearHydrogenVisibility(self)


    def SetInteractionStyle(self, mode: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetInteractionStyle(OE3DMolStyle self, unsigned int mode) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetInteractionStyle(self, mode)


    def GetInteractionStyle(self) -> "unsigned int":
        """GetInteractionStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetInteractionStyle(self)


    def HasInteractionStyle(self) -> "bool":
        """HasInteractionStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasInteractionStyle(self)


    def ClearInteractionStyle(self) -> "void":
        """ClearInteractionStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearInteractionStyle(self)


    def SetProteinStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetProteinStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetProteinStyle(self, displayStyle)


    def GetProteinStyle(self) -> "unsigned int":
        """GetProteinStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetProteinStyle(self)


    def HasProteinStyle(self) -> "bool":
        """HasProteinStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasProteinStyle(self)


    def ClearProteinStyle(self) -> "void":
        """ClearProteinStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearProteinStyle(self)


    def SetProteinColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetProteinColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetProteinColorer(self, colorer)


    def GetProteinColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetProteinColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetProteinColorer(self)


    def HasProteinColorer(self) -> "bool":
        """HasProteinColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasProteinColorer(self)


    def ClearProteinColorer(self) -> "void":
        """ClearProteinColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearProteinColorer(self)


    def SetSurfaceType(self, surfaceType: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceType(OE3DMolStyle self, unsigned int surfaceType) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceType(self, surfaceType)


    def GetSurfaceType(self) -> "unsigned int":
        """GetSurfaceType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceType(self)


    def HasSurfaceType(self) -> "bool":
        """HasSurfaceType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceType(self)


    def ClearSurfaceType(self) -> "void":
        """ClearSurfaceType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceType(self)


    def SetSurfaceStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceStyle(self, displayStyle)


    def GetSurfaceStyle(self) -> "unsigned int":
        """GetSurfaceStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceStyle(self)


    def HasSurfaceStyle(self) -> "bool":
        """HasSurfaceStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceStyle(self)


    def ClearSurfaceStyle(self) -> "void":
        """ClearSurfaceStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceStyle(self)


    def SetSurfaceColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceColorer(self, colorer)


    def GetSurfaceColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetSurfaceColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetSurfaceColorer(self)


    def HasSurfaceColorer(self) -> "bool":
        """HasSurfaceColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceColorer(self)


    def ClearSurfaceColorer(self) -> "void":
        """ClearSurfaceColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceColorer(self)


    def SetSurfaceAlpha(self, alpha: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceAlpha(OE3DMolStyle self, unsigned int alpha) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceAlpha(self, alpha)


    def GetSurfaceAlpha(self) -> "unsigned int":
        """GetSurfaceAlpha(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceAlpha(self)


    def HasSurfaceAlpha(self) -> "bool":
        """HasSurfaceAlpha(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceAlpha(self)


    def ClearSurfaceAlpha(self) -> "void":
        """ClearSurfaceAlpha(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceAlpha(self)


    def SetGridType(self, gridType: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetGridType(OE3DMolStyle self, unsigned int gridType) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetGridType(self, gridType)


    def GetGridType(self) -> "unsigned int":
        """GetGridType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetGridType(self)


    def HasGridType(self) -> "bool":
        """HasGridType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasGridType(self)


    def ClearGridType(self) -> "void":
        """ClearGridType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearGridType(self)


    def SetContourStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetContourStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetContourStyle(self, displayStyle)


    def GetContourStyle(self) -> "unsigned int":
        """GetContourStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetContourStyle(self)


    def HasContourStyle(self) -> "bool":
        """HasContourStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasContourStyle(self)


    def ClearContourStyle(self) -> "void":
        """ClearContourStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearContourStyle(self)


    def SetGridContourColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetGridContourColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetGridContourColorer(self, colorer)


    def GetGridContourColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetGridContourColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetGridContourColorer(self)


    def HasGridContourColorer(self) -> "bool":
        """HasGridContourColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasGridContourColorer(self)


    def ClearGridContourColorer(self) -> "void":
        """ClearGridContourColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearGridContourColorer(self)


    def SetAtomLabelType(self, labelData: 'unsigned int', precision: 'unsigned int'=0) -> "OEChem::OE3DMolStyle &":
        """
        SetAtomLabelType(OE3DMolStyle self, unsigned int labelData, unsigned int precision=0) -> OE3DMolStyle
        SetAtomLabelType(OE3DMolStyle self, unsigned int labelData) -> OE3DMolStyle
        """
        return _oechem.OE3DMolStyle_SetAtomLabelType(self, labelData, precision)


    def GetAtomLabelType(self) -> "unsigned int":
        """GetAtomLabelType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomLabelType(self)


    def HasAtomLabelType(self) -> "bool":
        """HasAtomLabelType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelType(self)


    def ClearAtomLabelType(self) -> "void":
        """ClearAtomLabelType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelType(self)


    def GetAtomLabelPrecision(self) -> "unsigned int":
        """GetAtomLabelPrecision(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomLabelPrecision(self)


    def SetAtomLabelText(self, label: 'std::string const &') -> "OEChem::OE3DMolStyle &":
        """SetAtomLabelText(OE3DMolStyle self, std::string const & label) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomLabelText(self, label)


    def GetAtomLabelText(self) -> "std::string":
        """GetAtomLabelText(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetAtomLabelText(self)


    def HasAtomLabelText(self) -> "bool":
        """HasAtomLabelText(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelText(self)


    def ClearAtomLabelText(self) -> "void":
        """ClearAtomLabelText(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelText(self)


    def SetAtomLabelDataTag(self, tag: 'std::string const &', precision: 'unsigned int'=0) -> "OEChem::OE3DMolStyle &":
        """
        SetAtomLabelDataTag(OE3DMolStyle self, std::string const & tag, unsigned int precision=0) -> OE3DMolStyle
        SetAtomLabelDataTag(OE3DMolStyle self, std::string const & tag) -> OE3DMolStyle
        """
        return _oechem.OE3DMolStyle_SetAtomLabelDataTag(self, tag, precision)


    def GetAtomLabelDataTag(self) -> "std::string":
        """GetAtomLabelDataTag(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetAtomLabelDataTag(self)


    def HasAtomLabelDataTag(self) -> "bool":
        """HasAtomLabelDataTag(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelDataTag(self)


    def ClearAtomLabelDataTag(self) -> "void":
        """ClearAtomLabelDataTag(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelDataTag(self)


    def SetAtomLabelColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetAtomLabelColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomLabelColorer(self, colorer)


    def GetAtomLabelColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetAtomLabelColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetAtomLabelColorer(self)


    def HasAtomLabelColorer(self) -> "bool":
        """HasAtomLabelColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelColorer(self)


    def ClearAtomLabelColorer(self) -> "void":
        """ClearAtomLabelColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelColorer(self)


    def GetString(self) -> "std::string":
        """GetString(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetString(self)


    def FromString(self, str: 'std::string const &') -> "bool":
        """FromString(OE3DMolStyle self, std::string const & str) -> bool"""
        return _oechem.OE3DMolStyle_FromString(self, str)


    def IsValid(self) -> "bool":
        """IsValid(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_IsValid(self)


    def GetImpl(self, *args) -> "OEChem::OE3DMolStyleImpl *":
        """
        GetImpl(OE3DMolStyle self) -> OEChem::OE3DMolStyleImpl const
        GetImpl(OE3DMolStyle self) -> OEChem::OE3DMolStyleImpl *
        """
        return _oechem.OE3DMolStyle_GetImpl(self, *args)

OE3DMolStyle_swigregister = _oechem.OE3DMolStyle_swigregister
OE3DMolStyle_swigregister(OE3DMolStyle)


def OEHasStyle(mol: 'OEMolBase') -> "bool":
    """OEHasStyle(OEMolBase mol) -> bool"""
    return _oechem.OEHasStyle(mol)

def OEGetStyle(*args) -> "OEChem::OE3DMolStyle":
    """
    OEGetStyle(OEMolBase mol) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom, OEConfBase c) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom, OE3DMolStyle dflt) -> OE3DMolStyle
    """
    return _oechem.OEGetStyle(*args)

def OESetStyle(*args) -> "void":
    """
    OESetStyle(OEMolBase mol, OE3DMolStyle style)
    OESetStyle(OEAtomBase atom, OE3DMolStyle style)
    OESetStyle(OEAtomIter atoms, OE3DMolStyle style)
    """
    return _oechem.OESetStyle(*args)

def OEClearStyle(*args) -> "void":
    """
    OEClearStyle(OEContainer cont)
    OEClearStyle(OEMolBase mol)
    OEClearStyle(OEAtomBase atom)
    OEClearStyle(OEAtomIter atoms)
    """
    return _oechem.OEClearStyle(*args)

def OESweepStyles(mol: 'OEMolBase') -> "void":
    """OESweepStyles(OEMolBase mol)"""
    return _oechem.OESweepStyles(mol)

def OEAddMolStyles(lhs: 'OEMolBase', rhs: 'OEMolBase', aa: 'OEChem::OEAtomBase **', arg4: 'OEChem::OEBondBase **') -> "void":
    """OEAddMolStyles(OEMolBase lhs, OEMolBase rhs, OEChem::OEAtomBase ** aa, OEChem::OEBondBase ** arg4)"""
    return _oechem.OEAddMolStyles(lhs, rhs, aa, arg4)

def OEGetStyleChange(initialStyle: 'OE3DMolStyle', finalStyle: 'OE3DMolStyle') -> "OEChem::OE3DMolStyle":
    """OEGetStyleChange(OE3DMolStyle initialStyle, OE3DMolStyle finalStyle) -> OE3DMolStyle"""
    return _oechem.OEGetStyleChange(initialStyle, finalStyle)

def OEApplyStyleChange(initialStyle: 'OE3DMolStyle', deltaStyle: 'OE3DMolStyle') -> "OEChem::OE3DMolStyle":
    """OEApplyStyleChange(OE3DMolStyle initialStyle, OE3DMolStyle deltaStyle) -> OE3DMolStyle"""
    return _oechem.OEApplyStyleChange(initialStyle, deltaStyle)

def OEGetAtomColor(atom: 'OEAtomBase') -> "OESystem::OEColor":
    """OEGetAtomColor(OEAtomBase atom) -> OEColor"""
    return _oechem.OEGetAtomColor(atom)

def OEGetAtomLabelColor(atom: 'OEAtomBase') -> "OESystem::OEColor":
    """OEGetAtomLabelColor(OEAtomBase atom) -> OEColor"""
    return _oechem.OEGetAtomLabelColor(atom)

def OEGetAtomLabelText(atom: 'OEAtomBase') -> "std::string":
    """OEGetAtomLabelText(OEAtomBase atom) -> std::string"""
    return _oechem.OEGetAtomLabelText(atom)

def OESerializeMolStyles(mol: 'OEMolBase') -> "std::string":
    """OESerializeMolStyles(OEMolBase mol) -> std::string"""
    return _oechem.OESerializeMolStyles(mol)

def OEDeserializeMolStyles(mol: 'OEMolBase', str: 'std::string const &', clear: 'bool'=False) -> "bool":
    """
    OEDeserializeMolStyles(OEMolBase mol, std::string const & str, bool clear=False) -> bool
    OEDeserializeMolStyles(OEMolBase mol, std::string const & str) -> bool
    """
    return _oechem.OEDeserializeMolStyles(mol, str, clear)

def OEGetStyleIndex(*args) -> "unsigned int":
    """
    OEGetStyleIndex(OEAtomBase atom) -> unsigned int
    OEGetStyleIndex(OEConfBase conf) -> unsigned int
    """
    return _oechem.OEGetStyleIndex(*args)

def OESetStyleIndex(*args) -> "void":
    """
    OESetStyleIndex(OEAtomBase atom, unsigned int idx)
    OESetStyleIndex(OEConfBase conf, unsigned int idx)
    """
    return _oechem.OESetStyleIndex(*args)

def OEHasBondedResidues(*args) -> "bool":
    """
    OEHasBondedResidues(OEMolBase mol, unsigned int assume) -> bool
    OEHasBondedResidues(OEMolBase mol) -> bool
    """
    return _oechem.OEHasBondedResidues(*args)
class OERotamer(object):
    """Proxy of C++ OEBio::OERotamer class."""

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

    def GetResidueIndex(self) -> "unsigned int":
        """GetResidueIndex(OERotamer self) -> unsigned int"""
        return _oechem.OERotamer_GetResidueIndex(self)


    def GetProbability(self) -> "float":
        """GetProbability(OERotamer self) -> float"""
        return _oechem.OERotamer_GetProbability(self)


    def GetChi1(self) -> "float":
        """GetChi1(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi1(self)


    def GetChi2(self) -> "float":
        """GetChi2(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi2(self)


    def GetChi3(self) -> "float":
        """GetChi3(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi3(self)


    def GetChi4(self) -> "float":
        """GetChi4(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi4(self)

    ridx = _swig_property(_oechem.OERotamer_ridx_get, _oechem.OERotamer_ridx_set)
    prob = _swig_property(_oechem.OERotamer_prob_get, _oechem.OERotamer_prob_set)
    chi1 = _swig_property(_oechem.OERotamer_chi1_get, _oechem.OERotamer_chi1_set)
    chi2 = _swig_property(_oechem.OERotamer_chi2_get, _oechem.OERotamer_chi2_set)
    chi3 = _swig_property(_oechem.OERotamer_chi3_get, _oechem.OERotamer_chi3_set)
    chi4 = _swig_property(_oechem.OERotamer_chi4_get, _oechem.OERotamer_chi4_set)

    def __init__(self):
        """__init__(OEBio::OERotamer self) -> OERotamer"""
        this = _oechem.new_OERotamer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERotamer
    __del__ = lambda self: None
OERotamer_swigregister = _oechem.OERotamer_swigregister
OERotamer_swigregister(OERotamer)


def OEGetRotamers(*args) -> "OESystem::OEIterBase< OEBio::OERotamer > *":
    """
    OEGetRotamers(unsigned int residueIndex, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(unsigned int residueIndex) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEResidue residue, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEResidue residue) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidue residue, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidue residue) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidueIter hit, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidueIter hit) -> OESystem::OEIterBase< OEBio::OERotamer > *
    """
    return _oechem.OEGetRotamers(*args)

def OESetRotamer(*args) -> "bool":
    """
    OESetRotamer(OEHierResidue residue, OERotamer rotamer) -> bool
    OESetRotamer(OEAtomBase atom, OERotamer rotamer) -> bool
    """
    return _oechem.OESetRotamer(*args)

def OEGetResidueAtoms(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetResidueAtoms(OEAtomBase atom, unsigned int assume) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEAtomBase atom) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEMolBase mol, OEResidue residue, unsigned int assume) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEMolBase mol, OEResidue residue) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetResidueAtoms(*args)

def OEGetResidueAtom(*args) -> "OEChem::OEAtomBase *":
    """
    OEGetResidueAtom(OEAtomBase atom, unsigned int const pdbAtomIdx, unsigned int assume) -> OEAtomBase
    OEGetResidueAtom(OEAtomBase atom, unsigned int const pdbAtomIdx) -> OEAtomBase
    OEGetResidueAtom(OEMolBase mol, OEResidue residue, unsigned int const pdbAtomIdx, unsigned int assume) -> OEAtomBase
    OEGetResidueAtom(OEMolBase mol, OEResidue residue, unsigned int const pdbAtomIdx) -> OEAtomBase
    """
    return _oechem.OEGetResidueAtom(*args)

def OEGetLazyIterCls(baseclass):
    class OETestLazyIterator(baseclass):
        """
        This class wraps around an OpenEye iterator to force an object copy
        during iteration.
        """
        def __init__(self, iter=None):
            if iter is not None:
                baseclass.__init__(self, iter)
            else:
                baseclass.__init__(self)

        def __iter__(self):
#the iterator is lazy so yield a copy instead
            for obj in baseclass.__iter__(self):
                copy = obj.__class__(obj)
                yield copy

        def next(self):
            try:
                obj = self.Target()
            except IndexError:
                raise StopIteration("Attempting to get past end of OELazyIterator")
            self.Next()
            return obj

        def prev(self):
            try:
                obj = self.Target()
            except IndexError:
                raise StopIteration("Attempting to get past beginning of OELazyIterator")
            self.Prev()
            return obj

        def Copy(self):
            return self.__class__(self)

        def Target(self):
            obj = baseclass.Target(self)
            return obj.__class__(obj)

    return OETestLazyIterator

class OEAltLocationState(object):
    """Proxy of C++ OEBio::OEAltLocationState 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__(OEBio::OEAltLocationState self) -> OEAltLocationState
        __init__(OEBio::OEAltLocationState self, std::string const & hex) -> OEAltLocationState
        __init__(OEBio::OEAltLocationState self, OEAltLocationState state) -> OEAltLocationState
        """
        this = _oechem.new_OEAltLocationState(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationState
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEAltLocationState___nonzero__(self)



    def GetImpl(self, *args) -> "OEChem::OEAltLocationStateImpl *":
        """
        GetImpl(OEAltLocationState self) -> OEChem::OEAltLocationStateImpl const
        GetImpl(OEAltLocationState self) -> OEChem::OEAltLocationStateImpl *
        """
        return _oechem.OEAltLocationState_GetImpl(self, *args)


    def ToHexString(self) -> "std::string":
        """ToHexString(OEAltLocationState self) -> std::string"""
        return _oechem.OEAltLocationState_ToHexString(self)

OEAltLocationState_swigregister = _oechem.OEAltLocationState_swigregister
OEAltLocationState_swigregister(OEAltLocationState)

class OEAltLocation(object):
    """Proxy of C++ OEBio::OEAltLocation 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__(OEBio::OEAltLocation self) -> OEAltLocation
        __init__(OEBio::OEAltLocation self, int grpID, int locID, unsigned int numLocs) -> OEAltLocation
        __init__(OEBio::OEAltLocation self, OEAltLocation loc) -> OEAltLocation
        """
        this = _oechem.new_OEAltLocation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocation
    __del__ = lambda self: None

    def GetGroupID(self) -> "int":
        """GetGroupID(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation_GetGroupID(self)


    def GetLocationCount(self) -> "unsigned int":
        """GetLocationCount(OEAltLocation self) -> unsigned int"""
        return _oechem.OEAltLocation_GetLocationCount(self)


    def GetLocationID(self) -> "int":
        """GetLocationID(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation_GetLocationID(self)


    def IsValid(self):
      return _oechem.OEAltLocation___nonzero__(self)



    def SetLocationID(self, newLoc: 'int') -> "OEBio::OEAltLocation &":
        """SetLocationID(OEAltLocation self, int newLoc) -> OEAltLocation"""
        return _oechem.OEAltLocation_SetLocationID(self, newLoc)


    def __lt__(self, rhs: 'OEAltLocation') -> "int":
        """__lt__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___lt__(self, rhs)


    def __le__(self, rhs: 'OEAltLocation') -> "int":
        """__le__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___le__(self, rhs)


    def __gt__(self, rhs: 'OEAltLocation') -> "int":
        """__gt__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___gt__(self, rhs)


    def __ge__(self, rhs: 'OEAltLocation') -> "int":
        """__ge__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___ge__(self, rhs)


    def __eq__(self, rhs: 'OEAltLocation') -> "bool":
        """__eq__(OEAltLocation self, OEAltLocation rhs) -> bool"""
        return _oechem.OEAltLocation___eq__(self, rhs)


    def __ne__(self, rhs: 'OEAltLocation') -> "bool":
        """__ne__(OEAltLocation self, OEAltLocation rhs) -> bool"""
        return _oechem.OEAltLocation___ne__(self, rhs)


    def __hash__(self) -> "int":
        """__hash__(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation___hash__(self)

OEAltLocation_swigregister = _oechem.OEAltLocation_swigregister
OEAltLocation_swigregister(OEAltLocation)

class OEAltGroup(object):
    """Proxy of C++ OEBio::OEAltGroup 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__(OEBio::OEAltGroup self) -> OEAltGroup
        __init__(OEBio::OEAltGroup self, unsigned int const * counts) -> OEAltGroup
        __init__(OEBio::OEAltGroup self, OEAltGroup grp) -> OEAltGroup
        """
        this = _oechem.new_OEAltGroup(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltGroup
    __del__ = lambda self: None

    def GetGroupCount(self) -> "unsigned int":
        """GetGroupCount(OEAltGroup self) -> unsigned int"""
        return _oechem.OEAltGroup_GetGroupCount(self)


    def GetGroupID(self) -> "int":
        """GetGroupID(OEAltGroup self) -> int"""
        return _oechem.OEAltGroup_GetGroupID(self)


    def GetLocationCount(self) -> "unsigned int":
        """GetLocationCount(OEAltGroup self) -> unsigned int"""
        return _oechem.OEAltGroup_GetLocationCount(self)


    def GetLocations(*args):
        return OEGetLazyIterCls(OEAltLocationIter)(_oechem.OEAltGroup_GetLocations(*args))



    def IsValid(self):
      return _oechem.OEAltGroup___nonzero__(self)



    def SetGroupID(self, newGrp: 'int') -> "OEBio::OEAltGroup &":
        """SetGroupID(OEAltGroup self, int newGrp) -> OEAltGroup"""
        return _oechem.OEAltGroup_SetGroupID(self, newGrp)


    def __lt__(self, rhs: 'OEAltGroup') -> "int":
        """__lt__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___lt__(self, rhs)


    def __le__(self, rhs: 'OEAltGroup') -> "int":
        """__le__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___le__(self, rhs)


    def __gt__(self, rhs: 'OEAltGroup') -> "int":
        """__gt__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___gt__(self, rhs)


    def __ge__(self, rhs: 'OEAltGroup') -> "int":
        """__ge__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___ge__(self, rhs)


    def __eq__(self, rhs: 'OEAltGroup') -> "bool":
        """__eq__(OEAltGroup self, OEAltGroup rhs) -> bool"""
        return _oechem.OEAltGroup___eq__(self, rhs)


    def __ne__(self, rhs: 'OEAltGroup') -> "bool":
        """__ne__(OEAltGroup self, OEAltGroup rhs) -> bool"""
        return _oechem.OEAltGroup___ne__(self, rhs)


    def __hash__(self) -> "int":
        """__hash__(OEAltGroup self) -> int"""
        return _oechem.OEAltGroup___hash__(self)

OEAltGroup_swigregister = _oechem.OEAltGroup_swigregister
OEAltGroup_swigregister(OEAltGroup)

class OEAltLocationFactory(object):
    """Proxy of C++ OEBio::OEAltLocationFactory 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__(OEBio::OEAltLocationFactory self, OEMolBase src, unsigned int options) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEMolBase src) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEChem::OEAltLocationFactoryImpl * impl) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEAltLocationFactory fact) -> OEAltLocationFactory
        """
        this = _oechem.new_OEAltLocationFactory(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationFactory
    __del__ = lambda self: None

    def GetGroupCount(self) -> "unsigned int":
        """GetGroupCount(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetGroupCount(self)


    def GetGroups(*args):
        return OEGetLazyIterCls(OEAltGroupIter)(_oechem.OEAltLocationFactory_GetGroups(*args))



    def GetGroup(self, *args) -> "OEBio::OEAltGroup":
        """
        GetGroup(OEAltLocationFactory self, OEAtomBase selAtom) -> OEAltGroup
        GetGroup(OEAltLocationFactory self, OEAltLocation loc) -> OEAltGroup
        """
        return _oechem.OEAltLocationFactory_GetGroup(self, *args)


    def GetLocation(self, selAtom: 'OEAtomBase', confCode: 'char', caseSensitive: 'bool'=True) -> "OEBio::OEAltLocation":
        """
        GetLocation(OEAltLocationFactory self, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> OEAltLocation
        GetLocation(OEAltLocationFactory self, OEAtomBase selAtom, char confCode) -> OEAltLocation
        """
        return _oechem.OEAltLocationFactory_GetLocation(self, selAtom, confCode, caseSensitive)


    def GetLocationCodes(self, *args) -> "std::string":
        """
        GetLocationCodes(OEAltLocationFactory self, OEAltGroup grp) -> std::string
        GetLocationCodes(OEAltLocationFactory self, OEAltLocation loc) -> std::string
        """
        return _oechem.OEAltLocationFactory_GetLocationCodes(self, *args)


    def GetAtomMapSize(self) -> "unsigned int":
        """GetAtomMapSize(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetAtomMapSize(self)


    def GetBondMapSize(self) -> "unsigned int":
        """GetBondMapSize(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetBondMapSize(self)


    def MakePrimaryAltMol(self, *args) -> "void":
        """
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst)
        """
        return _oechem.OEAltLocationFactory_MakePrimaryAltMol(self, *args)


    def MakeCurrentAltMol(self, *args) -> "void":
        """
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst)
        """
        return _oechem.OEAltLocationFactory_MakeCurrentAltMol(self, *args)


    def MakeAltMol(self, *args) -> "bool":
        """
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state) -> bool
        """
        return _oechem.OEAltLocationFactory_MakeAltMol(self, *args)


    def SetPrimaryAlt(self) -> "void":
        """SetPrimaryAlt(OEAltLocationFactory self)"""
        return _oechem.OEAltLocationFactory_SetPrimaryAlt(self)


    def SetAlt(self, *args) -> "bool":
        """
        SetAlt(OEAltLocationFactory self, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> bool
        SetAlt(OEAltLocationFactory self, OEAtomBase selAtom, char confCode) -> bool
        SetAlt(OEAltLocationFactory self, OEAltLocation loc, bool multiLoc=False) -> bool
        SetAlt(OEAltLocationFactory self, OEAltLocation loc) -> bool
        """
        return _oechem.OEAltLocationFactory_SetAlt(self, *args)


    def SetState(self, state: 'OEAltLocationState') -> "bool":
        """SetState(OEAltLocationFactory self, OEAltLocationState state) -> bool"""
        return _oechem.OEAltLocationFactory_SetState(self, state)


    def GetState(self, *args) -> "void":
        """
        GetState(OEAltLocationFactory self) -> OEAltLocationState
        GetState(OEAltLocationFactory self, OEAltLocationState state)
        """
        return _oechem.OEAltLocationFactory_GetState(self, *args)


    def GetCurrentLocations(self, *args) -> "OESystem::OEIterBase< OEBio::OEAltLocation const > *":
        """
        GetCurrentLocations(OEAltLocationFactory self) -> OESystem::OEIterBase< OEBio::OEAltLocation const >
        GetCurrentLocations(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEBio::OEAltLocation const >
        GetCurrentLocations(OEAltLocationFactory self, int grpNum) -> OESystem::OEIterBase< OEBio::OEAltLocation const > *
        """
        return _oechem.OEAltLocationFactory_GetCurrentLocations(self, *args)


    def GetCurrentAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetCurrentAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetCurrentAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetCurrentAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetCurrentAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAltLocationFactory_GetCurrentAtoms(self, *args)


    def GetAltAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAltAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAltLocationFactory_GetAltAtoms(self, *args)


    def GetSourceMol(self) -> "OEChem::OEMolBase const &":
        """GetSourceMol(OEAltLocationFactory self) -> OEMolBase"""
        return _oechem.OEAltLocationFactory_GetSourceMol(self)


    def GetImpl(self, *args) -> "OEChem::OEAltLocationFactoryImpl *":
        """
        GetImpl(OEAltLocationFactory self) -> OEChem::OEAltLocationFactoryImpl const
        GetImpl(OEAltLocationFactory self) -> OEChem::OEAltLocationFactoryImpl *
        """
        return _oechem.OEAltLocationFactory_GetImpl(self, *args)

OEAltLocationFactory_swigregister = _oechem.OEAltLocationFactory_swigregister
OEAltLocationFactory_swigregister(OEAltLocationFactory)


def OEIsTypicalPrimaryLocationCode(confCode: 'char') -> "bool":
    """OEIsTypicalPrimaryLocationCode(char confCode) -> bool"""
    return _oechem.OEIsTypicalPrimaryLocationCode(confCode)
class OEHasAlternateLocation(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasAlternateLocation 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__(OEBio::OEHasAlternateLocation self, char confCode, bool acceptBlanks=False, bool caseSensitive=True) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, char confCode, bool acceptBlanks=False) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, char confCode) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, OEHasAlternateLocation rhs) -> OEHasAlternateLocation
        """
        this = _oechem.new_OEHasAlternateLocation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAlternateLocation self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAlternateLocation___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasAlternateLocation_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasAlternateLocation
    __del__ = lambda self: None
OEHasAlternateLocation_swigregister = _oechem.OEHasAlternateLocation_swigregister
OEHasAlternateLocation_swigregister(OEHasAlternateLocation)


def OEGetAtomMatchResidueIDs(mol: 'OEMolBase') -> "PyObject *":
    """OEGetAtomMatchResidueIDs(OEMolBase mol) -> PyObject *"""
    return _oechem.OEGetAtomMatchResidueIDs(mol)
class OEHasPDBAtomIndex(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasPDBAtomIndex 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, pdbatomidx: 'unsigned int'):
        """__init__(OEBio::OEHasPDBAtomIndex self, unsigned int pdbatomidx) -> OEHasPDBAtomIndex"""
        this = _oechem.new_OEHasPDBAtomIndex(pdbatomidx)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasPDBAtomIndex self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasPDBAtomIndex___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEHasPDBAtomIndex_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEHasPDBAtomIndex
    __del__ = lambda self: None
OEHasPDBAtomIndex_swigregister = _oechem.OEHasPDBAtomIndex_swigregister
OEHasPDBAtomIndex_swigregister(OEHasPDBAtomIndex)

class OEIsAlphaCarbon(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsAlphaCarbon class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAlphaCarbon self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAlphaCarbon___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsAlphaCarbon_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsAlphaCarbon self) -> OEIsAlphaCarbon"""
        this = _oechem.new_OEIsAlphaCarbon()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAlphaCarbon
    __del__ = lambda self: None
OEIsAlphaCarbon_swigregister = _oechem.OEIsAlphaCarbon_swigregister
OEIsAlphaCarbon_swigregister(OEIsAlphaCarbon)

class OEIsHetAtom(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsHetAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHetAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHetAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsHetAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsHetAtom self) -> OEIsHetAtom"""
        this = _oechem.new_OEIsHetAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHetAtom
    __del__ = lambda self: None
OEIsHetAtom_swigregister = _oechem.OEIsHetAtom_swigregister
OEIsHetAtom_swigregister(OEIsHetAtom)

class OEIsBackboneAtom(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsBackboneAtom 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, o: 'bool'=True, includeTerminalOxygen: 'bool'=False):
        """
        __init__(OEBio::OEIsBackboneAtom self, bool o=True, bool includeTerminalOxygen=False) -> OEIsBackboneAtom
        __init__(OEBio::OEIsBackboneAtom self, bool o=True) -> OEIsBackboneAtom
        __init__(OEBio::OEIsBackboneAtom self) -> OEIsBackboneAtom
        """
        this = _oechem.new_OEIsBackboneAtom(o, includeTerminalOxygen)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsBackboneAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsBackboneAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsBackboneAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsBackboneAtom
    __del__ = lambda self: None
OEIsBackboneAtom_swigregister = _oechem.OEIsBackboneAtom_swigregister
OEIsBackboneAtom_swigregister(OEIsBackboneAtom)

class OEIsNTerminalAtom(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNTerminalAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNTerminalAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNTerminalAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNTerminalAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsNTerminalAtom self) -> OEIsNTerminalAtom"""
        this = _oechem.new_OEIsNTerminalAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNTerminalAtom
    __del__ = lambda self: None
OEIsNTerminalAtom_swigregister = _oechem.OEIsNTerminalAtom_swigregister
OEIsNTerminalAtom_swigregister(OEIsNTerminalAtom)

class OEIsCTerminalAtom(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsCTerminalAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsCTerminalAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsCTerminalAtom___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsCTerminalAtom_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsCTerminalAtom self) -> OEIsCTerminalAtom"""
        this = _oechem.new_OEIsCTerminalAtom()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCTerminalAtom
    __del__ = lambda self: None
OEIsCTerminalAtom_swigregister = _oechem.OEIsCTerminalAtom_swigregister
OEIsCTerminalAtom_swigregister(OEIsCTerminalAtom)

class OEIsWater(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsWater 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, checkHydrogens: 'bool'=False, allowIons: 'bool'=False):
        """
        __init__(OEBio::OEIsWater self, bool checkHydrogens=False, bool allowIons=False) -> OEIsWater
        __init__(OEBio::OEIsWater self, bool checkHydrogens=False) -> OEIsWater
        __init__(OEBio::OEIsWater self) -> OEIsWater
        """
        this = _oechem.new_OEIsWater(checkHydrogens, allowIons)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsWater self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsWater___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsWater_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEIsWater
    __del__ = lambda self: None
OEIsWater_swigregister = _oechem.OEIsWater_swigregister
OEIsWater_swigregister(OEIsWater)

class OEIsNucleicAcidBase(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidBase class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidBase___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNucleicAcidBase_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidBase self) -> OEIsNucleicAcidBase"""
        this = _oechem.new_OEIsNucleicAcidBase()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidBase
    __del__ = lambda self: None
OEIsNucleicAcidBase_swigregister = _oechem.OEIsNucleicAcidBase_swigregister
OEIsNucleicAcidBase_swigregister(OEIsNucleicAcidBase)

class OEIsNucleicAcidSugar(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidSugar class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidSugar self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidSugar___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNucleicAcidSugar_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidSugar self) -> OEIsNucleicAcidSugar"""
        this = _oechem.new_OEIsNucleicAcidSugar()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidSugar
    __del__ = lambda self: None
OEIsNucleicAcidSugar_swigregister = _oechem.OEIsNucleicAcidSugar_swigregister
OEIsNucleicAcidSugar_swigregister(OEIsNucleicAcidSugar)

class OEIsNucleicAcidPhosphate(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidPhosphate class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidPhosphate self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidPhosphate___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsNucleicAcidPhosphate_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidPhosphate self) -> OEIsNucleicAcidPhosphate"""
        this = _oechem.new_OEIsNucleicAcidPhosphate()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidPhosphate
    __del__ = lambda self: None
OEIsNucleicAcidPhosphate_swigregister = _oechem.OEIsNucleicAcidPhosphate_swigregister
OEIsNucleicAcidPhosphate_swigregister(OEIsNucleicAcidPhosphate)

class OEAtomMatchResidueID(object):
    """Proxy of C++ OEBio::OEAtomMatchResidueID 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(_oechem.OEAtomMatchResidueID_name_get, _oechem.OEAtomMatchResidueID_name_set)
    residueNumber = _swig_property(_oechem.OEAtomMatchResidueID_residueNumber_get, _oechem.OEAtomMatchResidueID_residueNumber_set)
    insertCode = _swig_property(_oechem.OEAtomMatchResidueID_insertCode_get, _oechem.OEAtomMatchResidueID_insertCode_set)
    chainID = _swig_property(_oechem.OEAtomMatchResidueID_chainID_get, _oechem.OEAtomMatchResidueID_chainID_set)
    fragmentNumber = _swig_property(_oechem.OEAtomMatchResidueID_fragmentNumber_get, _oechem.OEAtomMatchResidueID_fragmentNumber_set)
    alternateLocation = _swig_property(_oechem.OEAtomMatchResidueID_alternateLocation_get, _oechem.OEAtomMatchResidueID_alternateLocation_set)

    def __init__(self, *args):
        """
        __init__(OEBio::OEAtomMatchResidueID self) -> OEAtomMatchResidueID
        __init__(OEBio::OEAtomMatchResidueID self, OEResidue res) -> OEAtomMatchResidueID
        """
        this = _oechem.new_OEAtomMatchResidueID(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetName(self) -> "std::string":
        """GetName(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetName(self)


    def GetResidueNumber(self) -> "std::string":
        """GetResidueNumber(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetResidueNumber(self)


    def GetInsertCode(self) -> "std::string":
        """GetInsertCode(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetInsertCode(self)


    def GetChainID(self) -> "std::string":
        """GetChainID(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetChainID(self)


    def GetFragmentNumber(self) -> "std::string":
        """GetFragmentNumber(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetFragmentNumber(self)


    def GetAlternateLocation(self) -> "std::string":
        """GetAlternateLocation(OEAtomMatchResidueID self) -> std::string"""
        return _oechem.OEAtomMatchResidueID_GetAlternateLocation(self)


    def SetName(self, n: 'std::string const &') -> "void":
        """SetName(OEAtomMatchResidueID self, std::string const & n)"""
        return _oechem.OEAtomMatchResidueID_SetName(self, n)


    def SetResidueNumber(self, n: 'std::string const &') -> "void":
        """SetResidueNumber(OEAtomMatchResidueID self, std::string const & n)"""
        return _oechem.OEAtomMatchResidueID_SetResidueNumber(self, n)


    def SetInsertCode(self, i: 'std::string const &') -> "void":
        """SetInsertCode(OEAtomMatchResidueID self, std::string const & i)"""
        return _oechem.OEAtomMatchResidueID_SetInsertCode(self, i)


    def SetChainID(self, c: 'std::string const &') -> "void":
        """SetChainID(OEAtomMatchResidueID self, std::string const & c)"""
        return _oechem.OEAtomMatchResidueID_SetChainID(self, c)


    def SetFragmentNumber(self, f: 'std::string const &') -> "void":
        """SetFragmentNumber(OEAtomMatchResidueID self, std::string const & f)"""
        return _oechem.OEAtomMatchResidueID_SetFragmentNumber(self, f)


    def SetAlternateLocation(self, a: 'std::string const &') -> "void":
        """SetAlternateLocation(OEAtomMatchResidueID self, std::string const & a)"""
        return _oechem.OEAtomMatchResidueID_SetAlternateLocation(self, a)


    def __lt__(self, rhs: 'OEAtomMatchResidueID') -> "bool":
        """__lt__(OEAtomMatchResidueID self, OEAtomMatchResidueID rhs) -> bool"""
        return _oechem.OEAtomMatchResidueID___lt__(self, rhs)

    __swig_destroy__ = _oechem.delete_OEAtomMatchResidueID
    __del__ = lambda self: None
OEAtomMatchResidueID_swigregister = _oechem.OEAtomMatchResidueID_swigregister
OEAtomMatchResidueID_swigregister(OEAtomMatchResidueID)


def OEAtomMatchResidueIDToString(res: 'OEAtomMatchResidueID') -> "std::string":
    """OEAtomMatchResidueIDToString(OEAtomMatchResidueID res) -> std::string"""
    return _oechem.OEAtomMatchResidueIDToString(res)
class OEAtomMatchResidue(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEAtomMatchResidue class."""

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

    def IsValid(self):
      return _oechem.OEAtomMatchResidue___nonzero__(self)



    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomMatchResidue self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomMatchResidue___call__(self, atom)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEAtomMatchResidue_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self, *args):
        """
        __init__(OEBio::OEAtomMatchResidue self, OEMolBase protein, OEMolBase ligand, double dist, bool excludeHydrogens=True) -> OEAtomMatchResidue
        __init__(OEBio::OEAtomMatchResidue self, OEMolBase protein, OEMolBase ligand, double dist) -> OEAtomMatchResidue
        __init__(OEBio::OEAtomMatchResidue self, PyObject * strOrAtmMatchVec) -> OEAtomMatchResidue
        """
        this = _oechem.new_OEAtomMatchResidue(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomMatchResidue
    __del__ = lambda self: None
OEAtomMatchResidue_swigregister = _oechem.OEAtomMatchResidue_swigregister
OEAtomMatchResidue_swigregister(OEAtomMatchResidue)

class OEIsDisulfideBond(OEUnaryBondPred):
    """Proxy of C++ OEBio::OEIsDisulfideBond class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsDisulfideBond self, OEBondBase bond) -> bool"""
        return _oechem.OEIsDisulfideBond___call__(self, bond)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEIsDisulfideBond_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)



    def __init__(self):
        """__init__(OEBio::OEIsDisulfideBond self) -> OEIsDisulfideBond"""
        this = _oechem.new_OEIsDisulfideBond()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsDisulfideBond
    __del__ = lambda self: None
OEIsDisulfideBond_swigregister = _oechem.OEIsDisulfideBond_swigregister
OEIsDisulfideBond_swigregister(OEIsDisulfideBond)

class OESequenceAlignment(object):
    """Proxy of C++ OEBio::OESequenceAlignment 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__(OEBio::OESequenceAlignment self) -> OESequenceAlignment
        __init__(OEBio::OESequenceAlignment self, OESequenceAlignment rhs) -> OESequenceAlignment
        """
        this = _oechem.new_OESequenceAlignment(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESequenceAlignment
    __del__ = lambda self: None

    def GetImpl(self, *args) -> "OEBio::OESeqAlignImpl const *":
        """
        GetImpl(OESequenceAlignment self) -> OEBio::OESeqAlignImpl
        GetImpl(OESequenceAlignment self) -> OEBio::OESeqAlignImpl const *
        """
        return _oechem.OESequenceAlignment_GetImpl(self, *args)


    def Clear(self) -> "void":
        """Clear(OESequenceAlignment self)"""
        return _oechem.OESequenceAlignment_Clear(self)


    def IsValid(self):
      return _oechem.OESequenceAlignment___nonzero__(self)



    def GetMethod(self) -> "unsigned int":
        """GetMethod(OESequenceAlignment self) -> unsigned int"""
        return _oechem.OESequenceAlignment_GetMethod(self)


    def GetGap(self) -> "int":
        """GetGap(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetGap(self)


    def GetExtend(self) -> "int":
        """GetExtend(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetExtend(self)


    def GetScore(self) -> "int":
        """GetScore(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetScore(self)


    def GetSequenceIdentity(self) -> "double":
        """GetSequenceIdentity(OESequenceAlignment self) -> double"""
        return _oechem.OESequenceAlignment_GetSequenceIdentity(self)


    def GetSequenceSimilarity(self) -> "double":
        """GetSequenceSimilarity(OESequenceAlignment self) -> double"""
        return _oechem.OESequenceAlignment_GetSequenceSimilarity(self)


    def GetChainID(self, idx: 'unsigned int') -> "char":
        """GetChainID(OESequenceAlignment self, unsigned int idx) -> char"""
        return _oechem.OESequenceAlignment_GetChainID(self, idx)


    def GetMaxSeqIdx(self) -> "unsigned int":
        """GetMaxSeqIdx(OESequenceAlignment self) -> unsigned int"""
        return _oechem.OESequenceAlignment_GetMaxSeqIdx(self)


    def GetBackboneMatch(self, idx1: 'unsigned int'=0, idx2: 'unsigned int'=1) -> "OEChem::OEMatchBase const &":
        """
        GetBackboneMatch(OESequenceAlignment self, unsigned int idx1=0, unsigned int idx2=1) -> OEMatchBase
        GetBackboneMatch(OESequenceAlignment self, unsigned int idx1=0) -> OEMatchBase
        GetBackboneMatch(OESequenceAlignment self) -> OEMatchBase
        """
        return _oechem.OESequenceAlignment_GetBackboneMatch(self, idx1, idx2)


    def GetCAlphaMatch(self, idx1: 'unsigned int'=0, idx2: 'unsigned int'=1) -> "OEChem::OEMatchBase const &":
        """
        GetCAlphaMatch(OESequenceAlignment self, unsigned int idx1=0, unsigned int idx2=1) -> OEMatchBase
        GetCAlphaMatch(OESequenceAlignment self, unsigned int idx1=0) -> OEMatchBase
        GetCAlphaMatch(OESequenceAlignment self) -> OEMatchBase
        """
        return _oechem.OESequenceAlignment_GetCAlphaMatch(self, idx1, idx2)

OESequenceAlignment_swigregister = _oechem.OESequenceAlignment_swigregister
OESequenceAlignment_swigregister(OESequenceAlignment)


def OEGetAlignment(*args) -> "OEBio::OESequenceAlignment":
    """
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2) -> OESequenceAlignment
    """
    return _oechem.OEGetAlignment(*args)

def OEGetAlignments(*args) -> "OESystem::OEIterBase< OEBio::OESequenceAlignment > *":
    """
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2) -> OESystem::OEIterBase< OEBio::OESequenceAlignment > *
    """
    return _oechem.OEGetAlignments(*args)

def OEGetSimpleAlignment(*args) -> "OEBio::OESequenceAlignment":
    """
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2) -> OESequenceAlignment
    """
    return _oechem.OEGetSimpleAlignment(*args)

def OEWriteAlignment(ofs: 'oeostream', align: 'OESequenceAlignment', width: 'unsigned int'=50) -> "bool":
    """
    OEWriteAlignment(oeostream ofs, OESequenceAlignment align, unsigned int width=50) -> bool
    OEWriteAlignment(oeostream ofs, OESequenceAlignment align) -> bool
    """
    return _oechem.OEWriteAlignment(ofs, align, width)

def OEGetAlignmentMethodName(methodIdx: 'unsigned int') -> "char const *":
    """OEGetAlignmentMethodName(unsigned int methodIdx) -> char const *"""
    return _oechem.OEGetAlignmentMethodName(methodIdx)

def OEGetSpaceGroup(sgnumber: 'unsigned int', shortname: 'bool'=False) -> "PyObject *":
    """
    OEGetSpaceGroup(unsigned int sgnumber, bool shortname=False) -> PyObject
    OEGetSpaceGroup(unsigned int sgnumber) -> PyObject *
    """
    return _oechem.OEGetSpaceGroup(sgnumber, shortname)

def OEGetCrystalSymmetry(*args) -> "PyObject *":
    """
    OEGetCrystalSymmetry(OEMolBase mol) -> PyObject
    OEGetCrystalSymmetry(OECrystalSymmetryParams params, OEMolBase mol) -> PyObject *
    """
    return _oechem.OEGetCrystalSymmetry(*args)

def OEGetSpaceGroupNumber(ccp4Name: 'std::string const &') -> "int":
    """OEGetSpaceGroupNumber(std::string const & ccp4Name) -> int"""
    return _oechem.OEGetSpaceGroupNumber(ccp4Name)

def OEHasCrystalSymmetry(mol: 'OEMolBase') -> "bool":
    """OEHasCrystalSymmetry(OEMolBase mol) -> bool"""
    return _oechem.OEHasCrystalSymmetry(mol)

def OECopyCrystalSymmetry(dst: 'OEMolBase', src: 'OEMolBase') -> "bool":
    """OECopyCrystalSymmetry(OEMolBase dst, OEMolBase src) -> bool"""
    return _oechem.OECopyCrystalSymmetry(dst, src)

def OEBuildUnitCell(cell: 'OEMCMolBase', mol: 'OEMolBase') -> "bool":
    """OEBuildUnitCell(OEMCMolBase cell, OEMolBase mol) -> bool"""
    return _oechem.OEBuildUnitCell(cell, mol)

def OEExpandCrystalSymmetry(*args) -> "bool":
    """
    OEExpandCrystalSymmetry(OEMCMolBase operators, OEMolBase src) -> bool
    OEExpandCrystalSymmetry(OEMolBase mol, float radius, float * center=None) -> bool
    OEExpandCrystalSymmetry(OEMolBase mol, float radius) -> bool
    OEExpandCrystalSymmetry(OEMCMolBase expanded, OEMolBase mol, float radius, float * center=None) -> bool
    OEExpandCrystalSymmetry(OEMCMolBase expanded, OEMolBase mol, float radius) -> bool
    """
    return _oechem.OEExpandCrystalSymmetry(*args)
class OECrystalSymmetryParams(object):
    """Proxy of C++ OEBio::OECrystalSymmetryParams 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__(OEBio::OECrystalSymmetryParams self) -> OECrystalSymmetryParams
        __init__(OEBio::OECrystalSymmetryParams self, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber, unsigned int zvalue=0) -> OECrystalSymmetryParams
        __init__(OEBio::OECrystalSymmetryParams self, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber) -> OECrystalSymmetryParams
        """
        this = _oechem.new_OECrystalSymmetryParams(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetA(self, a: 'float') -> "void":
        """SetA(OECrystalSymmetryParams self, float a)"""
        return _oechem.OECrystalSymmetryParams_SetA(self, a)


    def SetB(self, b: 'float') -> "void":
        """SetB(OECrystalSymmetryParams self, float b)"""
        return _oechem.OECrystalSymmetryParams_SetB(self, b)


    def SetC(self, c: 'float') -> "void":
        """SetC(OECrystalSymmetryParams self, float c)"""
        return _oechem.OECrystalSymmetryParams_SetC(self, c)


    def SetAlpha(self, alpha: 'float') -> "void":
        """SetAlpha(OECrystalSymmetryParams self, float alpha)"""
        return _oechem.OECrystalSymmetryParams_SetAlpha(self, alpha)


    def SetBeta(self, beta: 'float') -> "void":
        """SetBeta(OECrystalSymmetryParams self, float beta)"""
        return _oechem.OECrystalSymmetryParams_SetBeta(self, beta)


    def SetGamma(self, gamma: 'float') -> "void":
        """SetGamma(OECrystalSymmetryParams self, float gamma)"""
        return _oechem.OECrystalSymmetryParams_SetGamma(self, gamma)


    def SetSpaceGroup(self, sgnumber: 'unsigned int') -> "void":
        """SetSpaceGroup(OECrystalSymmetryParams self, unsigned int sgnumber)"""
        return _oechem.OECrystalSymmetryParams_SetSpaceGroup(self, sgnumber)


    def SetZValue(self, zvalue: 'unsigned int') -> "void":
        """SetZValue(OECrystalSymmetryParams self, unsigned int zvalue)"""
        return _oechem.OECrystalSymmetryParams_SetZValue(self, zvalue)


    def GetA(self) -> "float":
        """GetA(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetA(self)


    def GetB(self) -> "float":
        """GetB(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetB(self)


    def GetC(self) -> "float":
        """GetC(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetC(self)


    def GetAlpha(self) -> "float":
        """GetAlpha(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetAlpha(self)


    def GetBeta(self) -> "float":
        """GetBeta(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetBeta(self)


    def GetGamma(self) -> "float":
        """GetGamma(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetGamma(self)


    def GetSpaceGroup(self) -> "unsigned int":
        """GetSpaceGroup(OECrystalSymmetryParams self) -> unsigned int"""
        return _oechem.OECrystalSymmetryParams_GetSpaceGroup(self)


    def GetZValue(self) -> "unsigned int":
        """GetZValue(OECrystalSymmetryParams self) -> unsigned int"""
        return _oechem.OECrystalSymmetryParams_GetZValue(self)

    __swig_destroy__ = _oechem.delete_OECrystalSymmetryParams
    __del__ = lambda self: None
OECrystalSymmetryParams_swigregister = _oechem.OECrystalSymmetryParams_swigregister
OECrystalSymmetryParams_swigregister(OECrystalSymmetryParams)


def OESetCrystalSymmetry(*args) -> "bool":
    """
    OESetCrystalSymmetry(OEMolBase mol, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber, bool force=False) -> bool
    OESetCrystalSymmetry(OEMolBase mol, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber) -> bool
    OESetCrystalSymmetry(OEMolBase mol, OECrystalSymmetryParams params, bool force=False) -> bool
    OESetCrystalSymmetry(OEMolBase mol, OECrystalSymmetryParams params) -> bool
    """
    return _oechem.OESetCrystalSymmetry(*args)

def OESymmetryCartesianToFractional(mol: 'OEMolBase') -> "bool":
    """OESymmetryCartesianToFractional(OEMolBase mol) -> bool"""
    return _oechem.OESymmetryCartesianToFractional(mol)

def OESymmetryFractionalToCartesian(mol: 'OEMolBase') -> "bool":
    """OESymmetryFractionalToCartesian(OEMolBase mol) -> bool"""
    return _oechem.OESymmetryFractionalToCartesian(mol)
class OEResidueCategoryData(object):
    """Proxy of C++ OEBio::OEResidueCategoryData 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__ = _oechem.delete_OEResidueCategoryData
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEResidueCategoryData self) -> OEResidueCategoryData
        __init__(OEBio::OEResidueCategoryData self, OEResidueCategoryData rhs) -> OEResidueCategoryData
        """
        this = _oechem.new_OEResidueCategoryData(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Size(self, category: 'unsigned int') -> "unsigned int":
        """Size(OEResidueCategoryData self, unsigned int category) -> unsigned int"""
        return _oechem.OEResidueCategoryData_Size(self, category)


    def GetEntries(self, category: 'unsigned int') -> "OESystem::OEIterBase< std::string const > *":
        """GetEntries(OEResidueCategoryData self, unsigned int category) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEResidueCategoryData_GetEntries(self, category)


    def FoundInDB(self, category: 'unsigned int', resName: 'std::string const &') -> "bool":
        """FoundInDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool"""
        return _oechem.OEResidueCategoryData_FoundInDB(self, category, resName)


    def AddToDB(self, *args) -> "bool":
        """
        AddToDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool
        AddToDB(OEResidueCategoryData self, unsigned int category, OEStringVector list) -> bool
        """
        return _oechem.OEResidueCategoryData_AddToDB(self, *args)


    def RemoveFromDB(self, *args) -> "bool":
        """
        RemoveFromDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool
        RemoveFromDB(OEResidueCategoryData self, unsigned int category, OEStringVector list) -> bool
        """
        return _oechem.OEResidueCategoryData_RemoveFromDB(self, *args)


    def ClearDBCategory(self, category: 'unsigned int') -> "bool":
        """ClearDBCategory(OEResidueCategoryData self, unsigned int category) -> bool"""
        return _oechem.OEResidueCategoryData_ClearDBCategory(self, category)

OEResidueCategoryData_swigregister = _oechem.OEResidueCategoryData_swigregister
OEResidueCategoryData_swigregister(OEResidueCategoryData)


def OEGetResidueDatabaseCategoryName(category: 'unsigned int') -> "char const *":
    """OEGetResidueDatabaseCategoryName(unsigned int category) -> char const *"""
    return _oechem.OEGetResidueDatabaseCategoryName(category)

def OEMolComplexRoleFactory(category: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexRoleFactory(unsigned int category) -> OERole"""
    return _oechem.OEMolComplexRoleFactory(category)

def OEMolComplexOrderRoleFactory(order: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexOrderRoleFactory(unsigned int order) -> OERole"""
    return _oechem.OEMolComplexOrderRoleFactory(order)

def OEMolComplexSiteRoleFactory(site: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexSiteRoleFactory(unsigned int site) -> OERole"""
    return _oechem.OEMolComplexSiteRoleFactory(site)

def OEMolComplexSurfaceWatersRoleFactory(site: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexSurfaceWatersRoleFactory(unsigned int site) -> OERole"""
    return _oechem.OEMolComplexSurfaceWatersRoleFactory(site)

def OEMolComplexModelRoleFactory(model: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexModelRoleFactory(unsigned int model) -> OERole"""
    return _oechem.OEMolComplexModelRoleFactory(model)

def OEMolComplexChainRoleFactory(chain: 'char') -> "OESystem::OERole":
    """OEMolComplexChainRoleFactory(char chain) -> OERole"""
    return _oechem.OEMolComplexChainRoleFactory(chain)

def OEGetMolComplexFilterCategoryName(category: 'unsigned int') -> "char const *":
    """OEGetMolComplexFilterCategoryName(unsigned int category) -> char const *"""
    return _oechem.OEGetMolComplexFilterCategoryName(category)
class OEMolComplexFilter(OEUnaryRoleSetPred):
    """Proxy of C++ OEBio::OEMolComplexFilter 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__(OEBio::OEMolComplexFilter self) -> OEMolComplexFilter
        __init__(OEBio::OEMolComplexFilter self, OEMolComplexFilter rhs) -> OEMolComplexFilter
        __init__(OEBio::OEMolComplexFilter self, OEBio::OEMolComplexFilterImpl * impl) -> OEMolComplexFilter
        """
        this = _oechem.new_OEMolComplexFilter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolComplexFilter
    __del__ = lambda self: None

    def __call__(self, roles: 'OERoleSet') -> "bool":
        """__call__(OEMolComplexFilter self, OERoleSet roles) -> bool"""
        return _oechem.OEMolComplexFilter___call__(self, roles)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMolComplexFilter_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEMolComplexFilter_swigregister = _oechem.OEMolComplexFilter_swigregister
OEMolComplexFilter_swigregister(OEMolComplexFilter)


def OEMolComplexFilterFactory(category: 'unsigned int') -> "OEBio::OEMolComplexFilter":
    """OEMolComplexFilterFactory(unsigned int category) -> OEMolComplexFilter"""
    return _oechem.OEMolComplexFilterFactory(category)

def OERoleMolComplexFilterFactory(r: 'OERole') -> "OEBio::OEMolComplexFilter":
    """OERoleMolComplexFilterFactory(OERole r) -> OEMolComplexFilter"""
    return _oechem.OERoleMolComplexFilterFactory(r)
class OEMolComplexCategorizerBase(object):
    """Proxy of C++ OEBio::OEMolComplexCategorizerBase 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__ = _oechem.delete_OEMolComplexCategorizerBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """CreateCopy(OEMolComplexCategorizerBase self) -> OEMolComplexCategorizerBase"""
        return _oechem.OEMolComplexCategorizerBase_CreateCopy(self)


    def __call__(self, roles: 'OERoleSet', counts: 'OEBio::OEMolComplexResCounts &', frag: 'OEAtomBondSet', isCovalent: 'bool'=False) -> "std::string":
        """
        __call__(OEMolComplexCategorizerBase self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag, bool isCovalent=False) -> std::string
        __call__(OEMolComplexCategorizerBase self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag) -> std::string
        """
        return _oechem.OEMolComplexCategorizerBase___call__(self, roles, counts, frag, isCovalent)


    def GetBundleCofactors(self) -> "bool":
        """GetBundleCofactors(OEMolComplexCategorizerBase self) -> bool"""
        return _oechem.OEMolComplexCategorizerBase_GetBundleCofactors(self)


    def UsingExplicitLigandName(self) -> "bool":
        """UsingExplicitLigandName(OEMolComplexCategorizerBase self) -> bool"""
        return _oechem.OEMolComplexCategorizerBase_UsingExplicitLigandName(self)


    def GetResidueCategoryData(self) -> "OEBio::OEResidueCategoryData *":
        """GetResidueCategoryData(OEMolComplexCategorizerBase self) -> OEResidueCategoryData"""
        return _oechem.OEMolComplexCategorizerBase_GetResidueCategoryData(self)

OEMolComplexCategorizerBase_swigregister = _oechem.OEMolComplexCategorizerBase_swigregister
OEMolComplexCategorizerBase_swigregister(OEMolComplexCategorizerBase)

class OEMolComplexCategorizer(OEMolComplexCategorizerBase):
    """Proxy of C++ OEBio::OEMolComplexCategorizer 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__ = _oechem.delete_OEMolComplexCategorizer
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEMolComplexCategorizer self, std::string const & ligName) -> OEMolComplexCategorizer
        __init__(OEBio::OEMolComplexCategorizer self) -> OEMolComplexCategorizer
        __init__(OEBio::OEMolComplexCategorizer self, OEMolComplexCategorizer rhs) -> OEMolComplexCategorizer
        """
        this = _oechem.new_OEMolComplexCategorizer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """CreateCopy(OEMolComplexCategorizer self) -> OEMolComplexCategorizerBase"""
        return _oechem.OEMolComplexCategorizer_CreateCopy(self)


    def GetBundleCofactors(self) -> "bool":
        """GetBundleCofactors(OEMolComplexCategorizer self) -> bool"""
        return _oechem.OEMolComplexCategorizer_GetBundleCofactors(self)


    def SetBundleCofactors(self, bundle: 'bool'=True) -> "void":
        """
        SetBundleCofactors(OEMolComplexCategorizer self, bool bundle=True)
        SetBundleCofactors(OEMolComplexCategorizer self)
        """
        return _oechem.OEMolComplexCategorizer_SetBundleCofactors(self, bundle)


    def GetMinLigAtoms(self) -> "unsigned int":
        """GetMinLigAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMinLigAtoms(self)


    def SetMinLigAtoms(self, n: 'unsigned int') -> "void":
        """SetMinLigAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMinLigAtoms(self, n)


    def GetMaxLigAtoms(self) -> "unsigned int":
        """GetMaxLigAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxLigAtoms(self)


    def SetMaxLigAtoms(self, n: 'unsigned int') -> "void":
        """SetMaxLigAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxLigAtoms(self, n)


    def GetMaxProteinAtoms(self) -> "unsigned int":
        """GetMaxProteinAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxProteinAtoms(self)


    def SetMaxProteinAtoms(self, n: 'unsigned int') -> "void":
        """SetMaxProteinAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxProteinAtoms(self, n)


    def GetMaxLigResidues(self) -> "unsigned int":
        """GetMaxLigResidues(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxLigResidues(self)


    def SetMaxLigResidues(self, n: 'unsigned int') -> "void":
        """SetMaxLigResidues(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxLigResidues(self, n)


    def GetMaxPeptideResidues(self) -> "unsigned int":
        """GetMaxPeptideResidues(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxPeptideResidues(self)


    def SetMaxPeptideResidues(self, n: 'unsigned int') -> "void":
        """SetMaxPeptideResidues(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxPeptideResidues(self, n)


    def AddLigandName(self, ligName: 'std::string const &') -> "void":
        """AddLigandName(OEMolComplexCategorizer self, std::string const & ligName)"""
        return _oechem.OEMolComplexCategorizer_AddLigandName(self, ligName)


    def UsingExplicitLigandName(self) -> "bool":
        """UsingExplicitLigandName(OEMolComplexCategorizer self) -> bool"""
        return _oechem.OEMolComplexCategorizer_UsingExplicitLigandName(self)


    def GetLigandSubSearch(self) -> "OEChem::OESubSearch":
        """GetLigandSubSearch(OEMolComplexCategorizer self) -> OESubSearch"""
        return _oechem.OEMolComplexCategorizer_GetLigandSubSearch(self)


    def SetLigandSubSearch(self, *args) -> "void":
        """
        SetLigandSubSearch(OEMolComplexCategorizer self, OESubSearch ss)
        SetLigandSubSearch(OEMolComplexCategorizer self, char const * smarts)
        """
        return _oechem.OEMolComplexCategorizer_SetLigandSubSearch(self, *args)


    def ClearLigandSubSearch(self) -> "void":
        """ClearLigandSubSearch(OEMolComplexCategorizer self)"""
        return _oechem.OEMolComplexCategorizer_ClearLigandSubSearch(self)


    def __call__(self, roles: 'OERoleSet', counts: 'OEBio::OEMolComplexResCounts &', frag: 'OEAtomBondSet', isCovalent: 'bool'=False) -> "std::string":
        """
        __call__(OEMolComplexCategorizer self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag, bool isCovalent=False) -> std::string
        __call__(OEMolComplexCategorizer self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag) -> std::string
        """
        return _oechem.OEMolComplexCategorizer___call__(self, roles, counts, frag, isCovalent)


    def GetResidueCategoryData(self) -> "OEBio::OEResidueCategoryData *":
        """GetResidueCategoryData(OEMolComplexCategorizer self) -> OEResidueCategoryData"""
        return _oechem.OEMolComplexCategorizer_GetResidueCategoryData(self)


    def SetResidueCategoryData(self, db: 'OEResidueCategoryData') -> "void":
        """SetResidueCategoryData(OEMolComplexCategorizer self, OEResidueCategoryData db)"""
        return _oechem.OEMolComplexCategorizer_SetResidueCategoryData(self, db)

OEMolComplexCategorizer_swigregister = _oechem.OEMolComplexCategorizer_swigregister
OEMolComplexCategorizer_swigregister(OEMolComplexCategorizer)

class OESplitMolComplexOptions(object):
    """Proxy of C++ OEBio::OESplitMolComplexOptions 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__ = _oechem.delete_OESplitMolComplexOptions
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OESplitMolComplexOptions self, std::string const & ligName) -> OESplitMolComplexOptions
        __init__(OEBio::OESplitMolComplexOptions self) -> OESplitMolComplexOptions
        __init__(OEBio::OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> OESplitMolComplexOptions
        """
        this = _oechem.new_OESplitMolComplexOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __eq__(self, rhs: 'OESplitMolComplexOptions') -> "bool":
        """__eq__(OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> bool"""
        return _oechem.OESplitMolComplexOptions___eq__(self, rhs)


    def __ne__(self, rhs: 'OESplitMolComplexOptions') -> "bool":
        """__ne__(OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> bool"""
        return _oechem.OESplitMolComplexOptions___ne__(self, rhs)


    def ResetFilters(self, *args) -> "void":
        """
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory, unsigned int waterCategory, unsigned int modelNo=1)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory, unsigned int waterCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1)
        ResetFilters(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_ResetFilters(self, *args)


    def GetSplitCovalent(self) -> "bool":
        """GetSplitCovalent(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSplitCovalent(self)


    def SetSplitCovalent(self, split: 'bool'=True) -> "void":
        """
        SetSplitCovalent(OESplitMolComplexOptions self, bool split=True)
        SetSplitCovalent(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSplitCovalent(self, split)


    def GetSplitCovalentCofactors(self) -> "bool":
        """GetSplitCovalentCofactors(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSplitCovalentCofactors(self)


    def SetSplitCovalentCofactors(self, split: 'bool'=True) -> "void":
        """
        SetSplitCovalentCofactors(OESplitMolComplexOptions self, bool split=True)
        SetSplitCovalentCofactors(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSplitCovalentCofactors(self, split)


    def GetMaxBindingSiteDist(self) -> "double":
        """GetMaxBindingSiteDist(OESplitMolComplexOptions self) -> double"""
        return _oechem.OESplitMolComplexOptions_GetMaxBindingSiteDist(self)


    def SetMaxBindingSiteDist(self, dist: 'double') -> "void":
        """SetMaxBindingSiteDist(OESplitMolComplexOptions self, double dist)"""
        return _oechem.OESplitMolComplexOptions_SetMaxBindingSiteDist(self, dist)


    def GetMaxSurfaceWaterDist(self) -> "double":
        """GetMaxSurfaceWaterDist(OESplitMolComplexOptions self) -> double"""
        return _oechem.OESplitMolComplexOptions_GetMaxSurfaceWaterDist(self)


    def SetMaxSurfaceWaterDist(self, dist: 'double') -> "void":
        """SetMaxSurfaceWaterDist(OESplitMolComplexOptions self, double dist)"""
        return _oechem.OESplitMolComplexOptions_SetMaxSurfaceWaterDist(self, dist)


    def GetSeparateResidues(self) -> "bool":
        """GetSeparateResidues(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSeparateResidues(self)


    def SetSeparateResidues(self, separate: 'bool'=True) -> "void":
        """
        SetSeparateResidues(OESplitMolComplexOptions self, bool separate=True)
        SetSeparateResidues(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSeparateResidues(self, separate)


    def GetCollectProteinByChain(self) -> "bool":
        """GetCollectProteinByChain(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetCollectProteinByChain(self)


    def SetCollectProteinByChain(self, collect: 'bool'=True) -> "void":
        """
        SetCollectProteinByChain(OESplitMolComplexOptions self, bool collect=True)
        SetCollectProteinByChain(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetCollectProteinByChain(self, collect)


    def GetPromoteUnknowns(self) -> "bool":
        """GetPromoteUnknowns(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetPromoteUnknowns(self)


    def SetPromoteUnknowns(self, promote: 'bool'=True) -> "void":
        """
        SetPromoteUnknowns(OESplitMolComplexOptions self, bool promote=True)
        SetPromoteUnknowns(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetPromoteUnknowns(self, promote)


    def GetAdjustHCount(self) -> "bool":
        """GetAdjustHCount(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetAdjustHCount(self)


    def SetAdjustHCount(self, adjust: 'bool'=True) -> "void":
        """
        SetAdjustHCount(OESplitMolComplexOptions self, bool adjust=True)
        SetAdjustHCount(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetAdjustHCount(self, adjust)


    def GetAddRGroup(self) -> "bool":
        """GetAddRGroup(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetAddRGroup(self)


    def SetAddRGroup(self, addR: 'bool'=True) -> "void":
        """
        SetAddRGroup(OESplitMolComplexOptions self, bool addR=True)
        SetAddRGroup(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetAddRGroup(self, addR)


    def GetAssumptions(self) -> "unsigned int":
        """GetAssumptions(OESplitMolComplexOptions self) -> unsigned int"""
        return _oechem.OESplitMolComplexOptions_GetAssumptions(self)


    def SetAssumptions(self, assume: 'unsigned int') -> "void":
        """SetAssumptions(OESplitMolComplexOptions self, unsigned int assume)"""
        return _oechem.OESplitMolComplexOptions_SetAssumptions(self, assume)


    def GetWarnNoLigand(self) -> "bool":
        """GetWarnNoLigand(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetWarnNoLigand(self)


    def SetWarnNoLigand(self, warn: 'bool'=True) -> "void":
        """
        SetWarnNoLigand(OESplitMolComplexOptions self, bool warn=True)
        SetWarnNoLigand(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetWarnNoLigand(self, warn)


    def GetCategorizer(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """GetCategorizer(OESplitMolComplexOptions self) -> OEMolComplexCategorizerBase"""
        return _oechem.OESplitMolComplexOptions_GetCategorizer(self)


    def SetCategorizer(self, cat: 'OEMolComplexCategorizerBase') -> "void":
        """SetCategorizer(OESplitMolComplexOptions self, OEMolComplexCategorizerBase cat)"""
        return _oechem.OESplitMolComplexOptions_SetCategorizer(self, cat)


    def GetLigandFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetLigandFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetLigandFilter(self)


    def GetProteinFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetProteinFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetProteinFilter(self)


    def GetWaterFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetWaterFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetWaterFilter(self)


    def GetOtherFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetOtherFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetOtherFilter(self)


    def GetCombinedFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetCombinedFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetCombinedFilter(self)


    def SetLigandFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetLigandFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetLigandFilter(self, f)


    def SetProteinFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetProteinFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetProteinFilter(self, f)


    def SetWaterFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetWaterFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetWaterFilter(self, f)

OESplitMolComplexOptions_swigregister = _oechem.OESplitMolComplexOptions_swigregister
OESplitMolComplexOptions_swigregister(OESplitMolComplexOptions)


def OESplitMolComplex(*args) -> "bool":
    """
    OESplitMolComplex(OEMolBase lig, OEMolBase prot, OEMolBase waters, OEMolBase other, OEMolBase mol, OESplitMolComplexOptions opt) -> bool
    OESplitMolComplex(OEMolBase lig, OEMolBase prot, OEMolBase waters, OEMolBase other, OEMolBase mol) -> bool
    """
    return _oechem.OESplitMolComplex(*args)

def OEGetMolComplexComponents(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEGetMolComplexComponents(OEMolBase mol, OESplitMolComplexOptions opt) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetMolComplexComponents(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetMolComplexComponents(OEMolBase mol, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEGetMolComplexComponents(*args)

def OEClearMolComplexSDData(*args) -> "void":
    """
    OEClearMolComplexSDData(OEMolBase mol, std::string const & prefix)
    OEClearMolComplexSDData(OEMolBase mol)
    """
    return _oechem.OEClearMolComplexSDData(*args)

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

def OESetupSplitMolComplexOptions(*args) -> "bool":
    """
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf, unsigned int siteOverride, unsigned int modelOverride) -> bool
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf, unsigned int siteOverride) -> bool
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf) -> bool
    """
    return _oechem.OESetupSplitMolComplexOptions(*args)

def OEGetMolComplexFragments(*args) -> "bool":
    """
    OEGetMolComplexFragments(OEAtomBondSetVector frags, OEMolBase mol, OESplitMolComplexOptions opt) -> bool
    OEGetMolComplexFragments(OEAtomBondSetVector frags, OEMolBase mol) -> bool
    """
    return _oechem.OEGetMolComplexFragments(*args)

def OECountMolComplexSites(*args) -> "unsigned int":
    """
    OECountMolComplexSites(OEMolBase mol, OESplitMolComplexOptions opt) -> unsigned int
    OECountMolComplexSites(OEMolBase mol) -> unsigned int
    OECountMolComplexSites(OEAtomBondSetVector frags) -> unsigned int
    """
    return _oechem.OECountMolComplexSites(*args)

def OECombineMolComplexFragments(*args) -> "bool":
    """
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter, OEChem::OEAtomBase ** atomMap=None) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> bool
    """
    return _oechem.OECombineMolComplexFragments(*args)

def OEFilterMolComplexFragments(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEFilterMolComplexFragments(OEAtomBondSetVector frags, OESplitMolComplexOptions opt) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEFilterMolComplexFragments(OEAtomBondSetVector frags) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEFilterMolComplexFragments(OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEFilterMolComplexFragments(*args)

def OEGetPlaceHydrogensMoverClassName(moverClass: 'unsigned int') -> "std::string":
    """OEGetPlaceHydrogensMoverClassName(unsigned int moverClass) -> std::string"""
    return _oechem.OEGetPlaceHydrogensMoverClassName(moverClass)
class OEPlaceHydrogensMoverNote(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensMoverNote 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__ = _oechem.delete_OEPlaceHydrogensMoverNote
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensMoverNote self) -> OEPlaceHydrogensMoverNote
        __init__(OEBio::OEPlaceHydrogensMoverNote self, OEPlaceHydrogensMoverNote rhs) -> OEPlaceHydrogensMoverNote
        """
        this = _oechem.new_OEPlaceHydrogensMoverNote(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetStateIdx(self) -> "unsigned int":
        """GetStateIdx(OEPlaceHydrogensMoverNote self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensMoverNote_GetStateIdx(self)


    def GetStateName(self) -> "std::string":
        """GetStateName(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_GetStateName(self)


    def GetLabel(self) -> "std::string":
        """GetLabel(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_GetLabel(self)


    def GetMoverClass(self) -> "unsigned int":
        """GetMoverClass(OEPlaceHydrogensMoverNote self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensMoverNote_GetMoverClass(self)


    def GetAngle(self) -> "double":
        """GetAngle(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetAngle(self)


    def IsFlippable(self) -> "bool":
        """IsFlippable(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsFlippable(self)


    def IsFlipped(self) -> "bool":
        """IsFlipped(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsFlipped(self)


    def IsIonizable(self) -> "bool":
        """IsIonizable(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsIonizable(self)


    def IsIonized(self) -> "bool":
        """IsIonized(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsIonized(self)


    def IsRestrained(self) -> "bool":
        """IsRestrained(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsRestrained(self)


    def GetScore(self) -> "double":
        """GetScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetScore(self)


    def HasBadClash(self) -> "bool":
        """HasBadClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasBadClash(self)


    def GetOriginalBestClusterScore(self) -> "double":
        """GetOriginalBestClusterScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetOriginalBestClusterScore(self)


    def GetFlippedBestClusterScore(self) -> "double":
        """GetFlippedBestClusterScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetFlippedBestClusterScore(self)


    def HasOriginalBadClusterClash(self) -> "bool":
        """HasOriginalBadClusterClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasOriginalBadClusterClash(self)


    def HasFlippedBadClusterClash(self) -> "bool":
        """HasFlippedBadClusterClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasFlippedBadClusterClash(self)


    def Describe(self) -> "std::string":
        """Describe(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_Describe(self)


    def GetReferenceCoords(self, *args) -> "PyObject *":
        """
        GetReferenceCoords(OEPlaceHydrogensMoverNote self, double * xyz) -> bool
        GetReferenceCoords(OEPlaceHydrogensMoverNote self) -> PyObject *
        """
        return _oechem.OEPlaceHydrogensMoverNote_GetReferenceCoords(self, *args)

OEPlaceHydrogensMoverNote_swigregister = _oechem.OEPlaceHydrogensMoverNote_swigregister
OEPlaceHydrogensMoverNote_swigregister(OEPlaceHydrogensMoverNote)

class OEPlaceHydrogensDetails(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensDetails 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__ = _oechem.delete_OEPlaceHydrogensDetails
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensDetails self) -> OEPlaceHydrogensDetails
        __init__(OEBio::OEPlaceHydrogensDetails self, OEPlaceHydrogensDetails rhs) -> OEPlaceHydrogensDetails
        """
        this = _oechem.new_OEPlaceHydrogensDetails(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self) -> "bool":
        """IsValid(OEPlaceHydrogensDetails self) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_IsValid(self)


    def GetNumHydrogensStandardized(self) -> "unsigned int":
        """GetNumHydrogensStandardized(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumHydrogensStandardized(self)


    def GetNumFlips(self) -> "unsigned int":
        """GetNumFlips(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumFlips(self)


    def GetFlipBias(self) -> "double":
        """GetFlipBias(OEPlaceHydrogensDetails self) -> double"""
        return _oechem.OEPlaceHydrogensDetails_GetFlipBias(self)


    def GetNumClusters(self) -> "unsigned int":
        """GetNumClusters(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumClusters(self)


    def GetNumMovers(self, clusterIdx: 'unsigned int') -> "unsigned int":
        """GetNumMovers(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumMovers(self, clusterIdx)


    def GetClusterScore(self, clusterIdx: 'unsigned int') -> "double":
        """GetClusterScore(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> double"""
        return _oechem.OEPlaceHydrogensDetails_GetClusterScore(self, clusterIdx)


    def ClusterHasBadClash(self, clusterIdx: 'unsigned int') -> "bool":
        """ClusterHasBadClash(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_ClusterHasBadClash(self, clusterIdx)


    def IsSingleton(self, clusterIdx: 'unsigned int') -> "bool":
        """IsSingleton(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_IsSingleton(self, clusterIdx)


    def GetMoverNotes(self, clusterIdx: 'unsigned int') -> "OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *":
        """GetMoverNotes(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *"""
        return _oechem.OEPlaceHydrogensDetails_GetMoverNotes(self, clusterIdx)


    def Describe(self, showBackground: 'bool'=False) -> "std::string":
        """
        Describe(OEPlaceHydrogensDetails self, bool showBackground=False) -> std::string
        Describe(OEPlaceHydrogensDetails self) -> std::string
        """
        return _oechem.OEPlaceHydrogensDetails_Describe(self, showBackground)

OEPlaceHydrogensDetails_swigregister = _oechem.OEPlaceHydrogensDetails_swigregister
OEPlaceHydrogensDetails_swigregister(OEPlaceHydrogensDetails)

class OEPlaceHydrogensOptions(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensOptions 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__ = _oechem.delete_OEPlaceHydrogensOptions
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensOptions self, bool compatibleAlts=False) -> OEPlaceHydrogensOptions
        __init__(OEBio::OEPlaceHydrogensOptions self) -> OEPlaceHydrogensOptions
        __init__(OEBio::OEPlaceHydrogensOptions self, OEPlaceHydrogensOptions rhs) -> OEPlaceHydrogensOptions
        """
        this = _oechem.new_OEPlaceHydrogensOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetAltsMustBeCompatible(self) -> "bool":
        """GetAltsMustBeCompatible(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetAltsMustBeCompatible(self)


    def SetAltsMustBeCompatible(self, compatible: 'bool'=True) -> "void":
        """
        SetAltsMustBeCompatible(OEPlaceHydrogensOptions self, bool compatible=True)
        SetAltsMustBeCompatible(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetAltsMustBeCompatible(self, compatible)


    def GetStandardizeBondLen(self) -> "bool":
        """GetStandardizeBondLen(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetStandardizeBondLen(self)


    def SetStandardizeBondLen(self, standardize: 'bool'=True) -> "void":
        """
        SetStandardizeBondLen(OEPlaceHydrogensOptions self, bool standardize=True)
        SetStandardizeBondLen(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetStandardizeBondLen(self, standardize)


    def GetFlipBiasScale(self) -> "double":
        """GetFlipBiasScale(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipBiasScale(self)


    def SetFlipBiasScale(self, scale: 'double') -> "void":
        """SetFlipBiasScale(OEPlaceHydrogensOptions self, double scale)"""
        return _oechem.OEPlaceHydrogensOptions_SetFlipBiasScale(self, scale)


    def GetFlipBias(self) -> "double":
        """GetFlipBias(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipBias(self)


    def GetBadClashOverlapDistance(self) -> "double":
        """GetBadClashOverlapDistance(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetBadClashOverlapDistance(self)


    def SetBadClashOverlapDistance(self, overlap: 'double') -> "void":
        """SetBadClashOverlapDistance(OEPlaceHydrogensOptions self, double overlap)"""
        return _oechem.OEPlaceHydrogensOptions_SetBadClashOverlapDistance(self, overlap)


    def GetWaterProcessing(self) -> "unsigned int":
        """GetWaterProcessing(OEPlaceHydrogensOptions self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensOptions_GetWaterProcessing(self)


    def SetWaterProcessing(self, process: 'unsigned int') -> "void":
        """SetWaterProcessing(OEPlaceHydrogensOptions self, unsigned int process)"""
        return _oechem.OEPlaceHydrogensOptions_SetWaterProcessing(self, process)


    def GetMaxSubstateCutoff(self) -> "double":
        """GetMaxSubstateCutoff(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetMaxSubstateCutoff(self)


    def SetMaxSubstateCutoff(self, maxStates: 'double') -> "void":
        """SetMaxSubstateCutoff(OEPlaceHydrogensOptions self, double maxStates)"""
        return _oechem.OEPlaceHydrogensOptions_SetMaxSubstateCutoff(self, maxStates)


    def GetAddMetadata(self) -> "bool":
        """GetAddMetadata(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetAddMetadata(self)


    def SetAddMetadata(self, metadata: 'bool'=True) -> "void":
        """
        SetAddMetadata(OEPlaceHydrogensOptions self, bool metadata=True)
        SetAddMetadata(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetAddMetadata(self, metadata)


    def GetBypassPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetBypassPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetBypassPredicate(self)


    def SetBypassPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetBypassPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetBypassPredicate(self, pred)


    def GetNoFlipPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetNoFlipPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetNoFlipPredicate(self)


    def SetNoFlipPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetNoFlipPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetNoFlipPredicate(self, pred)


    def GetFlipPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetFlipPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipPredicate(self)


    def SetFlipPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetFlipPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetFlipPredicate(self, pred)

OEPlaceHydrogensOptions_swigregister = _oechem.OEPlaceHydrogensOptions_swigregister
OEPlaceHydrogensOptions_swigregister(OEPlaceHydrogensOptions)


def OEPlaceHydrogens(*args) -> "bool":
    """
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensOptions opts) -> bool
    OEPlaceHydrogens(OEMolBase mol) -> bool
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensDetails details, OEPlaceHydrogensOptions opts) -> bool
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensDetails details) -> bool
    """
    return _oechem.OEPlaceHydrogens(*args)

def OEHasPlaceHydrogensMetadata(mol: 'OEMolBase') -> "bool":
    """OEHasPlaceHydrogensMetadata(OEMolBase mol) -> bool"""
    return _oechem.OEHasPlaceHydrogensMetadata(mol)

def OEGetPlaceHydrogensMetadata(mol: 'OEMolBase') -> "std::string":
    """OEGetPlaceHydrogensMetadata(OEMolBase mol) -> std::string"""
    return _oechem.OEGetPlaceHydrogensMetadata(mol)

def OEClearPlaceHydrogensMetadata(mol: 'OEMolBase') -> "void":
    """OEClearPlaceHydrogensMetadata(OEMolBase mol)"""
    return _oechem.OEClearPlaceHydrogensMetadata(mol)

def OEGetProtonationClusters(mol: 'OEMolBase') -> "std::map< unsigned int,std::set< OEBio::OEAtomMatchResidueID > >":
    """OEGetProtonationClusters(OEMolBase mol) -> std::map< unsigned int,std::set< OEBio::OEAtomMatchResidueID > >"""
    return _oechem.OEGetProtonationClusters(mol)
class OEPlaceHydrogensMoverNoteIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> 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<(OEBio::OEPlaceHydrogensMoverNote)> self) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OEPlaceHydrogensMoverNoteIter rhs) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > * rhs) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote >::NonConstA > * rhs) -> OEPlaceHydrogensMoverNoteIter
        """
        this = _oechem.new_OEPlaceHydrogensMoverNoteIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPlaceHydrogensMoverNoteIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *":
        """Copy(OEPlaceHydrogensMoverNoteIter self) -> OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEPlaceHydrogensMoverNoteIter self, OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > * ib)
        Push(OEPlaceHydrogensMoverNoteIter self, OEPlaceHydrogensMoverNoteIter iter)
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEPlaceHydrogensMoverNote,OEBio::OEPlaceHydrogensMoverNote > const &') -> "void":
        """Sort(OEPlaceHydrogensMoverNoteIter self, OESystem::OEBinaryPredicate< OEBio::OEPlaceHydrogensMoverNote,OEBio::OEPlaceHydrogensMoverNote > const & sort_criterion)"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """ToFirst(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """ToLast(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEPlaceHydrogensMoverNote &":
        """__ref__(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNote"""
        return _oechem.OEPlaceHydrogensMoverNoteIter___ref__(self)


    def IsValid(self):
      return _oechem.OEPlaceHydrogensMoverNoteIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEPlaceHydrogensMoverNoteIter self) -> PyObject *"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_next(self)


    def Target(self) -> "OEBio::OEPlaceHydrogensMoverNote &":
        """Target(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNote"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """
        Next(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter
        Next(OEPlaceHydrogensMoverNoteIter self, int i) -> OEPlaceHydrogensMoverNoteIter
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """
        Prev(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter
        Prev(OEPlaceHydrogensMoverNoteIter self, int i) -> OEPlaceHydrogensMoverNoteIter
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Prev(self, *args)

OEPlaceHydrogensMoverNoteIter_swigregister = _oechem.OEPlaceHydrogensMoverNoteIter_swigregister
OEPlaceHydrogensMoverNoteIter_swigregister(OEPlaceHydrogensMoverNoteIter)

OE_OEBIO_VERSION = _oechem.OE_OEBIO_VERSION

def OEBioGetRelease() -> "char const *":
    """OEBioGetRelease() -> char const *"""
    return _oechem.OEBioGetRelease()

def OEBioGetVersion() -> "unsigned int":
    """OEBioGetVersion() -> unsigned int"""
    return _oechem.OEBioGetVersion()

def OEBioGetArch() -> "char const *":
    """OEBioGetArch() -> char const *"""
    return _oechem.OEBioGetArch()

def OEBioGetPlatform() -> "char const *":
    """OEBioGetPlatform() -> char const *"""
    return _oechem.OEBioGetPlatform()

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

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

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

OEThrow = cvar.OEThrow

OEAroModelUndefined = cvar.OEAroModelUndefined
OEAroModelTripos = cvar.OEAroModelTripos
OEAroModelOpenEye = cvar.OEAroModelOpenEye
OEAroModelDaylight = cvar.OEAroModelDaylight
OEAroModelMMFF = cvar.OEAroModelMMFF
OEAroModelMDL = cvar.OEAroModelMDL

OENormModelDefault = cvar.OENormModelDefault
OENormModelSymmetry = cvar.OENormModelSymmetry
OENormModelPhysical = cvar.OENormModelPhysical
OENormModelHyperVal = cvar.OENormModelHyperVal
OENormModelDative = cvar.OENormModelDative

OEBlack = cvar.OEBlack
OEWhite = cvar.OEWhite
OERed = cvar.OERed
OEGreen = cvar.OEGreen
OEBlue = cvar.OEBlue
OEYellow = cvar.OEYellow
OECyan = cvar.OECyan
OEMagenta = cvar.OEMagenta
OEOrange = cvar.OEOrange
OEPink = cvar.OEPink
OEGrey = cvar.OEGrey
OEPurple = cvar.OEPurple
OERoyalBlue = cvar.OERoyalBlue
OEOliveBrown = cvar.OEOliveBrown
OEOliveGreen = cvar.OEOliveGreen
OEOliveGrey = cvar.OEOliveGrey
OELimeGreen = cvar.OELimeGreen

OEDarkRed = cvar.OEDarkRed
OEDarkGreen = cvar.OEDarkGreen
OEDarkBlue = cvar.OEDarkBlue
OEDarkYellow = cvar.OEDarkYellow
OEDarkCyan = cvar.OEDarkCyan
OEDarkMagenta = cvar.OEDarkMagenta
OEDarkOrange = cvar.OEDarkOrange
OEDarkGrey = cvar.OEDarkGrey
OEDarkRose = cvar.OEDarkRose
OEDarkBrown = cvar.OEDarkBrown
OEDarkSalmon = cvar.OEDarkSalmon
OEDarkPurple = cvar.OEDarkPurple

OEMediumBrown = cvar.OEMediumBrown
OEMediumBlue = cvar.OEMediumBlue
OEMediumYellow = cvar.OEMediumYellow
OEMediumGreen = cvar.OEMediumGreen
OEMediumOrange = cvar.OEMediumOrange
OEMediumPurple = cvar.OEMediumPurple
OEMediumSalmon = cvar.OEMediumSalmon

OELightBlue = cvar.OELightBlue
OELightGrey = cvar.OELightGrey
OELightPurple = cvar.OELightPurple
OELightSalmon = cvar.OELightSalmon
OELightBrown = cvar.OELightBrown
OELightOrange = cvar.OELightOrange
OELightGreen = cvar.OELightGreen



OEMolBase.NewGroup = NewGroup

OEMolBase.GetAtomIter = OEMolBase.GetAtoms
OEMolBase.GetBondIter = OEMolBase.GetBonds

OEGraphMol.GetAtomIter = OEGraphMol.GetAtoms
OEGraphMol.GetBondIter = OEGraphMol.GetBonds

OEMCMolBase.GetConfIter = OEMCMolBase.GetConfs

OEMol.GetAtomIter = OEMol.GetAtoms
OEMol.GetBondIter = OEMol.GetBonds
OEMol.GetConfIter = OEMol.GetConfs

OEQMol.GetAtomIter = OEQMol.GetAtoms
OEQMol.GetBondIter = OEQMol.GetBonds

OEAtomBase.GetAtomIter = OEAtomBase.GetAtoms
OEAtomBase.GetBondIter = OEAtomBase.GetBonds

OEMatchBase.GetAtomIter = OEMatchBase.GetAtoms
OEMatchBase.GetBondIter = OEMatchBase.GetBonds

MatchGraphMol = OEMatchGraphMol
MatchMolBase = OEMatchMolBase
MatchAtom = OEMatchAtom

OEMCSSearch.GetMatchIter = OEMCSSearch.Match
OECliqueSearch.GetMatchIter = OECliqueSearch.Match
OESubSearch.GetMatchIter = OESubSearch.Match

OEAcyclicPathIter = OEAcyclicPath
OEGetSDDataIter = OEGetSDDataPairs
OEGetPDBDataIter = OEGetPDBDataPairs

HasAtomIdx = OEHasAtomIdx
HasBondIdx = OEHasBondIdx
HasConfIdx = OEHasConfIdx

HasAtomName = OEHasAtomName
HasChainID = OEHasChainID
HasResidueNumber = OEHasResidueNumber
HasFragmentNumber = OEHasFragmentNumber
HasMapIdx = OEHasMapIdx
HasAtomicNum = OEHasAtomicNum
IsRGroup = OEIsRGroup
NthAtom = OENthAtom

IsHydrogen = OEIsHydrogen
IsHeavy = OEIsHeavy
IsPolar = OEIsPolar
IsPolarHydrogen =  OEIsPolarHydrogen
IsCarbon =  OEIsCarbon
IsCAlpha =  OEIsCAlpha
IsNitrogen =  OEIsNitrogen
IsOxygen = OEIsOxygen
IsHalogen = OEIsHalogen
IsSulfur = OEIsSulfur
IsPhosphorus = OEIsPhosphorus
IsAromaticAtom = OEIsAromaticAtom
IsHalide = OEIsHalide
AtomIsInRing = OEAtomIsInRing
IsChiralAtom = OEIsChiralAtom
HasAtomStereoSpecified = OEHasAtomStereoSpecified
HasAlphaBetaUnsat = OEHasAlphaBetaUnsat
AtomIsInResidue = OEAtomIsInResidue

HasOrder = OEHasOrder
BondIsInRing = OEBondIsInRing
IsRotor = OEIsRotor
IsChiralBond = OEIsChiralBond
HasBondStereoSpecified = OEHasBondStereoSpecified
IsAromaticBond = OEIsAromaticBond
GetNbrAtom = OEGetNbrAtom

InSamePart = OEInSamePart


class OEAnnotation(OEBase):
    """Proxy of C++ OESystem::OEAnnotation 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::OEAnnotation self) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, unsigned int type, char const * title=None) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, unsigned int type) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, OEAnnotation rhs) -> OEAnnotation
        """
        this = _oechem.new_OEAnnotation(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAnnotation
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEAnnotation self) -> void const *"""
        return _oechem.OEAnnotation_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEAnnotation self, void const * type) -> bool"""
        return _oechem.OEAnnotation_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEAnnotation self) -> OEBase"""
        return _oechem.OEAnnotation_CreateCopy(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEAnnotation self) -> char const *"""
        return _oechem.OEAnnotation_GetTitle(self)


    def SetTitle(self, arg2: 'char const *') -> "void":
        """SetTitle(OEAnnotation self, char const * arg2)"""
        return _oechem.OEAnnotation_SetTitle(self, arg2)


    def GetType(self) -> "unsigned int":
        """GetType(OEAnnotation self) -> unsigned int"""
        return _oechem.OEAnnotation_GetType(self)


    def SetType(self, type: 'unsigned int') -> "void":
        """SetType(OEAnnotation self, unsigned int type)"""
        return _oechem.OEAnnotation_SetType(self, type)


    def GetColor(self) -> "OESystem::OEColor":
        """GetColor(OEAnnotation self) -> OEColor"""
        return _oechem.OEAnnotation_GetColor(self)


    def SetColor(self, arg2: 'OEColor') -> "OESystem::OEAnnotation &":
        """SetColor(OEAnnotation self, OEColor arg2) -> OEAnnotation"""
        return _oechem.OEAnnotation_SetColor(self, arg2)


    def GetRenderHint(self) -> "unsigned int":
        """GetRenderHint(OEAnnotation self) -> unsigned int"""
        return _oechem.OEAnnotation_GetRenderHint(self)


    def SetRenderHint(self, hint: 'unsigned int') -> "OESystem::OEAnnotation &":
        """SetRenderHint(OEAnnotation self, unsigned int hint) -> OEAnnotation"""
        return _oechem.OEAnnotation_SetRenderHint(self, hint)


    def AddChild(self, child: 'OEAnnotation') -> "void":
        """AddChild(OEAnnotation self, OEAnnotation child)"""
        return _oechem.OEAnnotation_AddChild(self, child)


    def GetChildren(self) -> "OESystem::OEIterBase< OESystem::OEAnnotation > *":
        """GetChildren(OEAnnotation self) -> OESystem::OEIterBase< OESystem::OEAnnotation > *"""
        return _oechem.OEAnnotation_GetChildren(self)

OEAnnotation_swigregister = _oechem.OEAnnotation_swigregister
OEAnnotation_swigregister(OEAnnotation)
Container = cvar.Container
Sphere = cvar.Sphere
Ellipsoid = cvar.Ellipsoid
Box = cvar.Box
Cylinder = cvar.Cylinder
Arrow = cvar.Arrow
Line = cvar.Line
Surface = cvar.Surface
Spline = cvar.Spline
SplineSurface = cvar.SplineSurface
Torus = cvar.Torus
Text = cvar.Text
Symbol = cvar.Symbol
Solid = cvar.Solid
Mesh = cvar.Mesh
Points = cvar.Points


def OEAnnotateSphere(title: 'char const *', center: 'float *', radius: 'float', hemisphereDirection: 'float *'=None) -> "OESystem::OEAnnotation":
    """
    OEAnnotateSphere(char const * title, float * center, float radius, float * hemisphereDirection=None) -> OEAnnotation
    OEAnnotateSphere(char const * title, float * center, float radius) -> OEAnnotation
    """
    return _oechem.OEAnnotateSphere(title, center, radius, hemisphereDirection)

def OEAnnotateEllipsoid(title: 'char const *', center: 'float *', a: 'float', b: 'float', c: 'float', dir1: 'float *', dir2: 'float *', dir3: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateEllipsoid(char const * title, float * center, float a, float b, float c, float * dir1, float * dir2, float * dir3) -> OEAnnotation"""
    return _oechem.OEAnnotateEllipsoid(title, center, a, b, c, dir1, dir2, dir3)

def OEAnnotateBox(title: 'char const *', center: 'float *', extents: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateBox(char const * title, float * center, float * extents) -> OEAnnotation"""
    return _oechem.OEAnnotateBox(title, center, extents)

def OEAnnotateCylinder(title: 'char const *', A: 'float *', B: 'float *', r1: 'float', r2: 'float') -> "OESystem::OEAnnotation":
    """OEAnnotateCylinder(char const * title, float * A, float * B, float r1, float r2) -> OEAnnotation"""
    return _oechem.OEAnnotateCylinder(title, A, B, r1, r2)

def OEAnnotateArrow(title: 'char const *', A: 'float *', B: 'float *', percentCylinder: 'float', r1: 'float', r2: 'float', r3: 'float') -> "OESystem::OEAnnotation":
    """OEAnnotateArrow(char const * title, float * A, float * B, float percentCylinder, float r1, float r2, float r3) -> OEAnnotation"""
    return _oechem.OEAnnotateArrow(title, A, B, percentCylinder, r1, r2, r3)

def OEAnnotateLine(title: 'char const *', A: 'float *', B: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateLine(char const * title, float * A, float * B) -> OEAnnotation"""
    return _oechem.OEAnnotateLine(title, A, B)

def OEAnnotateSpline(title: 'char const *', coords: 'float *', numPoints: 'unsigned int', splineResolution: 'unsigned int') -> "OESystem::OEAnnotation":
    """OEAnnotateSpline(char const * title, float * coords, unsigned int numPoints, unsigned int splineResolution) -> OEAnnotation"""
    return _oechem.OEAnnotateSpline(title, coords, numPoints, splineResolution)

def OEAnnotateTorus(title: 'char const *', A: 'float *', r1: 'float', r2: 'float', direction: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateTorus(char const * title, float * A, float r1, float r2, float * direction) -> OEAnnotation"""
    return _oechem.OEAnnotateTorus(title, A, r1, r2, direction)

def OEAnnotateText(title: 'char const *', A: 'float *', text: 'char const *') -> "OESystem::OEAnnotation":
    """OEAnnotateText(char const * title, float * A, char const * text) -> OEAnnotation"""
    return _oechem.OEAnnotateText(title, A, text)

def OEAnnotateSymbol(title: 'char const *', A: 'float *', symbol: 'char const *') -> "OESystem::OEAnnotation":
    """OEAnnotateSymbol(char const * title, float * A, char const * symbol) -> OEAnnotation"""
    return _oechem.OEAnnotateSymbol(title, A, symbol)

def OEAnnotateSplineSurface(title: 'char const *', coords: 'float *', numPoints: 'unsigned int', splineResolution: 'unsigned int', segmentResolution: 'int', crossResolution: 'int', width: 'float', thickness: 'float', splineType: 'int', style: 'int') -> "OESystem::OEAnnotation":
    """OEAnnotateSplineSurface(char const * title, float * coords, unsigned int numPoints, unsigned int splineResolution, int segmentResolution, int crossResolution, float width, float thickness, int splineType, int style) -> OEAnnotation"""
    return _oechem.OEAnnotateSplineSurface(title, coords, numPoints, splineResolution, segmentResolution, crossResolution, width, thickness, splineType, style)

def OEInitAnnotationHandlers(hand: 'OEBinaryIOHandlerBase') -> "void":
    """OEInitAnnotationHandlers(OEBinaryIOHandlerBase hand)"""
    return _oechem.OEInitAnnotationHandlers(hand)
class OEAnnotationIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEAnnotation)> 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<(OESystem::OEAnnotation)> self) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OEAnnotationIter rhs) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OESystem::OEIterBase< OESystem::OEAnnotation > * rhs) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEAnnotation >::NonConstA > * rhs) -> OEAnnotationIter
        """
        this = _oechem.new_OEAnnotationIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAnnotationIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEAnnotation > *":
        """Copy(OEAnnotationIter self) -> OESystem::OEIterBase< OESystem::OEAnnotation > *"""
        return _oechem.OEAnnotationIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAnnotationIter self, OESystem::OEIterBase< OESystem::OEAnnotation > * ib)
        Push(OEAnnotationIter self, OEAnnotationIter iter)
        """
        return _oechem.OEAnnotationIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEAnnotation,OESystem::OEAnnotation > const &') -> "void":
        """Sort(OEAnnotationIter self, OESystem::OEBinaryPredicate< OESystem::OEAnnotation,OESystem::OEAnnotation > const & sort_criterion)"""
        return _oechem.OEAnnotationIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """ToFirst(OEAnnotationIter self) -> OEAnnotationIter"""
        return _oechem.OEAnnotationIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """ToLast(OEAnnotationIter self) -> OEAnnotationIter"""
        return _oechem.OEAnnotationIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEAnnotation &":
        """__ref__(OEAnnotationIter self) -> OEAnnotation"""
        return _oechem.OEAnnotationIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAnnotationIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAnnotationIter self) -> PyObject *"""
        return _oechem.OEAnnotationIter_next(self)


    def Target(self) -> "OESystem::OEAnnotation &":
        """Target(OEAnnotationIter self) -> OEAnnotation"""
        return _oechem.OEAnnotationIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """
        Next(OEAnnotationIter self) -> OEAnnotationIter
        Next(OEAnnotationIter self, int i) -> OEAnnotationIter
        """
        return _oechem.OEAnnotationIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """
        Prev(OEAnnotationIter self) -> OEAnnotationIter
        Prev(OEAnnotationIter self, int i) -> OEAnnotationIter
        """
        return _oechem.OEAnnotationIter_Prev(self, *args)

OEAnnotationIter_swigregister = _oechem.OEAnnotationIter_swigregister
OEAnnotationIter_swigregister(OEAnnotationIter)



# Fix reference counting bug for OEAnnotation
def OEAnnotation_SetColor(self,*a):
    self._SetColor(*a)
    return self

def OEAnnotation_SetRenderHint(self,*a):
    self._SetRenderHint(*a)
    return self

def OEAnnotation_AddChild(self,*a):
    self._AddChild(*a)
    return self

OEAnnotation._SetColor      = OEAnnotation.SetColor
OEAnnotation._SetRenderHint = OEAnnotation.SetRenderHint
OEAnnotation._AddChild      = OEAnnotation.AddChild
OEAnnotation.SetColor       = OEAnnotation_SetColor
OEAnnotation.SetRenderHint  = OEAnnotation_SetRenderHint
OEAnnotation.AddChild       = OEAnnotation_AddChild



def OECoordF(x,y,z):
    f = OEFloatArray(3)
    f[0] = x
    f[1] = y
    f[2] = z
    return f

def OECoord(x,y,z):
    f = OEDoubleArray(3)
    f[0] = x
    f[1] = y
    f[2] = z
    return f

def OEToArray(*a):
    f = OEDoubleArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f

def OEToArrayF(*a):
    f = OEFloatArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f

def OEToArrayI(*a):
    f = OEIntArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f


def OEHasExplicitHydrogenExpression(arg1: 'OEQMolBase') -> "bool":
    """OEHasExplicitHydrogenExpression(OEQMolBase arg1) -> bool"""
    return _oechem.OEHasExplicitHydrogenExpression(arg1)

def OEHasImplicitHydrogenExpression(arg1: 'OEQMolBase') -> "bool":
    """OEHasImplicitHydrogenExpression(OEQMolBase arg1) -> bool"""
    return _oechem.OEHasImplicitHydrogenExpression(arg1)

def OEDisassembleExpressions(arg1: 'OEQMolBase') -> "bool":
    """OEDisassembleExpressions(OEQMolBase arg1) -> bool"""
    return _oechem.OEDisassembleExpressions(arg1)
class OEExprBase(object):
    """Proxy of C++ OEChem::OEExprBase 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__ = _oechem.delete_OEExprBase
    __del__ = lambda self: None

    def IsEquivalent(self, *args) -> "OEChem::OEFuzzy const &":
        """
        IsEquivalent(OEExprBase self, OEAtomBase arg2) -> OEFuzzy
        IsEquivalent(OEExprBase self, OEBondBase arg2) -> OEFuzzy
        """
        return _oechem.OEExprBase_IsEquivalent(self, *args)


    def CreateCopy(self) -> "OEChem::OEExprBase *":
        """CreateCopy(OEExprBase self) -> OEExprBase"""
        return _oechem.OEExprBase_CreateCopy(self)


    def GetType(self) -> "unsigned int":
        """GetType(OEExprBase self) -> unsigned int"""
        return _oechem.OEExprBase_GetType(self)

OEExprBase_swigregister = _oechem.OEExprBase_swigregister
OEExprBase_swigregister(OEExprBase)

class OEFuzzy(object):
    """Proxy of C++ OEChem::OEFuzzy 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__(OEChem::OEFuzzy self) -> OEFuzzy
        __init__(OEChem::OEFuzzy self, unsigned int const v) -> OEFuzzy
        """
        this = _oechem.new_OEFuzzy(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEFuzzy___nonzero__(self)



    def __eq__(self, arg2: 'OEFuzzy') -> "bool":
        """__eq__(OEFuzzy self, OEFuzzy arg2) -> bool"""
        return _oechem.OEFuzzy___eq__(self, arg2)


    def __ne__(self, arg2: 'OEFuzzy') -> "bool":
        """__ne__(OEFuzzy self, OEFuzzy arg2) -> bool"""
        return _oechem.OEFuzzy___ne__(self, arg2)


    def __str__(self) -> "std::string":
        """__str__(OEFuzzy self) -> std::string"""
        return _oechem.OEFuzzy___str__(self)

    __swig_destroy__ = _oechem.delete_OEFuzzy
    __del__ = lambda self: None
OEFuzzy_swigregister = _oechem.OEFuzzy_swigregister
OEFuzzy_swigregister(OEFuzzy)


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 *
    """
    return _oechem.GetSWIG_NewPointerObj(*args)

def OEGeom2DMagnitude(*args) -> "double":
    """
    OEGeom2DMagnitude(float * x) -> double
    OEGeom2DMagnitude(double * x) -> double
    """
    return _oechem.OEGeom2DMagnitude(*args)

def OEGeom2DCopy(*args) -> "void":
    """
    OEGeom2DCopy(float * x, float const * p)
    OEGeom2DCopy(double * x, double const * p)
    """
    return _oechem.OEGeom2DCopy(*args)

def OEGeom2DAdd(*args) -> "void":
    """
    OEGeom2DAdd(float * x, float const * p)
    OEGeom2DAdd(float * x, float const * p, float const * q)
    OEGeom2DAdd(double * x, double const * p)
    OEGeom2DAdd(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DAdd(*args)

def OEGeom2DSubtract(*args) -> "void":
    """
    OEGeom2DSubtract(float * x, float const * p)
    OEGeom2DSubtract(float * x, float const * p, float const * q)
    OEGeom2DSubtract(double * x, double const * p)
    OEGeom2DSubtract(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DSubtract(*args)

def OEGeom2DScale(*args) -> "void":
    """
    OEGeom2DScale(float * x, float const p)
    OEGeom2DScale(float * x, float const p, float const * q)
    OEGeom2DScale(double * x, double const p)
    OEGeom2DScale(double * x, double const p, double const * q)
    """
    return _oechem.OEGeom2DScale(*args)

def OEGeom2DDotProd(*args) -> "double":
    """
    OEGeom2DDotProd(float const * p, float const * q) -> double
    OEGeom2DDotProd(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDotProd(*args)

def OEGeom2DDistance(*args) -> "double":
    """
    OEGeom2DDistance(float const * p, float const * q) -> double
    OEGeom2DDistance(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDistance(*args)

def OEGeom2DDistance2(*args) -> "double":
    """
    OEGeom2DDistance2(float const * p, float const * q) -> double
    OEGeom2DDistance2(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDistance2(*args)

def OEGeom2DAngle(*args) -> "double":
    """
    OEGeom2DAngle(float const * p, float const * q, float const * r) -> double
    OEGeom2DAngle(double const * p, double const * q, double const * r) -> double
    """
    return _oechem.OEGeom2DAngle(*args)

def OEGeom2DMidpoint(*args) -> "void":
    """
    OEGeom2DMidpoint(float * x, float const * p, float const * q)
    OEGeom2DMidpoint(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DMidpoint(*args)

def OEGeom2DNormalize(*args) -> "void":
    """
    OEGeom2DNormalize(float * x)
    OEGeom2DNormalize(double * x)
    """
    return _oechem.OEGeom2DNormalize(*args)

def OEGeom2DSetLength(*args) -> "void":
    """
    OEGeom2DSetLength(float * x, float len)
    OEGeom2DSetLength(double * x, double len)
    """
    return _oechem.OEGeom2DSetLength(*args)

def OEGeom2DTranslate(*args) -> "void":
    """
    OEGeom2DTranslate(float * xyz, float const * t, unsigned int ncoord)
    OEGeom2DTranslate(double * xyz, double const * t, unsigned int ncoord)
    """
    return _oechem.OEGeom2DTranslate(*args)

def OEGeom2DRotate(*args) -> "void":
    """
    OEGeom2DRotate(float * xyz, float const * m, unsigned int ncoord)
    OEGeom2DRotate(double * xyz, double const * m, unsigned int ncoord)
    """
    return _oechem.OEGeom2DRotate(*args)

def OEGeom3DMagnitude(*args) -> "double":
    """
    OEGeom3DMagnitude(float * x) -> double
    OEGeom3DMagnitude(double * x) -> double
    """
    return _oechem.OEGeom3DMagnitude(*args)

def OEGeom3DCopy(*args) -> "void":
    """
    OEGeom3DCopy(float * x, float const * p)
    OEGeom3DCopy(double * x, double const * p)
    """
    return _oechem.OEGeom3DCopy(*args)

def OEGeom3DAdd(*args) -> "void":
    """
    OEGeom3DAdd(float * x, float const * p)
    OEGeom3DAdd(double * x, double const * p)
    OEGeom3DAdd(float * x, float const * p, float const * q)
    OEGeom3DAdd(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom3DAdd(*args)

def OEGeom3DSubtract(*args) -> "void":
    """
    OEGeom3DSubtract(float * x, float const * p)
    OEGeom3DSubtract(double * x, double const * p)
    OEGeom3DSubtract(float * x, float const * p, float const * q)
    OEGeom3DSubtract(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom3DSubtract(*args)

def OEGeom3DScale(*args) -> "void":
    """
    OEGeom3DScale(float * x, float const p)
    OEGeom3DScale(float * x, float const p, float const * q)
    OEGeom3DScale(double * x, double const p)
    OEGeom3DScale(double * x, double const p, double const * q)
    """
    return _oechem.OEGeom3DScale(*args)

def OEGeom3DDotProd(*args) -> "double":
    """
    OEGeom3DDotProd(float const * p, float const * q) -> double
    OEGeom3DDotProd(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDotProd(*args)

def OEGeom3DCrossProd(*args) -> "void":
    """
    OEGeom3DCrossProd(float * x, float const * p, float const * q)
    OEGeom3DCrossProd(double * x, double const * p, double const * q)
    OEGeom3DCrossProd(float * x, float const * p, float const * q, float const * r)
    OEGeom3DCrossProd(double * x, double const * p, double const * q, double const * r)
    """
    return _oechem.OEGeom3DCrossProd(*args)

def OEGeom3DDistance(*args) -> "double":
    """
    OEGeom3DDistance(float const * p, float const * q) -> double
    OEGeom3DDistance(float const * p, double const * q) -> double
    OEGeom3DDistance(double const * p, float const * q) -> double
    OEGeom3DDistance(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDistance(*args)

def OEGeom3DDistance2(*args) -> "double":
    """
    OEGeom3DDistance2(float const * p, float const * q) -> double
    OEGeom3DDistance2(float const * p, double const * q) -> double
    OEGeom3DDistance2(double const * p, float const * q) -> double
    OEGeom3DDistance2(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDistance2(*args)

def OEGeom3DAngle(*args) -> "double":
    """
    OEGeom3DAngle(float const * p, float const * q, float const * r) -> double
    OEGeom3DAngle(double const * p, double const * q, double const * r) -> double
    OEGeom3DAngle(float const * p, float const * q) -> double
    OEGeom3DAngle(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DAngle(*args)

def OEGeom3DTorsion(*args) -> "double":
    """
    OEGeom3DTorsion(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DTorsion(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DTorsion(*args)

def OEGeom3DAbsTorsion(*args) -> "double":
    """
    OEGeom3DAbsTorsion(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DAbsTorsion(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DAbsTorsion(*args)

def OEGeom3DVolume(*args) -> "double":
    """
    OEGeom3DVolume(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DVolume(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DVolume(*args)

def OEGeom3DNormalize(*args) -> "void":
    """
    OEGeom3DNormalize(float * x)
    OEGeom3DNormalize(double * x)
    """
    return _oechem.OEGeom3DNormalize(*args)

def OEGeom3DSetLength(*args) -> "void":
    """
    OEGeom3DSetLength(float * x, float len)
    OEGeom3DSetLength(double * x, double len)
    """
    return _oechem.OEGeom3DSetLength(*args)

def OEGeom3DTranslate(*args) -> "void":
    """
    OEGeom3DTranslate(float * xyz, double const * t, unsigned int ncoord)
    OEGeom3DTranslate(float * xyz, double const * t, unsigned int * idx, unsigned int ncoord)
    OEGeom3DTranslate(double * xyz, double const * t, unsigned int ncoord)
    OEGeom3DTranslate(double * xyz, double const * t, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DTranslate(*args)

def OEGeom3DRotate(*args) -> "void":
    """
    OEGeom3DRotate(float * xyz, double const * m, unsigned int ncoord)
    OEGeom3DRotate(float * xyz, double const * m, unsigned int * idx, unsigned int ncoord)
    OEGeom3DRotate(double * xyz, double const * m, unsigned int ncoord)
    OEGeom3DRotate(double * xyz, double const * m, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DRotate(*args)

def OEGeom3DReflect(*args) -> "void":
    """
    OEGeom3DReflect(float * xyz, unsigned int axis_to_reflect_around, unsigned int ncoord)
    OEGeom3DReflect(double * xyz, unsigned int axis_to_reflect_around, unsigned int ncoord)
    """
    return _oechem.OEGeom3DReflect(*args)

def OEGeom3DRotVectorToTransform(*args) -> "bool":
    """
    OEGeom3DRotVectorToTransform(double * m, double * tran, float const * p1, float const * p2, float const theta) -> bool
    OEGeom3DRotVectorToTransform(double * m, double * tran, double const * p1, double const * p2, double const theta) -> bool
    """
    return _oechem.OEGeom3DRotVectorToTransform(*args)

def OEGeom3DEulerRotate(*args) -> "void":
    """
    OEGeom3DEulerRotate(float * xyz, double const * angles, unsigned int ncoord)
    OEGeom3DEulerRotate(double * xyz, double const * angles, unsigned int ncoord)
    """
    return _oechem.OEGeom3DEulerRotate(*args)

def OEGeom3DAngleCoord(*args) -> "void":
    """
    OEGeom3DAngleCoord(float * dst, float const * center, float const * r1, float ang, float len)
    OEGeom3DAngleCoord(float * dst, float const * center, float const * r1, float const * n, float ang, float len)
    OEGeom3DAngleCoord(double * dst, double const * center, double const * r1, double ang, double len)
    OEGeom3DAngleCoord(double * dst, double const * center, double const * r1, double const * n, double ang, double len)
    """
    return _oechem.OEGeom3DAngleCoord(*args)

def OEGeom3DPlanarCoord(*args) -> "void":
    """
    OEGeom3DPlanarCoord(float * dst, float const * center, float const * r1, float const * r2, float len)
    OEGeom3DPlanarCoord(double * dst, double const * center, double const * r1, double const * r2, double len)
    """
    return _oechem.OEGeom3DPlanarCoord(*args)

def OEGeom3DTetraCoord(*args) -> "void":
    """
    OEGeom3DTetraCoord(float * dst, float const * center, float const * r1, float const * r2, float len)
    OEGeom3DTetraCoord(float * dst, float const * center, float const * r1, float const * r2, float const * r3, float len)
    OEGeom3DTetraCoord(double * dst, double const * center, double const * r1, double const * r2, double len)
    OEGeom3DTetraCoord(double * dst, double const * center, double const * r1, double const * r2, double const * r3, double len)
    """
    return _oechem.OEGeom3DTetraCoord(*args)

def OEGeom3DEulerToRotMatrix(*args) -> "void":
    """
    OEGeom3DEulerToRotMatrix(double * RMat, double const phi, double const theta, double const psi)
    OEGeom3DEulerToRotMatrix(double * RMat, double const * angles)
    """
    return _oechem.OEGeom3DEulerToRotMatrix(*args)

def OEGeomQuaternionMultiply(Product: 'double *', qLhs: 'double const *', qRhs: 'double const *') -> "void":
    """OEGeomQuaternionMultiply(double * Product, double const * qLhs, double const * qRhs)"""
    return _oechem.OEGeomQuaternionMultiply(Product, qLhs, qRhs)

def OEGeomNormalizeQuaternion(quaternion: 'double *') -> "void":
    """OEGeomNormalizeQuaternion(double * quaternion)"""
    return _oechem.OEGeomNormalizeQuaternion(quaternion)

def OEGeom3DMakeQuaternion(quat: 'double *', vec: 'double const *', angle: 'double const') -> "void":
    """OEGeom3DMakeQuaternion(double * quat, double const * vec, double const angle)"""
    return _oechem.OEGeom3DMakeQuaternion(quat, vec, angle)

def OEGeom3DQuaternionInvert(iquat: 'double *', quat: 'double const *') -> "void":
    """OEGeom3DQuaternionInvert(double * iquat, double const * quat)"""
    return _oechem.OEGeom3DQuaternionInvert(iquat, quat)

def OEGeom3DQuaternionToRotMatrix(RMat: 'double *', quat: 'double const *') -> "void":
    """OEGeom3DQuaternionToRotMatrix(double * RMat, double const * quat)"""
    return _oechem.OEGeom3DQuaternionToRotMatrix(RMat, quat)

def OEGeom3DEulerToQuaternion(quat: 'double *', angles: 'double const *') -> "void":
    """OEGeom3DEulerToQuaternion(double * quat, double const * angles)"""
    return _oechem.OEGeom3DEulerToQuaternion(quat, angles)

def OEGeom3DMatrixIdentity(rmat: 'double *') -> "void":
    """OEGeom3DMatrixIdentity(double * rmat)"""
    return _oechem.OEGeom3DMatrixIdentity(rmat)

def OEGeom3DMatrixMultiply(*args) -> "void":
    """
    OEGeom3DMatrixMultiply(double * accumulator, double const * add)
    OEGeom3DMatrixMultiply(double * Product, double const * init, double const * add)
    """
    return _oechem.OEGeom3DMatrixMultiply(*args)

def OEGeom3DMatrixInvert(mi: 'double *', m: 'double const *') -> "bool":
    """OEGeom3DMatrixInvert(double * mi, double const * m) -> bool"""
    return _oechem.OEGeom3DMatrixInvert(mi, m)

def OEGeom3DMatrixTranspose(mat: 'double *') -> "void":
    """OEGeom3DMatrixTranspose(double * mat)"""
    return _oechem.OEGeom3DMatrixTranspose(mat)

def OEGeom3DQuaternionIdentity(quat: 'double *') -> "void":
    """OEGeom3DQuaternionIdentity(double * quat)"""
    return _oechem.OEGeom3DQuaternionIdentity(quat)

def OEGeom3DQuaternionRotate(*args) -> "void":
    """
    OEGeom3DQuaternionRotate(float * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DQuaternionRotate(float * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    OEGeom3DQuaternionRotate(double * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DQuaternionRotate(double * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DQuaternionRotate(*args)

def OEGeom3DUnitQuaternionRotate(*args) -> "void":
    """
    OEGeom3DUnitQuaternionRotate(float * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(float * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(double * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(double * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DUnitQuaternionRotate(*args)

def OEGeomDotProd(*args) -> "double":
    """
    OEGeomDotProd(float const * p, float const * q, unsigned int arg3) -> double
    OEGeomDotProd(double const * p, double const * q, unsigned int arg3) -> double
    """
    return _oechem.OEGeomDotProd(*args)

def OEGeom3DGetCenterAndExtents(*args) -> "void":
    """
    OEGeom3DGetCenterAndExtents(float const * xyz, unsigned int ncoord, float * center, float * extents)
    OEGeom3DGetCenterAndExtents(double const * xyz, unsigned int ncoord, double * center, double * extents)
    """
    return _oechem.OEGeom3DGetCenterAndExtents(*args)

def OEGeom3DGetCenterOfMass(*args) -> "void":
    """
    OEGeom3DGetCenterOfMass(float const * xyz, unsigned int ncoord, float * com, float * weights)
    OEGeom3DGetCenterOfMass(double const * xyz, unsigned int ncoord, double * com, double * weights)
    OEGeom3DGetCenterOfMass(float const * xyz, unsigned int ncoord, float * com)
    OEGeom3DGetCenterOfMass(double const * xyz, unsigned int ncoord, double * com)
    """
    return _oechem.OEGeom3DGetCenterOfMass(*args)


def IsPythonCommandlineInterpreter():
    import sys
    if sys.flags.interactive:
        return True

    import os
    if "PYTHONINSPECT" in os.environ:
        return True

    import __main__
    if (not hasattr(__main__, "__file__") and
        sys.argv and sys.argv[0] != "-c"):
        return True

    return False

def TextModeStdin():
    import os
    import msvcrt
    STDIN_FILENO = 0
    msvcrt.setmode(STDIN_FILENO, os.O_TEXT)

import sys
if sys.platform.startswith("win"):
    if IsPythonCommandlineInterpreter():
        TextModeStdin()

del sys

class OESimilarByRMSD(OEBinaryConfPred):
    """Proxy of C++ OEChem::OESimilarByRMSD 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__(OEChem::OESimilarByRMSD self, double const argRmsd) -> OESimilarByRMSD
        __init__(OEChem::OESimilarByRMSD self, OESimilarByRMSD argPredicate) -> OESimilarByRMSD
        """
        this = _oechem.new_OESimilarByRMSD(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESimilarByRMSD
    __del__ = lambda self: None

    def __call__(self, argConf1: 'OEConfBase', argConf2: 'OEConfBase') -> "bool":
        """__call__(OESimilarByRMSD self, OEConfBase argConf1, OEConfBase argConf2) -> bool"""
        return _oechem.OESimilarByRMSD___call__(self, argConf1, argConf2)


    def CreateCopy(self, *args):
        try:
            return _oechem.OESimilarByRMSD_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OESimilarByRMSD_swigregister = _oechem.OESimilarByRMSD_swigregister
OESimilarByRMSD_swigregister(OESimilarByRMSD)
FzFalse = cvar.FzFalse
FzTrue = cvar.FzTrue
FzMaybe = cvar.FzMaybe

class OEMolPropertyFxn(object):
    """Proxy of C++ OEChem::OEMolPropertyFxn class."""

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

    def Has(self, *args) -> "bool":
        """
        Has(OEMolPropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolPropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oechem.OEMolPropertyFxn_Has(self, *args)


    def Get(self, *args) -> "double":
        """
        Get(OEMolPropertyFxn self, OEMolBase mol) -> double
        Get(OEMolPropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oechem.OEMolPropertyFxn_Get(self, *args)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMolPropertyFxn_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oechem.delete_OEMolPropertyFxn
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEChem::OEMolPropertyFxn self) -> OEMolPropertyFxn
        __init__(OEChem::OEMolPropertyFxn self, OEMolPropertyFxn arg2) -> OEMolPropertyFxn
        """
        if self.__class__ == OEMolPropertyFxn:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEMolPropertyFxn(_self, *args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEMolPropertyFxn(self)
        return weakref_proxy(self)
OEMolPropertyFxn_swigregister = _oechem.OEMolPropertyFxn_swigregister
OEMolPropertyFxn_swigregister(OEMolPropertyFxn)

class OEMolSDPropertyFxn(OEMolPropertyFxn):
    """Proxy of C++ OEChem::OEMolSDPropertyFxn 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__(OEChem::OEMolSDPropertyFxn self, std::string const & tag) -> OEMolSDPropertyFxn
        __init__(OEChem::OEMolSDPropertyFxn self, OEMolSDPropertyFxn arg2) -> OEMolSDPropertyFxn
        """
        this = _oechem.new_OEMolSDPropertyFxn(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolSDPropertyFxn
    __del__ = lambda self: None

    def Has(self, *args) -> "bool":
        """
        Has(OEMolSDPropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolSDPropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oechem.OEMolSDPropertyFxn_Has(self, *args)


    def Get(self, *args) -> "double":
        """
        Get(OEMolSDPropertyFxn self, OEMolBase mol) -> double
        Get(OEMolSDPropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oechem.OEMolSDPropertyFxn_Get(self, *args)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMolSDPropertyFxn_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEMolSDPropertyFxn_swigregister = _oechem.OEMolSDPropertyFxn_swigregister
OEMolSDPropertyFxn_swigregister(OEMolSDPropertyFxn)

class OEMolGDPropertyFxn(OEMolPropertyFxn):
    """Proxy of C++ OEChem::OEMolGDPropertyFxn 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__(OEChem::OEMolGDPropertyFxn self, std::string const & tag) -> OEMolGDPropertyFxn
        __init__(OEChem::OEMolGDPropertyFxn self, OEMolGDPropertyFxn arg2) -> OEMolGDPropertyFxn
        """
        this = _oechem.new_OEMolGDPropertyFxn(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolGDPropertyFxn
    __del__ = lambda self: None

    def Has(self, *args) -> "bool":
        """
        Has(OEMolGDPropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolGDPropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oechem.OEMolGDPropertyFxn_Has(self, *args)


    def Get(self, *args) -> "double":
        """
        Get(OEMolGDPropertyFxn self, OEMolBase mol) -> double
        Get(OEMolGDPropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oechem.OEMolGDPropertyFxn_Get(self, *args)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMolGDPropertyFxn_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEMolGDPropertyFxn_swigregister = _oechem.OEMolGDPropertyFxn_swigregister
OEMolGDPropertyFxn_swigregister(OEMolGDPropertyFxn)

class OEMolTaggedPropertyFxn(OEMolPropertyFxn):
    """Proxy of C++ OEChem::OEMolTaggedPropertyFxn 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__(OEChem::OEMolTaggedPropertyFxn self, std::string const & tag) -> OEMolTaggedPropertyFxn
        __init__(OEChem::OEMolTaggedPropertyFxn self, OEMolTaggedPropertyFxn arg2) -> OEMolTaggedPropertyFxn
        """
        this = _oechem.new_OEMolTaggedPropertyFxn(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolTaggedPropertyFxn
    __del__ = lambda self: None

    def Has(self, *args) -> "bool":
        """
        Has(OEMolTaggedPropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolTaggedPropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oechem.OEMolTaggedPropertyFxn_Has(self, *args)


    def Get(self, *args) -> "double":
        """
        Get(OEMolTaggedPropertyFxn self, OEMolBase mol) -> double
        Get(OEMolTaggedPropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oechem.OEMolTaggedPropertyFxn_Get(self, *args)


    def CreateCopy(self, *args):
        try:
            return _oechem.OEMolTaggedPropertyFxn_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


OEMolTaggedPropertyFxn_swigregister = _oechem.OEMolTaggedPropertyFxn_swigregister
OEMolTaggedPropertyFxn_swigregister(OEMolTaggedPropertyFxn)

class OEMolPropertyList(object):
    """Proxy of C++ OEChem::OEMolPropertyList 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__(OEChem::OEMolPropertyList self) -> OEMolPropertyList
        __init__(OEChem::OEMolPropertyList self, OEMolPropertyList arg2) -> OEMolPropertyList
        """
        this = _oechem.new_OEMolPropertyList(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolPropertyList
    __del__ = lambda self: None

    def HasProperties(self, *args) -> "bool":
        """
        HasProperties(OEMolPropertyList self, OEMolBase arg2) -> bool
        HasProperties(OEMolPropertyList self, OEMCMolBase arg2) -> bool
        """
        return _oechem.OEMolPropertyList_HasProperties(self, *args)


    def GetSize(self) -> "size_t":
        """GetSize(OEMolPropertyList self) -> size_t"""
        return _oechem.OEMolPropertyList_GetSize(self)


    def GetProperty(self, *args) -> "double":
        """
        GetProperty(OEMolPropertyList self, OEMolBase arg2, size_t index) -> double
        GetProperty(OEMolPropertyList self, OEMCMolBase arg2, size_t index) -> double
        """
        return _oechem.OEMolPropertyList_GetProperty(self, *args)


    def CreateCopy(self) -> "OEChem::OEMolPropertyList *":
        """CreateCopy(OEMolPropertyList self) -> OEMolPropertyList"""
        return _oechem.OEMolPropertyList_CreateCopy(self)


    def Add(self, arg2: 'OEMolPropertyFxn') -> "void":
        """Add(OEMolPropertyList self, OEMolPropertyFxn arg2)"""
        return _oechem.OEMolPropertyList_Add(self, arg2)


    def Clear(self) -> "void":
        """Clear(OEMolPropertyList self)"""
        return _oechem.OEMolPropertyList_Clear(self)

OEMolPropertyList_swigregister = _oechem.OEMolPropertyList_swigregister
OEMolPropertyList_swigregister(OEMolPropertyList)

class UAtomPredParameterPointer(OEParameter):
    """Proxy of C++ OESystem::OEPointerParameter<(OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)>)> 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__ = _oechem.delete_UAtomPredParameterPointer
    __del__ = lambda self: None

    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(UAtomPredParameterPointer self) -> void const *"""
        return _oechem.UAtomPredParameterPointer_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(UAtomPredParameterPointer self) -> std::string"""
        return _oechem.UAtomPredParameterPointer_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(UAtomPredParameterPointer self) -> void const *"""
        return _oechem.UAtomPredParameterPointer_FactoryTypeID(self)


    def AddLegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddLegalValue(UAtomPredParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.UAtomPredParameterPointer_AddLegalValue(self, arg2)


    def AddIllegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddIllegalValue(UAtomPredParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.UAtomPredParameterPointer_AddIllegalValue(self, arg2)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(UAtomPredParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.UAtomPredParameterPointer_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(UAtomPredParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.UAtomPredParameterPointer_AddIllegalRange(self, arg2, arg3)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(UAtomPredParameterPointer self, unsigned char * arg2) -> size_t"""
        return _oechem.UAtomPredParameterPointer_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(UAtomPredParameterPointer self, unsigned char const * arg2) -> size_t"""
        return _oechem.UAtomPredParameterPointer_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(UAtomPredParameterPointer self) -> size_t"""
        return _oechem.UAtomPredParameterPointer_ValueAndDefaultBinarySize(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(UAtomPredParameterPointer self) -> bool"""
        return _oechem.UAtomPredParameterPointer_LoadDefault(self)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(UAtomPredParameterPointer self, unsigned int const idx=0) -> bool
        GetHasValue(UAtomPredParameterPointer self) -> bool
        """
        return _oechem.UAtomPredParameterPointer_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(UAtomPredParameterPointer self, unsigned int const idx=0) -> bool
        GetHasDefault(UAtomPredParameterPointer self) -> bool
        """
        return _oechem.UAtomPredParameterPointer_GetHasDefault(self, idx)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(UAtomPredParameterPointer self) -> OEParameter"""
        return _oechem.UAtomPredParameterPointer_CreateCopy(self)

UAtomPredParameterPointer_swigregister = _oechem.UAtomPredParameterPointer_swigregister
UAtomPredParameterPointer_swigregister(UAtomPredParameterPointer)

class UBondPredParameterPointer(OEParameter):
    """Proxy of C++ OESystem::OEPointerParameter<(OESystem::OEUnaryPredicate<(OEChem::OEBondBase)>)> 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__ = _oechem.delete_UBondPredParameterPointer
    __del__ = lambda self: None

    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(UBondPredParameterPointer self) -> void const *"""
        return _oechem.UBondPredParameterPointer_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(UBondPredParameterPointer self) -> std::string"""
        return _oechem.UBondPredParameterPointer_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(UBondPredParameterPointer self) -> void const *"""
        return _oechem.UBondPredParameterPointer_FactoryTypeID(self)


    def AddLegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddLegalValue(UBondPredParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.UBondPredParameterPointer_AddLegalValue(self, arg2)


    def AddIllegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddIllegalValue(UBondPredParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.UBondPredParameterPointer_AddIllegalValue(self, arg2)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(UBondPredParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.UBondPredParameterPointer_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(UBondPredParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.UBondPredParameterPointer_AddIllegalRange(self, arg2, arg3)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(UBondPredParameterPointer self, unsigned char * arg2) -> size_t"""
        return _oechem.UBondPredParameterPointer_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(UBondPredParameterPointer self, unsigned char const * arg2) -> size_t"""
        return _oechem.UBondPredParameterPointer_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(UBondPredParameterPointer self) -> size_t"""
        return _oechem.UBondPredParameterPointer_ValueAndDefaultBinarySize(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(UBondPredParameterPointer self) -> bool"""
        return _oechem.UBondPredParameterPointer_LoadDefault(self)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(UBondPredParameterPointer self, unsigned int const idx=0) -> bool
        GetHasValue(UBondPredParameterPointer self) -> bool
        """
        return _oechem.UBondPredParameterPointer_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(UBondPredParameterPointer self, unsigned int const idx=0) -> bool
        GetHasDefault(UBondPredParameterPointer self) -> bool
        """
        return _oechem.UBondPredParameterPointer_GetHasDefault(self, idx)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(UBondPredParameterPointer self) -> OEParameter"""
        return _oechem.UBondPredParameterPointer_CreateCopy(self)

UBondPredParameterPointer_swigregister = _oechem.UBondPredParameterPointer_swigregister
UBondPredParameterPointer_swigregister(UBondPredParameterPointer)

class SSParameterTyped(OEParameter):
    """Proxy of C++ OESystem::OETypedParameter<(OEChem::OESubSearch)> 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__ = _oechem.delete_SSParameterTyped
    __del__ = lambda self: None

    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(SSParameterTyped self, unsigned int const idx=0) -> bool
        GetHasValue(SSParameterTyped self) -> bool
        """
        return _oechem.SSParameterTyped_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(SSParameterTyped self, unsigned int const idx=0) -> bool
        GetHasDefault(SSParameterTyped self) -> bool
        """
        return _oechem.SSParameterTyped_GetHasDefault(self, idx)


    def GetValue(self, value: 'OESubSearch', idx: 'unsigned int const'=0) -> "bool":
        """
        GetValue(SSParameterTyped self, OESubSearch value, unsigned int const idx=0) -> bool
        GetValue(SSParameterTyped self, OESubSearch value) -> bool
        """
        return _oechem.SSParameterTyped_GetValue(self, value, idx)


    def GetDefault(self, dflt: 'OESubSearch', idx: 'unsigned int const'=0) -> "bool":
        """
        GetDefault(SSParameterTyped self, OESubSearch dflt, unsigned int const idx=0) -> bool
        GetDefault(SSParameterTyped self, OESubSearch dflt) -> bool
        """
        return _oechem.SSParameterTyped_GetDefault(self, dflt, idx)


    def GetSetting(self, setting: 'OESubSearch', idx: 'unsigned int const'=0) -> "bool":
        """
        GetSetting(SSParameterTyped self, OESubSearch setting, unsigned int const idx=0) -> bool
        GetSetting(SSParameterTyped self, OESubSearch setting) -> bool
        """
        return _oechem.SSParameterTyped_GetSetting(self, setting, idx)


    def ClearValues(self) -> "bool":
        """ClearValues(SSParameterTyped self) -> bool"""
        return _oechem.SSParameterTyped_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(SSParameterTyped self) -> bool"""
        return _oechem.SSParameterTyped_ClearDefaults(self)


    def LoadValue(self) -> "bool":
        """LoadValue(SSParameterTyped self) -> bool"""
        return _oechem.SSParameterTyped_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(SSParameterTyped self) -> bool"""
        return _oechem.SSParameterTyped_LoadDefault(self)


    def AddValue(self, value: 'OESubSearch') -> "bool":
        """AddValue(SSParameterTyped self, OESubSearch value) -> bool"""
        return _oechem.SSParameterTyped_AddValue(self, value)


    def AddDefault(self, dflt: 'OESubSearch') -> "bool":
        """AddDefault(SSParameterTyped self, OESubSearch dflt) -> bool"""
        return _oechem.SSParameterTyped_AddDefault(self, dflt)


    def SetValue(self, value: 'OESubSearch') -> "bool":
        """SetValue(SSParameterTyped self, OESubSearch value) -> bool"""
        return _oechem.SSParameterTyped_SetValue(self, value)


    def SetDefault(self, dflt: 'OESubSearch') -> "bool":
        """SetDefault(SSParameterTyped self, OESubSearch dflt) -> bool"""
        return _oechem.SSParameterTyped_SetDefault(self, dflt)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(SSParameterTyped self) -> void const *"""
        return _oechem.SSParameterTyped_TypedParameterTypeID(self)

SSParameterTyped_swigregister = _oechem.SSParameterTyped_swigregister
SSParameterTyped_swigregister(SSParameterTyped)

class SSParameterNonCl(SSParameterTyped):
    """Proxy of C++ OESystem::OENonClParameter<(OEChem::OESubSearch)> 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__ = _oechem.delete_SSParameterNonCl
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(SSParameterNonCl self) -> OEParameter"""
        return _oechem.SSParameterNonCl_CreateCopy(self)

SSParameterNonCl_swigregister = _oechem.SSParameterNonCl_swigregister
SSParameterNonCl_swigregister(SSParameterNonCl)

class MolParameterPointer(OEParameter):
    """Proxy of C++ OESystem::OEPointerParameter<(OEChem::OEMolBase)> 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__ = _oechem.delete_MolParameterPointer
    __del__ = lambda self: None

    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(MolParameterPointer self) -> void const *"""
        return _oechem.MolParameterPointer_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(MolParameterPointer self) -> std::string"""
        return _oechem.MolParameterPointer_ClassID(self)


    def FactoryTypeID(self) -> "void const *":
        """FactoryTypeID(MolParameterPointer self) -> void const *"""
        return _oechem.MolParameterPointer_FactoryTypeID(self)


    def AddLegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddLegalValue(MolParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.MolParameterPointer_AddLegalValue(self, arg2)


    def AddIllegalValue(self, arg2: 'std::string const &') -> "bool":
        """AddIllegalValue(MolParameterPointer self, std::string const & arg2) -> bool"""
        return _oechem.MolParameterPointer_AddIllegalValue(self, arg2)


    def AddLegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddLegalRange(MolParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.MolParameterPointer_AddLegalRange(self, arg2, arg3)


    def AddIllegalRange(self, arg2: 'std::string const &', arg3: 'std::string const &') -> "bool":
        """AddIllegalRange(MolParameterPointer self, std::string const & arg2, std::string const & arg3) -> bool"""
        return _oechem.MolParameterPointer_AddIllegalRange(self, arg2, arg3)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(MolParameterPointer self, unsigned char * arg2) -> size_t"""
        return _oechem.MolParameterPointer_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(MolParameterPointer self, unsigned char const * arg2) -> size_t"""
        return _oechem.MolParameterPointer_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(MolParameterPointer self) -> size_t"""
        return _oechem.MolParameterPointer_ValueAndDefaultBinarySize(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(MolParameterPointer self) -> bool"""
        return _oechem.MolParameterPointer_LoadDefault(self)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(MolParameterPointer self, unsigned int const idx=0) -> bool
        GetHasValue(MolParameterPointer self) -> bool
        """
        return _oechem.MolParameterPointer_GetHasValue(self, idx)


    def GetHasDefault(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasDefault(MolParameterPointer self, unsigned int const idx=0) -> bool
        GetHasDefault(MolParameterPointer self) -> bool
        """
        return _oechem.MolParameterPointer_GetHasDefault(self, idx)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(MolParameterPointer self) -> OEParameter"""
        return _oechem.MolParameterPointer_CreateCopy(self)

MolParameterPointer_swigregister = _oechem.MolParameterPointer_swigregister
MolParameterPointer_swigregister(MolParameterPointer)

class UAtomPredParameterPred(UAtomPredParameterPointer):
    """Proxy of C++ OEChem::OEPredicateParameter<(OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)>)> 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__ = _oechem.delete_UAtomPredParameterPred
    __del__ = lambda self: None

    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(UAtomPredParameterPred self, unsigned char * arg2) -> size_t"""
        return _oechem.UAtomPredParameterPred_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(UAtomPredParameterPred self, unsigned char const * arg2) -> size_t"""
        return _oechem.UAtomPredParameterPred_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(UAtomPredParameterPred self) -> size_t"""
        return _oechem.UAtomPredParameterPred_ValueAndDefaultBinarySize(self)


    def LoadValue(self) -> "bool":
        """LoadValue(UAtomPredParameterPred self) -> bool"""
        return _oechem.UAtomPredParameterPred_LoadValue(self)


    def SetDefault(self, value: 'OEUnaryAtomPred') -> "bool":
        """SetDefault(UAtomPredParameterPred self, OEUnaryAtomPred value) -> bool"""
        return _oechem.UAtomPredParameterPred_SetDefault(self, value)


    def GetDefault(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetDefault(UAtomPredParameterPred self) -> OEUnaryAtomPred"""
        return _oechem.UAtomPredParameterPred_GetDefault(self)


    def SetValue(self, value: 'OEUnaryAtomPred') -> "bool":
        """SetValue(UAtomPredParameterPred self, OEUnaryAtomPred value) -> bool"""
        return _oechem.UAtomPredParameterPred_SetValue(self, value)


    def GetValue(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetValue(UAtomPredParameterPred self) -> OEUnaryAtomPred"""
        return _oechem.UAtomPredParameterPred_GetValue(self)


    def GetSetting(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetSetting(UAtomPredParameterPred self) -> OEUnaryAtomPred"""
        return _oechem.UAtomPredParameterPred_GetSetting(self)


    def IsValidString(self, arg2: 'std::string const &') -> "bool":
        """IsValidString(UAtomPredParameterPred self, std::string const & arg2) -> bool"""
        return _oechem.UAtomPredParameterPred_IsValidString(self, arg2)

UAtomPredParameterPred_swigregister = _oechem.UAtomPredParameterPred_swigregister
UAtomPredParameterPred_swigregister(UAtomPredParameterPred)

class UBondPredParameterPred(UBondPredParameterPointer):
    """Proxy of C++ OEChem::OEPredicateParameter<(OESystem::OEUnaryPredicate<(OEChem::OEBondBase)>)> 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__ = _oechem.delete_UBondPredParameterPred
    __del__ = lambda self: None

    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(UBondPredParameterPred self, unsigned char * arg2) -> size_t"""
        return _oechem.UBondPredParameterPred_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(UBondPredParameterPred self, unsigned char const * arg2) -> size_t"""
        return _oechem.UBondPredParameterPred_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(UBondPredParameterPred self) -> size_t"""
        return _oechem.UBondPredParameterPred_ValueAndDefaultBinarySize(self)


    def LoadValue(self) -> "bool":
        """LoadValue(UBondPredParameterPred self) -> bool"""
        return _oechem.UBondPredParameterPred_LoadValue(self)


    def SetDefault(self, value: 'OEUnaryBondPred') -> "bool":
        """SetDefault(UBondPredParameterPred self, OEUnaryBondPred value) -> bool"""
        return _oechem.UBondPredParameterPred_SetDefault(self, value)


    def GetDefault(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """GetDefault(UBondPredParameterPred self) -> OEUnaryBondPred"""
        return _oechem.UBondPredParameterPred_GetDefault(self)


    def SetValue(self, value: 'OEUnaryBondPred') -> "bool":
        """SetValue(UBondPredParameterPred self, OEUnaryBondPred value) -> bool"""
        return _oechem.UBondPredParameterPred_SetValue(self, value)


    def GetValue(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """GetValue(UBondPredParameterPred self) -> OEUnaryBondPred"""
        return _oechem.UBondPredParameterPred_GetValue(self)


    def GetSetting(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """GetSetting(UBondPredParameterPred self) -> OEUnaryBondPred"""
        return _oechem.UBondPredParameterPred_GetSetting(self)


    def IsValidString(self, arg2: 'std::string const &') -> "bool":
        """IsValidString(UBondPredParameterPred self, std::string const & arg2) -> bool"""
        return _oechem.UBondPredParameterPred_IsValidString(self, arg2)

UBondPredParameterPred_swigregister = _oechem.UBondPredParameterPred_swigregister
UBondPredParameterPred_swigregister(UBondPredParameterPred)

class OEMolReaderParameter(OEStringParameter):
    """Proxy of C++ OEChem::OEMolReaderParameter 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__(OEChem::OEMolReaderParameter self, std::string const & name, bool const is3D=False) -> OEMolReaderParameter
        __init__(OEChem::OEMolReaderParameter self, std::string const & name) -> OEMolReaderParameter
        __init__(OEChem::OEMolReaderParameter self) -> OEMolReaderParameter
        __init__(OEChem::OEMolReaderParameter self, OEMolReaderParameter arg2) -> OEMolReaderParameter
        """
        this = _oechem.new_OEMolReaderParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolReaderParameter
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEMolReaderParameter self) -> OEParameter"""
        return _oechem.OEMolReaderParameter_CreateCopy(self)

OEMolReaderParameter_swigregister = _oechem.OEMolReaderParameter_swigregister
OEMolReaderParameter_swigregister(OEMolReaderParameter)

class OEMolWriterParameter(OEStringParameter):
    """Proxy of C++ OEChem::OEMolWriterParameter 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__(OEChem::OEMolWriterParameter self, std::string const & name, bool const is3D=False) -> OEMolWriterParameter
        __init__(OEChem::OEMolWriterParameter self, std::string const & name) -> OEMolWriterParameter
        __init__(OEChem::OEMolWriterParameter self) -> OEMolWriterParameter
        __init__(OEChem::OEMolWriterParameter self, OEMolWriterParameter arg2) -> OEMolWriterParameter
        """
        this = _oechem.new_OEMolWriterParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolWriterParameter
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEMolWriterParameter self) -> OEParameter"""
        return _oechem.OEMolWriterParameter_CreateCopy(self)

OEMolWriterParameter_swigregister = _oechem.OEMolWriterParameter_swigregister
OEMolWriterParameter_swigregister(OEMolWriterParameter)

class OESubSearchParameter(SSParameterNonCl):
    """Proxy of C++ OEChem::OESubSearchParameter 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__(OEChem::OESubSearchParameter self, std::string const & name) -> OESubSearchParameter
        __init__(OEChem::OESubSearchParameter self) -> OESubSearchParameter
        __init__(OEChem::OESubSearchParameter self, OESubSearchParameter arg2) -> OESubSearchParameter
        """
        this = _oechem.new_OESubSearchParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchParameter
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OESubSearchParameter self) -> OEParameter"""
        return _oechem.OESubSearchParameter_CreateCopy(self)

OESubSearchParameter_swigregister = _oechem.OESubSearchParameter_swigregister
OESubSearchParameter_swigregister(OESubSearchParameter)

class OEMolParameter(MolParameterPointer):
    """Proxy of C++ OEChem::OEMolParameter 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__(OEChem::OEMolParameter self, std::string const & name) -> OEMolParameter
        __init__(OEChem::OEMolParameter self) -> OEMolParameter
        __init__(OEChem::OEMolParameter self, OEMolParameter arg2) -> OEMolParameter
        """
        this = _oechem.new_OEMolParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolParameter
    __del__ = lambda self: None

    def WriteValueAndDefaultBinary(self, ccc: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEMolParameter self, unsigned char * ccc) -> size_t"""
        return _oechem.OEMolParameter_WriteValueAndDefaultBinary(self, ccc)


    def ReadValueAndDefaultBinary(self, ccc: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEMolParameter self, unsigned char const * ccc) -> size_t"""
        return _oechem.OEMolParameter_ReadValueAndDefaultBinary(self, ccc)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEMolParameter self) -> size_t"""
        return _oechem.OEMolParameter_ValueAndDefaultBinarySize(self)


    def LoadValue(self) -> "bool":
        """LoadValue(OEMolParameter self) -> bool"""
        return _oechem.OEMolParameter_LoadValue(self)


    def SetValue(self, *args) -> "bool":
        """
        SetValue(OEMolParameter self, oemolistream fstream) -> bool
        SetValue(OEMolParameter self, OEMolBase mol) -> bool
        """
        return _oechem.OEMolParameter_SetValue(self, *args)


    def GetValue(self) -> "OEChem::OEMolBase const &":
        """GetValue(OEMolParameter self) -> OEMolBase"""
        return _oechem.OEMolParameter_GetValue(self)


    def GetSetting(self) -> "OEChem::OEMolBase const &":
        """GetSetting(OEMolParameter self) -> OEMolBase"""
        return _oechem.OEMolParameter_GetSetting(self)


    def GetHasValue(self, idx: 'unsigned int const'=0) -> "bool":
        """
        GetHasValue(OEMolParameter self, unsigned int const idx=0) -> bool
        GetHasValue(OEMolParameter self) -> bool
        """
        return _oechem.OEMolParameter_GetHasValue(self, idx)


    def IsValidString(self, arg2: 'std::string const &') -> "bool":
        """IsValidString(OEMolParameter self, std::string const & arg2) -> bool"""
        return _oechem.OEMolParameter_IsValidString(self, arg2)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEMolParameter self) -> OEParameter"""
        return _oechem.OEMolParameter_CreateCopy(self)

OEMolParameter_swigregister = _oechem.OEMolParameter_swigregister
OEMolParameter_swigregister(OEMolParameter)

class OEUnAtomPredParameter(UAtomPredParameterPred):
    """Proxy of C++ OEChem::OEUnAtomPredParameter 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__(OEChem::OEUnAtomPredParameter self, std::string const & name) -> OEUnAtomPredParameter
        __init__(OEChem::OEUnAtomPredParameter self) -> OEUnAtomPredParameter
        __init__(OEChem::OEUnAtomPredParameter self, OEUnAtomPredParameter arg2) -> OEUnAtomPredParameter
        """
        this = _oechem.new_OEUnAtomPredParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnAtomPredParameter
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEUnAtomPredParameter self) -> OEParameter"""
        return _oechem.OEUnAtomPredParameter_CreateCopy(self)

OEUnAtomPredParameter_swigregister = _oechem.OEUnAtomPredParameter_swigregister
OEUnAtomPredParameter_swigregister(OEUnAtomPredParameter)

class OEUnBondPredParameter(UBondPredParameterPred):
    """Proxy of C++ OEChem::OEUnBondPredParameter 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__(OEChem::OEUnBondPredParameter self, std::string const & name) -> OEUnBondPredParameter
        __init__(OEChem::OEUnBondPredParameter self) -> OEUnBondPredParameter
        __init__(OEChem::OEUnBondPredParameter self, OEUnBondPredParameter arg2) -> OEUnBondPredParameter
        """
        this = _oechem.new_OEUnBondPredParameter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnBondPredParameter
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEUnBondPredParameter self) -> OEParameter"""
        return _oechem.OEUnBondPredParameter_CreateCopy(self)

OEUnBondPredParameter_swigregister = _oechem.OEUnBondPredParameter_swigregister
OEUnBondPredParameter_swigregister(OEUnBondPredParameter)

class OESimpleAppOptions(OEOptions):
    """Proxy of C++ OEChem::OESimpleAppOptions 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__(OEChem::OESimpleAppOptions self, OEOptions opts, std::string const & name, bool const reader3D=False, bool const writer3D=False) -> OESimpleAppOptions
        __init__(OEChem::OESimpleAppOptions self, OEOptions opts, std::string const & name, bool const reader3D=False) -> OESimpleAppOptions
        __init__(OEChem::OESimpleAppOptions self, OEOptions opts, std::string const & name) -> OESimpleAppOptions
        __init__(OEChem::OESimpleAppOptions self, OESimpleAppOptions arg2) -> OESimpleAppOptions
        """
        this = _oechem.new_OESimpleAppOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESimpleAppOptions
    __del__ = lambda self: None

    def GetInFile(self) -> "std::string":
        """GetInFile(OESimpleAppOptions self) -> std::string"""
        return _oechem.OESimpleAppOptions_GetInFile(self)


    def SetInFile(self, value: 'std::string const') -> "bool":
        """SetInFile(OESimpleAppOptions self, std::string const value) -> bool"""
        return _oechem.OESimpleAppOptions_SetInFile(self, value)


    def GetOutFile(self) -> "std::string":
        """GetOutFile(OESimpleAppOptions self) -> std::string"""
        return _oechem.OESimpleAppOptions_GetOutFile(self)


    def SetOutFile(self, value: 'std::string const') -> "bool":
        """SetOutFile(OESimpleAppOptions self, std::string const value) -> bool"""
        return _oechem.OESimpleAppOptions_SetOutFile(self, value)


    def CreateCopy(self) -> "OEChem::OESimpleAppOptions *":
        """CreateCopy(OESimpleAppOptions self) -> OESimpleAppOptions"""
        return _oechem.OESimpleAppOptions_CreateCopy(self)

OESimpleAppOptions_swigregister = _oechem.OESimpleAppOptions_swigregister
OESimpleAppOptions_swigregister(OESimpleAppOptions)


def OECheckAtomValences(mol: 'OEMolBase') -> "bool":
    """OECheckAtomValences(OEMolBase mol) -> bool"""
    return _oechem.OECheckAtomValences(mol)

def OECheckAtomValence(atom: 'OEAtomBase') -> "bool":
    """OECheckAtomValence(OEAtomBase atom) -> bool"""
    return _oechem.OECheckAtomValence(atom)
class OEIsValidAtomValence(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsValidAtomValence 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__(OEChem::OEIsValidAtomValence self) -> OEIsValidAtomValence"""
        this = _oechem.new_OEIsValidAtomValence()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsValidAtomValence
    __del__ = lambda self: None
OEIsValidAtomValence_swigregister = _oechem.OEIsValidAtomValence_swigregister
OEIsValidAtomValence_swigregister(OEIsValidAtomValence)

class OEIsValidMDLAtomValence(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsValidMDLAtomValence 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__(OEChem::OEIsValidMDLAtomValence self) -> OEIsValidMDLAtomValence"""
        this = _oechem.new_OEIsValidMDLAtomValence()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsValidMDLAtomValence
    __del__ = lambda self: None
OEIsValidMDLAtomValence_swigregister = _oechem.OEIsValidMDLAtomValence_swigregister
OEIsValidMDLAtomValence_swigregister(OEIsValidMDLAtomValence)


def OEGenerate2DCoordinates(mol: 'OEMolBase') -> "bool":
    """OEGenerate2DCoordinates(OEMolBase mol) -> bool"""
    return _oechem.OEGenerate2DCoordinates(mol)
class OEExtractRingTemplateOptions(object):
    """Proxy of C++ OEChem::OEExtractRingTemplateOptions 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__(OEChem::OEExtractRingTemplateOptions self) -> OEExtractRingTemplateOptions
        __init__(OEChem::OEExtractRingTemplateOptions self, OEExtractRingTemplateOptions rhs) -> OEExtractRingTemplateOptions
        """
        this = _oechem.new_OEExtractRingTemplateOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExtractRingTemplateOptions
    __del__ = lambda self: None

    def SetRetainBondStereo(self, arg2: 'bool') -> "void":
        """SetRetainBondStereo(OEExtractRingTemplateOptions self, bool arg2)"""
        return _oechem.OEExtractRingTemplateOptions_SetRetainBondStereo(self, arg2)


    def GetRetainBondStereo(self) -> "bool":
        """GetRetainBondStereo(OEExtractRingTemplateOptions self) -> bool"""
        return _oechem.OEExtractRingTemplateOptions_GetRetainBondStereo(self)


    def SetRetainExistingTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingTemplates(OEExtractRingTemplateOptions self, bool arg2)"""
        return _oechem.OEExtractRingTemplateOptions_SetRetainExistingTemplates(self, arg2)


    def GetRetainExistingTemplates(self) -> "bool":
        """GetRetainExistingTemplates(OEExtractRingTemplateOptions self) -> bool"""
        return _oechem.OEExtractRingTemplateOptions_GetRetainExistingTemplates(self)

OEExtractRingTemplateOptions_swigregister = _oechem.OEExtractRingTemplateOptions_swigregister
OEExtractRingTemplateOptions_swigregister(OEExtractRingTemplateOptions)


def OEExtractRingTemplates(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEExtractRingTemplates(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEExtractRingTemplates(OEMolBase mol, OEExtractRingTemplateOptions opts) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEExtractRingTemplates(*args)
class OE2DRingDictionaryCreatorOptions(object):
    """Proxy of C++ OEChem::OE2DRingDictionaryCreatorOptions 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__(OEChem::OE2DRingDictionaryCreatorOptions self) -> OE2DRingDictionaryCreatorOptions
        __init__(OEChem::OE2DRingDictionaryCreatorOptions self, OE2DRingDictionaryCreatorOptions rhs) -> OE2DRingDictionaryCreatorOptions
        """
        this = _oechem.new_OE2DRingDictionaryCreatorOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE2DRingDictionaryCreatorOptions
    __del__ = lambda self: None

    def SetRetainExistingBuiltInTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingBuiltInTemplates(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetRetainExistingBuiltInTemplates(self, arg2)


    def GetRetainExistingBuiltInTemplates(self) -> "bool":
        """GetRetainExistingBuiltInTemplates(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetRetainExistingBuiltInTemplates(self)


    def SetRetainExistingTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingTemplates(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetRetainExistingTemplates(self, arg2)


    def GetRetainExistingTemplates(self) -> "bool":
        """GetRetainExistingTemplates(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetRetainExistingTemplates(self)


    def SetAddCarbonSkeleton(self, arg2: 'bool') -> "void":
        """SetAddCarbonSkeleton(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetAddCarbonSkeleton(self, arg2)


    def GetAddCarbonSkeleton(self) -> "bool":
        """GetAddCarbonSkeleton(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetAddCarbonSkeleton(self)


    def SetAddCarbonSkeletonWithBondStereo(self, arg2: 'bool') -> "void":
        """SetAddCarbonSkeletonWithBondStereo(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetAddCarbonSkeletonWithBondStereo(self, arg2)


    def GetAddCarbonSkeletonWithBondStereo(self) -> "bool":
        """GetAddCarbonSkeletonWithBondStereo(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetAddCarbonSkeletonWithBondStereo(self)

OE2DRingDictionaryCreatorOptions_swigregister = _oechem.OE2DRingDictionaryCreatorOptions_swigregister
OE2DRingDictionaryCreatorOptions_swigregister(OE2DRingDictionaryCreatorOptions)

class OE2DRingDictionary(object):
    """Proxy of C++ OEChem::OE2DRingDictionary 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__(OEChem::OE2DRingDictionary self) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, OE2DRingDictionaryCreatorOptions opts) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, std::string const & filename) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, oemolistream ims) -> OE2DRingDictionary
        """
        this = _oechem.new_OE2DRingDictionary(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE2DRingDictionary
    __del__ = lambda self: None

    def NumRings(self) -> "unsigned int":
        """NumRings(OE2DRingDictionary self) -> unsigned int"""
        return _oechem.OE2DRingDictionary_NumRings(self)


    def AddRings(self, mol: 'OEMolBase') -> "unsigned int":
        """AddRings(OE2DRingDictionary self, OEMolBase mol) -> unsigned int"""
        return _oechem.OE2DRingDictionary_AddRings(self, mol)


    def GetOEChemRelease(self) -> "std::string":
        """GetOEChemRelease(OE2DRingDictionary self) -> std::string"""
        return _oechem.OE2DRingDictionary_GetOEChemRelease(self)


    def GetVersion(self) -> "std::string":
        """GetVersion(OE2DRingDictionary self) -> std::string"""
        return _oechem.OE2DRingDictionary_GetVersion(self)

OE2DRingDictionary_swigregister = _oechem.OE2DRingDictionary_swigregister
OE2DRingDictionary_swigregister(OE2DRingDictionary)


def OEIsValid2DRingDictionary(*args) -> "bool":
    """
    OEIsValid2DRingDictionary(std::string const & filename) -> bool
    OEIsValid2DRingDictionary(oemolistream ifs) -> bool
    """
    return _oechem.OEIsValid2DRingDictionary(*args)

def OEWrite2DRingDictionary(*args) -> "bool":
    """
    OEWrite2DRingDictionary(std::string const & filename, OE2DRingDictionary rtd) -> bool
    OEWrite2DRingDictionary(oeostream os, OE2DRingDictionary rtd) -> bool
    OEWrite2DRingDictionary(oemolostream oms, OE2DRingDictionary rtd) -> bool
    """
    return _oechem.OEWrite2DRingDictionary(*args)

def OEInit2DRingDictionary(*args) -> "bool":
    """
    OEInit2DRingDictionary(std::string const & filename) -> bool
    OEInit2DRingDictionary(oemolistream ims) -> bool
    """
    return _oechem.OEInit2DRingDictionary(*args)

def OEClear2DRingDictionary() -> "void":
    """OEClear2DRingDictionary()"""
    return _oechem.OEClear2DRingDictionary()
class OESubSearchScreenTypeBase(object):
    """Proxy of C++ OEChem::OESubSearchScreenTypeBase 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")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OESubSearchScreenTypeBase
    __del__ = lambda self: None

    def GetScreenTypeString(self) -> "std::string":
        """GetScreenTypeString(OESubSearchScreenTypeBase self) -> std::string"""
        return _oechem.OESubSearchScreenTypeBase_GetScreenTypeString(self)


    def GetScreenType(self) -> "unsigned int":
        """GetScreenType(OESubSearchScreenTypeBase self) -> unsigned int"""
        return _oechem.OESubSearchScreenTypeBase_GetScreenType(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OESubSearchScreenTypeBase self) -> unsigned int"""
        return _oechem.OESubSearchScreenTypeBase_GetSize(self)


    def GetName(self) -> "std::string":
        """GetName(OESubSearchScreenTypeBase self) -> std::string"""
        return _oechem.OESubSearchScreenTypeBase_GetName(self)


    def GetVersion(self) -> "unsigned short":
        """GetVersion(OESubSearchScreenTypeBase self) -> unsigned short"""
        return _oechem.OESubSearchScreenTypeBase_GetVersion(self)


    def GetVersionString(self) -> "std::string":
        """GetVersionString(OESubSearchScreenTypeBase self) -> std::string"""
        return _oechem.OESubSearchScreenTypeBase_GetVersionString(self)

OESubSearchScreenTypeBase_swigregister = _oechem.OESubSearchScreenTypeBase_swigregister
OESubSearchScreenTypeBase_swigregister(OESubSearchScreenTypeBase)

class OESubSearchScreen(OEBitVector):
    """Proxy of C++ OEChem::OESubSearchScreen 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__(OEChem::OESubSearchScreen self) -> OESubSearchScreen
        __init__(OEChem::OESubSearchScreen self, OESubSearchScreen arg2) -> OESubSearchScreen
        """
        this = _oechem.new_OESubSearchScreen(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchScreen
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OESubSearchScreen self) -> bool"""
        return _oechem.OESubSearchScreen_IsValid(self)


    def GetScreenType(self) -> "OEChem::OESubSearchScreenTypeBase const *":
        """GetScreenType(OESubSearchScreen self) -> OESubSearchScreenTypeBase"""
        return _oechem.OESubSearchScreen_GetScreenType(self)


    def SetScreenType(self, stype: 'OESubSearchScreenTypeBase') -> "void":
        """SetScreenType(OESubSearchScreen self, OESubSearchScreenTypeBase stype)"""
        return _oechem.OESubSearchScreen_SetScreenType(self, stype)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OESubSearchScreen self) -> PyObject *"""
        return _oechem.OESubSearchScreen_GetDataTypeAsLong(self)

OESubSearchScreen_swigregister = _oechem.OESubSearchScreen_swigregister
OESubSearchScreen_swigregister(OESubSearchScreen)


def OEGetSubSearchScreenType(*args) -> "OEChem::OESubSearchScreenTypeBase const *":
    """
    OEGetSubSearchScreenType(unsigned int const stype) -> OESubSearchScreenTypeBase
    OEGetSubSearchScreenType(std::string const & stypestr) -> OESubSearchScreenTypeBase
    """
    return _oechem.OEGetSubSearchScreenType(*args)

def OEIsValidSubSearchScreenString(stypestr: 'std::string const &') -> "bool":
    """OEIsValidSubSearchScreenString(std::string const & stypestr) -> bool"""
    return _oechem.OEIsValidSubSearchScreenString(stypestr)

def OESameSubSearchScreenTypes(arg1: 'OESubSearchScreen', arg2: 'OESubSearchScreen') -> "bool":
    """OESameSubSearchScreenTypes(OESubSearchScreen arg1, OESubSearchScreen arg2) -> bool"""
    return _oechem.OESameSubSearchScreenTypes(arg1, arg2)

def OEScreen(query: 'OESubSearchScreen', target: 'OESubSearchScreen') -> "bool":
    """OEScreen(OESubSearchScreen query, OESubSearchScreen target) -> bool"""
    return _oechem.OEScreen(query, target)

def OEIsComplementaryScreenType(*args) -> "bool":
    """
    OEIsComplementaryScreenType(OEQMolBase arg1, unsigned int const stype) -> bool
    OEIsComplementaryScreenType(OEQMolBase arg1, OESubSearchScreenTypeBase stype) -> bool
    """
    return _oechem.OEIsComplementaryScreenType(*args)

def OEMakeSubSearchQueryScreen(*args) -> "bool":
    """
    OEMakeSubSearchQueryScreen(OESubSearchScreen arg1, OEQMolBase arg2, unsigned int const stype) -> bool
    OEMakeSubSearchQueryScreen(OESubSearchScreen arg1, OEQMolBase arg2) -> bool
    OEMakeSubSearchQueryScreen(OESubSearchScreen arg1, OEQMolBase arg2, OESubSearchScreenTypeBase arg3) -> bool
    """
    return _oechem.OEMakeSubSearchQueryScreen(*args)

def OEMakeSubSearchTargetScreen(*args) -> "bool":
    """
    OEMakeSubSearchTargetScreen(OESubSearchScreen arg1, OEMolBase arg2, unsigned int const stype) -> bool
    OEMakeSubSearchTargetScreen(OESubSearchScreen arg1, OEMolBase arg2) -> bool
    OEMakeSubSearchTargetScreen(OESubSearchScreen arg1, OEMolBase arg2, OESubSearchScreenTypeBase arg3) -> bool
    """
    return _oechem.OEMakeSubSearchTargetScreen(*args)
class OECreateSubSearchDatabaseOptions(object):
    """Proxy of C++ OEChem::OECreateSubSearchDatabaseOptions class."""

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

    def __init__(self, arg2: 'OESubSearchScreenTypeBase'):
        """__init__(OEChem::OECreateSubSearchDatabaseOptions self, OESubSearchScreenTypeBase arg2) -> OECreateSubSearchDatabaseOptions"""
        this = _oechem.new_OECreateSubSearchDatabaseOptions(arg2)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OECreateSubSearchDatabaseOptions
    __del__ = lambda self: None

    def GetScreenType(self) -> "OEChem::OESubSearchScreenTypeBase const *":
        """GetScreenType(OECreateSubSearchDatabaseOptions self) -> OESubSearchScreenTypeBase"""
        return _oechem.OECreateSubSearchDatabaseOptions_GetScreenType(self)


    def SetNumProcessors(self, arg2: 'unsigned int const') -> "void":
        """SetNumProcessors(OECreateSubSearchDatabaseOptions self, unsigned int const arg2)"""
        return _oechem.OECreateSubSearchDatabaseOptions_SetNumProcessors(self, arg2)


    def GetNumProcessors(self) -> "unsigned int":
        """GetNumProcessors(OECreateSubSearchDatabaseOptions self) -> unsigned int"""
        return _oechem.OECreateSubSearchDatabaseOptions_GetNumProcessors(self)


    def SetKeepTitle(self, keep: 'bool const') -> "void":
        """SetKeepTitle(OECreateSubSearchDatabaseOptions self, bool const keep)"""
        return _oechem.OECreateSubSearchDatabaseOptions_SetKeepTitle(self, keep)


    def GetKeepTitle(self) -> "bool":
        """GetKeepTitle(OECreateSubSearchDatabaseOptions self) -> bool"""
        return _oechem.OECreateSubSearchDatabaseOptions_GetKeepTitle(self)


    def SetSortByBitCounts(self, sort: 'bool const') -> "void":
        """SetSortByBitCounts(OECreateSubSearchDatabaseOptions self, bool const sort)"""
        return _oechem.OECreateSubSearchDatabaseOptions_SetSortByBitCounts(self, sort)


    def GetSortByBitCounts(self) -> "bool":
        """GetSortByBitCounts(OECreateSubSearchDatabaseOptions self) -> bool"""
        return _oechem.OECreateSubSearchDatabaseOptions_GetSortByBitCounts(self)

OECreateSubSearchDatabaseOptions_swigregister = _oechem.OECreateSubSearchDatabaseOptions_swigregister
OECreateSubSearchDatabaseOptions_swigregister(OECreateSubSearchDatabaseOptions)


def OECreateSubSearchDatabaseFile(*args) -> "bool":
    """
    OECreateSubSearchDatabaseFile(std::string const & ofname, std::string const & ifname, OESubSearchScreenTypeBase stype, OETracerBase tracer) -> bool
    OECreateSubSearchDatabaseFile(std::string const & ofname, std::string const & ifname, OESubSearchScreenTypeBase stype) -> bool
    OECreateSubSearchDatabaseFile(std::string const & ofname, std::string const & ifname, OECreateSubSearchDatabaseOptions opts, OETracerBase tracer) -> bool
    OECreateSubSearchDatabaseFile(std::string const & ofname, std::string const & ifname, OECreateSubSearchDatabaseOptions opts) -> bool
    """
    return _oechem.OECreateSubSearchDatabaseFile(*args)
class OESubSearchQuery(object):
    """Proxy of C++ OEChem::OESubSearchQuery 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__(OEChem::OESubSearchQuery self, OEQMolBase arg2, size_t const maxmatches=1000) -> OESubSearchQuery
        __init__(OEChem::OESubSearchQuery self, OEQMolBase arg2) -> OESubSearchQuery
        __init__(OEChem::OESubSearchQuery self, OEChem::OESubSearchQueryImpl * arg2) -> OESubSearchQuery
        """
        this = _oechem.new_OESubSearchQuery(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchQuery
    __del__ = lambda self: None

    def SetFilter(self, arg2: 'OEUnaryMolBasePred') -> "void":
        """SetFilter(OESubSearchQuery self, OEUnaryMolBasePred arg2)"""
        return _oechem.OESubSearchQuery_SetFilter(self, arg2)


    def SetMaxMatches(self, arg2: 'size_t const') -> "void":
        """SetMaxMatches(OESubSearchQuery self, size_t const arg2)"""
        return _oechem.OESubSearchQuery_SetMaxMatches(self, arg2)


    def GetMaxMatches(self) -> "size_t":
        """GetMaxMatches(OESubSearchQuery self) -> size_t"""
        return _oechem.OESubSearchQuery_GetMaxMatches(self)

OESubSearchQuery_swigregister = _oechem.OESubSearchQuery_swigregister
OESubSearchQuery_swigregister(OESubSearchQuery)


def OESubSearchStatusToName(s: 'unsigned int const') -> "std::string":
    """OESubSearchStatusToName(unsigned int const s) -> std::string"""
    return _oechem.OESubSearchStatusToName(s)
class OESubSearchResult(object):
    """Proxy of C++ OEChem::OESubSearchResult 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__(OEChem::OESubSearchResult self) -> OESubSearchResult"""
        this = _oechem.new_OESubSearchResult()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchResult
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OESubSearchResult self) -> bool"""
        return _oechem.OESubSearchResult_IsValid(self)


    def GetSearchStatus(self) -> "unsigned int":
        """GetSearchStatus(OESubSearchResult self) -> unsigned int"""
        return _oechem.OESubSearchResult_GetSearchStatus(self)


    def Cancel(self) -> "void":
        """Cancel(OESubSearchResult self)"""
        return _oechem.OESubSearchResult_Cancel(self)


    def NumTargets(self) -> "size_t":
        """NumTargets(OESubSearchResult self) -> size_t"""
        return _oechem.OESubSearchResult_NumTargets(self)


    def NumScreened(self) -> "size_t":
        """NumScreened(OESubSearchResult self) -> size_t"""
        return _oechem.OESubSearchResult_NumScreened(self)


    def NumSearched(self) -> "size_t":
        """NumSearched(OESubSearchResult self) -> size_t"""
        return _oechem.OESubSearchResult_NumSearched(self)


    def NumTotalMatches(self) -> "size_t":
        """NumTotalMatches(OESubSearchResult self) -> size_t"""
        return _oechem.OESubSearchResult_NumTotalMatches(self)


    def NumMatches(self) -> "size_t":
        """NumMatches(OESubSearchResult self) -> size_t"""
        return _oechem.OESubSearchResult_NumMatches(self)


    def GetMatchIndices(self) -> "OESystem::OEIterBase< size_t > *":
        """GetMatchIndices(OESubSearchResult self) -> OESystem::OEIterBase< size_t > *"""
        return _oechem.OESubSearchResult_GetMatchIndices(self)

OESubSearchResult_swigregister = _oechem.OESubSearchResult_swigregister
OESubSearchResult_swigregister(OESubSearchResult)

class OESubSearchDatabase(object):
    """Proxy of C++ OEChem::OESubSearchDatabase 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__(OEChem::OESubSearchDatabase self, unsigned int const memtype, unsigned int const numprocesssors=0) -> OESubSearchDatabase
        __init__(OEChem::OESubSearchDatabase self, unsigned int const memtype) -> OESubSearchDatabase
        __init__(OEChem::OESubSearchDatabase self) -> OESubSearchDatabase
        __init__(OEChem::OESubSearchDatabase self, std::string const & dbfile, unsigned int const memtype, unsigned int const numprocesssors=0) -> OESubSearchDatabase
        __init__(OEChem::OESubSearchDatabase self, std::string const & dbfile, unsigned int const memtype) -> OESubSearchDatabase
        __init__(OEChem::OESubSearchDatabase self, std::string const & dbfile) -> OESubSearchDatabase
        """
        this = _oechem.new_OESubSearchDatabase(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchDatabase
    __del__ = lambda self: None

    def Open(self, *args) -> "bool":
        """
        Open(OESubSearchDatabase self, std::string const & arg2, OETracerBase tracer) -> bool
        Open(OESubSearchDatabase self, std::string const & arg2) -> bool
        Open(OESubSearchDatabase self, oemolistream ifs, OETracerBase tracer) -> bool
        Open(OESubSearchDatabase self, oemolistream ifs) -> bool
        """
        return _oechem.OESubSearchDatabase_Open(self, *args)


    def IsValid(self) -> "bool":
        """IsValid(OESubSearchDatabase self) -> bool"""
        return _oechem.OESubSearchDatabase_IsValid(self)


    def GetScreenType(self) -> "OEChem::OESubSearchScreenTypeBase const *":
        """GetScreenType(OESubSearchDatabase self) -> OESubSearchScreenTypeBase"""
        return _oechem.OESubSearchDatabase_GetScreenType(self)


    def NumMolecules(self) -> "size_t":
        """NumMolecules(OESubSearchDatabase self) -> size_t"""
        return _oechem.OESubSearchDatabase_NumMolecules(self)


    def GetDatabaseType(self) -> "unsigned int":
        """GetDatabaseType(OESubSearchDatabase self) -> unsigned int"""
        return _oechem.OESubSearchDatabase_GetDatabaseType(self)


    def NumProcessors(self) -> "unsigned int":
        """NumProcessors(OESubSearchDatabase self) -> unsigned int"""
        return _oechem.OESubSearchDatabase_NumProcessors(self)


    def GetMolecule(self, mol: 'OEMolBase', arg3: 'size_t const') -> "bool":
        """GetMolecule(OESubSearchDatabase self, OEMolBase mol, size_t const arg3) -> bool"""
        return _oechem.OESubSearchDatabase_GetMolecule(self, mol, arg3)


    def GetTitle(self, arg2: 'size_t const') -> "std::string":
        """GetTitle(OESubSearchDatabase self, size_t const arg2) -> std::string"""
        return _oechem.OESubSearchDatabase_GetTitle(self, arg2)


    def NumMatches(self, query: 'OEQMolBase') -> "size_t":
        """NumMatches(OESubSearchDatabase self, OEQMolBase query) -> size_t"""
        return _oechem.OESubSearchDatabase_NumMatches(self, query)


    def GetMatchIndices(self, arg2: 'OESubSearchQuery') -> "OESystem::OEIterBase< size_t > *":
        """GetMatchIndices(OESubSearchDatabase self, OESubSearchQuery arg2) -> OESystem::OEIterBase< size_t > *"""
        return _oechem.OESubSearchDatabase_GetMatchIndices(self, arg2)


    def GetMatchTitles(self, arg2: 'OESubSearchQuery') -> "OESystem::OEIterBase< std::string > *":
        """GetMatchTitles(OESubSearchDatabase self, OESubSearchQuery arg2) -> OESystem::OEIterBase< std::string > *"""
        return _oechem.OESubSearchDatabase_GetMatchTitles(self, arg2)


    def Search(self, arg2: 'OESubSearchResult', arg3: 'OESubSearchQuery') -> "unsigned int":
        """Search(OESubSearchDatabase self, OESubSearchResult arg2, OESubSearchQuery arg3) -> unsigned int"""
        return _oechem.OESubSearchDatabase_Search(self, arg2, arg3)

OESubSearchDatabase_swigregister = _oechem.OESubSearchDatabase_swigregister
OESubSearchDatabase_swigregister(OESubSearchDatabase)


def OEIsValidSubSearchDatabase(*args) -> "bool":
    """
    OEIsValidSubSearchDatabase(std::string const & filename) -> bool
    OEIsValidSubSearchDatabase(oemolistream ifs) -> bool
    OEIsValidSubSearchDatabase(std::string const & filename, OESubSearchScreenTypeBase arg2) -> bool
    OEIsValidSubSearchDatabase(oemolistream ifs, OESubSearchScreenTypeBase arg2) -> bool
    """
    return _oechem.OEIsValidSubSearchDatabase(*args)


