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

    _oegrid = libs.OEGetModule('_oegrid3006')
    return _oegrid

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


OEGridFileType_UNDEFINED = _oegrid.OEGridFileType_UNDEFINED
OEGridFileType_Grasp = _oegrid.OEGridFileType_Grasp
OEGridFileType_GRD = _oegrid.OEGridFileType_GRD
OEGridFileType_CCP4 = _oegrid.OEGridFileType_CCP4
OEGridFileType_XPLOR = _oegrid.OEGridFileType_XPLOR
OEGridFileType_Ascii = _oegrid.OEGridFileType_Ascii
OEGridType_GenericGrid = _oegrid.OEGridType_GenericGrid
OEGridType_ElectrostaticGrid = _oegrid.OEGridType_ElectrostaticGrid
OEGridType_FredGrid = _oegrid.OEGridType_FredGrid
OEGridType_RegularMap = _oegrid.OEGridType_RegularMap
OEGridType_DifferenceMap = _oegrid.OEGridType_DifferenceMap
OEGridType_ETGrid = _oegrid.OEGridType_ETGrid

OEGridType_EonGrid = OEGridType_ETGrid

OEGridType_MaxGridType = _oegrid.OEGridType_MaxGridType
OEGridMaskType_ValuePlus = _oegrid.OEGridMaskType_ValuePlus
OEGridMaskType_ValueMinus = _oegrid.OEGridMaskType_ValueMinus
OEGridMaskType_GridPlus = _oegrid.OEGridMaskType_GridPlus
OEGridMaskType_GridMinus = _oegrid.OEGridMaskType_GridMinus
OEGridMaskType_Gaussian = _oegrid.OEGridMaskType_Gaussian
OEGridMaskType_GaussianMinus = _oegrid.OEGridMaskType_GaussianMinus
OEGridMaskType_GaussianSmooth = _oegrid.OEGridMaskType_GaussianSmooth
OEGridMaskType_GaussianSmoothMinus = _oegrid.OEGridMaskType_GaussianSmoothMinus

OEGridMaskType_Default = OEGridMaskType_Gaussian

OEMTZMapType_Fo = _oegrid.OEMTZMapType_Fo
OEMTZMapType_Fc = _oegrid.OEMTZMapType_Fc
OEMTZMapType_TwoFoFc = _oegrid.OEMTZMapType_TwoFoFc
OEMTZMapType_FoFc = _oegrid.OEMTZMapType_FoFc
OEMTZMapType_ThreeFoTwoFc = _oegrid.OEMTZMapType_ThreeFoTwoFc
OEMTZMapType_FiveFoThreeFc = _oegrid.OEMTZMapType_FiveFoThreeFc
OEMTZMapType_TwoFoFcSigmaA = _oegrid.OEMTZMapType_TwoFoFcSigmaA
OEMTZMapType_FoFcSigmaA = _oegrid.OEMTZMapType_FoFcSigmaA
OEMTZMapType_FoSquared = _oegrid.OEMTZMapType_FoSquared
OEMTZMapType_FoFom = _oegrid.OEMTZMapType_FoFom
OEMTZMapType_Fwt = _oegrid.OEMTZMapType_Fwt
OEMTZMapType_Fdelwt = _oegrid.OEMTZMapType_Fdelwt
OEMTZMapType_User = _oegrid.OEMTZMapType_User
OEMTZMapType_UserDiff = _oegrid.OEMTZMapType_UserDiff
OEMTZMapType_None = _oegrid.OEMTZMapType_None

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

def TypeToPyString(type: 'void const *') -> "PyObject *":
    return _oegrid.TypeToPyString(type)
TypeToPyString = _oegrid.TypeToPyString
class OEInternalFunctionPointer(object):
    thisown = _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):
        this = _oegrid.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":
        return _oegrid.OEInternalFunctionPointer_Add(self, b, tag, data)
    __swig_destroy__ = _oegrid.delete_OEInternalFunctionPointer
    __del__ = lambda self: None
OEInternalFunctionPointer_swigregister = _oegrid.OEInternalFunctionPointer_swigregister
OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


def OEInternalGetGenericData(type: 'void const *') -> "OEInternalFunctionPointer *":
    return _oegrid.OEInternalGetGenericData(type)
OEInternalGetGenericData = _oegrid.OEInternalGetGenericData
import openeye.oechem as oechem
class OEGaussianBase(oechem.OEBase):
    """Proxy of C++ OESystem::OEGaussianBase 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__ = _oegrid.delete_OEGaussianBase
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEGaussianBase self) -> void const *"""
        return _oegrid.OEGaussianBase_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEGaussianBase self, void const * arg2) -> bool"""
        return _oegrid.OEGaussianBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEGaussianBase self) -> OEBase"""
        return _oegrid.OEGaussianBase_CreateCopy(self)


    def SetPrefactor(self, prefactor: 'float') -> "void":
        """SetPrefactor(OEGaussianBase self, float prefactor)"""
        return _oegrid.OEGaussianBase_SetPrefactor(self, prefactor)


    def GetPrefactor(self) -> "float":
        """GetPrefactor(OEGaussianBase self) -> float"""
        return _oegrid.OEGaussianBase_GetPrefactor(self)


    def SetWidth(self, width: 'float') -> "void":
        """SetWidth(OEGaussianBase self, float width)"""
        return _oegrid.OEGaussianBase_SetWidth(self, width)


    def GetWidth(self) -> "float":
        """GetWidth(OEGaussianBase self) -> float"""
        return _oegrid.OEGaussianBase_GetWidth(self)


    def SetCenter(self, xyz: 'float *') -> "void":
        """SetCenter(OEGaussianBase self, float * xyz)"""
        return _oegrid.OEGaussianBase_SetCenter(self, xyz)


    def SetX(self, x: 'float') -> "void":
        """SetX(OEGaussianBase self, float x)"""
        return _oegrid.OEGaussianBase_SetX(self, x)


    def SetY(self, y: 'float') -> "void":
        """SetY(OEGaussianBase self, float y)"""
        return _oegrid.OEGaussianBase_SetY(self, y)


    def SetZ(self, z: 'float') -> "void":
        """SetZ(OEGaussianBase self, float z)"""
        return _oegrid.OEGaussianBase_SetZ(self, z)


    def GetCenter(self, xyz: 'float *') -> "void":
        """GetCenter(OEGaussianBase self, float * xyz)"""
        return _oegrid.OEGaussianBase_GetCenter(self, xyz)


    def GetX(self) -> "float":
        """GetX(OEGaussianBase self) -> float"""
        return _oegrid.OEGaussianBase_GetX(self)


    def GetY(self) -> "float":
        """GetY(OEGaussianBase self) -> float"""
        return _oegrid.OEGaussianBase_GetY(self)


    def GetZ(self) -> "float":
        """GetZ(OEGaussianBase self) -> float"""
        return _oegrid.OEGaussianBase_GetZ(self)


    def SetColor(self, color: 'unsigned int') -> "void":
        """SetColor(OEGaussianBase self, unsigned int color)"""
        return _oegrid.OEGaussianBase_SetColor(self, color)


    def GetColor(self) -> "unsigned int":
        """GetColor(OEGaussianBase self) -> unsigned int"""
        return _oegrid.OEGaussianBase_GetColor(self)

