# CONFIDENTIAL. (C) 2022 Cadence Design Systems, Inc. (Cadence)
# All rights reserved.
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO CADENCE
# AND IS SUBJECT TO THE FULL PROTECTION OF COPYRIGHT AND TRADE SECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from Cadence is strictly
# prohibited and illegal.  De-obfuscating, de-minimizing, or any other
# attempt to reverse engineer or discover the workings of this software,
# is strictly prohibited. Even if software is exposed or visible, it is
# still proprietary and confidential and the above prohibitions apply.
# This software is NOT "Sample Code". For purposes of customization or
# interoperation with other software you must use Sample Code
# specifically labeled as such.
# Please contact Cadence at eyesopen.com/legal if you have any questions
# about this warning.


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

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


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

    spec = importlib.machinery.PathFinder().find_spec("_oechem", [dirname(__file__)])

    if spec is None:
        # OpenEye Import Statements
        spec = importlib.machinery.PathFinder().find_spec("libs",[dirname(__file__)])
    libs = importlib.util.module_from_spec(spec)

    import sys
    sys.modules[spec.name] = libs
    spec.loader.exec_module(libs)

    assert not sys.platform.startswith('win')

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

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

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

def TypeToPyString(type: "void const *") -> "PyObject *":
    return _oegrid.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):
        _oegrid.OEInternalFunctionPointer_swiginit(self, _oegrid.new_OEInternalFunctionPointer(*args))

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

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


def OEInternalGetGenericData(type: "void const *") -> "OEInternalFunctionPointer *":
    return _oegrid.OEInternalGetGenericData(type)
import openeye.oechem as oechem
class OEGaussianBase(oechem.OEBase):
    r"""Proxy of C++ OESystem::OEGaussianBase class."""

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register OEGaussianBase in _oegrid:
_oegrid.OEGaussianBase_swigregister(OEGaussianBase)

class OEGaussian(OEGaussianBase):
    r"""Proxy of C++ OESystem::OEGaussian 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__(OEGaussian self) -> OEGaussian
        __init__(OEGaussian self, float prefactor, float width, float * xyz=None, unsigned int color=0) -> OEGaussian
        __init__(OEGaussian self, float prefactor, float width, float x, float y, float z, unsigned int color=0) -> OEGaussian
        __init__(OEGaussian self, OEGaussian rhs) -> OEGaussian
        __init__(OEGaussian self, OEGaussianBase rhs) -> OEGaussian
        """
        _oegrid.OEGaussian_swiginit(self, _oegrid.new_OEGaussian(*args))
    __swig_destroy__ = _oegrid.delete_OEGaussian

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register OEGaussian in _oegrid:
_oegrid.OEGaussian_swigregister(OEGaussian)


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

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

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

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

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

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

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

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

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

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

def OEGetGridCenterAndExtents(*args) -> "void":
    r"""
    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":
    r"""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 &":
    r"""OEGetGrid(OEBase obj, char const * t) -> OEScalarGrid"""
    return _oegrid.OEGetGrid(obj, t)

def OESetSkewGrid(obj: "OEBase", t: "char const *", g: "OESkewGrid") -> "bool":
    r"""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 &":
    r"""OEGetSkewGrid(OEBase obj, char const * t) -> OESkewGrid"""
    return _oegrid.OEGetSkewGrid(obj, t)

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

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

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

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

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

def OEWriteGrid(*args) -> "bool":
    r"""
    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":
    r"""
    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":
    r"""OEClearGridBoundary(OEScalarGrid grid) -> bool"""
    return _oegrid.OEClearGridBoundary(grid)

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

def OEMakeRegularSubGrid(*args) -> "bool":
    r"""
    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":
    r"""
    OEMaskGridByMolecule(OEScalarGrid grid, OEMolBase mol, unsigned int masktype=OEGridMaskType::Default) -> bool
    OEMaskGridByMolecule(OEScalarGrid grid, OEMolBase mol, unsigned int masktype, float contour) -> bool
    """
    return _oegrid.OEMaskGridByMolecule(*args)

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

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

