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

"""
IMeshData module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_imeshdata.html
"""

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

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _IMeshData
else:
    import _IMeshData

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _IMeshData.SWIG_PyInstanceMethod_New
_swig_new_static_method = _IMeshData.SWIG_PyStaticMethod_New

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


class SwigPyIterator(object):
    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__ = _IMeshData.delete_SwigPyIterator
    value = _swig_new_instance_method(_IMeshData.SwigPyIterator_value)
    incr = _swig_new_instance_method(_IMeshData.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_IMeshData.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_IMeshData.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_IMeshData.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_IMeshData.SwigPyIterator_copy)
    next = _swig_new_instance_method(_IMeshData.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_IMeshData.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_IMeshData.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_IMeshData.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _IMeshData:
_IMeshData.SwigPyIterator_swigregister(SwigPyIterator)


def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TopoDS
import OCC.Core.Message
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.BRepAdaptor
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor
IMeshData_NoError = _IMeshData.IMeshData_NoError
IMeshData_OpenWire = _IMeshData.IMeshData_OpenWire
IMeshData_SelfIntersectingWire = _IMeshData.IMeshData_SelfIntersectingWire
IMeshData_Failure = _IMeshData.IMeshData_Failure
IMeshData_ReMesh = _IMeshData.IMeshData_ReMesh
IMeshData_UnorientedWire = _IMeshData.IMeshData_UnorientedWire
IMeshData_TooFewPoints = _IMeshData.IMeshData_TooFewPoints
IMeshData_Outdated = _IMeshData.IMeshData_Outdated
IMeshData_Reused = _IMeshData.IMeshData_Reused
Handle_IMeshData_ParametersList_Create = _IMeshData.Handle_IMeshData_ParametersList_Create
Handle_IMeshData_ParametersList_DownCast = _IMeshData.Handle_IMeshData_ParametersList_DownCast
Handle_IMeshData_ParametersList_IsNull = _IMeshData.Handle_IMeshData_ParametersList_IsNull
Handle_IMeshData_Shape_Create = _IMeshData.Handle_IMeshData_Shape_Create
Handle_IMeshData_Shape_DownCast = _IMeshData.Handle_IMeshData_Shape_DownCast
Handle_IMeshData_Shape_IsNull = _IMeshData.Handle_IMeshData_Shape_IsNull
Handle_IMeshData_Curve_Create = _IMeshData.Handle_IMeshData_Curve_Create
Handle_IMeshData_Curve_DownCast = _IMeshData.Handle_IMeshData_Curve_DownCast
Handle_IMeshData_Curve_IsNull = _IMeshData.Handle_IMeshData_Curve_IsNull
Handle_IMeshData_Model_Create = _IMeshData.Handle_IMeshData_Model_Create
Handle_IMeshData_Model_DownCast = _IMeshData.Handle_IMeshData_Model_DownCast
Handle_IMeshData_Model_IsNull = _IMeshData.Handle_IMeshData_Model_IsNull
Handle_IMeshData_PCurve_Create = _IMeshData.Handle_IMeshData_PCurve_Create
Handle_IMeshData_PCurve_DownCast = _IMeshData.Handle_IMeshData_PCurve_DownCast
Handle_IMeshData_PCurve_IsNull = _IMeshData.Handle_IMeshData_PCurve_IsNull
Handle_IMeshData_TessellatedShape_Create = _IMeshData.Handle_IMeshData_TessellatedShape_Create
Handle_IMeshData_TessellatedShape_DownCast = _IMeshData.Handle_IMeshData_TessellatedShape_DownCast
Handle_IMeshData_TessellatedShape_IsNull = _IMeshData.Handle_IMeshData_TessellatedShape_IsNull
Handle_IMeshData_Edge_Create = _IMeshData.Handle_IMeshData_Edge_Create
Handle_IMeshData_Edge_DownCast = _IMeshData.Handle_IMeshData_Edge_DownCast
Handle_IMeshData_Edge_IsNull = _IMeshData.Handle_IMeshData_Edge_IsNull
Handle_IMeshData_Face_Create = _IMeshData.Handle_IMeshData_Face_Create
Handle_IMeshData_Face_DownCast = _IMeshData.Handle_IMeshData_Face_DownCast
Handle_IMeshData_Face_IsNull = _IMeshData.Handle_IMeshData_Face_IsNull
Handle_IMeshData_Wire_Create = _IMeshData.Handle_IMeshData_Wire_Create
Handle_IMeshData_Wire_DownCast = _IMeshData.Handle_IMeshData_Wire_DownCast
Handle_IMeshData_Wire_IsNull = _IMeshData.Handle_IMeshData_Wire_IsNull
class IMeshData_ParametersList(OCC.Core.Standard.Standard_Transient):
    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")
    __repr__ = _swig_repr
    Clear = _swig_new_instance_method(_IMeshData.IMeshData_ParametersList_Clear)
    GetParameter = _swig_new_instance_method(_IMeshData.IMeshData_ParametersList_GetParameter)
    ParametersNb = _swig_new_instance_method(_IMeshData.IMeshData_ParametersList_ParametersNb)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_ParametersList_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_ParametersList

# Register IMeshData_ParametersList in _IMeshData:
_IMeshData.IMeshData_ParametersList_swigregister(IMeshData_ParametersList)

class IMeshData_Shape(OCC.Core.Standard.Standard_Transient):
    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")
    __repr__ = _swig_repr
    GetShape = _swig_new_instance_method(_IMeshData.IMeshData_Shape_GetShape)
    SetShape = _swig_new_instance_method(_IMeshData.IMeshData_Shape_SetShape)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Shape_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Shape

# Register IMeshData_Shape in _IMeshData:
_IMeshData.IMeshData_Shape_swigregister(IMeshData_Shape)

class IMeshData_StatusOwner(object):
    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")
    __repr__ = _swig_repr
    GetStatusMask = _swig_new_instance_method(_IMeshData.IMeshData_StatusOwner_GetStatusMask)
    IsEqual = _swig_new_instance_method(_IMeshData.IMeshData_StatusOwner_IsEqual)
    IsSet = _swig_new_instance_method(_IMeshData.IMeshData_StatusOwner_IsSet)
    SetStatus = _swig_new_instance_method(_IMeshData.IMeshData_StatusOwner_SetStatus)
    UnsetStatus = _swig_new_instance_method(_IMeshData.IMeshData_StatusOwner_UnsetStatus)

    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_StatusOwner

# Register IMeshData_StatusOwner in _IMeshData:
_IMeshData.IMeshData_StatusOwner_swigregister(IMeshData_StatusOwner)

class IMeshData_Curve(IMeshData_ParametersList):
    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")
    __repr__ = _swig_repr
    AddPoint = _swig_new_instance_method(_IMeshData.IMeshData_Curve_AddPoint)
    GetPoint = _swig_new_instance_method(_IMeshData.IMeshData_Curve_GetPoint)
    InsertPoint = _swig_new_instance_method(_IMeshData.IMeshData_Curve_InsertPoint)
    RemovePoint = _swig_new_instance_method(_IMeshData.IMeshData_Curve_RemovePoint)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Curve_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Curve

# Register IMeshData_Curve in _IMeshData:
_IMeshData.IMeshData_Curve_swigregister(IMeshData_Curve)

class IMeshData_Model(IMeshData_Shape):
    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")
    __repr__ = _swig_repr
    AddEdge = _swig_new_instance_method(_IMeshData.IMeshData_Model_AddEdge)
    AddFace = _swig_new_instance_method(_IMeshData.IMeshData_Model_AddFace)
    EdgesNb = _swig_new_instance_method(_IMeshData.IMeshData_Model_EdgesNb)
    FacesNb = _swig_new_instance_method(_IMeshData.IMeshData_Model_FacesNb)
    GetEdge = _swig_new_instance_method(_IMeshData.IMeshData_Model_GetEdge)
    GetFace = _swig_new_instance_method(_IMeshData.IMeshData_Model_GetFace)
    GetMaxSize = _swig_new_instance_method(_IMeshData.IMeshData_Model_GetMaxSize)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Model_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Model

# Register IMeshData_Model in _IMeshData:
_IMeshData.IMeshData_Model_swigregister(IMeshData_Model)

class IMeshData_PCurve(IMeshData_ParametersList):
    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")
    __repr__ = _swig_repr
    AddPoint = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_AddPoint)
    GetFace = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_GetFace)
    GetIndex = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_GetIndex)
    GetOrientation = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_GetOrientation)
    GetPoint = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_GetPoint)
    InsertPoint = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_InsertPoint)
    IsForward = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_IsForward)
    IsInternal = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_IsInternal)
    RemovePoint = _swig_new_instance_method(_IMeshData.IMeshData_PCurve_RemovePoint)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_PCurve_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_PCurve

