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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _CDF.SWIG_PyInstanceMethod_New
_swig_new_static_method = _CDF.SWIG_PyStaticMethod_New

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _CDF.delete_SwigPyIterator
    value = _swig_new_instance_method(_CDF.SwigPyIterator_value)
    incr = _swig_new_instance_method(_CDF.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_CDF.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_CDF.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_CDF.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_CDF.SwigPyIterator_copy)
    next = _swig_new_instance_method(_CDF.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_CDF.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_CDF.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_CDF.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_CDF.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_CDF.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_CDF.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_CDF.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_CDF.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_CDF.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _CDF:
_CDF.SwigPyIterator_swigregister(SwigPyIterator)


def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


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

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.CDM
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.Message
import OCC.Core.Resource
import OCC.Core.PCDM
import OCC.Core.Storage
CDF_TOA_New = _CDF.CDF_TOA_New
CDF_TOA_Modified = _CDF.CDF_TOA_Modified
CDF_TOA_Unchanged = _CDF.CDF_TOA_Unchanged
CDF_TS_OK = _CDF.CDF_TS_OK
CDF_TS_NoCurrentDocument = _CDF.CDF_TS_NoCurrentDocument
CDF_TS_NoDriver = _CDF.CDF_TS_NoDriver
CDF_TS_NoSubComponentDriver = _CDF.CDF_TS_NoSubComponentDriver
CDF_SCS_Consistent = _CDF.CDF_SCS_Consistent
CDF_SCS_Unconsistent = _CDF.CDF_SCS_Unconsistent
CDF_SCS_Stored = _CDF.CDF_SCS_Stored
CDF_SCS_Modified = _CDF.CDF_SCS_Modified
CDF_SSNS_OK = _CDF.CDF_SSNS_OK
CDF_SSNS_ReplacingAnExistentDocument = _CDF.CDF_SSNS_ReplacingAnExistentDocument
CDF_SSNS_OpenDocument = _CDF.CDF_SSNS_OpenDocument
Handle_CDF_Application_Create = _CDF.Handle_CDF_Application_Create
Handle_CDF_Application_DownCast = _CDF.Handle_CDF_Application_DownCast
Handle_CDF_Application_IsNull = _CDF.Handle_CDF_Application_IsNull
Handle_CDF_Directory_Create = _CDF.Handle_CDF_Directory_Create
Handle_CDF_Directory_DownCast = _CDF.Handle_CDF_Directory_DownCast
Handle_CDF_Directory_IsNull = _CDF.Handle_CDF_Directory_IsNull
Handle_CDF_MetaDataDriver_Create = _CDF.Handle_CDF_MetaDataDriver_Create
Handle_CDF_MetaDataDriver_DownCast = _CDF.Handle_CDF_MetaDataDriver_DownCast
Handle_CDF_MetaDataDriver_IsNull = _CDF.Handle_CDF_MetaDataDriver_IsNull
Handle_CDF_MetaDataDriverFactory_Create = _CDF.Handle_CDF_MetaDataDriverFactory_Create
Handle_CDF_MetaDataDriverFactory_DownCast = _CDF.Handle_CDF_MetaDataDriverFactory_DownCast
Handle_CDF_MetaDataDriverFactory_IsNull = _CDF.Handle_CDF_MetaDataDriverFactory_IsNull
Handle_CDF_Session_Create = _CDF.Handle_CDF_Session_Create
Handle_CDF_Session_DownCast = _CDF.Handle_CDF_Session_DownCast
Handle_CDF_Session_IsNull = _CDF.Handle_CDF_Session_IsNull
Handle_CDF_StoreList_Create = _CDF.Handle_CDF_StoreList_Create
Handle_CDF_StoreList_DownCast = _CDF.Handle_CDF_StoreList_DownCast
Handle_CDF_StoreList_IsNull = _CDF.Handle_CDF_StoreList_IsNull
Handle_CDF_FWOSDriver_Create = _CDF.Handle_CDF_FWOSDriver_Create
Handle_CDF_FWOSDriver_DownCast = _CDF.Handle_CDF_FWOSDriver_DownCast
Handle_CDF_FWOSDriver_IsNull = _CDF.Handle_CDF_FWOSDriver_IsNull
class cdf(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    GetLicense = _swig_new_static_method(_CDF.cdf_GetLicense)
    IsAvailable = _swig_new_static_method(_CDF.cdf_IsAvailable)

    __repr__ = _dumps_object


    def __init__(self):
        _CDF.cdf_swiginit(self, _CDF.new_cdf())
    __swig_destroy__ = _CDF.delete_cdf

# Register cdf in _CDF:
_CDF.cdf_swigregister(cdf)
cdf_GetLicense = _CDF.cdf_GetLicense
cdf_IsAvailable = _CDF.cdf_IsAvailable

class CDF_Application(OCC.Core.CDM.CDM_Application):
    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
    CanClose = _swig_new_instance_method(_CDF.CDF_Application_CanClose)
    CanRetrieve = _swig_new_instance_method(_CDF.CDF_Application_CanRetrieve)
    Close = _swig_new_instance_method(_CDF.CDF_Application_Close)
    DefaultFolder = _swig_new_instance_method(_CDF.CDF_Application_DefaultFolder)
    Format = _swig_new_instance_method(_CDF.CDF_Application_Format)
    GetRetrieveStatus = _swig_new_instance_method(_CDF.CDF_Application_GetRetrieveStatus)
    Load = _swig_new_static_method(_CDF.CDF_Application_Load)
    Open = _swig_new_instance_method(_CDF.CDF_Application_Open)
    ReadFromString = _swig_new_instance_method(_CDF.CDF_Application_ReadFromString)
    ReaderFromFormat = _swig_new_instance_method(_CDF.CDF_Application_ReaderFromFormat)
    Retrieve = _swig_new_instance_method(_CDF.CDF_Application_Retrieve)
    SetDefaultFolder = _swig_new_instance_method(_CDF.CDF_Application_SetDefaultFolder)
    WriterFromFormat = _swig_new_instance_method(_CDF.CDF_Application_WriterFromFormat)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_Application

# Register CDF_Application in _CDF:
_CDF.CDF_Application_swigregister(CDF_Application)
CDF_Application_Load = _CDF.CDF_Application_Load

class CDF_Directory(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
    Add = _swig_new_instance_method(_CDF.CDF_Directory_Add)

    def __init__(self, *args):
        r"""
        * Creates an empty directory.
        	:rtype: None
        """
        _CDF.CDF_Directory_swiginit(self, _CDF.new_CDF_Directory(*args))
    Contains = _swig_new_instance_method(_CDF.CDF_Directory_Contains)
    IsEmpty = _swig_new_instance_method(_CDF.CDF_Directory_IsEmpty)
    Last = _swig_new_instance_method(_CDF.CDF_Directory_Last)
    Length = _swig_new_instance_method(_CDF.CDF_Directory_Length)
    Remove = _swig_new_instance_method(_CDF.CDF_Directory_Remove)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_Directory

# Register CDF_Directory in _CDF:
_CDF.CDF_Directory_swigregister(CDF_Directory)

class CDF_DirectoryIterator(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"""
        * creates an Iterator with the directory of the current CDF.
        	:rtype: None:param aDirectory:
        	:type aDirectory: CDF_Directory
        	:rtype: None
        """
        _CDF.CDF_DirectoryIterator_swiginit(self, _CDF.new_CDF_DirectoryIterator(*args))
    Document = _swig_new_instance_method(_CDF.CDF_DirectoryIterator_Document)
    MoreDocument = _swig_new_instance_method(_CDF.CDF_DirectoryIterator_MoreDocument)
    NextDocument = _swig_new_instance_method(_CDF.CDF_DirectoryIterator_NextDocument)

    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_DirectoryIterator

# Register CDF_DirectoryIterator in _CDF:
_CDF.CDF_DirectoryIterator_swigregister(CDF_DirectoryIterator)

class CDF_MetaDataDriver(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
    BuildFileName = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_BuildFileName)
    CreateDependsOn = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_CreateDependsOn)
    CreateMetaData = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_CreateMetaData)
    CreateReference = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_CreateReference)
    DefaultFolder = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_DefaultFolder)
    Find = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_Find)
    FindFolder = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_FindFolder)
    HasReadPermission = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_HasReadPermission)
    HasVersion = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_HasVersion)
    HasVersionCapability = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_HasVersionCapability)
    LastVersion = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_LastVersion)
    MetaData = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_MetaData)
    ReferenceIterator = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_ReferenceIterator)
    SetName = _swig_new_instance_method(_CDF.CDF_MetaDataDriver_SetName)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_MetaDataDriver