OEGaussianBase_swigregister = _oegrid.OEGaussianBase_swigregister
OEGaussianBase_swigregister(OEGaussianBase)

class OEGaussian(OEGaussianBase):
    """Proxy of C++ OESystem::OEGaussian class."""

    thisown = _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::OEGaussian self) -> OEGaussian
        __init__(OESystem::OEGaussian self, float prefactor, float width, float * xyz=None, unsigned int color=0) -> OEGaussian
        __init__(OESystem::OEGaussian self, float prefactor, float width, float * xyz=None) -> OEGaussian
        __init__(OESystem::OEGaussian self, float prefactor, float width) -> OEGaussian
        __init__(OESystem::OEGaussian self, float prefactor, float width, float x, float y, float z, unsigned int color=0) -> OEGaussian
        __init__(OESystem::OEGaussian self, float prefactor, float width, float x, float y, float z) -> OEGaussian
        __init__(OESystem::OEGaussian self, OEGaussian rhs) -> OEGaussian
        __init__(OESystem::OEGaussian self, OEGaussianBase rhs) -> OEGaussian
        """
        this = _oegrid.new_OEGaussian(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oegrid.delete_OEGaussian
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEGaussian self) -> void const *"""
        return _oegrid.OEGaussian_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEGaussian self, void const * arg2) -> bool"""
        return _oegrid.OEGaussian_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEGaussian self) -> OEBase"""
        return _oegrid.OEGaussian_CreateCopy(self)


    def SetPrefactor(self, prefactor: 'float') -> "void":
        """SetPrefactor(OEGaussian self, float prefactor)"""
        return _oegrid.OEGaussian_SetPrefactor(self, prefactor)


    def GetPrefactor(self) -> "float":
        """GetPrefactor(OEGaussian self) -> float"""
        return _oegrid.OEGaussian_GetPrefactor(self)


    def SetWidth(self, width: 'float') -> "void":
        """SetWidth(OEGaussian self, float width)"""
        return _oegrid.OEGaussian_SetWidth(self, width)


    def GetWidth(self) -> "float":
        """GetWidth(OEGaussian self) -> float"""
        return _oegrid.OEGaussian_GetWidth(self)


    def SetCenter(self, xyz: 'float *') -> "void":
        """SetCenter(OEGaussian self, float * xyz)"""
        return _oegrid.OEGaussian_SetCenter(self, xyz)


    def SetX(self, x: 'float') -> "void":
        """SetX(OEGaussian self, float x)"""
        return _oegrid.OEGaussian_SetX(self, x)


    def SetY(self, y: 'float') -> "void":
        """SetY(OEGaussian self, float y)"""
        return _oegrid.OEGaussian_SetY(self, y)


    def SetZ(self, z: 'float') -> "void":
        """SetZ(OEGaussian self, float z)"""
        return _oegrid.OEGaussian_SetZ(self, z)


    def GetCenter(self, xyz: 'float *') -> "void":
        """GetCenter(OEGaussian self, float * xyz)"""
        return _oegrid.OEGaussian_GetCenter(self, xyz)


    def GetX(self) -> "float":
        """GetX(OEGaussian self) -> float"""
        return _oegrid.OEGaussian_GetX(self)


    def GetY(self) -> "float":
        """GetY(OEGaussian self) -> float"""
        return _oegrid.OEGaussian_GetY(self)


    def GetZ(self) -> "float":
        """GetZ(OEGaussian self) -> float"""
        return _oegrid.OEGaussian_GetZ(self)


    def SetColor(self, color: 'unsigned int') -> "void":
        """SetColor(OEGaussian self, unsigned int color)"""
        return _oegrid.OEGaussian_SetColor(self, color)


    def GetColor(self) -> "unsigned int":
        """GetColor(OEGaussian self) -> unsigned int"""
        return _oegrid.OEGaussian_GetColor(self)

OEGaussian_swigregister = _oegrid.OEGaussian_swigregister
OEGaussian_swigregister(OEGaussian)


def OEGetPrefactor(kappa: 'double') -> "double":
    """OEGetPrefactor(double kappa) -> double"""
    return _oegrid.OEGetPrefactor(kappa)

def OEGetWidth(kappa: 'double', radius: 'double') -> "double":
    """OEGetWidth(double kappa, double radius) -> double"""
    return _oegrid.OEGetWidth(kappa, radius)

def OEGetKappa(*args) -> "double":
    """
    OEGetKappa(double prefactor) -> double
    OEGetKappa(OEGaussianBase arg1) -> double
    """
    return _oegrid.OEGetKappa(*args)

