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

"""
BinTools module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_bintools.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _BinTools
else:
    import _BinTools

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 == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(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__ = _BinTools.delete_SwigPyIterator

    def value(self):
        return _BinTools.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _BinTools.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _BinTools.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _BinTools.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _BinTools.SwigPyIterator_equal(self, x)

    def copy(self):
        return _BinTools.SwigPyIterator_copy(self)

    def next(self):
        return _BinTools.SwigPyIterator_next(self)

    def __next__(self):
        return _BinTools.SwigPyIterator___next__(self)

    def previous(self):
        return _BinTools.SwigPyIterator_previous(self)

    def advance(self, n):
        return _BinTools.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _BinTools.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _BinTools.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _BinTools.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _BinTools.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _BinTools.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _BinTools.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _BinTools:
_BinTools.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, method_name, class_name):
    return _BinTools.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.TopoDS
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.Geom2d
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Geom

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

BinTools_FormatVersion_LOWER = _BinTools.BinTools_FormatVersion_LOWER
BinTools_FormatVersion_UPPER = _BinTools.BinTools_FormatVersion_UPPER
BinTools_FormatVersion_VERSION_1 = _BinTools.BinTools_FormatVersion_VERSION_1
BinTools_FormatVersion_VERSION_2 = _BinTools.BinTools_FormatVersion_VERSION_2
BinTools_FormatVersion_VERSION_3 = _BinTools.BinTools_FormatVersion_VERSION_3
BinTools_FormatVersion_VERSION_4 = _BinTools.BinTools_FormatVersion_VERSION_4
BinTools_FormatVersion_CURRENT = _BinTools.BinTools_FormatVersion_CURRENT
BinTools_ObjectType_Unknown = _BinTools.BinTools_ObjectType_Unknown
BinTools_ObjectType_Reference8 = _BinTools.BinTools_ObjectType_Reference8
BinTools_ObjectType_Reference16 = _BinTools.BinTools_ObjectType_Reference16
BinTools_ObjectType_Reference32 = _BinTools.BinTools_ObjectType_Reference32
BinTools_ObjectType_Reference64 = _BinTools.BinTools_ObjectType_Reference64
BinTools_ObjectType_Location = _BinTools.BinTools_ObjectType_Location
BinTools_ObjectType_SimpleLocation = _BinTools.BinTools_ObjectType_SimpleLocation
BinTools_ObjectType_EmptyLocation = _BinTools.BinTools_ObjectType_EmptyLocation
BinTools_ObjectType_LocationEnd = _BinTools.BinTools_ObjectType_LocationEnd
BinTools_ObjectType_Curve = _BinTools.BinTools_ObjectType_Curve
BinTools_ObjectType_EmptyCurve = _BinTools.BinTools_ObjectType_EmptyCurve
BinTools_ObjectType_Curve2d = _BinTools.BinTools_ObjectType_Curve2d
BinTools_ObjectType_EmptyCurve2d = _BinTools.BinTools_ObjectType_EmptyCurve2d
BinTools_ObjectType_Surface = _BinTools.BinTools_ObjectType_Surface
BinTools_ObjectType_EmptySurface = _BinTools.BinTools_ObjectType_EmptySurface
BinTools_ObjectType_Polygon3d = _BinTools.BinTools_ObjectType_Polygon3d
BinTools_ObjectType_EmptyPolygon3d = _BinTools.BinTools_ObjectType_EmptyPolygon3d
BinTools_ObjectType_PolygonOnTriangulation = _BinTools.BinTools_ObjectType_PolygonOnTriangulation
BinTools_ObjectType_EmptyPolygonOnTriangulation = _BinTools.BinTools_ObjectType_EmptyPolygonOnTriangulation
BinTools_ObjectType_Triangulation = _BinTools.BinTools_ObjectType_Triangulation
BinTools_ObjectType_EmptyTriangulation = _BinTools.BinTools_ObjectType_EmptyTriangulation
BinTools_ObjectType_EmptyShape = _BinTools.BinTools_ObjectType_EmptyShape
BinTools_ObjectType_EndShape = _BinTools.BinTools_ObjectType_EndShape


class BinTools_FormatVersion(IntEnum):
	BinTools_FormatVersion_VERSION_1 = 1
	BinTools_FormatVersion_VERSION_2 = 2
	BinTools_FormatVersion_VERSION_3 = 3
	BinTools_FormatVersion_VERSION_4 = 4
	BinTools_FormatVersion_CURRENT = BinTools_FormatVersion_VERSION_4
BinTools_FormatVersion_VERSION_1 = BinTools_FormatVersion.BinTools_FormatVersion_VERSION_1
BinTools_FormatVersion_VERSION_2 = BinTools_FormatVersion.BinTools_FormatVersion_VERSION_2
BinTools_FormatVersion_VERSION_3 = BinTools_FormatVersion.BinTools_FormatVersion_VERSION_3
BinTools_FormatVersion_VERSION_4 = BinTools_FormatVersion.BinTools_FormatVersion_VERSION_4
BinTools_FormatVersion_CURRENT = BinTools_FormatVersion.BinTools_FormatVersion_CURRENT

class BinTools_ObjectType(IntEnum):
	BinTools_ObjectType_Unknown = 0
	BinTools_ObjectType_Reference8 = 1
	BinTools_ObjectType_Reference16 = 2
	BinTools_ObjectType_Reference32 = 3
	BinTools_ObjectType_Reference64 = 4
	BinTools_ObjectType_Location = 5
	BinTools_ObjectType_SimpleLocation = 6
	BinTools_ObjectType_EmptyLocation = 7
	BinTools_ObjectType_LocationEnd = 8
	BinTools_ObjectType_Curve = 9
	BinTools_ObjectType_EmptyCurve = 10
	BinTools_ObjectType_Curve2d = 11
	BinTools_ObjectType_EmptyCurve2d = 12
	BinTools_ObjectType_Surface = 13
	BinTools_ObjectType_EmptySurface = 14
	BinTools_ObjectType_Polygon3d = 15
	BinTools_ObjectType_EmptyPolygon3d = 16
	BinTools_ObjectType_PolygonOnTriangulation = 17
	BinTools_ObjectType_EmptyPolygonOnTriangulation = 18
	BinTools_ObjectType_Triangulation = 19
	BinTools_ObjectType_EmptyTriangulation = 20
	BinTools_ObjectType_EmptyShape = 198
	BinTools_ObjectType_EndShape = 199
BinTools_ObjectType_Unknown = BinTools_ObjectType.BinTools_ObjectType_Unknown
BinTools_ObjectType_Reference8 = BinTools_ObjectType.BinTools_ObjectType_Reference8
BinTools_ObjectType_Reference16 = BinTools_ObjectType.BinTools_ObjectType_Reference16
BinTools_ObjectType_Reference32 = BinTools_ObjectType.BinTools_ObjectType_Reference32
BinTools_ObjectType_Reference64 = BinTools_ObjectType.BinTools_ObjectType_Reference64
BinTools_ObjectType_Location = BinTools_ObjectType.BinTools_ObjectType_Location
BinTools_ObjectType_SimpleLocation = BinTools_ObjectType.BinTools_ObjectType_SimpleLocation
BinTools_ObjectType_EmptyLocation = BinTools_ObjectType.BinTools_ObjectType_EmptyLocation
BinTools_ObjectType_LocationEnd = BinTools_ObjectType.BinTools_ObjectType_LocationEnd
BinTools_ObjectType_Curve = BinTools_ObjectType.BinTools_ObjectType_Curve
BinTools_ObjectType_EmptyCurve = BinTools_ObjectType.BinTools_ObjectType_EmptyCurve
BinTools_ObjectType_Curve2d = BinTools_ObjectType.BinTools_ObjectType_Curve2d
BinTools_ObjectType_EmptyCurve2d = BinTools_ObjectType.BinTools_ObjectType_EmptyCurve2d
BinTools_ObjectType_Surface = BinTools_ObjectType.BinTools_ObjectType_Surface
BinTools_ObjectType_EmptySurface = BinTools_ObjectType.BinTools_ObjectType_EmptySurface
BinTools_ObjectType_Polygon3d = BinTools_ObjectType.BinTools_ObjectType_Polygon3d
BinTools_ObjectType_EmptyPolygon3d = BinTools_ObjectType.BinTools_ObjectType_EmptyPolygon3d
BinTools_ObjectType_PolygonOnTriangulation = BinTools_ObjectType.BinTools_ObjectType_PolygonOnTriangulation
BinTools_ObjectType_EmptyPolygonOnTriangulation = BinTools_ObjectType.BinTools_ObjectType_EmptyPolygonOnTriangulation
BinTools_ObjectType_Triangulation = BinTools_ObjectType.BinTools_ObjectType_Triangulation
BinTools_ObjectType_EmptyTriangulation = BinTools_ObjectType.BinTools_ObjectType_EmptyTriangulation
BinTools_ObjectType_EmptyShape = BinTools_ObjectType.BinTools_ObjectType_EmptyShape
BinTools_ObjectType_EndShape = BinTools_ObjectType.BinTools_ObjectType_EndShape

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

    @staticmethod
    def Read(*args):
        r"""

        Parameters
        ----------
        theShape: TopoDS_Shape
        theFile: str
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Reads a shape from <thefile> and returns it in <theshape>.

        """
        return _BinTools.bintools_Read(*args)

    @staticmethod
    def Write(*args):
        r"""

        Parameters
        ----------
        theShape: TopoDS_Shape
        theFile: str
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes the shape to the file in binary format bintools_formatversion_current. @param theshape [in] the shape to write @param thefile [in] the path to file to output shape into @param therange the range of progress indicator to fill in.

        Parameters
        ----------
        theShape: TopoDS_Shape
        theFile: str
        theWithTriangles: bool
        theWithNormals: bool
        theVersion: BinTools_FormatVersion
        theRange: Message_ProgressRange (optional, default to Message_ProgressRange())

        Return
        -------
        bool

        Description
        -----------
        Writes the shape to the file in binary format of specified version. @param theshape [in] the shape to write @param thefile [in] the path to file to output shape into @param thewithtriangles [in] flag which specifies whether to save shape with (true) or without (false) triangles;  has no effect on triangulation-only geometry @param thewithnormals [in] flag which specifies whether to save triangulation with (true) or without (false) normals;  has no effect on triangulation-only geometry @param theversion [in] the bintools format version @param therange  the range of progress indicator to fill in.

        """
        return _BinTools.bintools_Write(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BinTools.bintools_swiginit(self, _BinTools.new_bintools())
    __swig_destroy__ = _BinTools.delete_bintools

# Register bintools in _BinTools:
_BinTools.bintools_swigregister(bintools)
class BinTools_Curve2dSet(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"""
        Return
        -------
        None

        Description
        -----------
        Returns an empty set of curves.

        """
        _BinTools.BinTools_Curve2dSet_swiginit(self, _BinTools.new_BinTools_Curve2dSet(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        C: Geom2d_Curve

        Return
        -------
        int

        Description
        -----------
        Incorporate a new curve in the set and returns its index.

        """
        return _BinTools.BinTools_Curve2dSet_Add(self, *args)

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears the content of the set.

        """
        return _BinTools.BinTools_Curve2dSet_Clear(self, *args)

    def Curve2d(self, *args):
        r"""

        Parameters
        ----------
        I: int

        Return
        -------
        opencascade::handle<Geom2d_Curve>

        Description
        -----------
        Returns the curve of index <i>.

        """
        return _BinTools.BinTools_Curve2dSet_Curve2d(self, *args)

    def Index(self, *args):
        r"""

        Parameters
        ----------
        C: Geom2d_Curve

        Return
        -------
        int

        Description
        -----------
        Returns the index of <l>.

        """
        return _BinTools.BinTools_Curve2dSet_Index(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_Curve2dSet self, std::string src)"""
        return _BinTools.BinTools_Curve2dSet_ReadFromString(self, src)

    def WriteToString(self):
        r"""WriteToString(BinTools_Curve2dSet self) -> std::string"""
        return _BinTools.BinTools_Curve2dSet_WriteToString(self)

    @staticmethod
    def WriteCurve2d(*args):
        r"""

        Parameters
        ----------
        C: Geom2d_Curve
        OS: BinTools_OStream

        Return
        -------
        None

        Description
        -----------
        Dumps the curve on the binary stream, that can be read back.

        """
        return _BinTools.BinTools_Curve2dSet_WriteCurve2d(*args)

    __repr__ = _dumps_object

    @methodnotwrapped
    def Dump(self):
    	pass

    __swig_destroy__ = _BinTools.delete_BinTools_Curve2dSet

