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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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

# Register SwigPyIterator in _TopoDS:
_TopoDS.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.Message
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
Handle_TopoDS_HShape_Create = _TopoDS.Handle_TopoDS_HShape_Create
Handle_TopoDS_HShape_DownCast = _TopoDS.Handle_TopoDS_HShape_DownCast
Handle_TopoDS_HShape_IsNull = _TopoDS.Handle_TopoDS_HShape_IsNull
Handle_TopoDS_TShape_Create = _TopoDS.Handle_TopoDS_TShape_Create
Handle_TopoDS_TShape_DownCast = _TopoDS.Handle_TopoDS_TShape_DownCast
Handle_TopoDS_TShape_IsNull = _TopoDS.Handle_TopoDS_TShape_IsNull
Handle_TopoDS_TCompSolid_Create = _TopoDS.Handle_TopoDS_TCompSolid_Create
Handle_TopoDS_TCompSolid_DownCast = _TopoDS.Handle_TopoDS_TCompSolid_DownCast
Handle_TopoDS_TCompSolid_IsNull = _TopoDS.Handle_TopoDS_TCompSolid_IsNull
Handle_TopoDS_TCompound_Create = _TopoDS.Handle_TopoDS_TCompound_Create
Handle_TopoDS_TCompound_DownCast = _TopoDS.Handle_TopoDS_TCompound_DownCast
Handle_TopoDS_TCompound_IsNull = _TopoDS.Handle_TopoDS_TCompound_IsNull
Handle_TopoDS_TEdge_Create = _TopoDS.Handle_TopoDS_TEdge_Create
Handle_TopoDS_TEdge_DownCast = _TopoDS.Handle_TopoDS_TEdge_DownCast
Handle_TopoDS_TEdge_IsNull = _TopoDS.Handle_TopoDS_TEdge_IsNull
Handle_TopoDS_TFace_Create = _TopoDS.Handle_TopoDS_TFace_Create
Handle_TopoDS_TFace_DownCast = _TopoDS.Handle_TopoDS_TFace_DownCast
Handle_TopoDS_TFace_IsNull = _TopoDS.Handle_TopoDS_TFace_IsNull
Handle_TopoDS_TShell_Create = _TopoDS.Handle_TopoDS_TShell_Create
Handle_TopoDS_TShell_DownCast = _TopoDS.Handle_TopoDS_TShell_DownCast
Handle_TopoDS_TShell_IsNull = _TopoDS.Handle_TopoDS_TShell_IsNull
Handle_TopoDS_TSolid_Create = _TopoDS.Handle_TopoDS_TSolid_Create
Handle_TopoDS_TSolid_DownCast = _TopoDS.Handle_TopoDS_TSolid_DownCast
Handle_TopoDS_TSolid_IsNull = _TopoDS.Handle_TopoDS_TSolid_IsNull
Handle_TopoDS_TVertex_Create = _TopoDS.Handle_TopoDS_TVertex_Create
Handle_TopoDS_TVertex_DownCast = _TopoDS.Handle_TopoDS_TVertex_DownCast
Handle_TopoDS_TVertex_IsNull = _TopoDS.Handle_TopoDS_TVertex_IsNull
Handle_TopoDS_TWire_Create = _TopoDS.Handle_TopoDS_TWire_Create
Handle_TopoDS_TWire_DownCast = _TopoDS.Handle_TopoDS_TWire_DownCast
Handle_TopoDS_TWire_IsNull = _TopoDS.Handle_TopoDS_TWire_IsNull
class TopoDS_ListOfShape(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    begin = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_begin)
    end = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_end)
    cbegin = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_cbegin)
    cend = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_cend)

    def __init__(self, *args):
        _TopoDS.TopoDS_ListOfShape_swiginit(self, _TopoDS.new_TopoDS_ListOfShape(*args))
    Size = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Size)
    Assign = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Assign)
    Set = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Set)
    Clear = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Clear)
    First = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_First)
    Last = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Last)
    Append = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Append)
    Prepend = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Prepend)
    RemoveFirst = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_RemoveFirst)
    Remove = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Remove)
    InsertBefore = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_InsertBefore)
    InsertAfter = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_InsertAfter)
    Reverse = _swig_new_instance_method(_TopoDS.TopoDS_ListOfShape_Reverse)
    __swig_destroy__ = _TopoDS.delete_TopoDS_ListOfShape