def OEGetRadius(*args) -> "double":
    """
    OEGetRadius(double prefactor, double width) -> double
    OEGetRadius(OEGaussianBase arg1) -> double
    """
    return _oegrid.OEGetRadius(*args)

def OEAddContour(grid: 'OEGridAbstractBase', level: 'float', c: 'OEColor') -> "void":
    """OEAddContour(OEGridAbstractBase grid, float level, OEColor c)"""
    return _oegrid.OEAddContour(grid, level, c)

def OEGetContourColor(grid: 'OEGridAbstractBase', idx: 'unsigned int') -> "OESystem::OEColor":
    """OEGetContourColor(OEGridAbstractBase grid, unsigned int idx) -> OEColor"""
    return _oegrid.OEGetContourColor(grid, idx)

def OEGetContourLevel(grid: 'OEGridAbstractBase', idx: 'unsigned int') -> "float":
    """OEGetContourLevel(OEGridAbstractBase grid, unsigned int idx) -> float"""
    return _oegrid.OEGetContourLevel(grid, idx)

def OENumContours(grid: 'OEGridAbstractBase') -> "unsigned int":
    """OENumContours(OEGridAbstractBase grid) -> unsigned int"""
    return _oegrid.OENumContours(grid)

def OERotateGrid(*args) -> "void":
    """
    OERotateGrid(OESkewGrid g, double const * rmat)
    OERotateGrid(OESkewGrid g, float const * rmat)
    """
    return _oegrid.OERotateGrid(*args)

def OETranslateGrid(*args) -> "void":
    """
    OETranslateGrid(OESkewGrid g, double const * trans)
    OETranslateGrid(OESkewGrid g, float const * trans)
    """
    return _oegrid.OETranslateGrid(*args)

def OEGetGridCenterAndExtents(*args) -> "void":
    """
    OEGetGridCenterAndExtents(OESkewGrid g, float * center, float * extents)
    OEGetGridCenterAndExtents(OEGridBase g, float * center, float * extents)
    """
    return _oegrid.OEGetGridCenterAndExtents(*args)

def OESetGrid(obj: 'OEBase', t: 'char const *', g: 'OEScalarGrid') -> "bool":
    """OESetGrid(OEBase obj, char const * t, OEScalarGrid g) -> bool"""
    return _oegrid.OESetGrid(obj, t, g)

def OEGetGrid(obj: 'OEBase', t: 'char const *') -> "OESystem::OEScalarGrid const &":
    """OEGetGrid(OEBase obj, char const * t) -> OEScalarGrid"""
    return _oegrid.OEGetGrid(obj, t)

def OESetSkewGrid(obj: 'OEBase', t: 'char const *', g: 'OESkewGrid') -> "bool":
    """OESetSkewGrid(OEBase obj, char const * t, OESkewGrid g) -> bool"""
    return _oegrid.OESetSkewGrid(obj, t, g)

def OEGetSkewGrid(obj: 'OEBase', t: 'char const *') -> "OESystem::OESkewGrid const &":
    """OEGetSkewGrid(OEBase obj, char const * t) -> OESkewGrid"""
    return _oegrid.OEGetSkewGrid(obj, t)

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

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

def OEGetGridFileType(ext: 'char const *') -> "unsigned int":
    """OEGetGridFileType(char const * ext) -> unsigned int"""
    return _oegrid.OEGetGridFileType(ext)

def OEGetGridFormatExtension(tag: 'unsigned int') -> "char const *":
    """OEGetGridFormatExtension(unsigned int tag) -> char const *"""
    return _oegrid.OEGetGridFormatExtension(tag)

def OEGetGridFormatString(tag: 'unsigned int') -> "char const *":
    """OEGetGridFormatString(unsigned int tag) -> char const *"""
    return _oegrid.OEGetGridFormatString(tag)

def OEWriteGrid(*args) -> "bool":
    """
    OEWriteGrid(std::string const & filename, OEScalarGrid grid) -> bool
    OEWriteGrid(std::string const & filename, OESkewGrid grid) -> bool
    OEWriteGrid(oeostream ofs, OEScalarGrid grid, unsigned int filetype) -> bool
    OEWriteGrid(oeostream ofs, OESkewGrid grid, unsigned int filetype) -> bool
    """
    return _oegrid.OEWriteGrid(*args)

def OEReadGrid(*args) -> "bool":
    """
    OEReadGrid(std::string const & filename, OEScalarGrid grid) -> bool
    OEReadGrid(std::string const & filename, OESkewGrid grid) -> bool
    OEReadGrid(oeistream ifs, OEScalarGrid grid, unsigned int filetype) -> bool
    OEReadGrid(oeistream ifs, OESkewGrid grid, unsigned int filetype) -> bool
    """
    return _oegrid.OEReadGrid(*args)

def OEClearGridBoundary(grid: 'OEScalarGrid') -> "bool":
    """OEClearGridBoundary(OEScalarGrid grid) -> bool"""
    return _oegrid.OEClearGridBoundary(grid)

def OEMakeRegularGrid(gridout: 'OEScalarGrid', gridin: 'OESkewGrid', scale: 'float'=0.0) -> "bool":
    """
    OEMakeRegularGrid(OEScalarGrid gridout, OESkewGrid gridin, float scale=0.0) -> bool
    OEMakeRegularGrid(OEScalarGrid gridout, OESkewGrid gridin) -> bool
    """
    return _oegrid.OEMakeRegularGrid(gridout, gridin, scale)

def OEMakeRegularSubGrid(*args) -> "bool":
    """
    OEMakeRegularSubGrid(OEScalarGrid gridout, OEScalarGrid gridin, float const * center, float const * extents, float scale, bool reentrant) -> bool
    OEMakeRegularSubGrid(OEScalarGrid gridout, OESkewGrid gridin, float const * center, float const * extents, float scale, bool reentrant) -> bool
    """
    return _oegrid.OEMakeRegularSubGrid(*args)