# Register IMeshData_PCurve in _IMeshData:
_IMeshData.IMeshData_PCurve_swigregister(IMeshData_PCurve)

class IMeshData_TessellatedShape(IMeshData_Shape):
    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")
    __repr__ = _swig_repr
    GetDeflection = _swig_new_instance_method(_IMeshData.IMeshData_TessellatedShape_GetDeflection)
    SetDeflection = _swig_new_instance_method(_IMeshData.IMeshData_TessellatedShape_SetDeflection)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_TessellatedShape_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_TessellatedShape

# Register IMeshData_TessellatedShape in _IMeshData:
_IMeshData.IMeshData_TessellatedShape_swigregister(IMeshData_TessellatedShape)

class IMeshData_Edge(IMeshData_TessellatedShape, IMeshData_StatusOwner):
    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")
    __repr__ = _swig_repr
    AddPCurve = _swig_new_instance_method(_IMeshData.IMeshData_Edge_AddPCurve)
    Clear = _swig_new_instance_method(_IMeshData.IMeshData_Edge_Clear)
    GetAngularDeflection = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetAngularDeflection)
    GetCurve = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetCurve)
    GetDegenerated = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetDegenerated)
    GetEdge = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetEdge)
    GetPCurve = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetPCurve)
    GetSameParam = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetSameParam)
    GetSameRange = _swig_new_instance_method(_IMeshData.IMeshData_Edge_GetSameRange)
    IsFree = _swig_new_instance_method(_IMeshData.IMeshData_Edge_IsFree)
    PCurvesNb = _swig_new_instance_method(_IMeshData.IMeshData_Edge_PCurvesNb)
    SetAngularDeflection = _swig_new_instance_method(_IMeshData.IMeshData_Edge_SetAngularDeflection)
    SetCurve = _swig_new_instance_method(_IMeshData.IMeshData_Edge_SetCurve)
    SetDegenerated = _swig_new_instance_method(_IMeshData.IMeshData_Edge_SetDegenerated)
    SetSameParam = _swig_new_instance_method(_IMeshData.IMeshData_Edge_SetSameParam)
    SetSameRange = _swig_new_instance_method(_IMeshData.IMeshData_Edge_SetSameRange)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Edge_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Edge