def OEMakeMolecularGaussianGrid(*args) -> "bool":
    r"""
    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":
    r"""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":
    r"""OEInterpolateBetweenGrids(OEScalarGrid dst, OEScalarGrid src) -> bool"""
    return _oegrid.OEInterpolateBetweenGrids(dst, src)

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

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

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

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

def OEQuadraticInterpolationAndDerivatives(*args) -> "bool":
    r"""
    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):
    r"""Proxy of C++ OESystem::OESkewGrid 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__(OESkewGrid self) -> OESkewGrid
        __init__(OESkewGrid self, OESkewGrid rhs) -> OESkewGrid
        __init__(OESkewGrid self, OESystem::OESkewGridImpl const & f) -> OESkewGrid
        __init__(OESkewGrid self, OEScalarGrid g) -> OESkewGrid
        __init__(OESkewGrid self, OEFixedFloatGrid f) -> OESkewGrid
        """
        _oegrid.OESkewGrid_swiginit(self, _oegrid.new_OESkewGrid(*args))

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


    __swig_destroy__ = _oegrid.delete_OESkewGrid

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

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

    def SetReentrant(self, state: "bool"=True) -> "void":
        r"""SetReentrant(OESkewGrid self, bool state=True)"""
        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":
        r"""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":
        r"""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":
        r"""HasUnitCell(OESkewGrid self) -> bool"""
        return _oegrid.OESkewGrid_HasUnitCell(self)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def SetDim(self, xdim: "unsigned int", ydim: "unsigned int", zdim: "unsigned int") -> "bool":
        r"""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":
        r"""GetXDim(OESkewGrid self) -> unsigned int"""
        return _oegrid.OESkewGrid_GetXDim(self)

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

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

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

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

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

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

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

    def IsDataType(self, type: "void const *") -> "bool":
        r"""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 *":
        r"""ElementToSpatialCoord(OESkewGrid self, unsigned int el) -> PyObject *"""
        return _oegrid.OESkewGrid_ElementToSpatialCoord(self, el)

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

# Register OESkewGrid in _oegrid:
_oegrid.OESkewGrid_swigregister(OESkewGrid)

class OEScalarGrid(oechem.OEFloatGrid):
    r"""Proxy of C++ OESystem::OEScalarGrid 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__(OEScalarGrid self) -> OEScalarGrid
        __init__(OEScalarGrid self, OEScalarGrid rhs) -> OEScalarGrid
        __init__(OEScalarGrid self, OEFixedFloatGrid rhs) -> OEScalarGrid
        __init__(OEScalarGrid self, float [6] minmax, float spacing, char const * title="") -> OEScalarGrid
        __init__(OEScalarGrid self, double [6] minmax, double spacing, char const * title="") -> OEScalarGrid
        __init__(OEScalarGrid self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title="", float * dataptr=None) -> OEScalarGrid
        """
        _oegrid.OEScalarGrid_swiginit(self, _oegrid.new_OEScalarGrid(*args))

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

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

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

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

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

    def Clear(self) -> "void":
        r"""Clear(OEScalarGrid self)"""
        return _oegrid.OEScalarGrid_Clear(self)
    __swig_destroy__ = _oegrid.delete_OEScalarGrid

# Register OEScalarGrid in _oegrid:
_oegrid.OEScalarGrid_swigregister(OEScalarGrid)

OE_OEGRID_VERSION = _oegrid.OE_OEGRID_VERSION


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

def OEInitGridVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitGridVecFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitGridVecFieldHandler()
class OEOptScalarGrid(object):
    r"""Proxy of C++ std::optional< OESystem::OEScalarGrid > 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__(OEOptScalarGrid self) -> OEOptScalarGrid
        __init__(OEOptScalarGrid self, OEScalarGrid value) -> OEOptScalarGrid
        __init__(OEOptScalarGrid self, OEOptScalarGrid other) -> OEOptScalarGrid
        """
        _oegrid.OEOptScalarGrid_swiginit(self, _oegrid.new_OEOptScalarGrid(*args))

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



    def has_value(self) -> "bool":
        r"""has_value(OEOptScalarGrid self) -> bool"""
        return _oegrid.OEOptScalarGrid_has_value(self)

    def value(self) -> "OESystem::OEScalarGrid const &":
        r"""value(OEOptScalarGrid self) -> OEScalarGrid"""
        return _oegrid.OEOptScalarGrid_value(self)

    def value_or(self, arg2: "OEScalarGrid") -> "OESystem::OEScalarGrid":
        r"""value_or(OEOptScalarGrid self, OEScalarGrid arg2) -> OEScalarGrid"""
        return _oegrid.OEOptScalarGrid_value_or(self, arg2)
    __swig_destroy__ = _oegrid.delete_OEOptScalarGrid

# Register OEOptScalarGrid in _oegrid:
_oegrid.OEOptScalarGrid_swigregister(OEOptScalarGrid)
cvar = _oegrid.cvar

class OEVecOptScalarGrid(object):
    r"""Proxy of C++ std::vector< std::optional< OESystem::OEScalarGrid > > class."""

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

    def iterator(self) -> "swig::oegrid_SwigPyIterator *":
        r"""iterator(OEVecOptScalarGrid self) -> oegrid_SwigPyIterator"""
        return _oegrid.OEVecOptScalarGrid_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        r"""__nonzero__(OEVecOptScalarGrid self) -> bool"""
        return _oegrid.OEVecOptScalarGrid___nonzero__(self)

    def __bool__(self) -> "bool":
        r"""__bool__(OEVecOptScalarGrid self) -> bool"""
        return _oegrid.OEVecOptScalarGrid___bool__(self)

    def __len__(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::size_type":
        r"""__len__(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::size_type"""
        return _oegrid.OEVecOptScalarGrid___len__(self)

    def __getslice__(self, i: "std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type", j: "std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type") -> "std::vector< std::optional< OESystem::OEScalarGrid >,std::allocator< std::optional< OESystem::OEScalarGrid > > > *":
        r"""__getslice__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type j) -> OEVecOptScalarGrid"""
        return _oegrid.OEVecOptScalarGrid___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        r"""
        __setslice__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type j)
        __setslice__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type j, OEVecOptScalarGrid v)
        """
        return _oegrid.OEVecOptScalarGrid___setslice__(self, *args)

    def __delslice__(self, i: "std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type", j: "std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type") -> "void":
        r"""__delslice__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type j)"""
        return _oegrid.OEVecOptScalarGrid___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        r"""
        __delitem__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i)
        __delitem__(OEVecOptScalarGrid self, PySliceObject * slice)
        """
        return _oegrid.OEVecOptScalarGrid___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::value_type const &":
        r"""
        __getitem__(OEVecOptScalarGrid self, PySliceObject * slice) -> OEVecOptScalarGrid
        __getitem__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i) -> OEOptScalarGrid
        """
        return _oegrid.OEVecOptScalarGrid___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        r"""
        __setitem__(OEVecOptScalarGrid self, PySliceObject * slice, OEVecOptScalarGrid v)
        __setitem__(OEVecOptScalarGrid self, PySliceObject * slice)
        __setitem__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::difference_type i, OEOptScalarGrid x)
        """
        return _oegrid.OEVecOptScalarGrid___setitem__(self, *args)

    def pop(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::value_type":
        r"""pop(OEVecOptScalarGrid self) -> OEOptScalarGrid"""
        return _oegrid.OEVecOptScalarGrid_pop(self)

    def append(self, x: "OEOptScalarGrid") -> "void":
        r"""append(OEVecOptScalarGrid self, OEOptScalarGrid x)"""
        return _oegrid.OEVecOptScalarGrid_append(self, x)

    def empty(self) -> "bool":
        r"""empty(OEVecOptScalarGrid self) -> bool"""
        return _oegrid.OEVecOptScalarGrid_empty(self)

    def size(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::size_type":
        r"""size(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::size_type"""
        return _oegrid.OEVecOptScalarGrid_size(self)

    def swap(self, v: "OEVecOptScalarGrid") -> "void":
        r"""swap(OEVecOptScalarGrid self, OEVecOptScalarGrid v)"""
        return _oegrid.OEVecOptScalarGrid_swap(self, v)

    def begin(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::iterator":
        r"""begin(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::iterator"""
        return _oegrid.OEVecOptScalarGrid_begin(self)

    def end(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::iterator":
        r"""end(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::iterator"""
        return _oegrid.OEVecOptScalarGrid_end(self)

    def rbegin(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::reverse_iterator":
        r"""rbegin(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::reverse_iterator"""
        return _oegrid.OEVecOptScalarGrid_rbegin(self)

    def rend(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::reverse_iterator":
        r"""rend(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::reverse_iterator"""
        return _oegrid.OEVecOptScalarGrid_rend(self)

    def clear(self) -> "void":
        r"""clear(OEVecOptScalarGrid self)"""
        return _oegrid.OEVecOptScalarGrid_clear(self)

    def get_allocator(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::allocator_type":
        r"""get_allocator(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::allocator_type"""
        return _oegrid.OEVecOptScalarGrid_get_allocator(self)

    def pop_back(self) -> "void":
        r"""pop_back(OEVecOptScalarGrid self)"""
        return _oegrid.OEVecOptScalarGrid_pop_back(self)

    def erase(self, *args) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::iterator":
        r"""
        erase(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::iterator pos) -> std::vector< std::optional< OESystem::OEScalarGrid > >::iterator
        erase(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::iterator first, std::vector< std::optional< OESystem::OEScalarGrid > >::iterator last) -> std::vector< std::optional< OESystem::OEScalarGrid > >::iterator
        """
        return _oegrid.OEVecOptScalarGrid_erase(self, *args)

    def __init__(self, *args):
        r"""
        __init__(OEVecOptScalarGrid self) -> OEVecOptScalarGrid
        __init__(OEVecOptScalarGrid self, OEVecOptScalarGrid other) -> OEVecOptScalarGrid
        __init__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type size) -> OEVecOptScalarGrid
        __init__(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type size, OEOptScalarGrid value) -> OEVecOptScalarGrid
        """
        _oegrid.OEVecOptScalarGrid_swiginit(self, _oegrid.new_OEVecOptScalarGrid(*args))

    def push_back(self, x: "OEOptScalarGrid") -> "void":
        r"""push_back(OEVecOptScalarGrid self, OEOptScalarGrid x)"""
        return _oegrid.OEVecOptScalarGrid_push_back(self, x)

    def front(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::value_type const &":
        r"""front(OEVecOptScalarGrid self) -> OEOptScalarGrid"""
        return _oegrid.OEVecOptScalarGrid_front(self)

    def back(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::value_type const &":
        r"""back(OEVecOptScalarGrid self) -> OEOptScalarGrid"""
        return _oegrid.OEVecOptScalarGrid_back(self)

    def assign(self, n: "std::vector< std::optional< OESystem::OEScalarGrid > >::size_type", x: "OEOptScalarGrid") -> "void":
        r"""assign(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type n, OEOptScalarGrid x)"""
        return _oegrid.OEVecOptScalarGrid_assign(self, n, x)

    def resize(self, *args) -> "void":
        r"""
        resize(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type new_size)
        resize(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type new_size, OEOptScalarGrid x)
        """
        return _oegrid.OEVecOptScalarGrid_resize(self, *args)

    def insert(self, *args) -> "void":
        r"""
        insert(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::iterator pos, OEOptScalarGrid x) -> std::vector< std::optional< OESystem::OEScalarGrid > >::iterator
        insert(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::iterator pos, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type n, OEOptScalarGrid x)
        """
        return _oegrid.OEVecOptScalarGrid_insert(self, *args)

    def reserve(self, n: "std::vector< std::optional< OESystem::OEScalarGrid > >::size_type") -> "void":
        r"""reserve(OEVecOptScalarGrid self, std::vector< std::optional< OESystem::OEScalarGrid > >::size_type n)"""
        return _oegrid.OEVecOptScalarGrid_reserve(self, n)

    def capacity(self) -> "std::vector< std::optional< OESystem::OEScalarGrid > >::size_type":
        r"""capacity(OEVecOptScalarGrid self) -> std::vector< std::optional< OESystem::OEScalarGrid > >::size_type"""
        return _oegrid.OEVecOptScalarGrid_capacity(self)
    __swig_destroy__ = _oegrid.delete_OEVecOptScalarGrid

# Register OEVecOptScalarGrid in _oegrid:
_oegrid.OEVecOptScalarGrid_swigregister(OEVecOptScalarGrid)

class OEGridField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEField< OESystem::OEScalarGrid > 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__(OEGridField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEGridField
        __init__(OEGridField self, OEFieldBase other) -> OEGridField
        """
        _oegrid.OEGridField_swiginit(self, _oegrid.new_OEGridField(*args))

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

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

# Register OEGridField in _oegrid:
_oegrid.OEGridField_swigregister(OEGridField)

class OEGridVecField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEVectorField< OESystem::OEScalarGrid > 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__(OEGridVecField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEGridVecField
        __init__(OEGridVecField self, OEFieldBase f) -> OEGridVecField
        """
        _oegrid.OEGridVecField_swiginit(self, _oegrid.new_OEGridVecField(*args))

    def deserialize(self, *args) -> "bool":
        r"""
        deserialize(OEGridVecField self, OEVecOptScalarGrid 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 >":
        r"""get_type(OEGridVecField self) -> OEScalarGridVecType"""
        return _oegrid.OEGridVecField_get_type(self)
    __swig_destroy__ = _oegrid.delete_OEGridVecField

# Register OEGridVecField in _oegrid:
_oegrid.OEGridVecField_swigregister(OEGridVecField)

class OEScalarGridType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEFieldType< OESystem::OEScalarGrid > class."""

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

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

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

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

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

    def __init__(self):
        r"""__init__(OEScalarGridType self) -> OEScalarGridType"""
        _oegrid.OEScalarGridType_swiginit(self, _oegrid.new_OEScalarGridType())

# Register OEScalarGridType in _oegrid:
_oegrid.OEScalarGridType_swigregister(OEScalarGridType)

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

class OEScalarGridVecType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEVectorFieldType< OESystem::OEScalarGrid > class."""

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

    @staticmethod
    def format(val: "OEVecOptScalarGrid") -> "std::string":
        r"""format(OEVecOptScalarGrid val) -> std::string"""
        return _oegrid.OEScalarGridVecType_format(val)

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

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

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

    def __init__(self):
        r"""__init__(OEScalarGridVecType self) -> OEScalarGridVecType"""
        _oegrid.OEScalarGridVecType_swiginit(self, _oegrid.new_OEScalarGridVecType())

# Register OEScalarGridVecType in _oegrid:
_oegrid.OEScalarGridVecType_swigregister(OEScalarGridVecType)

def OEScalarGridVecType_format(val: "OEVecOptScalarGrid") -> "std::string":
    r"""OEScalarGridVecType_format(OEVecOptScalarGrid val) -> std::string"""
    return _oegrid.OEScalarGridVecType_format(val)

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

class OEGridMatchField(OEGridField):
    r"""Proxy of C++ OEDataFlow::OEMatchField< OESystem::OEScalarGrid > 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__(OEGridMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEGridMatchField"""
        _oegrid.OEGridMatchField_swiginit(self, _oegrid.new_OEGridMatchField(*args))
    __swig_destroy__ = _oegrid.delete_OEGridMatchField

# Register OEGridMatchField in _oegrid:
_oegrid.OEGridMatchField_swigregister(OEGridMatchField)

class OEGridVecMatchField(OEGridVecField):
    r"""Proxy of C++ OEDataFlow::OEMatchVectorField< OESystem::OEScalarGrid > 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__(OEGridVecMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEGridVecMatchField"""
        _oegrid.OEGridVecMatchField_swiginit(self, _oegrid.new_OEGridVecMatchField(*args))
    __swig_destroy__ = _oegrid.delete_OEGridVecMatchField

# Register OEGridVecMatchField in _oegrid:
_oegrid.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":
    r"""
    OESetGridValue(OERecord rec, OEGridField field, OEScalarGrid grid) -> bool
    OESetGridValue(OERecord rec, OESkewGridField field, OESkewGrid grid) -> bool
    """
    return _oegrid.OESetGridValue(*args)

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

def OEInitSkewGridVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitSkewGridVecFieldHandler() -> OEFieldTypeHandler"""
    return _oegrid.OEInitSkewGridVecFieldHandler()
class OEVecOptSkewGrid(object):
    r"""Proxy of C++ std::vector< std::optional< OESystem::OESkewGrid > > class."""

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

    def iterator(self) -> "swig::oegrid_SwigPyIterator *":
        r"""iterator(OEVecOptSkewGrid self) -> oegrid_SwigPyIterator"""
        return _oegrid.OEVecOptSkewGrid_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        r"""__nonzero__(OEVecOptSkewGrid self) -> bool"""
        return _oegrid.OEVecOptSkewGrid___nonzero__(self)

    def __bool__(self) -> "bool":
        r"""__bool__(OEVecOptSkewGrid self) -> bool"""
        return _oegrid.OEVecOptSkewGrid___bool__(self)

    def __len__(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::size_type":
        r"""__len__(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::size_type"""
        return _oegrid.OEVecOptSkewGrid___len__(self)

    def __getslice__(self, i: "std::vector< std::optional< OESystem::OESkewGrid > >::difference_type", j: "std::vector< std::optional< OESystem::OESkewGrid > >::difference_type") -> "std::vector< std::optional< OESystem::OESkewGrid >,std::allocator< std::optional< OESystem::OESkewGrid > > > *":
        r"""__getslice__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type j) -> OEVecOptSkewGrid"""
        return _oegrid.OEVecOptSkewGrid___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        r"""
        __setslice__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type j)
        __setslice__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type j, OEVecOptSkewGrid v)
        """
        return _oegrid.OEVecOptSkewGrid___setslice__(self, *args)

    def __delslice__(self, i: "std::vector< std::optional< OESystem::OESkewGrid > >::difference_type", j: "std::vector< std::optional< OESystem::OESkewGrid > >::difference_type") -> "void":
        r"""__delslice__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type j)"""
        return _oegrid.OEVecOptSkewGrid___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        r"""
        __delitem__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i)
        __delitem__(OEVecOptSkewGrid self, PySliceObject * slice)
        """
        return _oegrid.OEVecOptSkewGrid___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &":
        r"""
        __getitem__(OEVecOptSkewGrid self, PySliceObject * slice) -> OEVecOptSkewGrid
        __getitem__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i) -> std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &
        """
        return _oegrid.OEVecOptSkewGrid___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        r"""
        __setitem__(OEVecOptSkewGrid self, PySliceObject * slice, OEVecOptSkewGrid v)
        __setitem__(OEVecOptSkewGrid self, PySliceObject * slice)
        __setitem__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::difference_type i, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)
        """
        return _oegrid.OEVecOptSkewGrid___setitem__(self, *args)

    def pop(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::value_type":
        r"""pop(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::value_type"""
        return _oegrid.OEVecOptSkewGrid_pop(self)

    def append(self, x: "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &") -> "void":
        r"""append(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)"""
        return _oegrid.OEVecOptSkewGrid_append(self, x)

    def empty(self) -> "bool":
        r"""empty(OEVecOptSkewGrid self) -> bool"""
        return _oegrid.OEVecOptSkewGrid_empty(self)

    def size(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::size_type":
        r"""size(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::size_type"""
        return _oegrid.OEVecOptSkewGrid_size(self)

    def swap(self, v: "OEVecOptSkewGrid") -> "void":
        r"""swap(OEVecOptSkewGrid self, OEVecOptSkewGrid v)"""
        return _oegrid.OEVecOptSkewGrid_swap(self, v)

    def begin(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::iterator":
        r"""begin(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::iterator"""
        return _oegrid.OEVecOptSkewGrid_begin(self)

    def end(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::iterator":
        r"""end(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::iterator"""
        return _oegrid.OEVecOptSkewGrid_end(self)

    def rbegin(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::reverse_iterator":
        r"""rbegin(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::reverse_iterator"""
        return _oegrid.OEVecOptSkewGrid_rbegin(self)

    def rend(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::reverse_iterator":
        r"""rend(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::reverse_iterator"""
        return _oegrid.OEVecOptSkewGrid_rend(self)

    def clear(self) -> "void":
        r"""clear(OEVecOptSkewGrid self)"""
        return _oegrid.OEVecOptSkewGrid_clear(self)

    def get_allocator(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::allocator_type":
        r"""get_allocator(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::allocator_type"""
        return _oegrid.OEVecOptSkewGrid_get_allocator(self)

    def pop_back(self) -> "void":
        r"""pop_back(OEVecOptSkewGrid self)"""
        return _oegrid.OEVecOptSkewGrid_pop_back(self)

    def erase(self, *args) -> "std::vector< std::optional< OESystem::OESkewGrid > >::iterator":
        r"""
        erase(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::iterator pos) -> std::vector< std::optional< OESystem::OESkewGrid > >::iterator
        erase(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::iterator first, std::vector< std::optional< OESystem::OESkewGrid > >::iterator last) -> std::vector< std::optional< OESystem::OESkewGrid > >::iterator
        """
        return _oegrid.OEVecOptSkewGrid_erase(self, *args)

    def __init__(self, *args):
        r"""
        __init__(OEVecOptSkewGrid self) -> OEVecOptSkewGrid
        __init__(OEVecOptSkewGrid self, OEVecOptSkewGrid other) -> OEVecOptSkewGrid
        __init__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type size) -> OEVecOptSkewGrid
        __init__(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type size, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & value) -> OEVecOptSkewGrid
        """
        _oegrid.OEVecOptSkewGrid_swiginit(self, _oegrid.new_OEVecOptSkewGrid(*args))

    def push_back(self, x: "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &") -> "void":
        r"""push_back(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)"""
        return _oegrid.OEVecOptSkewGrid_push_back(self, x)

    def front(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &":
        r"""front(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &"""
        return _oegrid.OEVecOptSkewGrid_front(self)

    def back(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &":
        r"""back(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &"""
        return _oegrid.OEVecOptSkewGrid_back(self)

    def assign(self, n: "std::vector< std::optional< OESystem::OESkewGrid > >::size_type", x: "std::vector< std::optional< OESystem::OESkewGrid > >::value_type const &") -> "void":
        r"""assign(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type n, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)"""
        return _oegrid.OEVecOptSkewGrid_assign(self, n, x)

    def resize(self, *args) -> "void":
        r"""
        resize(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type new_size)
        resize(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type new_size, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)
        """
        return _oegrid.OEVecOptSkewGrid_resize(self, *args)

    def insert(self, *args) -> "void":
        r"""
        insert(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::iterator pos, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x) -> std::vector< std::optional< OESystem::OESkewGrid > >::iterator
        insert(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::iterator pos, std::vector< std::optional< OESystem::OESkewGrid > >::size_type n, std::vector< std::optional< OESystem::OESkewGrid > >::value_type const & x)
        """
        return _oegrid.OEVecOptSkewGrid_insert(self, *args)

    def reserve(self, n: "std::vector< std::optional< OESystem::OESkewGrid > >::size_type") -> "void":
        r"""reserve(OEVecOptSkewGrid self, std::vector< std::optional< OESystem::OESkewGrid > >::size_type n)"""
        return _oegrid.OEVecOptSkewGrid_reserve(self, n)

    def capacity(self) -> "std::vector< std::optional< OESystem::OESkewGrid > >::size_type":
        r"""capacity(OEVecOptSkewGrid self) -> std::vector< std::optional< OESystem::OESkewGrid > >::size_type"""
        return _oegrid.OEVecOptSkewGrid_capacity(self)
    __swig_destroy__ = _oegrid.delete_OEVecOptSkewGrid

# Register OEVecOptSkewGrid in _oegrid:
_oegrid.OEVecOptSkewGrid_swigregister(OEVecOptSkewGrid)

class OESkewGridType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEFieldType< OESystem::OESkewGrid > class."""

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

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

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

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

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

    def __init__(self):
        r"""__init__(OESkewGridType self) -> OESkewGridType"""
        _oegrid.OESkewGridType_swiginit(self, _oegrid.new_OESkewGridType())

# Register OESkewGridType in _oegrid:
_oegrid.OESkewGridType_swigregister(OESkewGridType)

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

class OESkewGridVecType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEVectorFieldType< OESystem::OESkewGrid > class."""

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

    @staticmethod
    def format(val: "OEVecOptSkewGrid") -> "std::string":
        r"""format(OEVecOptSkewGrid val) -> std::string"""
        return _oegrid.OESkewGridVecType_format(val)

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

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

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

    def __init__(self):
        r"""__init__(OESkewGridVecType self) -> OESkewGridVecType"""
        _oegrid.OESkewGridVecType_swiginit(self, _oegrid.new_OESkewGridVecType())

# Register OESkewGridVecType in _oegrid:
_oegrid.OESkewGridVecType_swigregister(OESkewGridVecType)

def OESkewGridVecType_format(val: "OEVecOptSkewGrid") -> "std::string":
    r"""OESkewGridVecType_format(OEVecOptSkewGrid val) -> std::string"""
    return _oegrid.OESkewGridVecType_format(val)

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

class OESkewGridField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEField< OESystem::OESkewGrid > 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__(OESkewGridField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESkewGridField
        __init__(OESkewGridField self, OEFieldBase other) -> OESkewGridField
        """
        _oegrid.OESkewGridField_swiginit(self, _oegrid.new_OESkewGridField(*args))

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

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

# Register OESkewGridField in _oegrid:
_oegrid.OESkewGridField_swigregister(OESkewGridField)

class OESkewGridVecField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEVectorField< OESystem::OESkewGrid > 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__(OESkewGridVecField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESkewGridVecField
        __init__(OESkewGridVecField self, OEFieldBase f) -> OESkewGridVecField
        """
        _oegrid.OESkewGridVecField_swiginit(self, _oegrid.new_OESkewGridVecField(*args))

    def deserialize(self, *args) -> "bool":
        r"""
        deserialize(OESkewGridVecField self, OEVecOptSkewGrid 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 >":
        r"""get_type(OESkewGridVecField self) -> OESkewGridVecType"""
        return _oegrid.OESkewGridVecField_get_type(self)
    __swig_destroy__ = _oegrid.delete_OESkewGridVecField

# Register OESkewGridVecField in _oegrid:
_oegrid.OESkewGridVecField_swigregister(OESkewGridVecField)

class OESkewGridMatchField(OESkewGridField):
    r"""Proxy of C++ OEDataFlow::OEMatchField< OESystem::OESkewGrid > 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__(OESkewGridMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESkewGridMatchField"""
        _oegrid.OESkewGridMatchField_swiginit(self, _oegrid.new_OESkewGridMatchField(*args))
    __swig_destroy__ = _oegrid.delete_OESkewGridMatchField

# Register OESkewGridMatchField in _oegrid:
_oegrid.OESkewGridMatchField_swigregister(OESkewGridMatchField)

class OESkewGridVecMatchField(OESkewGridVecField):
    r"""Proxy of C++ OEDataFlow::OEMatchVectorField< OESystem::OESkewGrid > 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__(OESkewGridVecMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OESkewGridVecMatchField"""
        _oegrid.OESkewGridVecMatchField_swiginit(self, _oegrid.new_OESkewGridVecMatchField(*args))
    __swig_destroy__ = _oegrid.delete_OESkewGridVecMatchField

# Register OESkewGridVecMatchField in _oegrid:
_oegrid.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,)