def OEMaskGridByMolecule(*args) -> "bool":
    """
    OEMaskGridByMolecule(OEScalarGrid grid, OEMolBase mol, unsigned int masktype) -> bool
    OEMaskGridByMolecule(OEScalarGrid grid, OEMolBase mol) -> bool
    OEMaskGridByMolecule(OEScalarGrid grid, OEMolBase mol, unsigned int masktype, float contour) -> bool
    """
    return _oegrid.OEMaskGridByMolecule(*args)

def OEMaskGridValues(*args) -> "bool":
    """
    OEMaskGridValues(float * vals, float const * cvals, unsigned int count, unsigned int type) -> bool
    OEMaskGridValues(float * vals, float const * cvals, unsigned int count) -> bool
    """
    return _oegrid.OEMaskGridValues(*args)

def OEMaskGridByCoordsAndRadii(*args) -> "bool":
    """
    OEMaskGridByCoordsAndRadii(OEScalarGrid grid, float const * coords, float const * radii, unsigned int numcoords, unsigned int type) -> bool
    OEMaskGridByCoordsAndRadii(OEScalarGrid grid, float const * coords, float const * radii, unsigned int numcoords) -> bool
    """
    return _oegrid.OEMaskGridByCoordsAndRadii(*args)

def OEMakeMolecularGaussianGrid(*args) -> "bool":
    """
    OEMakeMolecularGaussianGrid(OEScalarGrid grid, OEMolBase mol, float resolution) -> bool
    OEMakeMolecularGaussianGrid(OEScalarGrid grid, OEMolBase mol) -> bool
    """
    return _oegrid.OEMakeMolecularGaussianGrid(*args)

def OEMakeGridFromCenterAndExtents(fgrid: 'OEScalarGrid', center: 'float const *', extents: 'float const *', spacing: 'float') -> "bool":
    """OEMakeGridFromCenterAndExtents(OEScalarGrid fgrid, float const * center, float const * extents, float spacing) -> bool"""
    return _oegrid.OEMakeGridFromCenterAndExtents(fgrid, center, extents, spacing)

def OEInterpolateBetweenGrids(dst: 'OEScalarGrid', src: 'OEScalarGrid') -> "bool":
    """OEInterpolateBetweenGrids(OEScalarGrid dst, OEScalarGrid src) -> bool"""
    return _oegrid.OEInterpolateBetweenGrids(dst, src)

def OEIsGrid(b: 'OEBase') -> "bool":
    """OEIsGrid(OEBase b) -> bool"""
    return _oegrid.OEIsGrid(b)

def OEInitGridHandlers(*args) -> "bool":
    """
    OEInitGridHandlers(oemolstreambase fs)
    OEInitGridHandlers(OEBinaryIOHandlerBase b) -> bool
    """
    return _oegrid.OEInitGridHandlers(*args)

def OEGridHasNonZeroValue(*args) -> "bool":
    """
    OEGridHasNonZeroValue(OEScalarGrid g) -> bool
    OEGridHasNonZeroValue(OESkewGrid g) -> bool
    """
    return _oegrid.OEGridHasNonZeroValue(*args)

def OESigmaNormalizeGrid(*args) -> "float":
    """
    OESigmaNormalizeGrid(OEScalarGrid g) -> float
    OESigmaNormalizeGrid(OESkewGrid g) -> float
    """
    return _oegrid.OESigmaNormalizeGrid(*args)

def OEQuadraticInterpolationAndDerivatives(*args) -> "bool":
    """
    OEQuadraticInterpolationAndDerivatives(OEScalarGrid grid, float const * coords, unsigned int N, float * values, float * derivatives) -> bool
    OEQuadraticInterpolationAndDerivatives(OEScalarGrid grid, OEMolBase m, OEFloatVector values, OEFloatVector derivatives) -> bool
    """
    return _oegrid.OEQuadraticInterpolationAndDerivatives(*args)
