# 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 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

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


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

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

    _oespicoli = libs.OEGetModule('_oespicoli1521')
    return _oespicoli

_oespicoli = swig_import_helper()
del swig_import_helper

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


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


import weakref


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

def TypeToPyString(type: "void const *") -> "PyObject *":
    return _oespicoli.TypeToPyString(type)
class OEInternalFunctionPointer(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _oespicoli.OEInternalFunctionPointer_swiginit(self, _oespicoli.new_OEInternalFunctionPointer(*args))

    def Add(self, b: "OEBase", tag: "unsigned int", data: "PyObject *") -> "bool":
        return _oespicoli.OEInternalFunctionPointer_Add(self, b, tag, data)
    __swig_destroy__ = _oespicoli.delete_OEInternalFunctionPointer

# Register OEInternalFunctionPointer in _oespicoli:
_oespicoli.OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


def OEInternalGetGenericData(type: "void const *") -> "OEInternalFunctionPointer *":
    return _oespicoli.OEInternalGetGenericData(type)
import openeye.oechem as oechem
OEVoxelizeMethod_Distance = _oespicoli.OEVoxelizeMethod_Distance

OEVoxelizeMethod_Gaussian = _oespicoli.OEVoxelizeMethod_Gaussian

OEVoxelizeMethod_Blank = _oespicoli.OEVoxelizeMethod_Blank

OEVoxelizeMethod_Blur = _oespicoli.OEVoxelizeMethod_Blur


OEVoxelizeMethod_Default = OEVoxelizeMethod_Distance

OEPolygonizeMethod_Grasp = _oespicoli.OEPolygonizeMethod_Grasp

OEPolygonizeMethod_Compact = _oespicoli.OEPolygonizeMethod_Compact


OEPolygonizeMethod_Default = OEPolygonizeMethod_Grasp

OESurfaceFileType_UNDEFINED = _oespicoli.OESurfaceFileType_UNDEFINED

OESurfaceFileType_Grasp = _oespicoli.OESurfaceFileType_Grasp

OESurfaceFileType_OESurface = _oespicoli.OESurfaceFileType_OESurface

OEEdgeReductionType_MinimumDistance = _oespicoli.OEEdgeReductionType_MinimumDistance

OERibbonType_CAlpha = _oespicoli.OERibbonType_CAlpha

OERibbonType_Pretty = _oespicoli.OERibbonType_Pretty

OERibbonType_MAXTYPE = _oespicoli.OERibbonType_MAXTYPE


def GetFloatFromPyObject(outfloat: "float &", numberobj: "PyObject *") -> "bool":
    r"""GetFloatFromPyObject(float & outfloat, PyObject * numberobj) -> bool"""
    return _oespicoli.GetFloatFromPyObject(outfloat, numberobj)

def GetIntFromPyObject(outint: "unsigned int &", numberobj: "PyObject *") -> "bool":
    r"""GetIntFromPyObject(unsigned int & outint, PyObject * numberobj) -> bool"""
    return _oespicoli.GetIntFromPyObject(outint, numberobj)
class OESurface(oechem.OEBase):
    r"""Proxy of C++ OESpicoli::OESurface class."""

    thisown = 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 *":
        r"""CreateCopy(OESurface self) -> OEBase"""
        return _oespicoli.OESurface_CreateCopy(self)

    def GetDataType(self) -> "void const *":
        r"""GetDataType(OESurface self) -> void const *"""
        return _oespicoli.OESurface_GetDataType(self)

    def IsDataType(self, type: "void const *") -> "bool":
        r"""IsDataType(OESurface self, void const * type) -> bool"""
        return _oespicoli.OESurface_IsDataType(self, type)

    def __init__(self, *args):
        r"""
        __init__(OESurface self) -> OESurface
        __init__(OESurface self, OESurface rhs) -> OESurface
        __init__(OESurface self, OESpicoli::OESurfaceImpl const & rhs) -> OESurface
        """
        _oespicoli.OESurface_swiginit(self, _oespicoli.new_OESurface(*args))

    def IsValid(self):
      return _oespicoli.OESurface___nonzero__(self)


    __swig_destroy__ = _oespicoli.delete_OESurface

    def Clear(self) -> "void":
        r"""Clear(OESurface self)"""
        return _oespicoli.OESurface_Clear(self)

    def SetTitle(self, title: "char const *") -> "bool":
        r"""SetTitle(OESurface self, char const * title) -> bool"""
        return _oespicoli.OESurface_SetTitle(self, title)

    def GetTitle(self) -> "char const *":
        r"""GetTitle(OESurface self) -> char const *"""
        return _oespicoli.OESurface_GetTitle(self)

    def GetResolution(self) -> "float":
        r"""GetResolution(OESurface self) -> float"""
        return _oespicoli.OESurface_GetResolution(self)

    def GetProbeRadius(self) -> "float":
        r"""GetProbeRadius(OESurface self) -> float"""
        return _oespicoli.OESurface_GetProbeRadius(self)

    def GetNumVertices(self) -> "unsigned int":
        r"""GetNumVertices(OESurface self) -> unsigned int"""
        return _oespicoli.OESurface_GetNumVertices(self)

    def GetVertices(self, vertices: "float *") -> "bool":
        r"""GetVertices(OESurface self, float * vertices) -> bool"""
        return _oespicoli.OESurface_GetVertices(self, vertices)

    def SetNumVertices(self, n: "unsigned int") -> "bool":
        r"""SetNumVertices(OESurface self, unsigned int n) -> bool"""
        return _oespicoli.OESurface_SetNumVertices(self, n)

    def SetVertices(self, vertices: "float const *") -> "bool":
        r"""SetVertices(OESurface self, float const * vertices) -> bool"""
        return _oespicoli.OESurface_SetVertices(self, vertices)

    def GetNumTriangles(self) -> "unsigned int":
        r"""GetNumTriangles(OESurface self) -> unsigned int"""
        return _oespicoli.OESurface_GetNumTriangles(self)

    def GetTriangles(self, triangles: "unsigned int *") -> "bool":
        r"""GetTriangles(OESurface self, unsigned int * triangles) -> bool"""
        return _oespicoli.OESurface_GetTriangles(self, triangles)

    def SetNumTriangles(self, n: "unsigned int") -> "bool":
        r"""SetNumTriangles(OESurface self, unsigned int n) -> bool"""
        return _oespicoli.OESurface_SetNumTriangles(self, n)

    def SetTriangles(self, triangles: "unsigned int const *") -> "bool":
        r"""SetTriangles(OESurface self, unsigned int const * triangles) -> bool"""
        return _oespicoli.OESurface_SetTriangles(self, triangles)

    def IsNormalsSet(self) -> "bool":
        r"""IsNormalsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsNormalsSet(self)

    def GetNormals(self, normals: "float *") -> "bool":
        r"""GetNormals(OESurface self, float * normals) -> bool"""
        return _oespicoli.OESurface_GetNormals(self, normals)

    def SetNormals(self, normals: "float const *") -> "bool":
        r"""SetNormals(OESurface self, float const * normals) -> bool"""
        return _oespicoli.OESurface_SetNormals(self, normals)

    def IsFaceNormalsSet(self) -> "bool":
        r"""IsFaceNormalsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsFaceNormalsSet(self)

    def GetFaceNormals(self, faceNormals: "float *") -> "bool":
        r"""GetFaceNormals(OESurface self, float * faceNormals) -> bool"""
        return _oespicoli.OESurface_GetFaceNormals(self, faceNormals)

    def SetFaceNormals(self, faceNormals: "float const *") -> "bool":
        r"""SetFaceNormals(OESurface self, float const * faceNormals) -> bool"""
        return _oespicoli.OESurface_SetFaceNormals(self, faceNormals)

    def IsDistanceSet(self) -> "bool":
        r"""IsDistanceSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsDistanceSet(self)

    def GetDistance(self, distance: "float *") -> "bool":
        r"""GetDistance(OESurface self, float * distance) -> bool"""
        return _oespicoli.OESurface_GetDistance(self, distance)

    def GetDistanceElement(self, n: "unsigned int") -> "float":
        r"""GetDistanceElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetDistanceElement(self, n)

    def SetDistance(self, distance: "float const *") -> "bool":
        r"""SetDistance(OESurface self, float const * distance) -> bool"""
        return _oespicoli.OESurface_SetDistance(self, distance)

    def SetDistanceElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetDistanceElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetDistanceElement(self, n, value)

    def IsPotentialSet(self) -> "bool":
        r"""IsPotentialSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsPotentialSet(self)

    def GetPotential(self, potential: "float *") -> "bool":
        r"""GetPotential(OESurface self, float * potential) -> bool"""
        return _oespicoli.OESurface_GetPotential(self, potential)

    def GetPotentialElement(self, n: "unsigned int") -> "float":
        r"""GetPotentialElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetPotentialElement(self, n)

    def SetPotential(self, potential: "float const *") -> "bool":
        r"""SetPotential(OESurface self, float const * potential) -> bool"""
        return _oespicoli.OESurface_SetPotential(self, potential)

    def SetPotentialElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetPotentialElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetPotentialElement(self, n, value)

    def SetPotentialName(self, name: "char const *") -> "void":
        r"""SetPotentialName(OESurface self, char const * name)"""
        return _oespicoli.OESurface_SetPotentialName(self, name)

    def GetPotentialName(self) -> "char const *":
        r"""GetPotentialName(OESurface self) -> char const *"""
        return _oespicoli.OESurface_GetPotentialName(self)

    def IsCurvatureSet(self) -> "bool":
        r"""IsCurvatureSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsCurvatureSet(self)

    def GetCurvature(self, curvature: "float *") -> "bool":
        r"""GetCurvature(OESurface self, float * curvature) -> bool"""
        return _oespicoli.OESurface_GetCurvature(self, curvature)

    def GetCurvatureElement(self, n: "unsigned int") -> "float":
        r"""GetCurvatureElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetCurvatureElement(self, n)

    def SetCurvature(self, curvature: "float const *") -> "bool":
        r"""SetCurvature(OESurface self, float const * curvature) -> bool"""
        return _oespicoli.OESurface_SetCurvature(self, curvature)

    def SetCurvatureElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetCurvatureElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetCurvatureElement(self, n, value)

    def IsAtomsSet(self) -> "bool":
        r"""IsAtomsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsAtomsSet(self)

    def GetAtoms(self, atoms: "unsigned int *") -> "bool":
        r"""GetAtoms(OESurface self, unsigned int * atoms) -> bool"""
        return _oespicoli.OESurface_GetAtoms(self, atoms)

    def GetAtomsElement(self, n: "unsigned int") -> "unsigned int":
        r"""GetAtomsElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetAtomsElement(self, n)

    def SetAtoms(self, atoms: "unsigned int const *") -> "bool":
        r"""SetAtoms(OESurface self, unsigned int const * atoms) -> bool"""
        return _oespicoli.OESurface_SetAtoms(self, atoms)

    def SetAtomsElement(self, n: "unsigned int", value: "unsigned int") -> "bool":
        r"""SetAtomsElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetAtomsElement(self, n, value)

    def IsColorSet(self) -> "bool":
        r"""IsColorSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsColorSet(self)

    def GetColor(self, *args) -> "bool":
        r"""
        GetColor(OESurface self, unsigned char * color) -> bool
        GetColor(OESurface self, float * color) -> bool
        """
        return _oespicoli.OESurface_GetColor(self, *args)

    def SetColor(self, *args) -> "bool":
        r"""
        SetColor(OESurface self, unsigned char const * color) -> bool
        SetColor(OESurface self, float const * color) -> bool
        """
        return _oespicoli.OESurface_SetColor(self, *args)

    def SetColorElement(self, *args) -> "bool":
        r"""
        SetColorElement(OESurface self, unsigned int n, unsigned char r, unsigned char g, unsigned char b, unsigned char a=255) -> bool
        SetColorElement(OESurface self, unsigned int n, float r, float g, float b, float a=1.0) -> bool
        """
        return _oespicoli.OESurface_SetColorElement(self, *args)

    def IsVertexCliqueSet(self) -> "bool":
        r"""IsVertexCliqueSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsVertexCliqueSet(self)

    def GetVertexClique(self, vertexClique: "unsigned int *") -> "bool":
        r"""GetVertexClique(OESurface self, unsigned int * vertexClique) -> bool"""
        return _oespicoli.OESurface_GetVertexClique(self, vertexClique)

    def GetVertexCliqueElement(self, n: "unsigned int") -> "unsigned int":
        r"""GetVertexCliqueElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetVertexCliqueElement(self, n)

    def SetVertexClique(self, vertexClique: "unsigned int const *") -> "bool":
        r"""SetVertexClique(OESurface self, unsigned int const * vertexClique) -> bool"""
        return _oespicoli.OESurface_SetVertexClique(self, vertexClique)

    def SetVertexCliqueElement(self, n: "unsigned int", value: "unsigned int") -> "bool":
        r"""SetVertexCliqueElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetVertexCliqueElement(self, n, value)

    def ClearVertexClique(self) -> "bool":
        r"""ClearVertexClique(OESurface self) -> bool"""
        return _oespicoli.OESurface_ClearVertexClique(self)

    def GetVerticesElement(self, n: "unsigned int") -> "float":
        r"""GetVerticesElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetVerticesElement(self, n)

    def SetVerticesElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetVerticesElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetVerticesElement(self, n, value)

    def GetTrianglesElement(self, n: "unsigned int") -> "unsigned int":
        r"""GetTrianglesElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetTrianglesElement(self, n)

    def SetTrianglesElement(self, n: "unsigned int", value: "unsigned int") -> "bool":
        r"""SetTrianglesElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetTrianglesElement(self, n, value)

    def GetNormalsElement(self, n: "unsigned int") -> "float":
        r"""GetNormalsElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetNormalsElement(self, n)

    def SetNormalsElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetNormalsElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetNormalsElement(self, n, value)

    def GetFaceNormalsElement(self, n: "unsigned int") -> "float":
        r"""GetFaceNormalsElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetFaceNormalsElement(self, n)

    def SetFaceNormalsElement(self, n: "unsigned int", value: "float") -> "bool":
        r"""SetFaceNormalsElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetFaceNormalsElement(self, n, value)

    def Sweep(self) -> "void":
        r"""Sweep(OESurface self)"""
        return _oespicoli.OESurface_Sweep(self)

    def GetVertex(self, *args) -> "PyObject *":
        r"""
        GetVertex(OESurface self, unsigned int n, float * vertex) -> bool
        GetVertex(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetVertex(self, *args)

    def SetVertex(self, *args) -> "PyObject *":
        r"""
        SetVertex(OESurface self, unsigned int n, float const * vertex) -> bool
        SetVertex(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetVertex(self, *args)

    def GetTriangle(self, *args) -> "PyObject *":
        r"""
        GetTriangle(OESurface self, unsigned int n, unsigned int * triangle) -> bool
        GetTriangle(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetTriangle(self, *args)

    def SetTriangle(self, *args) -> "PyObject *":
        r"""
        SetTriangle(OESurface self, unsigned int n, unsigned int const * triangle) -> bool
        SetTriangle(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetTriangle(self, *args)

    def GetNormal(self, *args) -> "PyObject *":
        r"""
        GetNormal(OESurface self, unsigned int n, float * normal) -> bool
        GetNormal(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetNormal(self, *args)

    def SetNormal(self, *args) -> "PyObject *":
        r"""
        SetNormal(OESurface self, unsigned int n, float const * normal) -> bool
        SetNormal(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetNormal(self, *args)

    def GetFaceNormal(self, *args) -> "PyObject *":
        r"""
        GetFaceNormal(OESurface self, unsigned int n, float * normal) -> bool
        GetFaceNormal(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetFaceNormal(self, *args)

    def SetFaceNormal(self, *args) -> "PyObject *":
        r"""
        SetFaceNormal(OESurface self, unsigned int n, float const * normal) -> bool
        SetFaceNormal(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetFaceNormal(self, *args)

    def GetColorElement(self, n: "unsigned int") -> "PyObject *":
        r"""GetColorElement(OESurface self, unsigned int n) -> PyObject *"""
        return _oespicoli.OESurface_GetColorElement(self, n)

    def GetColorElementF(self, n: "unsigned int") -> "PyObject *":
        r"""GetColorElementF(OESurface self, unsigned int n) -> PyObject *"""
        return _oespicoli.OESurface_GetColorElementF(self, n)

# Register OESurface in _oespicoli:
_oespicoli.OESurface_swigregister(OESurface)


def OEGetSurfaceCenterAndExtents(surf: "OESurface", center: "float *", extents: "float *") -> "void":
    r"""OEGetSurfaceCenterAndExtents(OESurface surf, float * center, float * extents)"""
    return _oespicoli.OEGetSurfaceCenterAndExtents(surf, center, extents)

def OESetSurface(obj: "OEBase", t: "char const *", s: "OESurface") -> "bool":
    r"""OESetSurface(OEBase obj, char const * t, OESurface s) -> bool"""
    return _oespicoli.OESetSurface(obj, t, s)

def OEGetSurface(obj: "OEBase", t: "char const *") -> "OESpicoli::OESurface const &":
    r"""OEGetSurface(OEBase obj, char const * t) -> OESurface"""
    return _oespicoli.OEGetSurface(obj, t)

def OEMakeMolecularSurface(*args) -> "bool":
    r"""
    OEMakeMolecularSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod=) -> bool
    OEMakeMolecularSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod=) -> bool
    """
    return _oespicoli.OEMakeMolecularSurface(*args)

def OEMakeProteinRibbonSurface(*args) -> "bool":
    r"""OEMakeProteinRibbonSurface(OESurface surf, OEMolBase mol, unsigned int type=) -> bool"""
    return _oespicoli.OEMakeProteinRibbonSurface(*args)

def OEMakeAccessibleSurface(*args) -> "bool":
    r"""
    OEMakeAccessibleSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod=) -> bool
    OEMakeAccessibleSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod=) -> bool
    """
    return _oespicoli.OEMakeAccessibleSurface(*args)

def OEMakeSurfaceFromGrid(*args) -> "bool":
    r"""
    OEMakeSurfaceFromGrid(OESurface surf, OEFixedFloatGrid grid, float contour) -> bool
    OEMakeSurfaceFromGrid(OESurface surf, OEFixedFloatGrid grid, float contour, float resolution) -> bool
    OEMakeSurfaceFromGrid(OESurface surf, OESystem::OESkewGrid const & grid, float contour) -> bool
    """
    return _oespicoli.OEMakeSurfaceFromGrid(*args)

def OEMakeGridFromSurface(*args) -> "bool":
    r"""OEMakeGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf, unsigned int method=) -> bool"""
    return _oespicoli.OEMakeGridFromSurface(*args)

def OEMakeBitGridFromSurface(*args) -> "bool":
    r"""
    OEMakeBitGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf, float spacing, float buffer) -> bool
    OEMakeBitGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf) -> bool
    """
    return _oespicoli.OEMakeBitGridFromSurface(*args)

def OEMakeVoidVolume(mol1: "OEMolBase", mol2: "OEMolBase", grid: "OESystem::OEScalarGrid &", resolution: "float", probeRad: "float"=1.4) -> "bool":
    r"""OEMakeVoidVolume(OEMolBase mol1, OEMolBase mol2, OESystem::OEScalarGrid & grid, float resolution, float probeRad=1.4) -> bool"""
    return _oespicoli.OEMakeVoidVolume(mol1, mol2, grid, resolution, probeRad)

def OEMakeComplexCavities(ligand: "OEMolBase", protein: "OEMolBase", surf: "OESurface", resolution: "float"=0.5, probeRad: "float"=1.4) -> "bool":
    r"""OEMakeComplexCavities(OEMolBase ligand, OEMolBase protein, OESurface surf, float resolution=0.5, float probeRad=1.4) -> bool"""
    return _oespicoli.OEMakeComplexCavities(ligand, protein, surf, resolution, probeRad)

def OEMakeCavitySurfaces(mol: "OEMolBase", surf: "OESurface", resolution: "float"=0.5, probeRadius: "float"=1.4) -> "bool":
    r"""OEMakeCavitySurfaces(OEMolBase mol, OESurface surf, float resolution=0.5, float probeRadius=1.4) -> bool"""
    return _oespicoli.OEMakeCavitySurfaces(mol, surf, resolution, probeRadius)

def OESurfaceToMoleculeDistance(surf: "OESurface", mol: "OEMolBase") -> "bool":
    r"""OESurfaceToMoleculeDistance(OESurface surf, OEMolBase mol) -> bool"""
    return _oespicoli.OESurfaceToMoleculeDistance(surf, mol)

def OECalculateSurfaceCurvature(surf: "OESurface", mol: "OEMolBase", probeRadius: "float"=1.4) -> "bool":
    r"""OECalculateSurfaceCurvature(OESurface surf, OEMolBase mol, float probeRadius=1.4) -> bool"""
    return _oespicoli.OECalculateSurfaceCurvature(surf, mol, probeRadius)

def OEMakeSphericalSurface(surf: "OESurface", center: "float *", radius: "float", level: "unsigned int"=4) -> "bool":
    r"""OEMakeSphericalSurface(OESurface surf, float * center, float radius, unsigned int level=4) -> bool"""
    return _oespicoli.OEMakeSphericalSurface(surf, center, radius, level)

def OEMakeEllipsoidSurface(surf: "OESurface", center: "float *", a: "float", b: "float", c: "float", dir1: "float *", dir2: "float *", dir3: "float *", level: "int"=4) -> "bool":
    r"""OEMakeEllipsoidSurface(OESurface surf, float * center, float a, float b, float c, float * dir1, float * dir2, float * dir3, int level=4) -> bool"""
    return _oespicoli.OEMakeEllipsoidSurface(surf, center, a, b, c, dir1, dir2, dir3, level)

def OEMakeBoxSurface(surf: "OESurface", center: "float const *", extents: "float const *") -> "bool":
    r"""OEMakeBoxSurface(OESurface surf, float const * center, float const * extents) -> bool"""
    return _oespicoli.OEMakeBoxSurface(surf, center, extents)

def OECalculateFaceNormals(surf: "OESurface") -> "bool":
    r"""OECalculateFaceNormals(OESurface surf) -> bool"""
    return _oespicoli.OECalculateFaceNormals(surf)

def OECalculateNormals(surf: "OESurface") -> "bool":
    r"""OECalculateNormals(OESurface surf) -> bool"""
    return _oespicoli.OECalculateNormals(surf)

def OESetSurfacePotentials(surf: "OESurface", grid: "OESystem::OEScalarGrid const &") -> "bool":
    r"""OESetSurfacePotentials(OESurface surf, OESystem::OEScalarGrid const & grid) -> bool"""
    return _oespicoli.OESetSurfacePotentials(surf, grid)

def OESetSurfaceColor(*args) -> "bool":
    r"""
    OESetSurfaceColor(OESurface surf, unsigned char r, unsigned char g, unsigned char b, unsigned char a=255) -> bool
    OESetSurfaceColor(OESurface surf, float r, float g, float b, float a=1.0) -> bool
    """
    return _oespicoli.OESetSurfaceColor(*args)

def OEInvertSurface(surf: "OESurface") -> "bool":
    r"""OEInvertSurface(OESurface surf) -> bool"""
    return _oespicoli.OEInvertSurface(surf)

def OESurfaceVolume(surf: "OESurface") -> "float":
    r"""OESurfaceVolume(OESurface surf) -> float"""
    return _oespicoli.OESurfaceVolume(surf)

def OESurfaceArea(surf: "OESurface") -> "float":
    r"""OESurfaceArea(OESurface surf) -> float"""
    return _oespicoli.OESurfaceArea(surf)

def OESurfaceCliqueVolume(surf: "OESurface", clique: "unsigned int") -> "float":
    r"""OESurfaceCliqueVolume(OESurface surf, unsigned int clique) -> float"""
    return _oespicoli.OESurfaceCliqueVolume(surf, clique)

def OESurfaceCliqueCentroid(surf: "OESurface", clique: "unsigned int", centroid: "float *") -> "bool":
    r"""OESurfaceCliqueCentroid(OESurface surf, unsigned int clique, float * centroid) -> bool"""
    return _oespicoli.OESurfaceCliqueCentroid(surf, clique, centroid)

def OESurfaceCliqueArea(surf: "OESurface", clique: "unsigned int") -> "float":
    r"""OESurfaceCliqueArea(OESurface surf, unsigned int clique) -> float"""
    return _oespicoli.OESurfaceCliqueArea(surf, clique)

def OEMakeConnectedSurfaceCliques(surf: "OESurface") -> "unsigned int":
    r"""OEMakeConnectedSurfaceCliques(OESurface surf) -> unsigned int"""
    return _oespicoli.OEMakeConnectedSurfaceCliques(surf)

def OECalculateTriangleAreas(surf: "OESurface", areas: "float *") -> "bool":
    r"""OECalculateTriangleAreas(OESurface surf, float * areas) -> bool"""
    return _oespicoli.OECalculateTriangleAreas(surf, areas)

def OESurfaceIsOpen(surf: "OESurface") -> "bool":
    r"""OESurfaceIsOpen(OESurface surf) -> bool"""
    return _oespicoli.OESurfaceIsOpen(surf)

def OEMakeCliqueSurface(newsurf: "OESurface", surf: "OESurface", clique: "unsigned int") -> "bool":
    r"""OEMakeCliqueSurface(OESurface newsurf, OESurface surf, unsigned int clique) -> bool"""
    return _oespicoli.OEMakeCliqueSurface(newsurf, surf, clique)

def OESurfaceCropToClique(surf: "OESurface", clique: "unsigned int") -> "bool":
    r"""OESurfaceCropToClique(OESurface surf, unsigned int clique) -> bool"""
    return _oespicoli.OESurfaceCropToClique(surf, clique)

def OEAddSurfaces(surf1: "OESurface", surf2: "OESurface") -> "bool":
    r"""OEAddSurfaces(OESurface surf1, OESurface surf2) -> bool"""
    return _oespicoli.OEAddSurfaces(surf1, surf2)

def OERotateSurface(surf: "OESurface", rmat: "float *") -> "void":
    r"""OERotateSurface(OESurface surf, float * rmat)"""
    return _oespicoli.OERotateSurface(surf, rmat)

def OETranslateSurface(surf: "OESurface", trans: "float *") -> "void":
    r"""OETranslateSurface(OESurface surf, float * trans)"""
    return _oespicoli.OETranslateSurface(surf, trans)

def OETransformSurface(surf: "OESurface", trans: "OETrans") -> "void":
    r"""OETransformSurface(OESurface surf, OETrans trans)"""
    return _oespicoli.OETransformSurface(surf, trans)

def OESplitSurfaceByAtoms(*args) -> "bool":
    r"""
    OESplitSurfaceByAtoms(OESurface newsurf, OESurface surf, OEMolBase mol, double maxDist=4.0) -> bool
    OESplitSurfaceByAtoms(OESurface surf, OEMolBase mol, double maxDist=4.0) -> bool
    """
    return _oespicoli.OESplitSurfaceByAtoms(*args)

def OESmoothSurfaceEdges(surf: "OESurface") -> "bool":
    r"""OESmoothSurfaceEdges(OESurface surf) -> bool"""
    return _oespicoli.OESmoothSurfaceEdges(surf)
OE_OESPICOLI_VERSION = _oespicoli.OE_OESPICOLI_VERSION


def OESpicoliGetRelease() -> "char const *":
    r"""OESpicoliGetRelease() -> char const *"""
    return _oespicoli.OESpicoliGetRelease()

def OESpicoliGetVersion() -> "unsigned int":
    r"""OESpicoliGetVersion() -> unsigned int"""
    return _oespicoli.OESpicoliGetVersion()

def OESpicoliGetArch() -> "char const *":
    r"""OESpicoliGetArch() -> char const *"""
    return _oespicoli.OESpicoliGetArch()

def OESpicoliGetPlatform() -> "char const *":
    r"""OESpicoliGetPlatform() -> char const *"""
    return _oespicoli.OESpicoliGetPlatform()

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

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

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

def OEIsReadableSurface(*args) -> "bool":
    r"""
    OEIsReadableSurface(unsigned int type) -> bool
    OEIsReadableSurface(std::string const & filename) -> bool
    """
    return _oespicoli.OEIsReadableSurface(*args)

def OEIsWriteableSurface(*args) -> "bool":
    r"""
    OEIsWriteableSurface(unsigned int type) -> bool
    OEIsWriteableSurface(std::string const & filename) -> bool
    """
    return _oespicoli.OEIsWriteableSurface(*args)

def OEGetSurfaceFileType(ext: "char const *") -> "unsigned int":
    r"""OEGetSurfaceFileType(char const * ext) -> unsigned int"""
    return _oespicoli.OEGetSurfaceFileType(ext)

def OEGetSurfaceFormatExtension(tag: "unsigned int") -> "char const *":
    r"""OEGetSurfaceFormatExtension(unsigned int tag) -> char const *"""
    return _oespicoli.OEGetSurfaceFormatExtension(tag)

def OEGetSurfaceFormatString(tag: "unsigned int") -> "char const *":
    r"""OEGetSurfaceFormatString(unsigned int tag) -> char const *"""
    return _oespicoli.OEGetSurfaceFormatString(tag)

def OEReadSurface(*args) -> "bool":
    r"""
    OEReadSurface(std::string const & fname, OESurface surf) -> bool
    OEReadSurface(oeistream ifs, OESurface surf, unsigned int type) -> bool
    """
    return _oespicoli.OEReadSurface(*args)

def OEWriteSurface(*args) -> "bool":
    r"""
    OEWriteSurface(std::string const & fname, OESurface surf) -> bool
    OEWriteSurface(oeostream ofs, OESurface surf, unsigned int type) -> bool
    """
    return _oespicoli.OEWriteSurface(*args)

def OEInitSurfaceHandlers(*args) -> "bool":
    r"""
    OEInitSurfaceHandlers(oemolstreambase fs)
    OEInitSurfaceHandlers(OEBinaryIOHandlerBase b) -> bool
    """
    return _oespicoli.OEInitSurfaceHandlers(*args)

def OEReduceSurface(*args) -> "bool":
    r"""OEReduceSurface(OESurface reducedSurface, OESurface original, unsigned int targetNumberOfVertices, unsigned int type=) -> bool"""
    return _oespicoli.OEReduceSurface(*args)

def OESurfaceToJSONBytes(*args) -> "PyObject *":
    r"""OESurfaceToJSONBytes(OESurface surf, unsigned int flavor=) -> PyObject"""
    return _oespicoli.OESurfaceToJSONBytes(*args)

def OEJSONToSurfaceBytes(surf: "OESurface", bytes: "PyObject *") -> "PyObject *":
    r"""OEJSONToSurfaceBytes(OESurface surf, PyObject * bytes) -> PyObject *"""
    return _oespicoli.OEJSONToSurfaceBytes(surf, bytes)

def OESetSurfaceValue(rec: "OERecord", field: "OESurfaceField", surf: "OESurface") -> "bool":
    r"""OESetSurfaceValue(OERecord rec, OESurfaceField field, OESurface surf) -> bool"""
    return _oespicoli.OESetSurfaceValue(rec, field, surf)

def OEInitSurfaceFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitSurfaceFieldHandler() -> OEFieldTypeHandler"""
    return _oespicoli.OEInitSurfaceFieldHandler()

def OEInitSurfaceVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitSurfaceVecFieldHandler() -> OEFieldTypeHandler"""
    return _oespicoli.OEInitSurfaceVecFieldHandler()
class OESurfaceType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEFieldType< OESpicoli::OESurface > class."""

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

    @staticmethod
    def format(surf: "OESurface") -> "std::string":
        r"""format(OESurface surf) -> std::string"""
        return _oespicoli.OESurfaceType_format(surf)

    def is_cacheable(self) -> "bool":
        r"""is_cacheable(OESurfaceType self) -> bool"""
        return _oespicoli.OESurfaceType_is_cacheable(self)

    def get_name(self) -> "std::string":
        r"""get_name(OESurfaceType self) -> std::string"""
        return _oespicoli.OESurfaceType_get_name(self)

    def bytes_to_json(self, bytes: "OEUCharVector") -> "std::string":
        r"""bytes_to_json(OESurfaceType self, OEUCharVector bytes) -> std::string"""
        return _oespicoli.OESurfaceType_bytes_to_json(self, bytes)

    def __init__(self):
        r"""__init__(OESurfaceType self) -> OESurfaceType"""
        _oespicoli.OESurfaceType_swiginit(self, _oespicoli.new_OESurfaceType())
    __swig_destroy__ = _oespicoli.delete_OESurfaceType

