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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Register SwigPyIterator in _XmlMDF:
_XmlMDF.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 _XmlMDF.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.TDF
import OCC.Core.XmlObjMgt
import OCC.Core.LDOM
import OCC.Core.gp
import OCC.Core.Storage

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




def Handle_XmlMDF_ADriver_Create() -> "opencascade::handle< XmlMDF_ADriver >":
    return _XmlMDF.Handle_XmlMDF_ADriver_Create()

def Handle_XmlMDF_ADriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< XmlMDF_ADriver >":
    return _XmlMDF.Handle_XmlMDF_ADriver_DownCast(t)

def Handle_XmlMDF_ADriver_IsNull(t: "opencascade::handle< XmlMDF_ADriver > const &") -> "bool":
    return _XmlMDF.Handle_XmlMDF_ADriver_IsNull(t)

def Handle_XmlMDF_ADriverTable_Create() -> "opencascade::handle< XmlMDF_ADriverTable >":
    return _XmlMDF.Handle_XmlMDF_ADriverTable_Create()

def Handle_XmlMDF_ADriverTable_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< XmlMDF_ADriverTable >":
    return _XmlMDF.Handle_XmlMDF_ADriverTable_DownCast(t)

def Handle_XmlMDF_ADriverTable_IsNull(t: "opencascade::handle< XmlMDF_ADriverTable > const &") -> "bool":
    return _XmlMDF.Handle_XmlMDF_ADriverTable_IsNull(t)

def Handle_XmlMDF_DerivedDriver_Create() -> "opencascade::handle< XmlMDF_DerivedDriver >":
    return _XmlMDF.Handle_XmlMDF_DerivedDriver_Create()

def Handle_XmlMDF_DerivedDriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< XmlMDF_DerivedDriver >":
    return _XmlMDF.Handle_XmlMDF_DerivedDriver_DownCast(t)

def Handle_XmlMDF_DerivedDriver_IsNull(t: "opencascade::handle< XmlMDF_DerivedDriver > const &") -> "bool":
    return _XmlMDF.Handle_XmlMDF_DerivedDriver_IsNull(t)

def Handle_XmlMDF_ReferenceDriver_Create() -> "opencascade::handle< XmlMDF_ReferenceDriver >":
    return _XmlMDF.Handle_XmlMDF_ReferenceDriver_Create()

def Handle_XmlMDF_ReferenceDriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< XmlMDF_ReferenceDriver >":
    return _XmlMDF.Handle_XmlMDF_ReferenceDriver_DownCast(t)

def Handle_XmlMDF_ReferenceDriver_IsNull(t: "opencascade::handle< XmlMDF_ReferenceDriver > const &") -> "bool":
    return _XmlMDF.Handle_XmlMDF_ReferenceDriver_IsNull(t)

def Handle_XmlMDF_TagSourceDriver_Create() -> "opencascade::handle< XmlMDF_TagSourceDriver >":
    return _XmlMDF.Handle_XmlMDF_TagSourceDriver_Create()