class OESkewGrid(oechem.OEGridAbstractBase):
    """Proxy of C++ OESystem::OESkewGrid class."""

    thisown = _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::OESkewGrid self) -> OESkewGrid
        __init__(OESystem::OESkewGrid self, OESkewGrid rhs) -> OESkewGrid
        __init__(OESystem::OESkewGrid self, OESystem::OESkewGridImpl const & f) -> OESkewGrid
        __init__(OESystem::OESkewGrid self, OEScalarGrid g) -> OESkewGrid
        __init__(OESystem::OESkewGrid self, OEFixedFloatGrid f) -> OESkewGrid
        """
        this = _oegrid.new_OESkewGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def IsValid(self):
      return _oegrid.OESkewGrid___nonzero__(self)


    __swig_destroy__ = _oegrid.delete_OESkewGrid
    __del__ = lambda self: None

    def SetValues(self, values: 'float const *', length: 'unsigned int') -> "bool":
        """SetValues(OESkewGrid self, float const * values, unsigned int length) -> bool"""
        return _oegrid.OESkewGrid_SetValues(self, values, length)


    def GetReentrant(self) -> "unsigned int":
        """GetReentrant(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetReentrant(self)


    def SetReentrant(self, state: 'bool'=True) -> "void":
        """
        SetReentrant(OESkewGrid self, bool state=True)
        SetReentrant(OESkewGrid self)
        """
        return _oegrid.OESkewGrid_SetReentrant(self, state)


    def SetUnitCell(self, A: 'float', B: 'float', C: 'float', alpha: 'float', beta: 'float', gamma: 'float', nx: 'unsigned int', ny: 'unsigned int', nz: 'unsigned int') -> "bool":
        """SetUnitCell(OESkewGrid self, float A, float B, float C, float alpha, float beta, float gamma, unsigned int nx, unsigned int ny, unsigned int nz) -> bool"""
        return _oegrid.OESkewGrid_SetUnitCell(self, A, B, C, alpha, beta, gamma, nx, ny, nz)


    def GetUnitCell(self, A: 'float &', B: 'float &', C: 'float &', alpha: 'float &', beta: 'float &', gamma: 'float &') -> "bool":
        """GetUnitCell(OESkewGrid self, float & A, float & B, float & C, float & alpha, float & beta, float & gamma) -> bool"""
        return _oegrid.OESkewGrid_GetUnitCell(self, A, B, C, alpha, beta, gamma)


    def HasUnitCell(self) -> "bool":
        """HasUnitCell(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_HasUnitCell(self)


    def SetSpaceGroup(self, group: 'unsigned int') -> "bool":
        """SetSpaceGroup(OESkewGrid self, unsigned int group) -> bool"""
        return _oegrid.OESkewGrid_SetSpaceGroup(self, group)


    def GetSpaceGroup(self) -> "unsigned int":
        """GetSpaceGroup(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetSpaceGroup(self)


    def HasSpaceGroup(self) -> "bool":
        """HasSpaceGroup(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_HasSpaceGroup(self)


    def GetType(self) -> "unsigned int":
        """GetType(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetType(self)


    def SetType(self, type: 'unsigned int') -> "void":
        """SetType(OESkewGrid self, unsigned int type)"""
        return _oegrid.OESkewGrid_SetType(self, type)


    def Clear(self) -> "void":
        """Clear(OESkewGrid self)"""
        return _oegrid.OESkewGrid_Clear(self)


    def GetTitle(self) -> "std::string":
        """GetTitle(OESkewGrid self) -> std::string"""
        return _oegrid.OESkewGrid_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OESkewGrid self, std::string const & title) -> bool"""
        return _oegrid.OESkewGrid_SetTitle(self, title)


    def IsTitleSet(self) -> "bool":
        """IsTitleSet(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_IsTitleSet(self)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OESkewGrid self, float spacing) -> bool"""
        return _oegrid.OESkewGrid_SetSpacing(self, spacing)


    def GetSpacing(self) -> "float":
        """GetSpacing(OESkewGrid self) -> float"""
        return _oegrid.OESkewGrid_GetSpacing(self)


    def IsSpacingSet(self) -> "bool":
        """IsSpacingSet(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_IsSpacingSet(self)


    def SetMid(self, midx: 'float', midy: 'float', midz: 'float') -> "bool":
        """SetMid(OESkewGrid self, float midx, float midy, float midz) -> bool"""
        return _oegrid.OESkewGrid_SetMid(self, midx, midy, midz)


    def GetXMid(self) -> "float":
        """GetXMid(OESkewGrid self) -> float"""
        return _oegrid.OESkewGrid_GetXMid(self)


    def GetYMid(self) -> "float":
        """GetYMid(OESkewGrid self) -> float"""
        return _oegrid.OESkewGrid_GetYMid(self)


    def GetZMid(self) -> "float":
        """GetZMid(OESkewGrid self) -> float"""
        return _oegrid.OESkewGrid_GetZMid(self)


    def SetDim(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int') -> "bool":
        """SetDim(OESkewGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim) -> bool"""
        return _oegrid.OESkewGrid_SetDim(self, xdim, ydim, zdim)


    def GetXDim(self) -> "unsigned int":
        """GetXDim(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetXDim(self)


    def GetYDim(self) -> "unsigned int":
        """GetYDim(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetYDim(self)


    def GetZDim(self) -> "unsigned int":
        """GetZDim(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetZDim(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetSize(self)


    def IsRegular(self) -> "bool":
        """IsRegular(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_IsRegular(self)


    def AsRegularGrid(self) -> "OESystem::OEFixedGrid< float > const &":
        """AsRegularGrid(OESkewGrid self) -> OEFixedFloatGrid"""
        return _oegrid.OESkewGrid_AsRegularGrid(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OESkewGrid self) -> OEBase"""
        return _oegrid.OESkewGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OESkewGrid self) -> void const *"""
        return _oegrid.OESkewGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OESkewGrid self, void const * type) -> bool"""
        return _oegrid.OESkewGrid_IsDataType(self, type)


    def GetValues(self) -> "PyObject *":
        return _oegrid.OESkewGrid_GetValues(self)

    def ElementToSpatialCoord(self, el: 'unsigned int') -> "PyObject *":
        """ElementToSpatialCoord(OESkewGrid self, unsigned int el) -> PyObject *"""
        return _oegrid.OESkewGrid_ElementToSpatialCoord(self, el)


    def ElementToGridIdx(self, el: 'unsigned int') -> "PyObject *":
        """ElementToGridIdx(OESkewGrid self, unsigned int el) -> PyObject *"""
        return _oegrid.OESkewGrid_ElementToGridIdx(self, el)

OESkewGrid_swigregister = _oegrid.OESkewGrid_swigregister
OESkewGrid_swigregister(OESkewGrid)

class OEScalarGrid(oechem.OEFloatGrid):
    """Proxy of C++ OESystem::OEScalarGrid class."""

    thisown = _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::OEScalarGrid self) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, OEScalarGrid rhs) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, OEFixedFloatGrid rhs) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, float [6] minmax, float spacing, char const * title) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, float [6] minmax, float spacing) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, double [6] minmax, double spacing, char const * title) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, double [6] minmax, double spacing) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, float * dataptr=None) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEScalarGrid
        __init__(OESystem::OEScalarGrid self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEScalarGrid
        """
        this = _oegrid.new_OEScalarGrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetType(self, t: 'unsigned int') -> "bool":
        """SetType(OEScalarGrid self, unsigned int t) -> bool"""
        return _oegrid.OEScalarGrid_SetType(self, t)


    def GetType(self) -> "unsigned int":
        """GetType(OEScalarGrid self) -> unsigned int"""
        return _oegrid.OEScalarGrid_GetType(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEScalarGrid self) -> OEBase"""
        return _oegrid.OEScalarGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEScalarGrid self) -> void const *"""
        return _oegrid.OEScalarGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEScalarGrid self, void const * type) -> bool"""
        return _oegrid.OEScalarGrid_IsDataType(self, type)


    def Clear(self) -> "void":
        """Clear(OEScalarGrid self)"""
        return _oegrid.OEScalarGrid_Clear(self)

    __swig_destroy__ = _oegrid.delete_OEScalarGrid
    __del__ = lambda self: None
OEScalarGrid_swigregister = _oegrid.OEScalarGrid_swigregister
OEScalarGrid_swigregister(OEScalarGrid)

OE_OEGRID_VERSION = _oegrid.OE_OEGRID_VERSION

def OEGridGetRelease() -> "char const *":
    """OEGridGetRelease() -> char const *"""
    return _oegrid.OEGridGetRelease()

def OEGridGetVersion() -> "unsigned int":
    """OEGridGetVersion() -> unsigned int"""
    return _oegrid.OEGridGetVersion()

def OEGridGetArch() -> "char const *":
    """OEGridGetArch() -> char const *"""
    return _oegrid.OEGridGetArch()

def OEGridGetPlatform() -> "char const *":
    """OEGridGetPlatform() -> char const *"""
    return _oegrid.OEGridGetPlatform()

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

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

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

def OEAddScalarGrid(grid1: 'OEScalarGrid', grid2: 'OEScalarGrid') -> "bool":
    """OEAddScalarGrid(OEScalarGrid grid1, OEScalarGrid grid2) -> bool"""
    return _oegrid.OEAddScalarGrid(grid1, grid2)

def OESubtractScalarGrid(grid1: 'OEScalarGrid', grid2: 'OEScalarGrid') -> "bool":
    """OESubtractScalarGrid(OEScalarGrid grid1, OEScalarGrid grid2) -> bool"""
    return _oegrid.OESubtractScalarGrid(grid1, grid2)

def OEMultiplyScalarGrid(grid1: 'OEScalarGrid', grid2: 'OEScalarGrid') -> "bool":
    """OEMultiplyScalarGrid(OEScalarGrid grid1, OEScalarGrid grid2) -> bool"""
    return _oegrid.OEMultiplyScalarGrid(grid1, grid2)

def OEDivideScalarGrid(grid1: 'OEScalarGrid', grid2: 'OEScalarGrid') -> "bool":
    """OEDivideScalarGrid(OEScalarGrid grid1, OEScalarGrid grid2) -> bool"""
    return _oegrid.OEDivideScalarGrid(grid1, grid2)

def OEMTZMapTypeToString(maptype: 'unsigned int') -> "std::string":
    """OEMTZMapTypeToString(unsigned int maptype) -> std::string"""
    return _oegrid.OEMTZMapTypeToString(maptype)

def OEMTZMapTypeFromString(maptype: 'std::string const &') -> "unsigned int":
    """OEMTZMapTypeFromString(std::string const & maptype) -> unsigned int"""
    return _oegrid.OEMTZMapTypeFromString(maptype)

def OEReadMTZ(filename: 'std::string const &', sgrid: 'OESkewGrid', maptype: 'unsigned int') -> "bool":
    """OEReadMTZ(std::string const & filename, OESkewGrid sgrid, unsigned int maptype) -> bool"""
    return _oegrid.OEReadMTZ(filename, sgrid, maptype)

def OEJSONToGridBytes(*args) -> "PyObject *":
    """
    OEJSONToGridBytes(OEScalarGrid grid, PyObject * bytes) -> PyObject
    OEJSONToGridBytes(OESkewGrid grid, PyObject * bytes) -> PyObject *
    """
    return _oegrid.OEJSONToGridBytes(*args)

def OEGridToJSONBytes(*args) -> "PyObject *":
    """
    OEGridToJSONBytes(OEScalarGrid grid) -> PyObject
    OEGridToJSONBytes(OESkewGrid grid) -> PyObject *
    """
    return _oegrid.OEGridToJSONBytes(*args)

def OEInitGridFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitGridFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitGridFieldHandler()

def OEInitGridVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitGridVecFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitGridVecFieldHandler()
class OEScalarGridType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OESystem::OEScalarGrid)> 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__ = _oegrid.delete_OEScalarGridType
    __del__ = lambda self: None

    def format(grid: 'OEScalarGrid') -> "std::string":
        """format(OEScalarGrid grid) -> std::string"""
        return _oegrid.OEScalarGridType_format(grid)

    format = staticmethod(format)

    def is_cacheable(self) -> "bool":
        """is_cacheable(OEScalarGridType self) -> bool"""
        return _oegrid.OEScalarGridType_is_cacheable(self)


    def get_name(self) -> "std::string":
        """get_name(OEScalarGridType self) -> std::string"""
        return _oegrid.OEScalarGridType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OEScalarGridType self, OEUCharVector bytes) -> std::string"""
        return _oegrid.OEScalarGridType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OESystem::OEScalarGrid)> self) -> OEScalarGridType"""
        this = _oegrid.new_OEScalarGridType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OEScalarGridType_swigregister = _oegrid.OEScalarGridType_swigregister
OEScalarGridType_swigregister(OEScalarGridType)
cvar = _oegrid.cvar

def OEScalarGridType_format(grid: 'OEScalarGrid') -> "std::string":
    """OEScalarGridType_format(OEScalarGrid grid) -> std::string"""
    return _oegrid.OEScalarGridType_format(grid)

class OEScalarGridVecType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OESystem::OEScalarGrid)> 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__ = _oegrid.delete_OEScalarGridVecType
    __del__ = lambda self: None

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const & val) -> std::string"""
        return _oegrid.OEScalarGridVecType_format(val)

    format = staticmethod(format)

    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >":
        """
        GetCopyForCache(std::vector< OESystem::OEScalarGrid,std::allocator< OESystem::OEScalarGrid > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >
        """
        return _oegrid.OEScalarGridVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def get_name(self) -> "std::string":
        """get_name(OEScalarGridVecType self) -> std::string"""
        return _oegrid.OEScalarGridVecType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OEScalarGridVecType self, OEUCharVector bytes) -> std::string"""
        return _oegrid.OEScalarGridVecType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OESystem::OEScalarGrid)> self) -> OEScalarGridVecType"""
        this = _oegrid.new_OEScalarGridVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OEScalarGridVecType_swigregister = _oegrid.OEScalarGridVecType_swigregister
OEScalarGridVecType_swigregister(OEScalarGridVecType)

def OEScalarGridVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const &') -> "std::string":
    """OEScalarGridVecType_format(std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const & val) -> std::string"""
    return _oegrid.OEScalarGridVecType_format(val)

def OEScalarGridVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >":
    """
    GetCopyForCache(std::vector< OESystem::OEScalarGrid,std::allocator< OESystem::OEScalarGrid > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >
    OEScalarGridVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > >
    """
    return _oegrid.OEScalarGridVecType_GetCopyForCache(*args)

class OEGridField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OESystem::OEScalarGrid)> class."""

    thisown = _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<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEGridField
        __init__(OEDataFlow::OEField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEGridField
        __init__(OEDataFlow::OEField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta) -> OEGridField
        __init__(OEDataFlow::OEField<(OESystem::OEScalarGrid)> self, std::string const & name) -> OEGridField
        __init__(OEDataFlow::OEField<(OESystem::OEScalarGrid)> self, OEFieldBase other) -> OEGridField
        """
        this = _oegrid.new_OEGridField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEScalarGrid', data: 'OEUCharVector') -> "bool":
        """deserialize(OEGridField self, OEScalarGrid value, OEUCharVector data) -> bool"""
        return _oegrid.OEGridField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OESystem::OEScalarGrid >":
        """get_type(OEGridField self) -> OEScalarGridType"""
        return _oegrid.OEGridField_get_type(self)

    __swig_destroy__ = _oegrid.delete_OEGridField
    __del__ = lambda self: None
