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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _BinLDrivers:
_BinLDrivers.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 _BinLDrivers.process_exception(error, method_name, class_name)

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

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.BinMDF
import OCC.Core.TDF
import OCC.Core.BinObjMgt
import OCC.Core.Storage
import OCC.Core.TDocStd
import OCC.Core.CDF
import OCC.Core.CDM
import OCC.Core.Resource
import OCC.Core.PCDM

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

BinLDrivers_ENDATTRLIST = _BinLDrivers.BinLDrivers_ENDATTRLIST
BinLDrivers_ENDLABEL = _BinLDrivers.BinLDrivers_ENDLABEL


class BinLDrivers_Marker(IntEnum):
	BinLDrivers_ENDATTRLIST = - 1
	BinLDrivers_ENDLABEL = - 2
BinLDrivers_ENDATTRLIST = BinLDrivers_Marker.BinLDrivers_ENDATTRLIST
BinLDrivers_ENDLABEL = BinLDrivers_Marker.BinLDrivers_ENDLABEL


def Handle_BinLDrivers_DocumentRetrievalDriver_Create() -> "opencascade::handle< BinLDrivers_DocumentRetrievalDriver >":
    return _BinLDrivers.Handle_BinLDrivers_DocumentRetrievalDriver_Create()

def Handle_BinLDrivers_DocumentRetrievalDriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< BinLDrivers_DocumentRetrievalDriver >":
    return _BinLDrivers.Handle_BinLDrivers_DocumentRetrievalDriver_DownCast(t)

def Handle_BinLDrivers_DocumentRetrievalDriver_IsNull(t: "opencascade::handle< BinLDrivers_DocumentRetrievalDriver > const &") -> "bool":
    return _BinLDrivers.Handle_BinLDrivers_DocumentRetrievalDriver_IsNull(t)

def Handle_BinLDrivers_DocumentStorageDriver_Create() -> "opencascade::handle< BinLDrivers_DocumentStorageDriver >":
    return _BinLDrivers.Handle_BinLDrivers_DocumentStorageDriver_Create()

def Handle_BinLDrivers_DocumentStorageDriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< BinLDrivers_DocumentStorageDriver >":
    return _BinLDrivers.Handle_BinLDrivers_DocumentStorageDriver_DownCast(t)

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

    def begin(self) -> "NCollection_Vector< BinLDrivers_DocumentSection >::iterator":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_begin(self)

    def end(self) -> "NCollection_Vector< BinLDrivers_DocumentSection >::iterator":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_end(self)

    def cbegin(self) -> "NCollection_Vector< BinLDrivers_DocumentSection >::const_iterator":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_cbegin(self)

    def cend(self) -> "NCollection_Vector< BinLDrivers_DocumentSection >::const_iterator":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_cend(self)

    def __init__(self, *args):
        _BinLDrivers.BinLDrivers_VectorOfDocumentSection_swiginit(self, _BinLDrivers.new_BinLDrivers_VectorOfDocumentSection(*args))
    __swig_destroy__ = _BinLDrivers.delete_BinLDrivers_VectorOfDocumentSection

    def Length(self) -> "Standard_Integer":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Length(self)

    def Size(self) -> "Standard_Integer":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Size(self)

    def Lower(self) -> "Standard_Integer":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Lower(self)

    def Upper(self) -> "Standard_Integer":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Upper(self)

    def IsEmpty(self) -> "Standard_Boolean":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_IsEmpty(self)

    def Assign(self, *args) -> "void":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Assign(self, *args)

    def Set(self, theOther: "BinLDrivers_VectorOfDocumentSection") -> "NCollection_Vector< BinLDrivers_DocumentSection > &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Set(self, theOther)

    def Append(self, theValue: "BinLDrivers_DocumentSection") -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Append(self, theValue)

    def Appended(self) -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Appended(self)

    def Value(self, theIndex: "Standard_Integer const") -> "BinLDrivers_DocumentSection const &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Value(self, theIndex)

    def First(self) -> "BinLDrivers_DocumentSection const &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_First(self)

    def ChangeFirst(self) -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_ChangeFirst(self)

    def Last(self) -> "BinLDrivers_DocumentSection const &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_Last(self)

    def ChangeLast(self) -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_ChangeLast(self)

    def __call__(self, *args) -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection___call__(self, *args)

    def ChangeValue(self, theIndex: "Standard_Integer const") -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_ChangeValue(self, theIndex)

    def SetValue(self, theIndex: "Standard_Integer const", theValue: "BinLDrivers_DocumentSection") -> "BinLDrivers_DocumentSection &":
        return _BinLDrivers.BinLDrivers_VectorOfDocumentSection_SetValue(self, theIndex, theValue)

