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

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _GeomAdaptor.SWIG_PyInstanceMethod_New
_swig_new_static_method = _GeomAdaptor.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__ = _GeomAdaptor.delete_SwigPyIterator
    value = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_value)
    incr = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_incr)
    decr = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_decr)
    distance = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_distance)
    equal = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_equal)
    copy = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_copy)
    next = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_next)
    __next__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___next__)
    previous = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_previous)
    advance = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator_advance)
    __eq__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___eq__)
    __ne__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___ne__)
    __iadd__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___iadd__)
    __isub__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___isub__)
    __add__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___add__)
    __sub__ = _swig_new_instance_method(_GeomAdaptor.SwigPyIterator___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator in _GeomAdaptor:
_GeomAdaptor.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.Adaptor3d
import OCC.Core.Geom
import OCC.Core.gp
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.TopAbs
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.Message
Handle_GeomAdaptor_GHCurve_Create = _GeomAdaptor.Handle_GeomAdaptor_GHCurve_Create
Handle_GeomAdaptor_GHCurve_DownCast = _GeomAdaptor.Handle_GeomAdaptor_GHCurve_DownCast
Handle_GeomAdaptor_GHCurve_IsNull = _GeomAdaptor.Handle_GeomAdaptor_GHCurve_IsNull
Handle_GeomAdaptor_GHSurface_Create = _GeomAdaptor.Handle_GeomAdaptor_GHSurface_Create
Handle_GeomAdaptor_GHSurface_DownCast = _GeomAdaptor.Handle_GeomAdaptor_GHSurface_DownCast
Handle_GeomAdaptor_GHSurface_IsNull = _GeomAdaptor.Handle_GeomAdaptor_GHSurface_IsNull
Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_Create = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_Create
Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_DownCast = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_DownCast
Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_IsNull = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfLinearExtrusion_IsNull
Handle_GeomAdaptor_HSurfaceOfRevolution_Create = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfRevolution_Create
Handle_GeomAdaptor_HSurfaceOfRevolution_DownCast = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfRevolution_DownCast
Handle_GeomAdaptor_HSurfaceOfRevolution_IsNull = _GeomAdaptor.Handle_GeomAdaptor_HSurfaceOfRevolution_IsNull
Handle_GeomAdaptor_HCurve_Create = _GeomAdaptor.Handle_GeomAdaptor_HCurve_Create
Handle_GeomAdaptor_HCurve_DownCast = _GeomAdaptor.Handle_GeomAdaptor_HCurve_DownCast
Handle_GeomAdaptor_HCurve_IsNull = _GeomAdaptor.Handle_GeomAdaptor_HCurve_IsNull
Handle_GeomAdaptor_HSurface_Create = _GeomAdaptor.Handle_GeomAdaptor_HSurface_Create
Handle_GeomAdaptor_HSurface_DownCast = _GeomAdaptor.Handle_GeomAdaptor_HSurface_DownCast
Handle_GeomAdaptor_HSurface_IsNull = _GeomAdaptor.Handle_GeomAdaptor_HSurface_IsNull
class geomadaptor(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    MakeCurve = _swig_new_static_method(_GeomAdaptor.geomadaptor_MakeCurve)
    MakeSurface = _swig_new_static_method(_GeomAdaptor.geomadaptor_MakeSurface)

    __repr__ = _dumps_object


    def __init__(self):
        _GeomAdaptor.geomadaptor_swiginit(self, _GeomAdaptor.new_geomadaptor())
    __swig_destroy__ = _GeomAdaptor.delete_geomadaptor

# Register geomadaptor in _GeomAdaptor:
_GeomAdaptor.geomadaptor_swigregister(geomadaptor)
geomadaptor_MakeCurve = _GeomAdaptor.geomadaptor_MakeCurve
geomadaptor_MakeSurface = _GeomAdaptor.geomadaptor_MakeSurface

class GeomAdaptor_Curve(OCC.Core.Adaptor3d.Adaptor3d_Curve):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Curve = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_Curve_Curve)

    def __init__(self, *args):
        r"""
        :rtype: None:param C:
        	:type C: Geom_Curve
        	:rtype: None* ConstructionError is raised if Ufirst>Ulast
        	:param C:
        	:type C: Geom_Curve
        	:param UFirst:
        	:type UFirst: float
        	:param ULast:
        	:type ULast: float
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_Curve_swiginit(self, _GeomAdaptor.new_GeomAdaptor_Curve(*args))
    Load = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_Curve_Load)
    Reset = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_Curve_Reset)

    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_Curve

# Register GeomAdaptor_Curve in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_Curve_swigregister(GeomAdaptor_Curve)

class GeomAdaptor_GHCurve(OCC.Core.Adaptor3d.Adaptor3d_HCurve):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ChangeCurve = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_GHCurve_ChangeCurve)

    def __init__(self, *args):
        r"""
        * Creates an empty GenHCurve.
        	:rtype: None* Creates a GenHCurve from a Curve
        	:param C:
        	:type C: GeomAdaptor_Curve
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_GHCurve_swiginit(self, _GeomAdaptor.new_GeomAdaptor_GHCurve(*args))
    Set = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_GHCurve_Set)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_GHCurve