OEGridField_swigregister = _oegrid.OEGridField_swigregister
OEGridField_swigregister(OEGridField)

class OEGridVecField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OESystem::OEScalarGrid)> class."""

    thisown = _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<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta) -> OEGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OEScalarGrid)> self, std::string const & name) -> OEGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OEScalarGrid)> self, OEFieldBase f) -> OEGridVecField
        """
        this = _oegrid.new_OEGridVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEGridVecField self, std::vector< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OEScalarGrid > > > & ret, OEUCharVector data) -> bool
        deserialize(OEGridVecField self, std::vector< OESystem::OEScalarGrid,std::allocator< OESystem::OEScalarGrid > > & ret, OEUCharVector data) -> bool
        """
        return _oegrid.OEGridVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OESystem::OEScalarGrid >":
        """get_type(OEGridVecField self) -> OEScalarGridVecType"""
        return _oegrid.OEGridVecField_get_type(self)

    __swig_destroy__ = _oegrid.delete_OEGridVecField
    __del__ = lambda self: None
OEGridVecField_swigregister = _oegrid.OEGridVecField_swigregister
OEGridVecField_swigregister(OEGridVecField)

class OEGridMatchField(OEGridField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OESystem::OEScalarGrid)> class."""

    thisown = _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<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta) -> OEGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OEScalarGrid)> self, std::string const & name) -> OEGridMatchField
        """
        this = _oegrid.new_OEGridMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oegrid.delete_OEGridMatchField
    __del__ = lambda self: None
OEGridMatchField_swigregister = _oegrid.OEGridMatchField_swigregister
OEGridMatchField_swigregister(OEGridMatchField)

class OEGridVecMatchField(OEGridVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OESystem::OEScalarGrid)> class."""

    thisown = _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<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OEScalarGrid)> self, std::string const & name, OEFieldMeta meta) -> OEGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OEScalarGrid)> self, std::string const & name) -> OEGridVecMatchField
        """
        this = _oegrid.new_OEGridVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oegrid.delete_OEGridVecMatchField
    __del__ = lambda self: None
OEGridVecMatchField_swigregister = _oegrid.OEGridVecMatchField_swigregister
OEGridVecMatchField_swigregister(OEGridVecMatchField)


oechem.Types.Chem.Grid = OEScalarGridType()
oechem.Types.Chem.GridVec = OEScalarGridVecType()
oechem.Types.Chem.GridVec.__class__.scalar_type = oechem.Types.Chem.Grid

OEScalarGridType.valid_types = (oechem.OEGridAbstractBase,)


def OESetGridValue(*args) -> "bool":
    """
    OESetGridValue(OERecord rec, OEGridField field, OEScalarGrid grid) -> bool
    OESetGridValue(OERecord rec, OESkewGridField field, OESkewGrid grid) -> bool
    """
    return _oegrid.OESetGridValue(*args)

def OEInitSkewGridFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitSkewGridFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitSkewGridFieldHandler()

def OEInitSkewGridVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitSkewGridVecFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitSkewGridVecFieldHandler()
class OESkewGridType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OESystem::OESkewGrid)> 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__ = _oegrid.delete_OESkewGridType
    __del__ = lambda self: None

    def format(grid: 'OESkewGrid') -> "std::string":
        """format(OESkewGrid grid) -> std::string"""
        return _oegrid.OESkewGridType_format(grid)

    format = staticmethod(format)

    def is_cacheable(self) -> "bool":
        """is_cacheable(OESkewGridType self) -> bool"""
        return _oegrid.OESkewGridType_is_cacheable(self)


    def get_name(self) -> "std::string":
        """get_name(OESkewGridType self) -> std::string"""
        return _oegrid.OESkewGridType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OESkewGridType self, OEUCharVector bytes) -> std::string"""
        return _oegrid.OESkewGridType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OESystem::OESkewGrid)> self) -> OESkewGridType"""
        this = _oegrid.new_OESkewGridType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OESkewGridType_swigregister = _oegrid.OESkewGridType_swigregister
OESkewGridType_swigregister(OESkewGridType)

def OESkewGridType_format(grid: 'OESkewGrid') -> "std::string":
    """OESkewGridType_format(OESkewGrid grid) -> std::string"""
    return _oegrid.OESkewGridType_format(grid)

class OESkewGridVecType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OESystem::OESkewGrid)> 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__ = _oegrid.delete_OESkewGridVecType
    __del__ = lambda self: None

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const & val) -> std::string"""
        return _oegrid.OESkewGridVecType_format(val)

    format = staticmethod(format)

    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >":
        """
        GetCopyForCache(std::vector< OESystem::OESkewGrid,std::allocator< OESystem::OESkewGrid > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >
        """
        return _oegrid.OESkewGridVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def get_name(self) -> "std::string":
        """get_name(OESkewGridVecType self) -> std::string"""
        return _oegrid.OESkewGridVecType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OESkewGridVecType self, OEUCharVector bytes) -> std::string"""
        return _oegrid.OESkewGridVecType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OESystem::OESkewGrid)> self) -> OESkewGridVecType"""
        this = _oegrid.new_OESkewGridVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OESkewGridVecType_swigregister = _oegrid.OESkewGridVecType_swigregister