# Register BinTools_Curve2dSet in _BinTools:
_BinTools.BinTools_Curve2dSet_swigregister(BinTools_Curve2dSet)
class BinTools_CurveSet(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"""
        Return
        -------
        None

        Description
        -----------
        Returns an empty set of curves.

        """
        _BinTools.BinTools_CurveSet_swiginit(self, _BinTools.new_BinTools_CurveSet(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        C: Geom_Curve

        Return
        -------
        int

        Description
        -----------
        Incorporate a new curve in the set and returns its index.

        """
        return _BinTools.BinTools_CurveSet_Add(self, *args)

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears the content of the set.

        """
        return _BinTools.BinTools_CurveSet_Clear(self, *args)

    def Curve(self, *args):
        r"""

        Parameters
        ----------
        I: int

        Return
        -------
        opencascade::handle<Geom_Curve>

        Description
        -----------
        Returns the curve of index <i>.

        """
        return _BinTools.BinTools_CurveSet_Curve(self, *args)

    def Index(self, *args):
        r"""

        Parameters
        ----------
        C: Geom_Curve

        Return
        -------
        int

        Description
        -----------
        Returns the index of <l>.

        """
        return _BinTools.BinTools_CurveSet_Index(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_CurveSet self, std::string src)"""
        return _BinTools.BinTools_CurveSet_ReadFromString(self, src)

    def WriteToString(self):
        r"""WriteToString(BinTools_CurveSet self) -> std::string"""
        return _BinTools.BinTools_CurveSet_WriteToString(self)

    @staticmethod
    def WriteCurve(*args):
        r"""

        Parameters
        ----------
        C: Geom_Curve
        OS: BinTools_OStream

        Return
        -------
        None

        Description
        -----------
        Dumps the curve on the stream in binary format that can be read back.

        """
        return _BinTools.BinTools_CurveSet_WriteCurve(*args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_CurveSet

# Register BinTools_CurveSet in _BinTools:
_BinTools.BinTools_CurveSet_swigregister(BinTools_CurveSet)
class BinTools_LocationSet(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"""
        Return
        -------
        None

        Description
        -----------
        Returns an empty set of locations.

        """
        _BinTools.BinTools_LocationSet_swiginit(self, _BinTools.new_BinTools_LocationSet(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        L: TopLoc_Location

        Return
        -------
        int

        Description
        -----------
        Incorporate a new location in the set and returns its index.

        """
        return _BinTools.BinTools_LocationSet_Add(self, *args)

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears the content of the set.

        """
        return _BinTools.BinTools_LocationSet_Clear(self, *args)

    def Index(self, *args):
        r"""

        Parameters
        ----------
        L: TopLoc_Location

        Return
        -------
        int

        Description
        -----------
        Returns the index of <l>.

        """
        return _BinTools.BinTools_LocationSet_Index(self, *args)

    def Location(self, *args):
        r"""

        Parameters
        ----------
        I: int

        Return
        -------
        TopLoc_Location

        Description
        -----------
        Returns the location of index <i>.

        """
        return _BinTools.BinTools_LocationSet_Location(self, *args)

    def NbLocations(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns number of locations.

        """
        return _BinTools.BinTools_LocationSet_NbLocations(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_LocationSet self, std::string src)"""
        return _BinTools.BinTools_LocationSet_ReadFromString(self, src)

    def WriteToString(self):
        r"""WriteToString(BinTools_LocationSet self) -> std::string"""
        return _BinTools.BinTools_LocationSet_WriteToString(self)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_LocationSet

# Register BinTools_LocationSet in _BinTools:
_BinTools.BinTools_LocationSet_swigregister(BinTools_LocationSet)
class BinTools_ShapeSetBase(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"""
        Return
        -------
        None

        Description
        -----------
        A default constructor.

        """
        _BinTools.BinTools_ShapeSetBase_swiginit(self, _BinTools.new_BinTools_ShapeSetBase(*args))

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears the content of the set.

        """
        return _BinTools.BinTools_ShapeSetBase_Clear(self, *args)

    def FormatNb(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the bintools_formatversion.

        """
        return _BinTools.BinTools_ShapeSetBase_FormatNb(self, *args)

    def IsWithNormals(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Return true if shape should be stored triangulation with normals.

        """
        return _BinTools.BinTools_ShapeSetBase_IsWithNormals(self, *args)

    def IsWithTriangles(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Return true if shape should be stored with triangles.

        """
        return _BinTools.BinTools_ShapeSetBase_IsWithTriangles(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_ShapeSetBase self, std::string src)"""
        return _BinTools.BinTools_ShapeSetBase_ReadFromString(self, src)

    def SetFormatNb(self, *args):
        r"""

        Parameters
        ----------
        theFormatNb: int

        Return
        -------
        None

        Description
        -----------
        Sets the bintools_formatversion.

        """
        return _BinTools.BinTools_ShapeSetBase_SetFormatNb(self, *args)

    def SetWithNormals(self, *args):
        r"""

        Parameters
        ----------
        theWithNormals: bool

        Return
        -------
        None

        Description
        -----------
        Define if shape will be stored triangulation with normals. ignored (always written) if face defines only triangulation (no surface).

        """
        return _BinTools.BinTools_ShapeSetBase_SetWithNormals(self, *args)

    def SetWithTriangles(self, *args):
        r"""

        Parameters
        ----------
        theWithTriangles: bool

        Return
        -------
        None

        Description
        -----------
        Define if shape will be stored with triangles. ignored (always written) if face defines only triangulation (no surface).

        """
        return _BinTools.BinTools_ShapeSetBase_SetWithTriangles(self, *args)

    def WriteToString(self):
        r"""WriteToString(BinTools_ShapeSetBase self) -> std::string"""
        return _BinTools.BinTools_ShapeSetBase_WriteToString(self)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_ShapeSetBase

# Register BinTools_ShapeSetBase in _BinTools:
_BinTools.BinTools_ShapeSetBase_swigregister(BinTools_ShapeSetBase)
class BinTools_SurfaceSet(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"""
        Return
        -------
        None

        Description
        -----------
        Returns an empty set of surfaces.

        """
        _BinTools.BinTools_SurfaceSet_swiginit(self, _BinTools.new_BinTools_SurfaceSet(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        S: Geom_Surface

        Return
        -------
        int

        Description
        -----------
        Incorporate a new surface in the set and returns its index.

        """
        return _BinTools.BinTools_SurfaceSet_Add(self, *args)

    def Clear(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Clears the content of the set.

        """
        return _BinTools.BinTools_SurfaceSet_Clear(self, *args)

    def Index(self, *args):
        r"""

        Parameters
        ----------
        S: Geom_Surface

        Return
        -------
        int

        Description
        -----------
        Returns the index of <l>.

        """
        return _BinTools.BinTools_SurfaceSet_Index(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_SurfaceSet self, std::string src)"""
        return _BinTools.BinTools_SurfaceSet_ReadFromString(self, src)

    def Surface(self, *args):
        r"""

        Parameters
        ----------
        I: int

        Return
        -------
        opencascade::handle<Geom_Surface>

        Description
        -----------
        Returns the surface of index <i>.

        """
        return _BinTools.BinTools_SurfaceSet_Surface(self, *args)

    def WriteToString(self):
        r"""WriteToString(BinTools_SurfaceSet self) -> std::string"""
        return _BinTools.BinTools_SurfaceSet_WriteToString(self)

    @staticmethod
    def WriteSurface(*args):
        r"""

        Parameters
        ----------
        S: Geom_Surface
        OS: BinTools_OStream

        Return
        -------
        None

        Description
        -----------
        Dumps the surface on the stream in binary format that can be read back.

        """
        return _BinTools.BinTools_SurfaceSet_WriteSurface(*args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_SurfaceSet

# Register BinTools_SurfaceSet in _BinTools:
_BinTools.BinTools_SurfaceSet_swigregister(BinTools_SurfaceSet)
class BinTools_ShapeReader(BinTools_ShapeSetBase):
    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"""
        Return
        -------
        None

        Description
        -----------
        Initializes a shape reader.

        """
        _BinTools.BinTools_ShapeReader_swiginit(self, _BinTools.new_BinTools_ShapeReader(*args))

    def ReadLocation(self, *args):
        r"""

        Parameters
        ----------
        theStream: BinTools_IStream

        Return
        -------
        TopLoc_Location *

        Description
        -----------
        Reads location from the stream.

        """
        return _BinTools.BinTools_ShapeReader_ReadLocation(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_ShapeReader

# Register BinTools_ShapeReader in _BinTools:
_BinTools.BinTools_ShapeReader_swigregister(BinTools_ShapeReader)
class BinTools_ShapeSet(BinTools_ShapeSetBase):
    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"""
        Return
        -------
        None

        Description
        -----------
        Builds an empty shapeset. @param thewithtriangles [in] flag to write triangulation data.

        """
        _BinTools.BinTools_ShapeSet_swiginit(self, _BinTools.new_BinTools_ShapeSet(*args))

    def Add(self, *args):
        r"""

        Parameters
        ----------
        S: TopoDS_Shape

        Return
        -------
        int

        Description
        -----------
        Stores <s> and its sub-shape. returns the index of <s>. the method addgeometry is called on each sub-shape.

        """
        return _BinTools.BinTools_ShapeSet_Add(self, *args)

    def AddShape(self, *args):
        r"""

        Parameters
        ----------
        S: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Stores the shape <s>.

        """
        return _BinTools.BinTools_ShapeSet_AddShape(self, *args)

    def AddShapes(self, *args):
        r"""

        Parameters
        ----------
        S1: TopoDS_Shape
        S2: TopoDS_Shape

        Return
        -------
        None

        Description
        -----------
        Inserts the shape <s2> in the shape <s1>.

        """
        return _BinTools.BinTools_ShapeSet_AddShapes(self, *args)

    def ChangeLocations(self, *args):
        r"""
        Return
        -------
        BinTools_LocationSet

        Description
        -----------
        No available documentation.

        """
        return _BinTools.BinTools_ShapeSet_ChangeLocations(self, *args)

    def Index(self, *args):
        r"""

        Parameters
        ----------
        S: TopoDS_Shape

        Return
        -------
        int

        Description
        -----------
        Returns the index of <s>.

        """
        return _BinTools.BinTools_ShapeSet_Index(self, *args)

    def Locations(self, *args):
        r"""
        Return
        -------
        BinTools_LocationSet

        Description
        -----------
        No available documentation.

        """
        return _BinTools.BinTools_ShapeSet_Locations(self, *args)

    def NbShapes(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns number of shapes read from file.

        """
        return _BinTools.BinTools_ShapeSet_NbShapes(self, *args)

    def ReadFromString(self, src):
        r"""ReadFromString(BinTools_ShapeSet self, std::string src)"""
        return _BinTools.BinTools_ShapeSet_ReadFromString(self, src)

    def ReadGeometryFromString(self, src):
        r"""ReadGeometryFromString(BinTools_ShapeSet self, std::string src)"""
        return _BinTools.BinTools_ShapeSet_ReadGeometryFromString(self, src)

    def ReadPolygon3DFromString(self, src):
        r"""ReadPolygon3DFromString(BinTools_ShapeSet self, std::string src)"""
        return _BinTools.BinTools_ShapeSet_ReadPolygon3DFromString(self, src)

    def ReadPolygonOnTriangulationFromString(self, src):
        r"""ReadPolygonOnTriangulationFromString(BinTools_ShapeSet self, std::string src)"""
        return _BinTools.BinTools_ShapeSet_ReadPolygonOnTriangulationFromString(self, src)

    def ReadTriangulationFromString(self, src):
        r"""ReadTriangulationFromString(BinTools_ShapeSet self, std::string src)"""
        return _BinTools.BinTools_ShapeSet_ReadTriangulationFromString(self, src)

    def Shape(self, *args):
        r"""

        Parameters
        ----------
        I: int

        Return
        -------
        TopoDS_Shape

        Description
        -----------
        Returns the sub-shape of index <i>.

        """
        return _BinTools.BinTools_ShapeSet_Shape(self, *args)

    def WriteToString(self):
        r"""WriteToString(BinTools_ShapeSet self) -> std::string"""
        return _BinTools.BinTools_ShapeSet_WriteToString(self)

    def WriteGeometryToString(self):
        r"""WriteGeometryToString(BinTools_ShapeSet self) -> std::string"""
        return _BinTools.BinTools_ShapeSet_WriteGeometryToString(self)

    def WritePolygon3DToString(self):
        r"""WritePolygon3DToString(BinTools_ShapeSet self) -> std::string"""
        return _BinTools.BinTools_ShapeSet_WritePolygon3DToString(self)

    def WritePolygonOnTriangulationToString(self):
        r"""WritePolygonOnTriangulationToString(BinTools_ShapeSet self) -> std::string"""
        return _BinTools.BinTools_ShapeSet_WritePolygonOnTriangulationToString(self)

    def WriteTriangulationToString(self):
        r"""WriteTriangulationToString(BinTools_ShapeSet self) -> std::string"""
        return _BinTools.BinTools_ShapeSet_WriteTriangulationToString(self)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_ShapeSet

# Register BinTools_ShapeSet in _BinTools:
_BinTools.BinTools_ShapeSet_swigregister(BinTools_ShapeSet)
class BinTools_ShapeWriter(BinTools_ShapeSetBase):
    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"""
        Return
        -------
        None

        Description
        -----------
        Builds an empty shapeset. parameter <thewithtriangles> is added for xml persistence.

        """
        _BinTools.BinTools_ShapeWriter_swiginit(self, _BinTools.new_BinTools_ShapeWriter(*args))

    def WriteLocation(self, *args):
        r"""

        Parameters
        ----------
        theStream: BinTools_OStream
        theLocation: TopLoc_Location

        Return
        -------
        None

        Description
        -----------
        Writes location to the stream (all the needed sub-information or reference if it is already used).

        """
        return _BinTools.BinTools_ShapeWriter_WriteLocation(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinTools.delete_BinTools_ShapeWriter

# Register BinTools_ShapeWriter in _BinTools:
_BinTools.BinTools_ShapeWriter_swigregister(BinTools_ShapeWriter)

@classnotwrapped
class BinTools_IStream:
	pass

@classnotwrapped
class BinTools_OStream:
	pass





@deprecated
def bintools_Read(*args):
	return bintools.Read(*args)

@deprecated
def bintools_Write(*args):
	return bintools.Write(*args)

@deprecated
def bintools_Write(*args):
	return bintools.Write(*args)

@deprecated
def BinTools_Curve2dSet_WriteCurve2d(*args):
	return BinTools_Curve2dSet.WriteCurve2d(*args)

@deprecated
def BinTools_CurveSet_WriteCurve(*args):
	return BinTools_CurveSet.WriteCurve(*args)

@deprecated
def BinTools_SurfaceSet_WriteSurface(*args):
	return BinTools_SurfaceSet.WriteSurface(*args)