# Register GeomAdaptor_GHCurve in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_GHCurve_swigregister(GeomAdaptor_GHCurve)

class GeomAdaptor_GHSurface(OCC.Core.Adaptor3d.Adaptor3d_HSurface):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ChangeSurface = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_GHSurface_ChangeSurface)

    def __init__(self, *args):
        r"""
        * Creates an empty GenHSurface.
        	:rtype: None* Creates a GenHSurface from a Surface.
        	:param S:
        	:type S: GeomAdaptor_Surface
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_GHSurface_swiginit(self, _GeomAdaptor.new_GeomAdaptor_GHSurface(*args))
    Set = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_GHSurface_Set)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_GHSurface

# Register GeomAdaptor_GHSurface in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_GHSurface_swigregister(GeomAdaptor_GHSurface)

class GeomAdaptor_HSurfaceOfLinearExtrusion(OCC.Core.Adaptor3d.Adaptor3d_HSurface):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ChangeSurface = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_HSurfaceOfLinearExtrusion_ChangeSurface)

    def __init__(self, *args):
        r"""
        * Creates an empty GenHSurface.
        	:rtype: None* Creates a GenHSurface from a Surface.
        	:param S:
        	:type S: GeomAdaptor_SurfaceOfLinearExtrusion
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_HSurfaceOfLinearExtrusion_swiginit(self, _GeomAdaptor.new_GeomAdaptor_HSurfaceOfLinearExtrusion(*args))
    Set = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_HSurfaceOfLinearExtrusion_Set)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_HSurfaceOfLinearExtrusion

# Register GeomAdaptor_HSurfaceOfLinearExtrusion in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_HSurfaceOfLinearExtrusion_swigregister(GeomAdaptor_HSurfaceOfLinearExtrusion)