OESkewGridVecType_swigregister(OESkewGridVecType)

def OESkewGridVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const &') -> "std::string":
    """OESkewGridVecType_format(std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const & val) -> std::string"""
    return _oegrid.OESkewGridVecType_format(val)

def OESkewGridVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >":
    """
    GetCopyForCache(std::vector< OESystem::OESkewGrid,std::allocator< OESystem::OESkewGrid > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >
    OESkewGridVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > >
    """
    return _oegrid.OESkewGridVecType_GetCopyForCache(*args)

class OESkewGridField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OESystem::OESkewGrid)> class."""

    thisown = _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<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OESkewGridField
        __init__(OEDataFlow::OEField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OESkewGridField
        __init__(OEDataFlow::OEField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta) -> OESkewGridField
        __init__(OEDataFlow::OEField<(OESystem::OESkewGrid)> self, std::string const & name) -> OESkewGridField
        __init__(OEDataFlow::OEField<(OESystem::OESkewGrid)> self, OEFieldBase other) -> OESkewGridField
        """
        this = _oegrid.new_OESkewGridField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OESkewGrid', data: 'OEUCharVector') -> "bool":
        """deserialize(OESkewGridField self, OESkewGrid value, OEUCharVector data) -> bool"""
        return _oegrid.OESkewGridField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OESystem::OESkewGrid >":
        """get_type(OESkewGridField self) -> OESkewGridType"""
        return _oegrid.OESkewGridField_get_type(self)

    __swig_destroy__ = _oegrid.delete_OESkewGridField
    __del__ = lambda self: None
