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

"""
BinTools module, see official documentation at
https://www.opencascade.com/doc/occt-7.6.0/refman/html/package_bintools.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 _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 == "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__ = _BinTools.delete_SwigPyIterator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __sub__(self, *args) -> "ptrdiff_t":
        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: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    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_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
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_FormatVersion_LOWER = _BinTools.BinTools_FormatVersion_LOWER
BinTools_FormatVersion_UPPER = _BinTools.BinTools_FormatVersion_UPPER


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_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(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) -> "Standard_Boolean":
        r"""
        Reads a shape from <thefile> and returns it in <theshape>.

        Parameters
        ----------
        theShape: TopoDS_Shape
        theFile: char *
        theRange: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

        """
        return _BinTools.bintools_Read(*args)

    @staticmethod
    def Write(*args) -> "Standard_Boolean":
        r"""
        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: char *
        theRange: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool
        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.

        Parameters
        ----------
        theShape: TopoDS_Shape
        theFile: char *
        theWithTriangles: bool
        theWithNormals: bool
        theVersion: BinTools_FormatVersion
        theRange: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

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

def bintools_Read(*args) -> "Standard_Boolean":
    r"""
    Reads a shape from <thefile> and returns it in <theshape>.

    Parameters
    ----------
    theShape: TopoDS_Shape
    theFile: char *
    theRange: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    bool

    """
    return _BinTools.bintools_Read(*args)

def bintools_Write(*args) -> "Standard_Boolean":
    r"""
    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: char *
    theRange: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    bool
    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.

    Parameters
    ----------
    theShape: TopoDS_Shape
    theFile: char *
    theWithTriangles: bool
    theWithNormals: bool
    theVersion: BinTools_FormatVersion
    theRange: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    bool

    """
    return _BinTools.bintools_Write(*args)

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"""
        Returns an empty set of curves.

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Integer":
        r"""
        Incorporate a new curve in the set and returns its index.

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

        Returns
        -------
        int

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

    def Clear(self, *args) -> "void":
        r"""
        Clears the content of the set.

        Returns
        -------
        None

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

    def Curve2d(self, *args) -> "opencascade::handle< Geom2d_Curve >":
        r"""
        Returns the curve of index <i>.

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

        Returns
        -------
        opencascade::handle<Geom2d_Curve>

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

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of <l>.

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

        Returns
        -------
        int

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

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

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

    @staticmethod
    def WriteCurve2d(*args) -> "void":
        r"""
        Dumps the curve on the binary stream, that can be read back.

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

        Returns
        -------
        None

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

def BinTools_Curve2dSet_WriteCurve2d(*args) -> "void":
    r"""
    Dumps the curve on the binary stream, that can be read back.

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

    Returns
    -------
    None

    """
    return _BinTools.BinTools_Curve2dSet_WriteCurve2d(*args)

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"""
        Returns an empty set of curves.

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Integer":
        r"""
        Incorporate a new curve in the set and returns its index.

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

        Returns
        -------
        int

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

    def Clear(self, *args) -> "void":
        r"""
        Clears the content of the set.

        Returns
        -------
        None

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

    def Curve(self, *args) -> "opencascade::handle< Geom_Curve >":
        r"""
        Returns the curve of index <i>.

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

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

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

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of <l>.

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

        Returns
        -------
        int

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

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

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

    @staticmethod
    def WriteCurve(*args) -> "void":
        r"""
        Dumps the curve on the stream in binary format that can be read back.

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

        Returns
        -------
        None

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