class GeomAdaptor_HSurfaceOfRevolution(OCC.Core.Adaptor3d.Adaptor3d_HSurface):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ChangeSurface = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_HSurfaceOfRevolution_ChangeSurface)

    def __init__(self, *args):
        r"""
        * Creates an empty GenHSurface.
        	:rtype: None* Creates a GenHSurface from a Surface.
        	:param S:
        	:type S: GeomAdaptor_SurfaceOfRevolution
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_HSurfaceOfRevolution_swiginit(self, _GeomAdaptor.new_GeomAdaptor_HSurfaceOfRevolution(*args))
    Set = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_HSurfaceOfRevolution_Set)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_HSurfaceOfRevolution

# Register GeomAdaptor_HSurfaceOfRevolution in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_HSurfaceOfRevolution_swigregister(GeomAdaptor_HSurfaceOfRevolution)

class GeomAdaptor_Surface(OCC.Core.Adaptor3d.Adaptor3d_Surface):
    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:param S:
        	:type S: Geom_Surface
        	:rtype: None* ConstructionError is raised if UFirst>ULast or VFirst>VLast
        	:param S:
        	:type S: Geom_Surface
        	:param UFirst:
        	:type UFirst: float
        	:param ULast:
        	:type ULast: float
        	:param VFirst:
        	:type VFirst: float
        	:param VLast:
        	:type VLast: float
        	:param TolU: default value is 0.0
        	:type TolU: float
        	:param TolV: default value is 0.0
        	:type TolV: float
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_Surface_swiginit(self, _GeomAdaptor.new_GeomAdaptor_Surface(*args))
    Load = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_Surface_Load)
    Surface = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_Surface_Surface)

    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_Surface

# Register GeomAdaptor_Surface in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_Surface_swigregister(GeomAdaptor_Surface)

class GeomAdaptor_HCurve(GeomAdaptor_GHCurve):
    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:param AS:
        	:type AS: GeomAdaptor_Curve
        	:rtype: None:param S:
        	:type S: Geom_Curve
        	:rtype: None* ConstructionError is raised if UFirst>ULast or VFirst>VLast
        	:param S:
        	:type S: Geom_Curve
        	:param UFirst:
        	:type UFirst: float
        	:param ULast:
        	:type ULast: float
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_HCurve_swiginit(self, _GeomAdaptor.new_GeomAdaptor_HCurve(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_HCurve

# Register GeomAdaptor_HCurve in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_HCurve_swigregister(GeomAdaptor_HCurve)

class GeomAdaptor_HSurface(GeomAdaptor_GHSurface):
    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:param AS:
        	:type AS: GeomAdaptor_Surface
        	:rtype: None:param S:
        	:type S: Geom_Surface
        	:rtype: None* ConstructionError is raised if UFirst>ULast or VFirst>VLast
        	:param S:
        	:type S: Geom_Surface
        	:param UFirst:
        	:type UFirst: float
        	:param ULast:
        	:type ULast: float
        	:param VFirst:
        	:type VFirst: float
        	:param VLast:
        	:type VLast: float
        	:param TolU: default value is 0.0
        	:type TolU: float
        	:param TolV: default value is 0.0
        	:type TolV: float
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_HSurface_swiginit(self, _GeomAdaptor.new_GeomAdaptor_HSurface(*args))


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


    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_HSurface

# Register GeomAdaptor_HSurface in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_HSurface_swigregister(GeomAdaptor_HSurface)

class GeomAdaptor_SurfaceOfLinearExtrusion(GeomAdaptor_Surface):
    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* The Curve is loaded.
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:rtype: None* Thew Curve and the Direction are loaded.
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:param V:
        	:type V: gp_Dir
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_SurfaceOfLinearExtrusion_swiginit(self, _GeomAdaptor.new_GeomAdaptor_SurfaceOfLinearExtrusion(*args))
    Load = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_SurfaceOfLinearExtrusion_Load)

    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_SurfaceOfLinearExtrusion

# Register GeomAdaptor_SurfaceOfLinearExtrusion in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_SurfaceOfLinearExtrusion_swigregister(GeomAdaptor_SurfaceOfLinearExtrusion)

class GeomAdaptor_SurfaceOfRevolution(GeomAdaptor_Surface):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Axis = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_SurfaceOfRevolution_Axis)

    def __init__(self, *args):
        r"""
        :rtype: None* The Curve is loaded.
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:rtype: None* The Curve and the Direction are loaded.
        	:param C:
        	:type C: Adaptor3d_HCurve
        	:param V:
        	:type V: gp_Ax1
        	:rtype: None
        """
        _GeomAdaptor.GeomAdaptor_SurfaceOfRevolution_swiginit(self, _GeomAdaptor.new_GeomAdaptor_SurfaceOfRevolution(*args))
    Load = _swig_new_instance_method(_GeomAdaptor.GeomAdaptor_SurfaceOfRevolution_Load)

    __repr__ = _dumps_object

    __swig_destroy__ = _GeomAdaptor.delete_GeomAdaptor_SurfaceOfRevolution

# Register GeomAdaptor_SurfaceOfRevolution in _GeomAdaptor:
_GeomAdaptor.GeomAdaptor_SurfaceOfRevolution_swigregister(GeomAdaptor_SurfaceOfRevolution)