OESkewGridField_swigregister = _oegrid.OESkewGridField_swigregister
OESkewGridField_swigregister(OESkewGridField)

class OESkewGridVecField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OESystem::OESkewGrid)> class."""

    thisown = _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<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OESkewGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OESkewGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta) -> OESkewGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OESkewGrid)> self, std::string const & name) -> OESkewGridVecField
        __init__(OEDataFlow::OEVectorField<(OESystem::OESkewGrid)> self, OEFieldBase f) -> OESkewGridVecField
        """
        this = _oegrid.new_OESkewGridVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OESkewGridVecField self, std::vector< OEStdOptionalNamespace::optional< OESystem::OESkewGrid >,std::allocator< OEStdOptionalNamespace::optional< OESystem::OESkewGrid > > > & ret, OEUCharVector data) -> bool
        deserialize(OESkewGridVecField self, std::vector< OESystem::OESkewGrid,std::allocator< OESystem::OESkewGrid > > & ret, OEUCharVector data) -> bool
        """
        return _oegrid.OESkewGridVecField_deserialize(self, *args)


    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OESystem::OESkewGrid >":
        """get_type(OESkewGridVecField self) -> OESkewGridVecType"""
        return _oegrid.OESkewGridVecField_get_type(self)

    __swig_destroy__ = _oegrid.delete_OESkewGridVecField
    __del__ = lambda self: None
OESkewGridVecField_swigregister = _oegrid.OESkewGridVecField_swigregister
OESkewGridVecField_swigregister(OESkewGridVecField)

class OESkewGridMatchField(OESkewGridField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OESystem::OESkewGrid)> class."""

    thisown = _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<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OESkewGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OESkewGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta) -> OESkewGridMatchField
        __init__(OEDataFlow::OEMatchField<(OESystem::OESkewGrid)> self, std::string const & name) -> OESkewGridMatchField
        """
        this = _oegrid.new_OESkewGridMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oegrid.delete_OESkewGridMatchField
    __del__ = lambda self: None
OESkewGridMatchField_swigregister = _oegrid.OESkewGridMatchField_swigregister
OESkewGridMatchField_swigregister(OESkewGridMatchField)

class OESkewGridVecMatchField(OESkewGridVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OESystem::OESkewGrid)> class."""

    thisown = _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<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OESkewGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OESkewGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OESkewGrid)> self, std::string const & name, OEFieldMeta meta) -> OESkewGridVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OESystem::OESkewGrid)> self, std::string const & name) -> OESkewGridVecMatchField
        """
        this = _oegrid.new_OESkewGridVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oegrid.delete_OESkewGridVecMatchField
    __del__ = lambda self: None
OESkewGridVecMatchField_swigregister = _oegrid.OESkewGridVecMatchField_swigregister
OESkewGridVecMatchField_swigregister(OESkewGridVecMatchField)


oechem.Types.Chem.SkewGrid = OESkewGridType()
oechem.Types.Chem.SkewGridVec = OESkewGridVecType()
oechem.Types.Chem.SkewGridVec.__class__.scalar_type = oechem.Types.Chem.SkewGrid

OESkewGridType.valid_types = (oechem.OEGridAbstractBase,)