def Handle_XmlMDF_TagSourceDriver_DownCast(t: "opencascade::handle< Standard_Transient > const &") -> "opencascade::handle< XmlMDF_TagSourceDriver >":
    return _XmlMDF.Handle_XmlMDF_TagSourceDriver_DownCast(t)

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

    def begin(self) -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString >::iterator":
        return _XmlMDF.XmlMDF_MapOfDriver_begin(self)

    def end(self) -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString >::iterator":
        return _XmlMDF.XmlMDF_MapOfDriver_end(self)

    def cbegin(self) -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString >::const_iterator":
        return _XmlMDF.XmlMDF_MapOfDriver_cbegin(self)

    def cend(self) -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString >::const_iterator":
        return _XmlMDF.XmlMDF_MapOfDriver_cend(self)

    def __init__(self, *args):
        _XmlMDF.XmlMDF_MapOfDriver_swiginit(self, _XmlMDF.new_XmlMDF_MapOfDriver(*args))

    def Exchange(self, theOther: "XmlMDF_MapOfDriver") -> "void":
        return _XmlMDF.XmlMDF_MapOfDriver_Exchange(self, theOther)

    def Assign(self, theOther: "XmlMDF_MapOfDriver") -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString > &":
        return _XmlMDF.XmlMDF_MapOfDriver_Assign(self, theOther)

    def Set(self, theOther: "XmlMDF_MapOfDriver") -> "NCollection_DataMap< TCollection_AsciiString,opencascade::handle< XmlMDF_ADriver >,TCollection_AsciiString > &":
        return _XmlMDF.XmlMDF_MapOfDriver_Set(self, theOther)

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

    def Bind(self, theKey: "TCollection_AsciiString", theItem: "opencascade::handle< XmlMDF_ADriver > const &") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_MapOfDriver_Bind(self, theKey, theItem)

    def Bound(self, theKey: "TCollection_AsciiString", theItem: "opencascade::handle< XmlMDF_ADriver > const &") -> "opencascade::handle< XmlMDF_ADriver > *":
        return _XmlMDF.XmlMDF_MapOfDriver_Bound(self, theKey, theItem)

    def IsBound(self, theKey: "TCollection_AsciiString") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_MapOfDriver_IsBound(self, theKey)

    def UnBind(self, theKey: "TCollection_AsciiString") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_MapOfDriver_UnBind(self, theKey)

    def Seek(self, theKey: "TCollection_AsciiString") -> "opencascade::handle< XmlMDF_ADriver > const *":
        return _XmlMDF.XmlMDF_MapOfDriver_Seek(self, theKey)

    def Find(self, *args) -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_MapOfDriver_Find(self, *args)

    def ChangeSeek(self, theKey: "TCollection_AsciiString") -> "opencascade::handle< XmlMDF_ADriver > *":
        return _XmlMDF.XmlMDF_MapOfDriver_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey: "TCollection_AsciiString") -> "opencascade::handle< XmlMDF_ADriver > &":
        return _XmlMDF.XmlMDF_MapOfDriver_ChangeFind(self, theKey)

    def __call__(self, *args) -> "opencascade::handle< XmlMDF_ADriver > &":
        return _XmlMDF.XmlMDF_MapOfDriver___call__(self, *args)

    def Clear(self, *args) -> "void":
        return _XmlMDF.XmlMDF_MapOfDriver_Clear(self, *args)
    __swig_destroy__ = _XmlMDF.delete_XmlMDF_MapOfDriver

    def Size(self) -> "Standard_Integer":
        return _XmlMDF.XmlMDF_MapOfDriver_Size(self)

# Register XmlMDF_MapOfDriver in _XmlMDF:
_XmlMDF.XmlMDF_MapOfDriver_swigregister(XmlMDF_MapOfDriver)

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

    def begin(self) -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::iterator":
        return _XmlMDF.XmlMDF_TypeADriverMap_begin(self)

    def end(self) -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::iterator":
        return _XmlMDF.XmlMDF_TypeADriverMap_end(self)

    def cbegin(self) -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::const_iterator":
        return _XmlMDF.XmlMDF_TypeADriverMap_cbegin(self)

    def cend(self) -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,NCollection_DefaultHasher< opencascade::handle< Standard_Transient > > >::const_iterator":
        return _XmlMDF.XmlMDF_TypeADriverMap_cend(self)

    def __init__(self, *args):
        _XmlMDF.XmlMDF_TypeADriverMap_swiginit(self, _XmlMDF.new_XmlMDF_TypeADriverMap(*args))

    def Exchange(self, theOther: "XmlMDF_TypeADriverMap") -> "void":
        return _XmlMDF.XmlMDF_TypeADriverMap_Exchange(self, theOther)

    def Assign(self, theOther: "XmlMDF_TypeADriverMap") -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,TColStd_MapTransientHasher > &":
        return _XmlMDF.XmlMDF_TypeADriverMap_Assign(self, theOther)

    def Set(self, theOther: "XmlMDF_TypeADriverMap") -> "NCollection_DataMap< opencascade::handle< Standard_Type >,opencascade::handle< XmlMDF_ADriver >,TColStd_MapTransientHasher > &":
        return _XmlMDF.XmlMDF_TypeADriverMap_Set(self, theOther)

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

    def Bind(self, theKey: "opencascade::handle< Standard_Type > const &", theItem: "opencascade::handle< XmlMDF_ADriver > const &") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_TypeADriverMap_Bind(self, theKey, theItem)

    def Bound(self, theKey: "opencascade::handle< Standard_Type > const &", theItem: "opencascade::handle< XmlMDF_ADriver > const &") -> "opencascade::handle< XmlMDF_ADriver > *":
        return _XmlMDF.XmlMDF_TypeADriverMap_Bound(self, theKey, theItem)

    def IsBound(self, theKey: "opencascade::handle< Standard_Type > const &") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_TypeADriverMap_IsBound(self, theKey)

    def UnBind(self, theKey: "opencascade::handle< Standard_Type > const &") -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_TypeADriverMap_UnBind(self, theKey)

    def Seek(self, theKey: "opencascade::handle< Standard_Type > const &") -> "opencascade::handle< XmlMDF_ADriver > const *":
        return _XmlMDF.XmlMDF_TypeADriverMap_Seek(self, theKey)

    def Find(self, *args) -> "Standard_Boolean":
        return _XmlMDF.XmlMDF_TypeADriverMap_Find(self, *args)

    def ChangeSeek(self, theKey: "opencascade::handle< Standard_Type > const &") -> "opencascade::handle< XmlMDF_ADriver > *":
        return _XmlMDF.XmlMDF_TypeADriverMap_ChangeSeek(self, theKey)

    def ChangeFind(self, theKey: "opencascade::handle< Standard_Type > const &") -> "opencascade::handle< XmlMDF_ADriver > &":
        return _XmlMDF.XmlMDF_TypeADriverMap_ChangeFind(self, theKey)

    def __call__(self, *args) -> "opencascade::handle< XmlMDF_ADriver > &":
        return _XmlMDF.XmlMDF_TypeADriverMap___call__(self, *args)

    def Clear(self, *args) -> "void":
        return _XmlMDF.XmlMDF_TypeADriverMap_Clear(self, *args)
    __swig_destroy__ = _XmlMDF.delete_XmlMDF_TypeADriverMap

    def Size(self) -> "Standard_Integer":
        return _XmlMDF.XmlMDF_TypeADriverMap_Size(self)