# Register TopoDS_ListOfShape in _TopoDS:
_TopoDS.TopoDS_ListOfShape_swigregister(TopoDS_ListOfShape)

class TopoDS_ListIteratorOfListOfShape(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):
        _TopoDS.TopoDS_ListIteratorOfListOfShape_swiginit(self, _TopoDS.new_TopoDS_ListIteratorOfListOfShape(*args))
    More = _swig_new_instance_method(_TopoDS.TopoDS_ListIteratorOfListOfShape_More)
    Next = _swig_new_instance_method(_TopoDS.TopoDS_ListIteratorOfListOfShape_Next)
    Value = _swig_new_instance_method(_TopoDS.TopoDS_ListIteratorOfListOfShape_Value)
    ChangeValue = _swig_new_instance_method(_TopoDS.TopoDS_ListIteratorOfListOfShape_ChangeValue)
    __swig_destroy__ = _TopoDS.delete_TopoDS_ListIteratorOfListOfShape

# Register TopoDS_ListIteratorOfListOfShape in _TopoDS:
_TopoDS.TopoDS_ListIteratorOfListOfShape_swigregister(TopoDS_ListIteratorOfListOfShape)

class topods(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    CompSolid = _swig_new_static_method(_TopoDS.topods_CompSolid)
    Compound = _swig_new_static_method(_TopoDS.topods_Compound)
    Edge = _swig_new_static_method(_TopoDS.topods_Edge)
    Face = _swig_new_static_method(_TopoDS.topods_Face)
    Shell = _swig_new_static_method(_TopoDS.topods_Shell)
    Solid = _swig_new_static_method(_TopoDS.topods_Solid)
    Vertex = _swig_new_static_method(_TopoDS.topods_Vertex)
    Wire = _swig_new_static_method(_TopoDS.topods_Wire)

    __repr__ = _dumps_object


    def __init__(self):
        _TopoDS.topods_swiginit(self, _TopoDS.new_topods())
    __swig_destroy__ = _TopoDS.delete_topods

# Register topods in _TopoDS:
_TopoDS.topods_swigregister(topods)
topods_CompSolid = _TopoDS.topods_CompSolid
topods_Compound = _TopoDS.topods_Compound
topods_Edge = _TopoDS.topods_Edge
topods_Face = _TopoDS.topods_Face
topods_Shell = _TopoDS.topods_Shell
topods_Solid = _TopoDS.topods_Solid
topods_Vertex = _TopoDS.topods_Vertex
topods_Wire = _TopoDS.topods_Wire

class TopoDS_AlertWithShape(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    GetShape = _swig_new_instance_method(_TopoDS.TopoDS_AlertWithShape_GetShape)
    Merge = _swig_new_instance_method(_TopoDS.TopoDS_AlertWithShape_Merge)
    SetShape = _swig_new_instance_method(_TopoDS.TopoDS_AlertWithShape_SetShape)
    SupportsMerge = _swig_new_instance_method(_TopoDS.TopoDS_AlertWithShape_SupportsMerge)

    def __init__(self, *args):
        r"""
        * Constructor with shape argument
        	:param theShape:
        	:type theShape: TopoDS_Shape
        	:rtype: None
        """
        _TopoDS.TopoDS_AlertWithShape_swiginit(self, _TopoDS.new_TopoDS_AlertWithShape(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_AlertWithShape

# Register TopoDS_AlertWithShape in _TopoDS:
_TopoDS.TopoDS_AlertWithShape_swigregister(TopoDS_AlertWithShape)

class TopoDS_Builder(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Add = _swig_new_instance_method(_TopoDS.TopoDS_Builder_Add)
    MakeCompSolid = _swig_new_instance_method(_TopoDS.TopoDS_Builder_MakeCompSolid)
    MakeCompound = _swig_new_instance_method(_TopoDS.TopoDS_Builder_MakeCompound)
    MakeShell = _swig_new_instance_method(_TopoDS.TopoDS_Builder_MakeShell)
    MakeSolid = _swig_new_instance_method(_TopoDS.TopoDS_Builder_MakeSolid)
    MakeWire = _swig_new_instance_method(_TopoDS.TopoDS_Builder_MakeWire)
    Remove = _swig_new_instance_method(_TopoDS.TopoDS_Builder_Remove)

    __repr__ = _dumps_object


    def __init__(self):
        _TopoDS.TopoDS_Builder_swiginit(self, _TopoDS.new_TopoDS_Builder())
    __swig_destroy__ = _TopoDS.delete_TopoDS_Builder

# Register TopoDS_Builder in _TopoDS:
_TopoDS.TopoDS_Builder_swigregister(TopoDS_Builder)

class TopoDS_HShape(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
    ChangeShape = _swig_new_instance_method(_TopoDS.TopoDS_HShape_ChangeShape)
    Shape = _swig_new_instance_method(_TopoDS.TopoDS_HShape_Shape)

    def __init__(self, *args):
        r"""
        * Constructs an empty shape object
        	:rtype: None* Constructs a shape object defined by the shape aShape.
        	:param aShape:
        	:type aShape: TopoDS_Shape
        	:rtype: None
        """
        _TopoDS.TopoDS_HShape_swiginit(self, _TopoDS.new_TopoDS_HShape(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_HShape

# Register TopoDS_HShape in _TopoDS:
_TopoDS.TopoDS_HShape_swigregister(TopoDS_HShape)

class TopoDS_Iterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Initialize = _swig_new_instance_method(_TopoDS.TopoDS_Iterator_Initialize)
    More = _swig_new_instance_method(_TopoDS.TopoDS_Iterator_More)
    Next = _swig_new_instance_method(_TopoDS.TopoDS_Iterator_Next)

    def __init__(self, *args):
        r"""
        * Creates an empty Iterator.
        	:rtype: None* Creates an Iterator on <S> sub-shapes. Note: - If cumOri is true, the function composes all sub-shapes with the orientation of S. - If cumLoc is true, the function multiplies all sub-shapes by the location of S, i.e. it applies to each sub-shape the transformation that is associated with S.
        	:param S:
        	:type S: TopoDS_Shape
        	:param cumOri: default value is Standard_True
        	:type cumOri: bool
        	:param cumLoc: default value is Standard_True
        	:type cumLoc: bool
        	:rtype: None
        """
        _TopoDS.TopoDS_Iterator_swiginit(self, _TopoDS.new_TopoDS_Iterator(*args))
    Value = _swig_new_instance_method(_TopoDS.TopoDS_Iterator_Value)

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Iterator

# Register TopoDS_Iterator in _TopoDS:
_TopoDS.TopoDS_Iterator_swigregister(TopoDS_Iterator)

class TopoDS_Shape(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Checked = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Checked)
    Closed = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Closed)
    Complement = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Complement)
    Complemented = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Complemented)
    Compose = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Compose)
    Composed = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Composed)
    Convex = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Convex)
    DumpJsonToString = _swig_new_instance_method(_TopoDS.TopoDS_Shape_DumpJsonToString)
    EmptyCopied = _swig_new_instance_method(_TopoDS.TopoDS_Shape_EmptyCopied)
    EmptyCopy = _swig_new_instance_method(_TopoDS.TopoDS_Shape_EmptyCopy)
    Free = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Free)
    HashCode = _swig_new_instance_method(_TopoDS.TopoDS_Shape_HashCode)
    __hash__ = _swig_new_instance_method(_TopoDS.TopoDS_Shape___hash__)
    Infinite = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Infinite)
    IsEqual = _swig_new_instance_method(_TopoDS.TopoDS_Shape_IsEqual)
    IsNotEqual = _swig_new_instance_method(_TopoDS.TopoDS_Shape_IsNotEqual)
    IsNull = _swig_new_instance_method(_TopoDS.TopoDS_Shape_IsNull)
    IsPartner = _swig_new_instance_method(_TopoDS.TopoDS_Shape_IsPartner)
    IsSame = _swig_new_instance_method(_TopoDS.TopoDS_Shape_IsSame)
    Located = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Located)
    Location = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Location)
    Locked = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Locked)
    Modified = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Modified)
    Move = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Move)
    Moved = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Moved)
    NbChildren = _swig_new_instance_method(_TopoDS.TopoDS_Shape_NbChildren)
    Nullify = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Nullify)
    Orientable = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Orientable)
    Orientation = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Orientation)
    Oriented = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Oriented)
    Reverse = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Reverse)
    Reversed = _swig_new_instance_method(_TopoDS.TopoDS_Shape_Reversed)
    ShapeType = _swig_new_instance_method(_TopoDS.TopoDS_Shape_ShapeType)
    TShape = _swig_new_instance_method(_TopoDS.TopoDS_Shape_TShape)

    def __init__(self, *args):
        r"""
        __init__(TopoDS_Shape self, TopoDS_Shape arg0) -> TopoDS_Shape* Creates a NULL Shape referring to nothing.
        	:rtype: None
        """
        _TopoDS.TopoDS_Shape_swiginit(self, _TopoDS.new_TopoDS_Shape(*args))
    __eq_wrapper__ = _swig_new_instance_method(_TopoDS.TopoDS_Shape___eq_wrapper__)

    def __eq__(self, right):
        try:
            return self.__eq_wrapper__(right)
        except:
            return False


    def __getstate__(self):
    	from .BRepTools import BRepTools_ShapeSet
    	ss = BRepTools_ShapeSet()
    	ss.Add(self)
    	str_shape = ss.WriteToString()
    	indx = ss.Locations().Index(self.Location())
    	return str_shape, indx
    def __setstate__(self, state):
    	from .BRepTools import BRepTools_ShapeSet
    	topods_str, indx = state
    	ss = BRepTools_ShapeSet()
    	ss.ReadFromString(topods_str)
    	the_shape = ss.Shape(ss.NbShapes())
    	location = ss.Locations().Location(indx)
    	the_shape.Location(location)
    	self.this = the_shape.this


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Shape

