# 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.

"""
ShapeExtend module, see official documentation at
https://www.opencascade.com/doc/occt-7.4.0/refman/html/package_shapeextend.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 _ShapeExtend
else:
    import _ShapeExtend

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


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__ = _ShapeExtend.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __sub__(self, *args) -> "ptrdiff_t":
        return _ShapeExtend.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _ShapeExtend:
_ShapeExtend.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


def process_exception(error: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    return _ShapeExtend.process_exception(error, method_name, class_name)

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.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopoDS
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TColGeom
import OCC.Core.TopTools

from enum import IntEnum
from OCC.Core.Exception import *

ShapeExtend_OK = _ShapeExtend.ShapeExtend_OK
ShapeExtend_DONE1 = _ShapeExtend.ShapeExtend_DONE1
ShapeExtend_DONE2 = _ShapeExtend.ShapeExtend_DONE2
ShapeExtend_DONE3 = _ShapeExtend.ShapeExtend_DONE3
ShapeExtend_DONE4 = _ShapeExtend.ShapeExtend_DONE4
ShapeExtend_DONE5 = _ShapeExtend.ShapeExtend_DONE5
ShapeExtend_DONE6 = _ShapeExtend.ShapeExtend_DONE6
ShapeExtend_DONE7 = _ShapeExtend.ShapeExtend_DONE7
ShapeExtend_DONE8 = _ShapeExtend.ShapeExtend_DONE8
ShapeExtend_DONE = _ShapeExtend.ShapeExtend_DONE
ShapeExtend_FAIL1 = _ShapeExtend.ShapeExtend_FAIL1
ShapeExtend_FAIL2 = _ShapeExtend.ShapeExtend_FAIL2
ShapeExtend_FAIL3 = _ShapeExtend.ShapeExtend_FAIL3
ShapeExtend_FAIL4 = _ShapeExtend.ShapeExtend_FAIL4
ShapeExtend_FAIL5 = _ShapeExtend.ShapeExtend_FAIL5
ShapeExtend_FAIL6 = _ShapeExtend.ShapeExtend_FAIL6
ShapeExtend_FAIL7 = _ShapeExtend.ShapeExtend_FAIL7
ShapeExtend_FAIL8 = _ShapeExtend.ShapeExtend_FAIL8
ShapeExtend_FAIL = _ShapeExtend.ShapeExtend_FAIL
ShapeExtend_Natural = _ShapeExtend.ShapeExtend_Natural
ShapeExtend_Uniform = _ShapeExtend.ShapeExtend_Uniform
ShapeExtend_Unitary = _ShapeExtend.ShapeExtend_Unitary


class ShapeExtend_Status(IntEnum):
	ShapeExtend_OK = 0
	ShapeExtend_DONE1 = 1
	ShapeExtend_DONE2 = 2
	ShapeExtend_DONE3 = 3
	ShapeExtend_DONE4 = 4
	ShapeExtend_DONE5 = 5
	ShapeExtend_DONE6 = 6
	ShapeExtend_DONE7 = 7
	ShapeExtend_DONE8 = 8
	ShapeExtend_DONE = 9
	ShapeExtend_FAIL1 = 10
	ShapeExtend_FAIL2 = 11
	ShapeExtend_FAIL3 = 12
	ShapeExtend_FAIL4 = 13
	ShapeExtend_FAIL5 = 14
	ShapeExtend_FAIL6 = 15
	ShapeExtend_FAIL7 = 16
	ShapeExtend_FAIL8 = 17
	ShapeExtend_FAIL = 18
ShapeExtend_OK = ShapeExtend_Status.ShapeExtend_OK
ShapeExtend_DONE1 = ShapeExtend_Status.ShapeExtend_DONE1
ShapeExtend_DONE2 = ShapeExtend_Status.ShapeExtend_DONE2
ShapeExtend_DONE3 = ShapeExtend_Status.ShapeExtend_DONE3
ShapeExtend_DONE4 = ShapeExtend_Status.ShapeExtend_DONE4
ShapeExtend_DONE5 = ShapeExtend_Status.ShapeExtend_DONE5
ShapeExtend_DONE6 = ShapeExtend_Status.ShapeExtend_DONE6
ShapeExtend_DONE7 = ShapeExtend_Status.ShapeExtend_DONE7
ShapeExtend_DONE8 = ShapeExtend_Status.ShapeExtend_DONE8
ShapeExtend_DONE = ShapeExtend_Status.ShapeExtend_DONE
ShapeExtend_FAIL1 = ShapeExtend_Status.ShapeExtend_FAIL1
ShapeExtend_FAIL2 = ShapeExtend_Status.ShapeExtend_FAIL2
ShapeExtend_FAIL3 = ShapeExtend_Status.ShapeExtend_FAIL3
ShapeExtend_FAIL4 = ShapeExtend_Status.ShapeExtend_FAIL4
ShapeExtend_FAIL5 = ShapeExtend_Status.ShapeExtend_FAIL5
ShapeExtend_FAIL6 = ShapeExtend_Status.ShapeExtend_FAIL6
ShapeExtend_FAIL7 = ShapeExtend_Status.ShapeExtend_FAIL7
ShapeExtend_FAIL8 = ShapeExtend_Status.ShapeExtend_FAIL8
ShapeExtend_FAIL = ShapeExtend_Status.ShapeExtend_FAIL

class ShapeExtend_Parametrisation(IntEnum):
	ShapeExtend_Natural = 0
	ShapeExtend_Uniform = 1
	ShapeExtend_Unitary = 2
ShapeExtend_Natural = ShapeExtend_Parametrisation.ShapeExtend_Natural
ShapeExtend_Uniform = ShapeExtend_Parametrisation.ShapeExtend_Uniform
ShapeExtend_Unitary = ShapeExtend_Parametrisation.ShapeExtend_Unitary


def Handle_ShapeExtend_BasicMsgRegistrator_Create() -> "opencascade::handle< ShapeExtend_BasicMsgRegistrator >":
    return _ShapeExtend.Handle_ShapeExtend_BasicMsgRegistrator_Create()

def Handle_ShapeExtend_BasicMsgRegistrator_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeExtend_BasicMsgRegistrator >":
    return _ShapeExtend.Handle_ShapeExtend_BasicMsgRegistrator_DownCast(t)

def Handle_ShapeExtend_BasicMsgRegistrator_IsNull(t: "opencascade::handle< ShapeExtend_BasicMsgRegistrator > const &") -> "bool":
    return _ShapeExtend.Handle_ShapeExtend_BasicMsgRegistrator_IsNull(t)

def Handle_ShapeExtend_ComplexCurve_Create() -> "opencascade::handle< ShapeExtend_ComplexCurve >":
    return _ShapeExtend.Handle_ShapeExtend_ComplexCurve_Create()

def Handle_ShapeExtend_ComplexCurve_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeExtend_ComplexCurve >":
    return _ShapeExtend.Handle_ShapeExtend_ComplexCurve_DownCast(t)

def Handle_ShapeExtend_ComplexCurve_IsNull(t: "opencascade::handle< ShapeExtend_ComplexCurve > const &") -> "bool":
    return _ShapeExtend.Handle_ShapeExtend_ComplexCurve_IsNull(t)

def Handle_ShapeExtend_CompositeSurface_Create() -> "opencascade::handle< ShapeExtend_CompositeSurface >":
    return _ShapeExtend.Handle_ShapeExtend_CompositeSurface_Create()

def Handle_ShapeExtend_CompositeSurface_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeExtend_CompositeSurface >":
    return _ShapeExtend.Handle_ShapeExtend_CompositeSurface_DownCast(t)

def Handle_ShapeExtend_CompositeSurface_IsNull(t: "opencascade::handle< ShapeExtend_CompositeSurface > const &") -> "bool":
    return _ShapeExtend.Handle_ShapeExtend_CompositeSurface_IsNull(t)

def Handle_ShapeExtend_WireData_Create() -> "opencascade::handle< ShapeExtend_WireData >":
    return _ShapeExtend.Handle_ShapeExtend_WireData_Create()

def Handle_ShapeExtend_WireData_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeExtend_WireData >":
    return _ShapeExtend.Handle_ShapeExtend_WireData_DownCast(t)

def Handle_ShapeExtend_WireData_IsNull(t: "opencascade::handle< ShapeExtend_WireData > const &") -> "bool":
    return _ShapeExtend.Handle_ShapeExtend_WireData_IsNull(t)

def Handle_ShapeExtend_MsgRegistrator_Create() -> "opencascade::handle< ShapeExtend_MsgRegistrator >":
    return _ShapeExtend.Handle_ShapeExtend_MsgRegistrator_Create()

def Handle_ShapeExtend_MsgRegistrator_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< ShapeExtend_MsgRegistrator >":
    return _ShapeExtend.Handle_ShapeExtend_MsgRegistrator_DownCast(t)

def Handle_ShapeExtend_MsgRegistrator_IsNull(t: "opencascade::handle< ShapeExtend_MsgRegistrator > const &") -> "bool":
    return _ShapeExtend.Handle_ShapeExtend_MsgRegistrator_IsNull(t)
class ShapeExtend_DataMapOfShapeListOfMsg(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self) -> "NCollection_DataMap< TopoDS_Shape,NCollection_List< Message_Msg >,TopTools_ShapeMapHasher >::iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_begin(self)

    def end(self) -> "NCollection_DataMap< TopoDS_Shape,NCollection_List< Message_Msg >,TopTools_ShapeMapHasher >::iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_end(self)

    def cbegin(self) -> "NCollection_DataMap< TopoDS_Shape,NCollection_List< Message_Msg >,TopTools_ShapeMapHasher >::const_iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_cbegin(self)

    def cend(self) -> "NCollection_DataMap< TopoDS_Shape,NCollection_List< Message_Msg >,TopTools_ShapeMapHasher >::const_iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_cend(self)

    def __init__(self, *args):
        _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_swiginit(self, _ShapeExtend.new_ShapeExtend_DataMapOfShapeListOfMsg(*args))

    def Exchange(self, theOther: "ShapeExtend_DataMapOfShapeListOfMsg") -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Exchange(self, theOther)

    def Assign(self, theOther: "ShapeExtend_DataMapOfShapeListOfMsg") -> "NCollection_DataMap< TopoDS_Shape,Message_ListOfMsg,TopTools_ShapeMapHasher > &":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Assign(self, theOther)

    def Set(self, theOther: "ShapeExtend_DataMapOfShapeListOfMsg") -> "NCollection_DataMap< TopoDS_Shape,Message_ListOfMsg,TopTools_ShapeMapHasher > &":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_ReSize(self, N)

    def Bind(self, theKey: "TopoDS_Shape", theItem: "Message_ListOfMsg") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Bind(self, theKey, theItem)

    def Bound(self, theKey: "TopoDS_Shape", theItem: "Message_ListOfMsg") -> "NCollection_List< Message_Msg > *":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Bound(self, theKey, theItem)

    def IsBound(self, theKey: "TopoDS_Shape") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_IsBound(self, theKey)

    def UnBind(self, theKey: "TopoDS_Shape") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_UnBind(self, theKey)

    def Seek(self, theKey: "TopoDS_Shape") -> "NCollection_List< Message_Msg > const *":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Seek(self, theKey)

    def Find(self, *args) -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Find(self, *args)

    def ChangeSeek(self, theKey: "TopoDS_Shape") -> "NCollection_List< Message_Msg > *":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey: "TopoDS_Shape") -> "NCollection_List< Message_Msg > &":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_ChangeFind(self, theKey)

    def __call__(self, *args) -> "NCollection_List< Message_Msg > &":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg___call__(self, *args)

    def Clear(self, *args) -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Clear(self, *args)
    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_DataMapOfShapeListOfMsg

    def Size(self) -> "Standard_Integer":
        return _ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_Size(self)

# Register ShapeExtend_DataMapOfShapeListOfMsg in _ShapeExtend:
_ShapeExtend.ShapeExtend_DataMapOfShapeListOfMsg_swigregister(ShapeExtend_DataMapOfShapeListOfMsg)

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

    def begin(self) -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,NCollection_List< Message_Msg >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_begin(self)

    def end(self) -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,NCollection_List< Message_Msg >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_end(self)

    def cbegin(self) -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,NCollection_List< Message_Msg >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::const_iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_cbegin(self)

    def cend(self) -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,NCollection_List< Message_Msg >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::const_iterator":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_cend(self)

    def __init__(self, *args):
        _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_swiginit(self, _ShapeExtend.new_ShapeExtend_DataMapOfTransientListOfMsg(*args))

    def Exchange(self, theOther: "ShapeExtend_DataMapOfTransientListOfMsg") -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Exchange(self, theOther)

    def Assign(self, theOther: "ShapeExtend_DataMapOfTransientListOfMsg") -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,Message_ListOfMsg,TColStd_MapTransientHasher > &":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Assign(self, theOther)

    def Set(self, theOther: "ShapeExtend_DataMapOfTransientListOfMsg") -> "NCollection_DataMap< opencascade::handle< Standard_Transient >,Message_ListOfMsg,TColStd_MapTransientHasher > &":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Set(self, theOther)

    def ReSize(self, N: "Standard_Integer const") -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_ReSize(self, N)

    def Bind(self, theKey: "opencascade::handle< Standard_Transient > const &", theItem: "Message_ListOfMsg") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Bind(self, theKey, theItem)

    def Bound(self, theKey: "opencascade::handle< Standard_Transient > const &", theItem: "Message_ListOfMsg") -> "NCollection_List< Message_Msg > *":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Bound(self, theKey, theItem)

    def IsBound(self, theKey: "opencascade::handle< Standard_Transient > const &") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_IsBound(self, theKey)

    def UnBind(self, theKey: "opencascade::handle< Standard_Transient > const &") -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_UnBind(self, theKey)

    def Seek(self, theKey: "opencascade::handle< Standard_Transient > const &") -> "NCollection_List< Message_Msg > const *":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Seek(self, theKey)

    def Find(self, *args) -> "Standard_Boolean":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Find(self, *args)

    def ChangeSeek(self, theKey: "opencascade::handle< Standard_Transient > const &") -> "NCollection_List< Message_Msg > *":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey: "opencascade::handle< Standard_Transient > const &") -> "NCollection_List< Message_Msg > &":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_ChangeFind(self, theKey)

    def __call__(self, *args) -> "NCollection_List< Message_Msg > &":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg___call__(self, *args)

    def Clear(self, *args) -> "void":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Clear(self, *args)
    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_DataMapOfTransientListOfMsg

    def Size(self) -> "Standard_Integer":
        return _ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_Size(self)

# Register ShapeExtend_DataMapOfTransientListOfMsg in _ShapeExtend:
_ShapeExtend.ShapeExtend_DataMapOfTransientListOfMsg_swigregister(ShapeExtend_DataMapOfTransientListOfMsg)

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

    @staticmethod
    def DecodeStatus(*args) -> "Standard_Boolean":
        r"""
        Tells if a bit flag contains bit corresponding to enumerated status.

        Parameters
        ----------
        flag: int
        status: ShapeExtend_Status

        Returns
        -------
        bool

        """
        return _ShapeExtend.shapeextend_DecodeStatus(*args)

    @staticmethod
    def EncodeStatus(*args) -> "Standard_Integer":
        r"""
        Encodes status (enumeration) to a bit flag.

        Parameters
        ----------
        status: ShapeExtend_Status

        Returns
        -------
        int

        """
        return _ShapeExtend.shapeextend_EncodeStatus(*args)

    @staticmethod
    def Init(*args) -> "void":
        r"""
        Inits using of shapeextend. currently, loads messages output by shapehealing algorithms.

        Returns
        -------
        None

        """
        return _ShapeExtend.shapeextend_Init(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _ShapeExtend.shapeextend_swiginit(self, _ShapeExtend.new_shapeextend())
    __swig_destroy__ = _ShapeExtend.delete_shapeextend

# Register shapeextend in _ShapeExtend:
_ShapeExtend.shapeextend_swigregister(shapeextend)

def shapeextend_DecodeStatus(*args) -> "Standard_Boolean":
    r"""
    Tells if a bit flag contains bit corresponding to enumerated status.

    Parameters
    ----------
    flag: int
    status: ShapeExtend_Status

    Returns
    -------
    bool

    """
    return _ShapeExtend.shapeextend_DecodeStatus(*args)

def shapeextend_EncodeStatus(*args) -> "Standard_Integer":
    r"""
    Encodes status (enumeration) to a bit flag.

    Parameters
    ----------
    status: ShapeExtend_Status

    Returns
    -------
    int

    """
    return _ShapeExtend.shapeextend_EncodeStatus(*args)

def shapeextend_Init(*args) -> "void":
    r"""
    Inits using of shapeextend. currently, loads messages output by shapehealing algorithms.

    Returns
    -------
    None

    """
    return _ShapeExtend.shapeextend_Init(*args)

class ShapeExtend_BasicMsgRegistrator(OCC.Core.Standard.Standard_Transient):
    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"""
        Empty constructor.

        Returns
        -------
        None

        """
        _ShapeExtend.ShapeExtend_BasicMsgRegistrator_swiginit(self, _ShapeExtend.new_ShapeExtend_BasicMsgRegistrator(*args))

    def Send(self, *args) -> "void":
        r"""
        Sends a message to be attached to the object. object can be of any type interpreted by redefined msgregistrator.

        Parameters
        ----------
        object: Standard_Transient
        message: Message_Msg
        gravity: Message_Gravity

        Returns
        -------
        None
        Sends a message to be attached to the shape.

        Parameters
        ----------
        shape: TopoDS_Shape
        message: Message_Msg
        gravity: Message_Gravity

        Returns
        -------
        None
        Calls send method with null transient.

        Parameters
        ----------
        message: Message_Msg
        gravity: Message_Gravity

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_BasicMsgRegistrator_Send(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_BasicMsgRegistrator

# Register ShapeExtend_BasicMsgRegistrator in _ShapeExtend:
_ShapeExtend.ShapeExtend_BasicMsgRegistrator_swigregister(ShapeExtend_BasicMsgRegistrator)

class ShapeExtend_ComplexCurve(OCC.Core.Geom.Geom_Curve):
    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

    def CheckConnectivity(self, *args) -> "Standard_Boolean":
        r"""
        Checks geometrical connectivity of the curves, including closure (sets fields myclosed).

        Parameters
        ----------
        Preci: float

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_CheckConnectivity(self, *args)

    def Curve(self, *args) -> "opencascade::handle< Geom_Curve > const &":
        r"""
        Returns curve given by its index.

        Parameters
        ----------
        index: int

        Returns
        -------
        opencascade::handle<Geom_Curve>

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_Curve(self, *args)

    def GetScaleFactor(self, *args) -> "Standard_Real":
        r"""
        Returns scale factor for recomputing of deviatives.

        Parameters
        ----------
        ind: int

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_GetScaleFactor(self, *args)

    def LocalToGlobal(self, *args) -> "Standard_Real":
        r"""
        Returns global parameter for the whole curve according to the segment and local parameter on it.

        Parameters
        ----------
        index: int
        Ulocal: float

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_LocalToGlobal(self, *args)

    def LocateParameter(self, *args) -> "Standard_Integer":
        r"""
        Returns number of the curve for the given parameter u and local paramete r uout for the found curve.

        Parameters
        ----------
        U: float

        Returns
        -------
        UOut: float

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_LocateParameter(self, *args)

    def NbCurves(self, *args) -> "Standard_Integer":
        r"""
        Returns number of curves.

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_ComplexCurve_NbCurves(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_ComplexCurve

# Register ShapeExtend_ComplexCurve in _ShapeExtend:
_ShapeExtend.ShapeExtend_ComplexCurve_swigregister(ShapeExtend_ComplexCurve)

class ShapeExtend_CompositeSurface(OCC.Core.Geom.Geom_Surface):
    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"""
        Empty constructor.

        Returns
        -------
        None
        Initializes by a grid of surfaces (calls init()).

        Parameters
        ----------
        GridSurf: TColGeom_HArray2OfSurface
        param: ShapeExtend_Parametrisation,optional
        	default value is ShapeExtend_Natural

        Returns
        -------
        None
        Initializes by a grid of surfaces (calls init()).

        Parameters
        ----------
        GridSurf: TColGeom_HArray2OfSurface
        UJoints: TColStd_Array1OfReal
        VJoints: TColStd_Array1OfReal

        Returns
        -------
        None

        """
        _ShapeExtend.ShapeExtend_CompositeSurface_swiginit(self, _ShapeExtend.new_ShapeExtend_CompositeSurface(*args))

    def CheckConnectivity(self, *args) -> "Standard_Boolean":
        r"""
        Checks geometrical connectivity of the patches, including closedness (sets fields muuclosed and myvclosed).

        Parameters
        ----------
        prec: float

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_CheckConnectivity(self, *args)

    def ComputeJointValues(self, *args) -> "void":
        r"""
        Computes joint values according to parameter.

        Parameters
        ----------
        param: ShapeExtend_Parametrisation,optional
        	default value is ShapeExtend_Natural

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_ComputeJointValues(self, *args)

    def GlobalToLocal(self, *args) -> "gp_Pnt2d":
        r"""
        Converts global parameters uv to local parameters uv on patch i,j.

        Parameters
        ----------
        i: int
        j: int
        UV: gp_Pnt2d

        Returns
        -------
        gp_Pnt2d

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_GlobalToLocal(self, *args)

    def GlobalToLocalTransformation(self, *args) -> "Standard_Boolean":
        r"""
        Computes transformation operator and ufactor descrinbing affine transformation required to convert global parameters on composite surface to local parameters on patch (i,j): uv = ( ufactor, 1. ) x trsf * uv; note: thus trsf contains shift and scale by v, scale by u is stored in ufact. returns true if transformation is not an identity.

        Parameters
        ----------
        i: int
        j: int
        Trsf: gp_Trsf2d

        Returns
        -------
        uFact: float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_GlobalToLocalTransformation(self, *args)

    def Init(self, *args) -> "Standard_Boolean":
        r"""
        Initializes by a grid of surfaces. all the surfaces of the grid must have geometrical connectivity as stated above. if geometrical connectivity is not satisfied, method returns false. however, class is initialized even in that case. //! last parameter defines how global parametrisation (joint values) will be computed: shapeextend_natural: u1 = u11min, ui+1 = ui + (ui1max-ui1min), etc. shapeextend_uniform: ui = i-1, vj = j-1 shapeextend_unitary: ui = (i-1)/nu, vi = (j-1)/nv.

        Parameters
        ----------
        GridSurf: TColGeom_HArray2OfSurface
        param: ShapeExtend_Parametrisation,optional
        	default value is ShapeExtend_Natural

        Returns
        -------
        bool
        Initializes by a grid of surfaces with given global parametrisation defined by ujoints and vjoints arrays, each having langth equal to number of patches in corresponding direction + 1. global joint values should be sorted in increasing order. all the surfaces of the grid must have geometrical connectivity as stated above. if geometrical connectivity is not satisfied, method returns false. however, class is initialized even in that case.

        Parameters
        ----------
        GridSurf: TColGeom_HArray2OfSurface
        UJoints: TColStd_Array1OfReal
        VJoints: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_Init(self, *args)

    def LocalToGlobal(self, *args) -> "gp_Pnt2d":
        r"""
        Converts local parameters uv on patch i,j to global parameters uv.

        Parameters
        ----------
        i: int
        j: int
        uv: gp_Pnt2d

        Returns
        -------
        gp_Pnt2d

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_LocalToGlobal(self, *args)

    def LocateUParameter(self, *args) -> "Standard_Integer":
        r"""
        Returns number of col that contains given (global) parameter.

        Parameters
        ----------
        U: float

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_LocateUParameter(self, *args)

    def LocateUVPoint(self, *args) -> "void":
        r"""
        Returns number of row and col of surface that contains given point.

        Parameters
        ----------
        pnt: gp_Pnt2d

        Returns
        -------
        i: int
        j: int

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_LocateUVPoint(self, *args)

    def LocateVParameter(self, *args) -> "Standard_Integer":
        r"""
        Returns number of row that contains given (global) parameter.

        Parameters
        ----------
        V: float

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_LocateVParameter(self, *args)

    def NbUPatches(self, *args) -> "Standard_Integer":
        r"""
        Returns number of patches in u direction.

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_NbUPatches(self, *args)

    def NbVPatches(self, *args) -> "Standard_Integer":
        r"""
        Returns number of patches in v direction.

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_NbVPatches(self, *args)

    def Patch(self, *args) -> "opencascade::handle< Geom_Surface > const &":
        r"""
        Returns one surface patch.

        Parameters
        ----------
        i: int
        j: int

        Returns
        -------
        opencascade::handle<Geom_Surface>
        Returns one surface patch that contains given (global) parameters.

        Parameters
        ----------
        U: float
        V: float

        Returns
        -------
        opencascade::handle<Geom_Surface>
        Returns one surface patch that contains given point.

        Parameters
        ----------
        pnt: gp_Pnt2d

        Returns
        -------
        opencascade::handle<Geom_Surface>

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_Patch(self, *args)

    def Patches(self, *args) -> "opencascade::handle< TColGeom_HArray2OfSurface > const &":
        r"""
        Returns grid of surfaces.

        Returns
        -------
        opencascade::handle<TColGeom_HArray2OfSurface>

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_Patches(self, *args)

    def SetUFirstValue(self, *args) -> "void":
        r"""
        Changes starting value for global u parametrisation (all other joint values are shifted accordingly).

        Parameters
        ----------
        UFirst: float

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_SetUFirstValue(self, *args)

    def SetUJointValues(self, *args) -> "Standard_Boolean":
        r"""
        Sets the array of u values corresponding to joint points, which define global parametrisation of the surface. number of values in array should be equal to nbupatches()+1. all the values should be sorted in increasing order. if this is not satisfied, does nothing and returns false.

        Parameters
        ----------
        UJoints: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_SetUJointValues(self, *args)

    def SetVFirstValue(self, *args) -> "void":
        r"""
        Changes starting value for global v parametrisation (all other joint values are shifted accordingly).

        Parameters
        ----------
        VFirst: float

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_SetVFirstValue(self, *args)

    def SetVJointValues(self, *args) -> "Standard_Boolean":
        r"""
        Sets the array of v values corresponding to joint points, which define global parametrisation of the surface number of values in array should be equal to nbvpatches()+1. all the values should be sorted in increasing order. if this is not satisfied, does nothing and returns false.

        Parameters
        ----------
        VJoints: TColStd_Array1OfReal

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_SetVJointValues(self, *args)

    def UGlobalToLocal(self, *args) -> "Standard_Real":
        r"""
        Converts global parameter u to local parameter u on patch i,j.

        Parameters
        ----------
        i: int
        j: int
        U: float

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_UGlobalToLocal(self, *args)

    def UJointValue(self, *args) -> "Standard_Real":
        r"""
        Returns i-th joint value in u direction (1-st is global umin, (nbupatches()+1)-th is global umax on the composite surface).

        Parameters
        ----------
        i: int

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_UJointValue(self, *args)

    def UJointValues(self, *args) -> "opencascade::handle< TColStd_HArray1OfReal >":
        r"""
        Returns the array of u values corresponding to joint points between patches as well as to start and end points, which define global parametrisation of the surface.

        Returns
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_UJointValues(self, *args)

    def ULocalToGlobal(self, *args) -> "Standard_Real":
        r"""
        Converts local parameter u on patch i,j to global parameter u.

        Parameters
        ----------
        i: int
        j: int
        u: float

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_ULocalToGlobal(self, *args)

    def VGlobalToLocal(self, *args) -> "Standard_Real":
        r"""
        Converts global parameter v to local parameter v on patch i,j.

        Parameters
        ----------
        i: int
        j: int
        V: float

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_VGlobalToLocal(self, *args)

    def VJointValue(self, *args) -> "Standard_Real":
        r"""
        Returns j-th joint value in v direction (1-st is global vmin, (nbvpatches()+1)-th is global vmax on the composite surface).

        Parameters
        ----------
        j: int

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_VJointValue(self, *args)

    def VJointValues(self, *args) -> "opencascade::handle< TColStd_HArray1OfReal >":
        r"""
        Returns the array of v values corresponding to joint points between patches as well as to start and end points, which define global parametrisation of the surface.

        Returns
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_VJointValues(self, *args)

    def VLocalToGlobal(self, *args) -> "Standard_Real":
        r"""
        Converts local parameter v on patch i,j to global parameter v.

        Parameters
        ----------
        i: int
        j: int
        v: float

        Returns
        -------
        float

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_VLocalToGlobal(self, *args)

    def Value(self, *args) -> "gp_Pnt":
        r"""
        Computes the point of parameter pnt on the grid.

        Parameters
        ----------
        pnt: gp_Pnt2d

        Returns
        -------
        gp_Pnt

        """
        return _ShapeExtend.ShapeExtend_CompositeSurface_Value(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_CompositeSurface

# Register ShapeExtend_CompositeSurface in _ShapeExtend:
_ShapeExtend.ShapeExtend_CompositeSurface_swigregister(ShapeExtend_CompositeSurface)

class ShapeExtend_Explorer(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):
        r"""
        Creates an object explorer.

        Returns
        -------
        None

        """
        _ShapeExtend.ShapeExtend_Explorer_swiginit(self, _ShapeExtend.new_ShapeExtend_Explorer(*args))

    def CompoundFromSeq(self, *args) -> "TopoDS_Shape":
        r"""
        Converts a sequence of shapes to a compound.

        Parameters
        ----------
        seqval: TopTools_HSequenceOfShape

        Returns
        -------
        TopoDS_Shape

        """
        return _ShapeExtend.ShapeExtend_Explorer_CompoundFromSeq(self, *args)

    def DispatchList(self, *args) -> "void":
        r"""
        Dispatches starting list of shapes according to their type, to the appropriate resulting lists for each of these lists, if it is null, it is firstly created else, new items are appended to the already existing ones.

        Parameters
        ----------
        list: TopTools_HSequenceOfShape
        vertices: TopTools_HSequenceOfShape
        edges: TopTools_HSequenceOfShape
        wires: TopTools_HSequenceOfShape
        faces: TopTools_HSequenceOfShape
        shells: TopTools_HSequenceOfShape
        solids: TopTools_HSequenceOfShape
        compsols: TopTools_HSequenceOfShape
        compounds: TopTools_HSequenceOfShape

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_Explorer_DispatchList(self, *args)

    def ListFromSeq(self, *args) -> "void":
        r"""
        Converts a sequence of shapes to a list of shapes <clear> if true (d), commands the list to start from scratch else, the list is cumulated.

        Parameters
        ----------
        seqval: TopTools_HSequenceOfShape
        lisval: TopTools_ListOfShape
        clear: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_Explorer_ListFromSeq(self, *args)

    def SeqFromCompound(self, *args) -> "opencascade::handle< TopTools_HSequenceOfShape >":
        r"""
        Converts a compound to a list of shapes if <comp> is not a compound, the list contains only <comp> if <comp> is null, the list is empty if <comp> is a compound, its sub-shapes are put into the list then if <expcomp> is true, if a sub-shape is a compound, it is not put to the list but its sub-shapes are (recursive).

        Parameters
        ----------
        comp: TopoDS_Shape
        expcomp: bool

        Returns
        -------
        opencascade::handle<TopTools_HSequenceOfShape>

        """
        return _ShapeExtend.ShapeExtend_Explorer_SeqFromCompound(self, *args)

    def SeqFromList(self, *args) -> "opencascade::handle< TopTools_HSequenceOfShape >":
        r"""
        Converts a list of shapes to a sequence of shapes.

        Parameters
        ----------
        lisval: TopTools_ListOfShape

        Returns
        -------
        opencascade::handle<TopTools_HSequenceOfShape>

        """
        return _ShapeExtend.ShapeExtend_Explorer_SeqFromList(self, *args)

    def ShapeType(self, *args) -> "TopAbs_ShapeEnum":
        r"""
        Returns the type of a shape: true type if <compound> is false if <compound> is true and <shape> is a compound, iterates on its items. if all are of the same type, returns this type. else, returns compound. if it is empty, returns shape for a null shape, returns shape.

        Parameters
        ----------
        shape: TopoDS_Shape
        compound: bool

        Returns
        -------
        TopAbs_ShapeEnum

        """
        return _ShapeExtend.ShapeExtend_Explorer_ShapeType(self, *args)

    def SortedCompound(self, *args) -> "TopoDS_Shape":
        r"""
        Builds a compound from the given shape. it explores the shape level by level, according to the <explore> argument. if <explore> is false, only compound items are explored, else all items are. the following shapes are added to resulting compound: - shapes which comply to <type> - if <type> is wire, considers also free edges (and makes wires) - if <type> is shell, considers also free faces (and makes shells) if <compound> is true, gathers items in compounds which correspond to starting compound,solid or shell containers, or items directly contained in a compound.

        Parameters
        ----------
        shape: TopoDS_Shape
        type: TopAbs_ShapeEnum
        explore: bool
        compound: bool

        Returns
        -------
        TopoDS_Shape

        """
        return _ShapeExtend.ShapeExtend_Explorer_SortedCompound(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_Explorer

# Register ShapeExtend_Explorer in _ShapeExtend:
_ShapeExtend.ShapeExtend_Explorer_swigregister(ShapeExtend_Explorer)

class ShapeExtend_WireData(OCC.Core.Standard.Standard_Transient):
    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"""
        Empty constructor, creates empty wire with no edges.

        Returns
        -------
        None
        Constructor initializing the data from topods_wire. calls init(wire,chained).

        Parameters
        ----------
        wire: TopoDS_Wire
        chained: bool,optional
        	default value is Standard_True
        theManifoldMode: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        _ShapeExtend.ShapeExtend_WireData_swiginit(self, _ShapeExtend.new_ShapeExtend_WireData(*args))

    def Add(self, *args) -> "void":
        r"""
        Adds an edge to a wire, being defined (not yet ended) this is the plain, basic, function to add an edge <num> = 0 (d): appends at end <num> = 1: preprends at start else, insert before <num> remark : null edge is simply ignored.

        Parameters
        ----------
        edge: TopoDS_Edge
        atnum: int,optional
        	default value is 0

        Returns
        -------
        None
        Adds an entire wire, considered as a list of edges remark : the wire is assumed to be ordered (topods_iterator is used).

        Parameters
        ----------
        wire: TopoDS_Wire
        atnum: int,optional
        	default value is 0

        Returns
        -------
        None
        Adds a wire in the form of wiredata.

        Parameters
        ----------
        wire: ShapeExtend_WireData
        atnum: int,optional
        	default value is 0

        Returns
        -------
        None
        Adds an edge or a wire invoking corresponding method add.

        Parameters
        ----------
        shape: TopoDS_Shape
        atnum: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_Add(self, *args)

    def AddOriented(self, *args) -> "void":
        r"""
        Adds an edge to start or end of <self>, according to <mode> 0: at end, as direct 1: at end, as reversed 2: at start, as direct 3: at start, as reversed < 0: no adding.

        Parameters
        ----------
        edge: TopoDS_Edge
        mode: int

        Returns
        -------
        None
        Adds a wire to start or end of <self>, according to <mode> 0: at end, as direct 1: at end, as reversed 2: at start, as direct 3: at start, as reversed < 0: no adding.

        Parameters
        ----------
        wire: TopoDS_Wire
        mode: int

        Returns
        -------
        None
        Adds an edge or a wire invoking corresponding method addoriented.

        Parameters
        ----------
        shape: TopoDS_Shape
        mode: int

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_AddOriented(self, *args)

    def Clear(self, *args) -> "void":
        r"""
        Clears data about wire.

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_Clear(self, *args)

    def ComputeSeams(self, *args) -> "void":
        r"""
        Computes the list of seam edges by default (direct call), computing is enforced for indirect call (from isseam) it is redone only if not yet already done or if the list of edges has changed remark : a seam edge is an edge present twice in the list, once as forward and once as reversed each sense has its own pcurve, the one for forward must be set in first.

        Parameters
        ----------
        enforce: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_ComputeSeams(self, *args)

    def Edge(self, *args) -> "TopoDS_Edge":
        r"""
        Returns <num>th edge.

        Parameters
        ----------
        num: int

        Returns
        -------
        TopoDS_Edge

        """
        return _ShapeExtend.ShapeExtend_WireData_Edge(self, *args)

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of the edge if the edge is a seam the orientation is also checked returns 0 if the edge is not found in the list.

        Parameters
        ----------
        edge: TopoDS_Edge

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_WireData_Index(self, *args)

    def Init(self, *args) -> "Standard_Boolean":
        r"""
        Copies data from another wiredata.

        Parameters
        ----------
        other: ShapeExtend_WireData

        Returns
        -------
        None
        Loads an already existing wire if <chained> is true (default), edges are added in the sequence as they are explored by topods_iterator else, if <chained> is false, wire is explored by breptools_wireexplorer and it is guaranteed that edges will be sequencially connected. remark : in the latter case it can happen that not all edges will be found (because of limitations of breptools_wireexplorer for disconnected wires and wires with seam edges).

        Parameters
        ----------
        wire: TopoDS_Wire
        chained: bool,optional
        	default value is Standard_True
        theManifoldMode: bool,optional
        	default value is Standard_True

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_WireData_Init(self, *args)

    def IsSeam(self, *args) -> "Standard_Boolean":
        r"""
        Tells if an edge is seam (see computeseams) an edge is considered as seam if it presents twice in the edge list, once as forward and once as reversed.

        Parameters
        ----------
        num: int

        Returns
        -------
        bool

        """
        return _ShapeExtend.ShapeExtend_WireData_IsSeam(self, *args)

    def GetManifoldMode(self) -> "Standard_Boolean":
        r"""GetManifoldMode(ShapeExtend_WireData self) -> Standard_Boolean"""
        return _ShapeExtend.ShapeExtend_WireData_GetManifoldMode(self)

    def SetManifoldMode(self, value: "Standard_Boolean") -> "void":
        r"""SetManifoldMode(ShapeExtend_WireData self, Standard_Boolean value)"""
        return _ShapeExtend.ShapeExtend_WireData_SetManifoldMode(self, value)

    def NbEdges(self, *args) -> "Standard_Integer":
        r"""
        Returns the count of currently recorded edges.

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_WireData_NbEdges(self, *args)

    def NbNonManifoldEdges(self, *args) -> "Standard_Integer":
        r"""
        Returns the count of currently recorded non-manifold edges.

        Returns
        -------
        int

        """
        return _ShapeExtend.ShapeExtend_WireData_NbNonManifoldEdges(self, *args)

    def NonmanifoldEdge(self, *args) -> "TopoDS_Edge":
        r"""
        Returns <num>th nonmanifold edge.

        Parameters
        ----------
        num: int

        Returns
        -------
        TopoDS_Edge

        """
        return _ShapeExtend.ShapeExtend_WireData_NonmanifoldEdge(self, *args)

    def NonmanifoldEdges(self, *args) -> "opencascade::handle< TopTools_HSequenceOfShape >":
        r"""
        Returns sequence of non-manifold edges this sequence can be not empty if wire data set in manifold mode but initial wire has internal orientation or contains internal edges.

        Returns
        -------
        opencascade::handle<TopTools_HSequenceOfShape>

        """
        return _ShapeExtend.ShapeExtend_WireData_NonmanifoldEdges(self, *args)

    def Remove(self, *args) -> "void":
        r"""
        Removes an edge, given its rank. by default removes the last edge.

        Parameters
        ----------
        num: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_Remove(self, *args)

    def Reverse(self, *args) -> "void":
        r"""
        Reverses the sense of the list and the orientation of each edge this method should be called when either wire has no seam edges or face is not available.

        Returns
        -------
        None
        Reverses the sense of the list and the orientation of each edge the face is necessary for swapping pcurves for seam edges (first pcurve corresponds to orientation forward, and second to reversed; when edge is reversed, pcurves must be swapped) if face is null, no swapping is performed.

        Parameters
        ----------
        face: TopoDS_Face

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_Reverse(self, *args)

    def Set(self, *args) -> "void":
        r"""
        Replaces an edge at the given rank number <num> with new one. default is last edge (<num> = 0).

        Parameters
        ----------
        edge: TopoDS_Edge
        num: int,optional
        	default value is 0

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_Set(self, *args)

    def SetDegeneratedLast(self, *args) -> "void":
        r"""
        When the wire contains at least one degenerated edge, sets it as last one note : it is useful to process pcurves, for instance, while the pcurve of a dgnr may not be computed from its 3d part (there is none) it is computed after the other edges have been computed and chained.

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_SetDegeneratedLast(self, *args)

    def SetLast(self, *args) -> "void":
        r"""
        Does a circular permutation in order to set <num>th edge last.

        Parameters
        ----------
        num: int

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_WireData_SetLast(self, *args)

    def Wire(self, *args) -> "TopoDS_Wire":
        r"""
        Makes topods_wire using brep_builder (just creates the topods_wire object and adds all edges into it). this method should be called when the wire is correct (for example, after successful fixes by shapefix_wire) and adjacent edges share common vertices. in case if adjacent edges do not share the same vertices the resulting topods_wire will be invalid.

        Returns
        -------
        TopoDS_Wire

        """
        return _ShapeExtend.ShapeExtend_WireData_Wire(self, *args)

    def WireAPIMake(self, *args) -> "TopoDS_Wire":
        r"""
        Makes topods_wire using brepapi_makewire. class brepapi_makewire merges geometrically coincided vertices and can disturb correct order of edges in the wire. if this class fails, null shape is returned.

        Returns
        -------
        TopoDS_Wire

        """
        return _ShapeExtend.ShapeExtend_WireData_WireAPIMake(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_WireData

# Register ShapeExtend_WireData in _ShapeExtend:
_ShapeExtend.ShapeExtend_WireData_swigregister(ShapeExtend_WireData)

class ShapeExtend_MsgRegistrator(ShapeExtend_BasicMsgRegistrator):
    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"""
        Creates an object.

        Returns
        -------
        None

        """
        _ShapeExtend.ShapeExtend_MsgRegistrator_swiginit(self, _ShapeExtend.new_ShapeExtend_MsgRegistrator(*args))

    def MapShape(self, *args) -> "ShapeExtend_DataMapOfShapeListOfMsg const &":
        r"""
        Returns a map of shapes and message list.

        Returns
        -------
        ShapeExtend_DataMapOfShapeListOfMsg

        """
        return _ShapeExtend.ShapeExtend_MsgRegistrator_MapShape(self, *args)

    def MapTransient(self, *args) -> "ShapeExtend_DataMapOfTransientListOfMsg const &":
        r"""
        Returns a map of objects and message list.

        Returns
        -------
        ShapeExtend_DataMapOfTransientListOfMsg

        """
        return _ShapeExtend.ShapeExtend_MsgRegistrator_MapTransient(self, *args)

    def Send(self, *args) -> "void":
        r"""
        Sends a message to be attached to the object. if the object is in the map then the message is added to the list, otherwise the object is firstly added to the map.

        Parameters
        ----------
        object: Standard_Transient
        message: Message_Msg
        gravity: Message_Gravity

        Returns
        -------
        None
        Sends a message to be attached to the shape. if the shape is in the map then the message is added to the list, otherwise the shape is firstly added to the map.

        Parameters
        ----------
        shape: TopoDS_Shape
        message: Message_Msg
        gravity: Message_Gravity

        Returns
        -------
        None

        """
        return _ShapeExtend.ShapeExtend_MsgRegistrator_Send(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _ShapeExtend.delete_ShapeExtend_MsgRegistrator

# Register ShapeExtend_MsgRegistrator in _ShapeExtend:
_ShapeExtend.ShapeExtend_MsgRegistrator_swigregister(ShapeExtend_MsgRegistrator)