# Register BinLDrivers_VectorOfDocumentSection in _BinLDrivers:
_BinLDrivers.BinLDrivers_VectorOfDocumentSection_swigregister(BinLDrivers_VectorOfDocumentSection)

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

    @staticmethod
    def AttributeDrivers(*args) -> "opencascade::handle< BinMDF_ADriverTable >":
        r"""
        Creates a table of the supported drivers' types.

        Parameters
        ----------
        MsgDrv: Message_Messenger

        Returns
        -------
        opencascade::handle<BinMDF_ADriverTable>

        """
        return _BinLDrivers.binldrivers_AttributeDrivers(*args)

    @staticmethod
    def DefineFormat(*args) -> "void":
        r"""
        Defines format 'binlocaf' and registers its read and write drivers in the specified application.

        Parameters
        ----------
        theApp: TDocStd_Application

        Returns
        -------
        None

        """
        return _BinLDrivers.binldrivers_DefineFormat(*args)

    @staticmethod
    def Factory(*args) -> "opencascade::handle< Standard_Transient > const &":
        r"""
        No available documentation.

        Parameters
        ----------
        theGUID: Standard_GUID

        Returns
        -------
        opencascade::handle<Standard_Transient>

        """
        return _BinLDrivers.binldrivers_Factory(*args)

    @staticmethod
    def StorageVersion(*args) -> "TCollection_AsciiString":
        r"""
        Returns last storage version.

        Returns
        -------
        TCollection_AsciiString

        """
        return _BinLDrivers.binldrivers_StorageVersion(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _BinLDrivers.binldrivers_swiginit(self, _BinLDrivers.new_binldrivers())
    __swig_destroy__ = _BinLDrivers.delete_binldrivers

# Register binldrivers in _BinLDrivers:
_BinLDrivers.binldrivers_swigregister(binldrivers)

def binldrivers_AttributeDrivers(*args) -> "opencascade::handle< BinMDF_ADriverTable >":
    r"""
    Creates a table of the supported drivers' types.

    Parameters
    ----------
    MsgDrv: Message_Messenger

    Returns
    -------
    opencascade::handle<BinMDF_ADriverTable>

    """
    return _BinLDrivers.binldrivers_AttributeDrivers(*args)

def binldrivers_DefineFormat(*args) -> "void":
    r"""
    Defines format 'binlocaf' and registers its read and write drivers in the specified application.

    Parameters
    ----------
    theApp: TDocStd_Application

    Returns
    -------
    None

    """
    return _BinLDrivers.binldrivers_DefineFormat(*args)

def binldrivers_Factory(*args) -> "opencascade::handle< Standard_Transient > const &":
    r"""
    No available documentation.

    Parameters
    ----------
    theGUID: Standard_GUID

    Returns
    -------
    opencascade::handle<Standard_Transient>

    """
    return _BinLDrivers.binldrivers_Factory(*args)

def binldrivers_StorageVersion(*args) -> "TCollection_AsciiString":
    r"""
    Returns last storage version.

    Returns
    -------
    TCollection_AsciiString

    """
    return _BinLDrivers.binldrivers_StorageVersion(*args)

class BinLDrivers_DocumentRetrievalDriver(OCC.Core.PCDM.PCDM_RetrievalDriver):
    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"""
        Constructor.

        Returns
        -------
        None

        """
        _BinLDrivers.BinLDrivers_DocumentRetrievalDriver_swiginit(self, _BinLDrivers.new_BinLDrivers_DocumentRetrievalDriver(*args))

    def AttributeDrivers(self, *args) -> "opencascade::handle< BinMDF_ADriverTable >":
        r"""
        No available documentation.

        Parameters
        ----------
        theMsgDriver: Message_Messenger

        Returns
        -------
        opencascade::handle<BinMDF_ADriverTable>

        """
        return _BinLDrivers.BinLDrivers_DocumentRetrievalDriver_AttributeDrivers(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _BinLDrivers.delete_BinLDrivers_DocumentRetrievalDriver

# Register BinLDrivers_DocumentRetrievalDriver in _BinLDrivers:
_BinLDrivers.BinLDrivers_DocumentRetrievalDriver_swigregister(BinLDrivers_DocumentRetrievalDriver)

class BinLDrivers_DocumentSection(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"""
        Empty constructor.

        Returns
        -------
        None
        Constructor.

        Parameters
        ----------
        theName: TCollection_AsciiString
        isPostRead: bool

        Returns
        -------
        None

        """
        _BinLDrivers.BinLDrivers_DocumentSection_swiginit(self, _BinLDrivers.new_BinLDrivers_DocumentSection(*args))

    def IsPostRead(self, *args) -> "Standard_Boolean":
        r"""
        Query the status: if the section should be read after ocaf; false means that the section is read before starting to read ocaf data.

        Returns
        -------
        bool

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_IsPostRead(self, *args)

    def Length(self, *args) -> "uint64_t":
        r"""
        Query the length of the section in the persistent file.

        Returns
        -------
        uint64_t

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_Length(self, *args)

    def Name(self, *args) -> "TCollection_AsciiString const &":
        r"""
        Query the name of the section.

        Returns
        -------
        TCollection_AsciiString

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_Name(self, *args)

    def Offset(self, *args) -> "uint64_t":
        r"""
        Query the offset of the section in the persistent file.

        Returns
        -------
        uint64_t

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_Offset(self, *args)

    def SetLength(self, *args) -> "void":
        r"""
        Set the length of the section in the persistent file.

        Parameters
        ----------
        theLength: uint64_t

        Returns
        -------
        None

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_SetLength(self, *args)

    def SetOffset(self, *args) -> "void":
        r"""
        Set the offset of the section in the persistent file.

        Parameters
        ----------
        theOffset: uint64_t

        Returns
        -------
        None

        """
        return _BinLDrivers.BinLDrivers_DocumentSection_SetOffset(self, *args)

    def WriteTOCToString(self) -> "std::string":
        r"""WriteTOCToString(BinLDrivers_DocumentSection self) -> std::string"""
        return _BinLDrivers.BinLDrivers_DocumentSection_WriteTOCToString(self)

    __repr__ = _dumps_object

    __swig_destroy__ = _BinLDrivers.delete_BinLDrivers_DocumentSection

# Register BinLDrivers_DocumentSection in _BinLDrivers:
_BinLDrivers.BinLDrivers_DocumentSection_swigregister(BinLDrivers_DocumentSection)

class BinLDrivers_DocumentStorageDriver(OCC.Core.PCDM.PCDM_StorageDriver):
    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"""
        Constructor.

        Returns
        -------
        None

        """
        _BinLDrivers.BinLDrivers_DocumentStorageDriver_swiginit(self, _BinLDrivers.new_BinLDrivers_DocumentStorageDriver(*args))

    def AddSection(self, *args) -> "void":
        r"""
        Create a section that should be written after the ocaf data.

        Parameters
        ----------
        theName: TCollection_AsciiString
        isPostRead: bool,optional
        	default value is Standard_True

        Returns
        -------
        None

        """
        return _BinLDrivers.BinLDrivers_DocumentStorageDriver_AddSection(self, *args)

    def AttributeDrivers(self, *args) -> "opencascade::handle< BinMDF_ADriverTable >":
        r"""
        No available documentation.

        Parameters
        ----------
        theMsgDriver: Message_Messenger

        Returns
        -------
        opencascade::handle<BinMDF_ADriverTable>

        """
        return _BinLDrivers.BinLDrivers_DocumentStorageDriver_AttributeDrivers(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _BinLDrivers.delete_BinLDrivers_DocumentStorageDriver

# Register BinLDrivers_DocumentStorageDriver in _BinLDrivers:
_BinLDrivers.BinLDrivers_DocumentStorageDriver_swigregister(BinLDrivers_DocumentStorageDriver)