# Register TopoDS_Shape in _TopoDS:
_TopoDS.TopoDS_Shape_swigregister(TopoDS_Shape)

class TopoDS_TShape(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
    Checked = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Checked)
    Closed = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Closed)
    Convex = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Convex)
    DumpJsonToString = _swig_new_instance_method(_TopoDS.TopoDS_TShape_DumpJsonToString)
    EmptyCopy = _swig_new_instance_method(_TopoDS.TopoDS_TShape_EmptyCopy)
    Free = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Free)
    Infinite = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Infinite)
    Locked = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Locked)
    Modified = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Modified)
    NbChildren = _swig_new_instance_method(_TopoDS.TopoDS_TShape_NbChildren)
    Orientable = _swig_new_instance_method(_TopoDS.TopoDS_TShape_Orientable)
    ShapeType = _swig_new_instance_method(_TopoDS.TopoDS_TShape_ShapeType)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TShape

# Register TopoDS_TShape in _TopoDS:
_TopoDS.TopoDS_TShape_swigregister(TopoDS_TShape)

class TopoDS_CompSolid(TopoDS_Shape):
    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"""
        * Constructs an Undefined CompSolid.
        	:rtype: None
        """
        _TopoDS.TopoDS_CompSolid_swiginit(self, _TopoDS.new_TopoDS_CompSolid(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_CompSolid

# Register TopoDS_CompSolid in _TopoDS:
_TopoDS.TopoDS_CompSolid_swigregister(TopoDS_CompSolid)

class TopoDS_Compound(TopoDS_Shape):
    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"""
        * Constructs an Undefined Compound.
        	:rtype: None
        """
        _TopoDS.TopoDS_Compound_swiginit(self, _TopoDS.new_TopoDS_Compound(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Compound

# Register TopoDS_Compound in _TopoDS:
_TopoDS.TopoDS_Compound_swigregister(TopoDS_Compound)

class TopoDS_Edge(TopoDS_Shape):
    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"""
        * Undefined Edge.
        	:rtype: None
        """
        _TopoDS.TopoDS_Edge_swiginit(self, _TopoDS.new_TopoDS_Edge(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Edge

# Register TopoDS_Edge in _TopoDS:
_TopoDS.TopoDS_Edge_swigregister(TopoDS_Edge)

class TopoDS_Face(TopoDS_Shape):
    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"""
        * Undefined Face.
        	:rtype: None
        """
        _TopoDS.TopoDS_Face_swiginit(self, _TopoDS.new_TopoDS_Face(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Face

# Register TopoDS_Face in _TopoDS:
_TopoDS.TopoDS_Face_swigregister(TopoDS_Face)

class TopoDS_Shell(TopoDS_Shape):
    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"""
        * Constructs an Undefined Shell.
        	:rtype: None
        """
        _TopoDS.TopoDS_Shell_swiginit(self, _TopoDS.new_TopoDS_Shell(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Shell

# Register TopoDS_Shell in _TopoDS:
_TopoDS.TopoDS_Shell_swigregister(TopoDS_Shell)

class TopoDS_Solid(TopoDS_Shape):
    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"""
        * Constructs an Undefined Solid.
        	:rtype: None
        """
        _TopoDS.TopoDS_Solid_swiginit(self, _TopoDS.new_TopoDS_Solid(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Solid

# Register TopoDS_Solid in _TopoDS:
_TopoDS.TopoDS_Solid_swigregister(TopoDS_Solid)

class TopoDS_TCompSolid(TopoDS_TShape):
    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 empty TCompSolid.
        	:rtype: None
        """
        _TopoDS.TopoDS_TCompSolid_swiginit(self, _TopoDS.new_TopoDS_TCompSolid(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TCompSolid

# Register TopoDS_TCompSolid in _TopoDS:
_TopoDS.TopoDS_TCompSolid_swigregister(TopoDS_TCompSolid)

class TopoDS_TCompound(TopoDS_TShape):
    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 empty TCompound.
        	:rtype: None
        """
        _TopoDS.TopoDS_TCompound_swiginit(self, _TopoDS.new_TopoDS_TCompound(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TCompound

# Register TopoDS_TCompound in _TopoDS:
_TopoDS.TopoDS_TCompound_swigregister(TopoDS_TCompound)

class TopoDS_TEdge(TopoDS_TShape):
    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


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TEdge

# Register TopoDS_TEdge in _TopoDS:
_TopoDS.TopoDS_TEdge_swigregister(TopoDS_TEdge)

class TopoDS_TFace(TopoDS_TShape):
    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 empty TFace.
        	:rtype: None
        """
        _TopoDS.TopoDS_TFace_swiginit(self, _TopoDS.new_TopoDS_TFace(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TFace

# Register TopoDS_TFace in _TopoDS:
_TopoDS.TopoDS_TFace_swigregister(TopoDS_TFace)

class TopoDS_TShell(TopoDS_TShape):
    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 empty TShell.
        	:rtype: None
        """
        _TopoDS.TopoDS_TShell_swiginit(self, _TopoDS.new_TopoDS_TShell(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TShell

# Register TopoDS_TShell in _TopoDS:
_TopoDS.TopoDS_TShell_swigregister(TopoDS_TShell)

class TopoDS_TSolid(TopoDS_TShape):
    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 empty TSolid.
        	:rtype: None
        """
        _TopoDS.TopoDS_TSolid_swiginit(self, _TopoDS.new_TopoDS_TSolid(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TSolid

# Register TopoDS_TSolid in _TopoDS:
_TopoDS.TopoDS_TSolid_swigregister(TopoDS_TSolid)

class TopoDS_TVertex(TopoDS_TShape):
    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


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TVertex

# Register TopoDS_TVertex in _TopoDS:
_TopoDS.TopoDS_TVertex_swigregister(TopoDS_TVertex)

class TopoDS_TWire(TopoDS_TShape):
    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 empty TWire.
        	:rtype: None
        """
        _TopoDS.TopoDS_TWire_swiginit(self, _TopoDS.new_TopoDS_TWire(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_TWire

# Register TopoDS_TWire in _TopoDS:
_TopoDS.TopoDS_TWire_swigregister(TopoDS_TWire)

class TopoDS_Vertex(TopoDS_Shape):
    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__(TopoDS_Vertex self, TopoDS_Vertex arg0) -> TopoDS_Vertex* Undefined Vertex.
        	:rtype: None
        """
        _TopoDS.TopoDS_Vertex_swiginit(self, _TopoDS.new_TopoDS_Vertex(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Vertex

# Register TopoDS_Vertex in _TopoDS:
_TopoDS.TopoDS_Vertex_swigregister(TopoDS_Vertex)

class TopoDS_Wire(TopoDS_Shape):
    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"""
        * Undefined Wire.
        	:rtype: None
        """
        _TopoDS.TopoDS_Wire_swiginit(self, _TopoDS.new_TopoDS_Wire(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _TopoDS.delete_TopoDS_Wire

# Register TopoDS_Wire in _TopoDS:
_TopoDS.TopoDS_Wire_swigregister(TopoDS_Wire)