# Register IMeshData_Edge in _IMeshData:
_IMeshData.IMeshData_Edge_swigregister(IMeshData_Edge)

class IMeshData_Face(IMeshData_TessellatedShape, IMeshData_StatusOwner):
    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")
    __repr__ = _swig_repr
    AddWire = _swig_new_instance_method(_IMeshData.IMeshData_Face_AddWire)
    GetFace = _swig_new_instance_method(_IMeshData.IMeshData_Face_GetFace)
    GetSurface = _swig_new_instance_method(_IMeshData.IMeshData_Face_GetSurface)
    GetWire = _swig_new_instance_method(_IMeshData.IMeshData_Face_GetWire)
    IsValid = _swig_new_instance_method(_IMeshData.IMeshData_Face_IsValid)
    WiresNb = _swig_new_instance_method(_IMeshData.IMeshData_Face_WiresNb)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Face_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Face

# Register IMeshData_Face in _IMeshData:
_IMeshData.IMeshData_Face_swigregister(IMeshData_Face)

class IMeshData_Wire(IMeshData_TessellatedShape, IMeshData_StatusOwner):
    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")
    __repr__ = _swig_repr
    AddEdge = _swig_new_instance_method(_IMeshData.IMeshData_Wire_AddEdge)
    EdgesNb = _swig_new_instance_method(_IMeshData.IMeshData_Wire_EdgesNb)
    GetEdge = _swig_new_instance_method(_IMeshData.IMeshData_Wire_GetEdge)
    GetEdgeOrientation = _swig_new_instance_method(_IMeshData.IMeshData_Wire_GetEdgeOrientation)
    GetWire = _swig_new_instance_method(_IMeshData.IMeshData_Wire_GetWire)


    @staticmethod
    def DownCast(t):
      return Handle_IMeshData_Wire_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _IMeshData.delete_IMeshData_Wire

# Register IMeshData_Wire in _IMeshData:
_IMeshData.IMeshData_Wire_swigregister(IMeshData_Wire)