# Register XmlMDF_TypeADriverMap in _XmlMDF:
_XmlMDF.XmlMDF_TypeADriverMap_swigregister(XmlMDF_TypeADriverMap)

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

    @staticmethod
    def AddDrivers(*args) -> "void":
        r"""
        Adds the attribute storage drivers to <adriverseq>.

        Parameters
        ----------
        aDriverTable: XmlMDF_ADriverTable
        theMessageDriver: Message_Messenger

        Returns
        -------
        None

        """
        return _XmlMDF.xmlmdf_AddDrivers(*args)

    @staticmethod
    def FromTo(*args) -> "Standard_Boolean":
        r"""
        Translates a transient <asource> into a persistent <atarget>.

        Parameters
        ----------
        aSource: TDF_Data
        aTarget: XmlObjMgt_Element
        aReloc: XmlObjMgt_SRelocationTable
        aDrivers: XmlMDF_ADriverTable
        theRange: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        None
        Translates a persistent <asource> into a transient <atarget>. returns true if completed successfully (false on error).

        Parameters
        ----------
        aSource: XmlObjMgt_Element
        aTarget: TDF_Data
        aReloc: XmlObjMgt_RRelocationTable
        aDrivers: XmlMDF_ADriverTable
        theRange: Message_ProgressRange,optional
        	default value is Message_ProgressRange()

        Returns
        -------
        bool

        """
        return _XmlMDF.xmlmdf_FromTo(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _XmlMDF.xmlmdf_swiginit(self, _XmlMDF.new_xmlmdf())
    __swig_destroy__ = _XmlMDF.delete_xmlmdf

# Register xmlmdf in _XmlMDF:
_XmlMDF.xmlmdf_swigregister(xmlmdf)

def xmlmdf_AddDrivers(*args) -> "void":
    r"""
    Adds the attribute storage drivers to <adriverseq>.

    Parameters
    ----------
    aDriverTable: XmlMDF_ADriverTable
    theMessageDriver: Message_Messenger

    Returns
    -------
    None

    """
    return _XmlMDF.xmlmdf_AddDrivers(*args)

def xmlmdf_FromTo(*args) -> "Standard_Boolean":
    r"""
    Translates a transient <asource> into a persistent <atarget>.

    Parameters
    ----------
    aSource: TDF_Data
    aTarget: XmlObjMgt_Element
    aReloc: XmlObjMgt_SRelocationTable
    aDrivers: XmlMDF_ADriverTable
    theRange: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    None
    Translates a persistent <asource> into a transient <atarget>. returns true if completed successfully (false on error).

    Parameters
    ----------
    aSource: XmlObjMgt_Element
    aTarget: TDF_Data
    aReloc: XmlObjMgt_RRelocationTable
    aDrivers: XmlMDF_ADriverTable
    theRange: Message_ProgressRange,optional
    	default value is Message_ProgressRange()

    Returns
    -------
    bool

    """
    return _XmlMDF.xmlmdf_FromTo(*args)

class XmlMDF_ADriver(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def MessageDriver(self, *args) -> "opencascade::handle< Message_Messenger > const &":
        r"""
        Returns the current message driver of this driver.

        Returns
        -------
        opencascade::handle<Message_Messenger>

        """
        return _XmlMDF.XmlMDF_ADriver_MessageDriver(self, *args)

    def Namespace(self, *args) -> "TCollection_AsciiString const &":
        r"""
        Returns the namespace string.

        Returns
        -------
        TCollection_AsciiString

        """
        return _XmlMDF.XmlMDF_ADriver_Namespace(self, *args)

    def NewEmpty(self, *args) -> "opencascade::handle< TDF_Attribute >":
        r"""
        Creates a new attribute from tdf.

        Returns
        -------
        opencascade::handle<TDF_Attribute>

        """
        return _XmlMDF.XmlMDF_ADriver_NewEmpty(self, *args)

    def Paste(self, *args) -> "void":
        r"""
        Translate the contents of <asource> and put it into <atarget>, using the relocation table <areloctable> to keep the sharings.

        Parameters
        ----------
        aSource: XmlObjMgt_Persistent
        aTarget: TDF_Attribute
        aRelocTable: XmlObjMgt_RRelocationTable

        Returns
        -------
        bool
        Translate the contents of <asource> and put it into <atarget>, using the relocation table <areloctable> to keep the sharings.

        Parameters
        ----------
        aSource: TDF_Attribute
        aTarget: XmlObjMgt_Persistent
        aRelocTable: XmlObjMgt_SRelocationTable

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_ADriver_Paste(self, *args)

    def SourceType(self, *args) -> "opencascade::handle< Standard_Type >":
        r"""
        Returns the type of source object, inheriting from attribute from tdf.

        Returns
        -------
        opencascade::handle<Standard_Type>

        """
        return _XmlMDF.XmlMDF_ADriver_SourceType(self, *args)

    def TypeName(self, *args) -> "TCollection_AsciiString const &":
        r"""
        Returns the full xml tag name (including ns prefix).

        Returns
        -------
        TCollection_AsciiString

        """
        return _XmlMDF.XmlMDF_ADriver_TypeName(self, *args)

    def VersionNumber(self, *args) -> "Standard_Integer":
        r"""
        Returns the version number from which the driver is available.

        Returns
        -------
        int

        """
        return _XmlMDF.XmlMDF_ADriver_VersionNumber(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _XmlMDF.delete_XmlMDF_ADriver

# Register XmlMDF_ADriver in _XmlMDF:
_XmlMDF.XmlMDF_ADriver_swigregister(XmlMDF_ADriver)

class XmlMDF_ADriverTable(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Creates a mutable adrivertable from xmlmdf.

        Returns
        -------
        None

        """
        _XmlMDF.XmlMDF_ADriverTable_swiginit(self, _XmlMDF.new_XmlMDF_ADriverTable(*args))

    def AddDerivedDriver(self, *args) -> "opencascade::handle< Standard_Type > const &":
        r"""
        Adds a translation driver for the derived attribute. the base driver must be already added. @param theinstance is newly created attribute, detached from any label.

        Parameters
        ----------
        theInstance: TDF_Attribute

        Returns
        -------
        None
        Adds a translation driver for the derived attribute. the base driver must be already added. @param thederivedtype is registered attribute type using implement_derived_attribute macro.

        Parameters
        ----------
        theDerivedType: char *

        Returns
        -------
        opencascade::handle<Standard_Type>

        """
        return _XmlMDF.XmlMDF_ADriverTable_AddDerivedDriver(self, *args)

    def AddDriver(self, *args) -> "void":
        r"""
        Sets a translation driver: <adriver>.

        Parameters
        ----------
        anHDriver: XmlMDF_ADriver

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_ADriverTable_AddDriver(self, *args)

    def CreateDrvMap(self, *args) -> "void":
        r"""
        Fills the map by all registered drivers.

        Parameters
        ----------
        theDriverMap: XmlMDF_MapOfDriver

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_ADriverTable_CreateDrvMap(self, *args)

    def GetDriver(self, *args) -> "Standard_Boolean":
        r"""
        Gets a driver <adriver> according to <atype> //! returns true if a driver is found; false otherwise.

        Parameters
        ----------
        theType: Standard_Type
        theDriver: XmlMDF_ADriver

        Returns
        -------
        bool

        """
        return _XmlMDF.XmlMDF_ADriverTable_GetDriver(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _XmlMDF.delete_XmlMDF_ADriverTable

# Register XmlMDF_ADriverTable in _XmlMDF:
_XmlMDF.XmlMDF_ADriverTable_swigregister(XmlMDF_ADriverTable)

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

    def __init__(self, *args):
        r"""
        Creates a derivative persistence driver for thederivative attribute by reusage of thebasedriver @param thederivative an instance of the attribute, just created, detached from any label @param thebasedriver a driver of the base attribute, called by paste methods.

        Parameters
        ----------
        theDerivative: TDF_Attribute
        theBaseDriver: XmlMDF_ADriver

        Returns
        -------
        None

        """
        _XmlMDF.XmlMDF_DerivedDriver_swiginit(self, _XmlMDF.new_XmlMDF_DerivedDriver(*args))

    def Paste(self, *args) -> "void":
        r"""
        Reuses the base driver to read the base fields.

        Parameters
        ----------
        theSource: XmlObjMgt_Persistent
        theTarget: TDF_Attribute
        theRelocTable: XmlObjMgt_RRelocationTable

        Returns
        -------
        bool
        Reuses the base driver to store the base fields.

        Parameters
        ----------
        theSource: TDF_Attribute
        theTarget: XmlObjMgt_Persistent
        theRelocTable: XmlObjMgt_SRelocationTable

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_DerivedDriver_Paste(self, *args)

    def TypeName(self, *args) -> "TCollection_AsciiString const &":
        r"""
        Returns the full xml tag name (including ns prefix).

        Returns
        -------
        TCollection_AsciiString

        """
        return _XmlMDF.XmlMDF_DerivedDriver_TypeName(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _XmlMDF.delete_XmlMDF_DerivedDriver

# Register XmlMDF_DerivedDriver in _XmlMDF:
_XmlMDF.XmlMDF_DerivedDriver_swigregister(XmlMDF_DerivedDriver)

class XmlMDF_ReferenceDriver(XmlMDF_ADriver):
    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"""
        No available documentation.

        Parameters
        ----------
        theMessageDriver: Message_Messenger

        Returns
        -------
        None

        """
        _XmlMDF.XmlMDF_ReferenceDriver_swiginit(self, _XmlMDF.new_XmlMDF_ReferenceDriver(*args))

    def Paste(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        Source: XmlObjMgt_Persistent
        Target: TDF_Attribute
        RelocTable: XmlObjMgt_RRelocationTable

        Returns
        -------
        bool
        No available documentation.

        Parameters
        ----------
        Source: TDF_Attribute
        Target: XmlObjMgt_Persistent
        RelocTable: XmlObjMgt_SRelocationTable

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_ReferenceDriver_Paste(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _XmlMDF.delete_XmlMDF_ReferenceDriver

# Register XmlMDF_ReferenceDriver in _XmlMDF:
_XmlMDF.XmlMDF_ReferenceDriver_swigregister(XmlMDF_ReferenceDriver)

class XmlMDF_TagSourceDriver(XmlMDF_ADriver):
    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"""
        No available documentation.

        Parameters
        ----------
        theMessageDriver: Message_Messenger

        Returns
        -------
        None

        """
        _XmlMDF.XmlMDF_TagSourceDriver_swiginit(self, _XmlMDF.new_XmlMDF_TagSourceDriver(*args))

    def Paste(self, *args) -> "void":
        r"""
        No available documentation.

        Parameters
        ----------
        Source: XmlObjMgt_Persistent
        Target: TDF_Attribute
        RelocTable: XmlObjMgt_RRelocationTable

        Returns
        -------
        bool
        No available documentation.

        Parameters
        ----------
        Source: TDF_Attribute
        Target: XmlObjMgt_Persistent
        RelocTable: XmlObjMgt_SRelocationTable

        Returns
        -------
        None

        """
        return _XmlMDF.XmlMDF_TagSourceDriver_Paste(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _XmlMDF.delete_XmlMDF_TagSourceDriver

# Register XmlMDF_TagSourceDriver in _XmlMDF:
_XmlMDF.XmlMDF_TagSourceDriver_swigregister(XmlMDF_TagSourceDriver)