def BinTools_CurveSet_WriteCurve(*args) -> "void":
    r"""
    Dumps the curve on the stream in binary format that can be read back.

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

    Returns
    -------
    None

    """
    return _BinTools.BinTools_CurveSet_WriteCurve(*args)

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"""
        Returns an empty set of locations.

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Integer":
        r"""
        Incorporate a new location in the set and returns its index.

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

        Returns
        -------
        int

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

    def Clear(self, *args) -> "void":
        r"""
        Clears the content of the set.

        Returns
        -------
        None

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

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of <l>.

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

        Returns
        -------
        int

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

    def Location(self, *args) -> "TopLoc_Location const &":
        r"""
        Returns the location of index <i>.

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

        Returns
        -------
        TopLoc_Location

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

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

        Returns
        -------
        int

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

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

    def WriteToString(self) -> "std::string":
        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"""
        A default constructor.

        Returns
        -------
        None

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

    def Clear(self, *args) -> "void":
        r"""
        Clears the content of the set.

        Returns
        -------
        None

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

    def FormatNb(self, *args) -> "Standard_Integer":
        r"""
        Returns the bintools_formatversion.

        Returns
        -------
        int

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

    def IsWithNormals(self, *args) -> "Standard_Boolean":
        r"""
        Return true if shape should be stored triangulation with normals.

        Returns
        -------
        bool

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

    def IsWithTriangles(self, *args) -> "Standard_Boolean":
        r"""
        Return true if shape should be stored with triangles.

        Returns
        -------
        bool

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

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

    def SetFormatNb(self, *args) -> "void":
        r"""
        Sets the bintools_formatversion.

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

        Returns
        -------
        None

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

    def SetWithNormals(self, *args) -> "void":
        r"""
        Define if shape will be stored triangulation with normals. ignored (always written) if face defines only triangulation (no surface).

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

        Returns
        -------
        None

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

    def SetWithTriangles(self, *args) -> "void":
        r"""
        Define if shape will be stored with triangles. ignored (always written) if face defines only triangulation (no surface).

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

        Returns
        -------
        None

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

    def WriteToString(self) -> "std::string":
        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"""
        Returns an empty set of surfaces.

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Integer":
        r"""
        Incorporate a new surface in the set and returns its index.

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

        Returns
        -------
        int

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

    def Clear(self, *args) -> "void":
        r"""
        Clears the content of the set.

        Returns
        -------
        None

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

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of <l>.

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

        Returns
        -------
        int

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

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

    def Surface(self, *args) -> "opencascade::handle< Geom_Surface >":
        r"""
        Returns the surface of index <i>.

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

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

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

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

    @staticmethod
    def WriteSurface(*args) -> "void":
        r"""
        Dumps the surface on the stream in binary format that can be read back.

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

        Returns
        -------
        None

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

def BinTools_SurfaceSet_WriteSurface(*args) -> "void":
    r"""
    Dumps the surface on the stream in binary format that can be read back.

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

    Returns
    -------
    None

    """
    return _BinTools.BinTools_SurfaceSet_WriteSurface(*args)

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"""
        Initializes a shape reader.

        Returns
        -------
        None

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

    def ReadLocation(self, *args) -> "TopLoc_Location const *":
        r"""
        Reads location from the stream.

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

        Returns
        -------
        TopLoc_Location *

        """
        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"""
        Builds an empty shapeset. @param thewithtriangles [in] flag to write triangulation data.

        Returns
        -------
        None

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

    def Add(self, *args) -> "Standard_Integer":
        r"""
        Stores <s> and its sub-shape. returns the index of <s>. the method addgeometry is called on each sub-shape.

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

        Returns
        -------
        int

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

    def AddShape(self, *args) -> "void":
        r"""
        Stores the shape <s>.

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

        Returns
        -------
        None

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

    def AddShapes(self, *args) -> "void":
        r"""
        Inserts the shape <s2> in the shape <s1>.

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

        Returns
        -------
        None

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

    def ChangeLocations(self, *args) -> "BinTools_LocationSet &":
        r"""
        No available documentation.

        Returns
        -------
        BinTools_LocationSet

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

    def Index(self, *args) -> "Standard_Integer":
        r"""
        Returns the index of <s>.

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

        Returns
        -------
        int

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

    def Locations(self, *args) -> "BinTools_LocationSet const &":
        r"""
        No available documentation.

        Returns
        -------
        BinTools_LocationSet

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

    def NbShapes(self, *args) -> "Standard_Integer":
        r"""
        Returns number of shapes read from file.

        Returns
        -------
        int

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

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

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

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

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

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

    def Shape(self, *args) -> "TopoDS_Shape const":
        r"""
        Returns the sub-shape of index <i>.

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

        Returns
        -------
        TopoDS_Shape

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

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

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

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

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

    def WriteTriangulationToString(self) -> "std::string":
        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"""
        Builds an empty shapeset. parameter <thewithtriangles> is added for xml persistence.

        Returns
        -------
        None

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

    def WriteLocation(self, *args) -> "void":
        r"""
        Writes location to the stream (all the needed sub-information or reference if it is already used).

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

        Returns
        -------
        None

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