# Register OESurfaceType in _oespicoli:
_oespicoli.OESurfaceType_swigregister(OESurfaceType)
cvar = _oespicoli.cvar

def OESurfaceType_format(surf: "OESurface") -> "std::string":
    r"""OESurfaceType_format(OESurface surf) -> std::string"""
    return _oespicoli.OESurfaceType_format(surf)

class OESurfaceVecType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEVectorFieldType< OESpicoli::OESurface > class."""

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

    @staticmethod
    def format(val: "std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > const &") -> "std::string":
        r"""format(std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > const & val) -> std::string"""
        return _oespicoli.OESurfaceVecType_format(val)

    @staticmethod
    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > >":
        r"""
        GetCopyForCache(std::vector< OESpicoli::OESurface,std::allocator< OESpicoli::OESurface > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > >
        GetCopyForCache(std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > const & val) -> std::shared_ptr< std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > >
        """
        return _oespicoli.OESurfaceVecType_GetCopyForCache(*args)

    def get_name(self) -> "std::string":
        r"""get_name(OESurfaceVecType self) -> std::string"""
        return _oespicoli.OESurfaceVecType_get_name(self)

    def bytes_to_json(self, bytes: "OEUCharVector") -> "std::string":
        r"""bytes_to_json(OESurfaceVecType self, OEUCharVector bytes) -> std::string"""
        return _oespicoli.OESurfaceVecType_bytes_to_json(self, bytes)

    def __init__(self):
        r"""__init__(OESurfaceVecType self) -> OESurfaceVecType"""
        _oespicoli.OESurfaceVecType_swiginit(self, _oespicoli.new_OESurfaceVecType())
    __swig_destroy__ = _oespicoli.delete_OESurfaceVecType

# Register OESurfaceVecType in _oespicoli:
_oespicoli.OESurfaceVecType_swigregister(OESurfaceVecType)

def OESurfaceVecType_format(val: "std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > const &") -> "std::string":
    r"""OESurfaceVecType_format(std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > const & val) -> std::string"""
    return _oespicoli.OESurfaceVecType_format(val)

def OESurfaceVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > >":
    r"""
    OESurfaceVecType_GetCopyForCache(std::vector< OESpicoli::OESurface,std::allocator< OESpicoli::OESurface > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESpicoli::OESurface >,std::allocator< OEStdOptionalNamespace::optional< OESpicoli::OESurface > > > >
    OESurfaceVecType_GetCopyForCache(std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > const & val) -> std::shared_ptr< std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > >
    """
    return _oespicoli.OESurfaceVecType_GetCopyForCache(*args)

class OESurfaceField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEField< OESpicoli::OESurface > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESurfaceField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESurfaceField
        __init__(OESurfaceField self, OEFieldBase other) -> OESurfaceField
        """
        _oespicoli.OESurfaceField_swiginit(self, _oespicoli.new_OESurfaceField(*args))

    def deserialize(self, value: "OESurface", data: "OEUCharVector") -> "bool":
        r"""deserialize(OESurfaceField self, OESurface value, OEUCharVector data) -> bool"""
        return _oespicoli.OESurfaceField_deserialize(self, value, data)

    def get_type(self) -> "OEDataFlow::OEFieldType< OESpicoli::OESurface >":
        r"""get_type(OESurfaceField self) -> OESurfaceType"""
        return _oespicoli.OESurfaceField_get_type(self)
    __swig_destroy__ = _oespicoli.delete_OESurfaceField

# Register OESurfaceField in _oespicoli:
_oespicoli.OESurfaceField_swigregister(OESurfaceField)

class OESurfaceVecField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEVectorField< OESpicoli::OESurface > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESurfaceVecField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESurfaceVecField
        __init__(OESurfaceVecField self, OEFieldBase f) -> OESurfaceVecField
        """
        _oespicoli.OESurfaceVecField_swiginit(self, _oespicoli.new_OESurfaceVecField(*args))

    def deserialize(self, *args) -> "bool":
        r"""
        deserialize(OESurfaceVecField self, std::vector< std::optional< OESpicoli::OESurface >,std::allocator< std::optional< OESpicoli::OESurface > > > & ret, OEUCharVector data) -> bool
        deserialize(OESurfaceVecField self, std::vector< OESpicoli::OESurface,std::allocator< OESpicoli::OESurface > > & ret, OEUCharVector data) -> bool
        """
        return _oespicoli.OESurfaceVecField_deserialize(self, *args)

    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OESpicoli::OESurface >":
        r"""get_type(OESurfaceVecField self) -> OESurfaceVecType"""
        return _oespicoli.OESurfaceVecField_get_type(self)
    __swig_destroy__ = _oespicoli.delete_OESurfaceVecField

# Register OESurfaceVecField in _oespicoli:
_oespicoli.OESurfaceVecField_swigregister(OESurfaceVecField)

class OESurfaceMatchField(OESurfaceField):
    r"""Proxy of C++ OEDataFlow::OEMatchField< OESpicoli::OESurface > class."""

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

    def __init__(self, *args):
        r"""__init__(OESurfaceMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESurfaceMatchField"""
        _oespicoli.OESurfaceMatchField_swiginit(self, _oespicoli.new_OESurfaceMatchField(*args))
    __swig_destroy__ = _oespicoli.delete_OESurfaceMatchField

# Register OESurfaceMatchField in _oespicoli:
_oespicoli.OESurfaceMatchField_swigregister(OESurfaceMatchField)

class OESurfaceVecMatchField(OESurfaceVecField):
    r"""Proxy of C++ OEDataFlow::OEMatchVectorField< OESpicoli::OESurface > class."""

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

    def __init__(self, *args):
        r"""__init__(OESurfaceVecMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESurfaceVecMatchField"""
        _oespicoli.OESurfaceVecMatchField_swiginit(self, _oespicoli.new_OESurfaceVecMatchField(*args))
    __swig_destroy__ = _oespicoli.delete_OESurfaceVecMatchField

# Register OESurfaceVecMatchField in _oespicoli:
_oespicoli.OESurfaceVecMatchField_swigregister(OESurfaceVecMatchField)


oechem.Types.Chem.Surface = OESurfaceType()
oechem.Types.Chem.SurfaceVec = OESurfaceVecType()
oechem.Types.Chem.SurfaceVec.__class__.scalar_type = oechem.Types.Chem.Surface

OESurfaceType.valid_types = (OESurface,)