# Register CDF_MetaDataDriver in _CDF:
_CDF.CDF_MetaDataDriver_swigregister(CDF_MetaDataDriver)

class CDF_MetaDataDriverFactory(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
    Build = _swig_new_instance_method(_CDF.CDF_MetaDataDriverFactory_Build)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_MetaDataDriverFactory

# Register CDF_MetaDataDriverFactory in _CDF:
_CDF.CDF_MetaDataDriverFactory_swigregister(CDF_MetaDataDriverFactory)

class CDF_Session(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""":rtype: None"""
        _CDF.CDF_Session_swiginit(self, _CDF.new_CDF_Session(*args))
    CurrentApplication = _swig_new_instance_method(_CDF.CDF_Session_CurrentApplication)
    CurrentSession = _swig_new_static_method(_CDF.CDF_Session_CurrentSession)
    Directory = _swig_new_instance_method(_CDF.CDF_Session_Directory)
    Exists = _swig_new_static_method(_CDF.CDF_Session_Exists)
    HasCurrentApplication = _swig_new_instance_method(_CDF.CDF_Session_HasCurrentApplication)
    LoadDriver = _swig_new_instance_method(_CDF.CDF_Session_LoadDriver)
    MetaDataDriver = _swig_new_instance_method(_CDF.CDF_Session_MetaDataDriver)
    SetCurrentApplication = _swig_new_instance_method(_CDF.CDF_Session_SetCurrentApplication)
    UnsetCurrentApplication = _swig_new_instance_method(_CDF.CDF_Session_UnsetCurrentApplication)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_Session

# Register CDF_Session in _CDF:
_CDF.CDF_Session_swigregister(CDF_Session)
CDF_Session_CurrentSession = _CDF.CDF_Session_CurrentSession
CDF_Session_Exists = _CDF.CDF_Session_Exists

class CDF_Store(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    AssociatedStatusText = _swig_new_instance_method(_CDF.CDF_Store_AssociatedStatusText)

    def __init__(self, *args):
        r"""
        * creates a store list from the document of the current selection.
        	:param aDocument:
        	:type aDocument: CDM_Document
        	:rtype: None
        """
        _CDF.CDF_Store_swiginit(self, _CDF.new_CDF_Store(*args))
    Comment = _swig_new_instance_method(_CDF.CDF_Store_Comment)
    Component = _swig_new_instance_method(_CDF.CDF_Store_Component)
    CurrentIsConsistent = _swig_new_instance_method(_CDF.CDF_Store_CurrentIsConsistent)
    Description = _swig_new_instance_method(_CDF.CDF_Store_Description)
    Folder = _swig_new_instance_method(_CDF.CDF_Store_Folder)
    HasAPreviousVersion = _swig_new_instance_method(_CDF.CDF_Store_HasAPreviousVersion)
    HasSubComponents = _swig_new_instance_method(_CDF.CDF_Store_HasSubComponents)
    InitComponent = _swig_new_instance_method(_CDF.CDF_Store_InitComponent)
    IsConsistent = _swig_new_instance_method(_CDF.CDF_Store_IsConsistent)
    IsMainDocument = _swig_new_instance_method(_CDF.CDF_Store_IsMainDocument)
    IsModified = _swig_new_instance_method(_CDF.CDF_Store_IsModified)
    IsStored = _swig_new_instance_method(_CDF.CDF_Store_IsStored)
    MetaDataPath = _swig_new_instance_method(_CDF.CDF_Store_MetaDataPath)
    MoreComponent = _swig_new_instance_method(_CDF.CDF_Store_MoreComponent)
    Name = _swig_new_instance_method(_CDF.CDF_Store_Name)
    NextComponent = _swig_new_instance_method(_CDF.CDF_Store_NextComponent)
    Path = _swig_new_instance_method(_CDF.CDF_Store_Path)
    PreviousVersion = _swig_new_instance_method(_CDF.CDF_Store_PreviousVersion)
    Realize = _swig_new_instance_method(_CDF.CDF_Store_Realize)
    RecheckName = _swig_new_instance_method(_CDF.CDF_Store_RecheckName)
    SetComment = _swig_new_instance_method(_CDF.CDF_Store_SetComment)
    SetCurrent = _swig_new_instance_method(_CDF.CDF_Store_SetCurrent)
    SetFolder = _swig_new_instance_method(_CDF.CDF_Store_SetFolder)
    SetMain = _swig_new_instance_method(_CDF.CDF_Store_SetMain)
    SetName = _swig_new_instance_method(_CDF.CDF_Store_SetName)
    SetPreviousVersion = _swig_new_instance_method(_CDF.CDF_Store_SetPreviousVersion)
    StoreStatus = _swig_new_instance_method(_CDF.CDF_Store_StoreStatus)
    SubComponentStatus = _swig_new_instance_method(_CDF.CDF_Store_SubComponentStatus)

    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_Store

# Register CDF_Store in _CDF:
_CDF.CDF_Store_swigregister(CDF_Store)

class CDF_StoreList(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"""
        :param aDocument:
        	:type aDocument: CDM_Document
        	:rtype: None
        """
        _CDF.CDF_StoreList_swiginit(self, _CDF.new_CDF_StoreList(*args))
    Init = _swig_new_instance_method(_CDF.CDF_StoreList_Init)
    IsConsistent = _swig_new_instance_method(_CDF.CDF_StoreList_IsConsistent)
    More = _swig_new_instance_method(_CDF.CDF_StoreList_More)
    Next = _swig_new_instance_method(_CDF.CDF_StoreList_Next)
    Store = _swig_new_instance_method(_CDF.CDF_StoreList_Store)
    Value = _swig_new_instance_method(_CDF.CDF_StoreList_Value)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_StoreList

# Register CDF_StoreList in _CDF:
_CDF.CDF_StoreList_swigregister(CDF_StoreList)

class CDF_FWOSDriver(CDF_MetaDataDriver):
    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 the MetaDatadriver with its specific name.
        	:rtype: None
        """
        _CDF.CDF_FWOSDriver_swiginit(self, _CDF.new_CDF_FWOSDriver(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _CDF.delete_CDF_FWOSDriver

# Register CDF_FWOSDriver in _CDF:
_CDF.CDF_FWOSDriver_swigregister(CDF_FWOSDriver)



