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

"""
PLib module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_plib.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _PLib
else:
    import _PLib

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 == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(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__ = _PLib.delete_SwigPyIterator

    def value(self):
        return _PLib.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _PLib.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _PLib.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _PLib.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _PLib.SwigPyIterator_equal(self, x)

    def copy(self):
        return _PLib.SwigPyIterator_copy(self)

    def next(self):
        return _PLib.SwigPyIterator_next(self)

    def __next__(self):
        return _PLib.SwigPyIterator___next__(self)

    def previous(self):
        return _PLib.SwigPyIterator_previous(self)

    def advance(self, n):
        return _PLib.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _PLib.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _PLib.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _PLib.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _PLib.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _PLib.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _PLib.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _PLib:
_PLib.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, method_name, class_name):
    return _PLib.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.TColgp
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.GeomAbs
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.gp

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




def Handle_PLib_Base_Create():
    return _PLib.Handle_PLib_Base_Create()

def Handle_PLib_Base_DownCast(t):
    return _PLib.Handle_PLib_Base_DownCast(t)

def Handle_PLib_Base_IsNull(t):
    return _PLib.Handle_PLib_Base_IsNull(t)

def Handle_PLib_HermitJacobi_Create():
    return _PLib.Handle_PLib_HermitJacobi_Create()

def Handle_PLib_HermitJacobi_DownCast(t):
    return _PLib.Handle_PLib_HermitJacobi_DownCast(t)

def Handle_PLib_HermitJacobi_IsNull(t):
    return _PLib.Handle_PLib_HermitJacobi_IsNull(t)

def Handle_PLib_JacobiPolynomial_Create():
    return _PLib.Handle_PLib_JacobiPolynomial_Create()

def Handle_PLib_JacobiPolynomial_DownCast(t):
    return _PLib.Handle_PLib_JacobiPolynomial_DownCast(t)

def Handle_PLib_JacobiPolynomial_IsNull(t):
    return _PLib.Handle_PLib_JacobiPolynomial_IsNull(t)
class plib(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def Bin(*args):
        r"""

        Parameters
        ----------
        N: int
        P: int

        Return
        -------
        float

        Description
        -----------
        Returns the binomial cnp. n should be <= bsplclib::maxdegree().

        """
        return _PLib.plib_Bin(*args)

    @staticmethod
    def CoefficientsPoles(*args):
        r"""

        Parameters
        ----------
        Coefs: TColgp_Array1OfPnt
        WCoefs: TColStd_Array1OfReal *
        Poles: TColgp_Array1OfPnt
        WPoles: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        Coefs: TColgp_Array1OfPnt2d
        WCoefs: TColStd_Array1OfReal *
        Poles: TColgp_Array1OfPnt2d
        WPoles: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        Coefs: TColStd_Array1OfReal
        WCoefs: TColStd_Array1OfReal *
        Poles: TColStd_Array1OfReal
        WPoles: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        dim: int
        Coefs: TColStd_Array1OfReal
        WCoefs: TColStd_Array1OfReal *
        Poles: TColStd_Array1OfReal
        WPoles: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        Coefs: TColgp_Array2OfPnt
        WCoefs: TColStd_Array2OfReal *
        Poles: TColgp_Array2OfPnt
        WPoles: TColStd_Array2OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _PLib.plib_CoefficientsPoles(*args)

    @staticmethod
    def ConstraintOrder(*args):
        r"""

        Parameters
        ----------
        NivConstr: int

        Return
        -------
        GeomAbs_Shape

        Description
        -----------
        Translates from integer to geomabs_shape.

        """
        return _PLib.plib_ConstraintOrder(*args)

    @staticmethod
    def EvalCubicHermite(*args):
        r"""

        Parameters
        ----------
        U: float
        DerivativeOrder: int
        Dimension: int

        Return
        -------
        ValueArray: float
        DerivativeArray: float
        ParameterArray: float
        Results: float

        Description
        -----------
        Performs the cubic hermite interpolation of given series of points with given parameters with the requested derivative order. valuearray stores the value at the first and last parameter. it has the following format: @code [0], [dimension-1] : value at first param [dimension], [dimension + dimension-1]: value at last param @endcode derivative array stores the value of the derivatives at the first parameter and at the last parameter in the following format @code [0], [dimension-1] : derivative at @endcode first param @code [dimension], [dimension + dimension-1]: derivative at @endcode last param //! parameterarray stores the first and last parameter in the following format: @code [0]: first parameter [1]: last parameter @endcode //! results will store things in the following format with d = derivativeorder @code [0], [dimension-1] : value [dimension], [dimension + dimension-1]: first derivative //! [d *dimension], [d*dimension + dimension-1]: dth derivative @endcode.

        """
        return _PLib.plib_EvalCubicHermite(*args)

    @staticmethod
    def EvalLagrange(*args):
        r"""

        Parameters
        ----------
        U: float
        DerivativeOrder: int
        Degree: int
        Dimension: int

        Return
        -------
        ValueArray: float
        ParameterArray: float
        Results: float

        Description
        -----------
        Performs the lagrange interpolation of given series of points with given parameters with the requested derivative order results will store things in the following format with d = derivativeorder @code [0], [dimension-1] : value [dimension], [dimension + dimension-1]: first derivative //! [d *dimension], [d*dimension + dimension-1]: dth derivative @endcode.

        """
        return _PLib.plib_EvalLagrange(*args)

    @staticmethod
    def EvalLength(*args):
        r"""

        Parameters
        ----------
        Degree: int
        Dimension: int
        U1: float
        U2: float

        Return
        -------
        PolynomialCoeff: float
        Length: float

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        Degree: int
        Dimension: int
        U1: float
        U2: float
        Tol: float

        Return
        -------
        PolynomialCoeff: float
        Length: float
        Error: float

        Description
        -----------
        No available documentation.

        """
        return _PLib.plib_EvalLength(*args)

    @staticmethod
    def EvalPoly2Var(*args):
        r"""

        Parameters
        ----------
        U: float
        V: float
        UDerivativeOrder: int
        VDerivativeOrder: int
        UDegree: int
        VDegree: int
        Dimension: int

        Return
        -------
        PolynomialCoeff: float
        Results: float

        Description
        -----------
        Applies evalpolynomial twice to evaluate the derivative of orders uderivativeorder in u, vderivativeorder in v at parameters u,v //! polynomialcoeff are stored in the following fashion @code c00(1) .... c00(dimension) c10(1) .... c10(dimension) .... cm0(1) .... cm0(dimension) .... c01(1) .... c01(dimension) c11(1) .... c11(dimension) .... cm1(1) .... cm1(dimension) .... c0n(1) .... c0n(dimension) c1n(1) .... c1n(dimension) .... cmn(1) .... cmn(dimension) @endcode where the polynomial is defined as: @code 2  m c00 + c10 u + c20 u + .... + cm0 u 2  m + c01 v + c11 uv + c21 u v + .... + cm1 u v n m n + .... + c0n v + .... + cmn u v @endcode with m = udegree and n = vdegree //! results stores the result in the following format @code f(1) f(2) .... f(dimension) @endcode warning: <results> and <polynomialcoeff> must be dimensioned properly.

        """
        return _PLib.plib_EvalPoly2Var(*args)

    @staticmethod
    def EvalPolynomial(*args):
        r"""

        Parameters
        ----------
        U: float
        DerivativeOrder: int
        Degree: int
        Dimension: int

        Return
        -------
        PolynomialCoeff: float
        Results: float

        Description
        -----------
        Performs horner method with synthetic division for derivatives parameter <u>, with <degree> and <dimension>. polynomialcoeff are stored in the following fashion @code c0(1) c0(2) .... c0(dimension) c1(1) c1(2) .... c1(dimension) //! cdegree(1) cdegree(2) .... cdegree(dimension) @endcode where the polynomial is defined as: @code 2 degree c0 + c1 x + c2 x + .... cdegree x @endcode results stores the result in the following format @code f(1) f(2) .... f(dimension) (1)  (1)  (1) f (1) f (2) .... f (dimension) //! (derivativerequest) (derivativerequest) f (1)  f (dimension) @endcode this just evaluates the point at parameter u //! warning: <results> and <polynomialcoeff> must be dimensioned properly.

        """
        return _PLib.plib_EvalPolynomial(*args)

    @staticmethod
    def GetPoles(*args):
        r"""

        Parameters
        ----------
        FP: TColStd_Array1OfReal
        Poles: TColgp_Array1OfPnt

        Return
        -------
        None

        Description
        -----------
        Get from fp the coordinates of the poles.

        Parameters
        ----------
        FP: TColStd_Array1OfReal
        Poles: TColgp_Array1OfPnt
        Weights: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Get from fp the coordinates of the poles.

        Parameters
        ----------
        FP: TColStd_Array1OfReal
        Poles: TColgp_Array1OfPnt2d

        Return
        -------
        None

        Description
        -----------
        Get from fp the coordinates of the poles.

        Parameters
        ----------
        FP: TColStd_Array1OfReal
        Poles: TColgp_Array1OfPnt2d
        Weights: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Get from fp the coordinates of the poles.

        """
        return _PLib.plib_GetPoles(*args)

    @staticmethod
    def HermiteCoefficients(*args):
        r"""

        Parameters
        ----------
        FirstParameter: float
        LastParameter: float
        FirstOrder: int
        LastOrder: int
        MatrixCoefs: math_Matrix

        Return
        -------
        bool

        Description
        -----------
        This build the coefficient of hermite's polynomes on [firstparameter, lastparameter] //! if j <= firstorder+1 then //! matrixcoefs[i, j] = ith coefficient of the polynome h0,j-1 //! else //! matrixcoefs[i, j] = ith coefficient of the polynome h1,k with k = j - firstorder - 2 //! return false if - |firstparameter| > 100 - |lastparameter| > 100 - |firstparameter| +|lastparameter| < 1/100 - |lastparameter - firstparameter| / (|firstparameter| +|lastparameter|) < 1/100.

        """
        return _PLib.plib_HermiteCoefficients(*args)

    @staticmethod
    def HermiteInterpolate(*args):
        r"""

        Parameters
        ----------
        Dimension: int
        FirstParameter: float
        LastParameter: float
        FirstOrder: int
        LastOrder: int
        FirstConstr: TColStd_Array2OfReal
        LastConstr: TColStd_Array2OfReal
        Coefficients: TColStd_Array1OfReal

        Return
        -------
        bool

        Description
        -----------
        Compute the coefficients in the canonical base of the polynomial satisfying the given constraints at the given parameters the array firstcontr(i,j) i=1,dimension j=0,firstorder contains the values of the constraint at parameter firstparameter idem for lastconstr.

        """
        return _PLib.plib_HermiteInterpolate(*args)

    @staticmethod
    def JacobiParameters(*args):
        r"""

        Parameters
        ----------
        ConstraintOrder: GeomAbs_Shape
        MaxDegree: int
        Code: int

        Return
        -------
        NbGaussPoints: int
        WorkDegree: int

        Description
        -----------
        Compute the number of points used for integral computations (nbgausspoints) and the degree of jacobi polynomial (workdegree). constraintorder has to be geomabs_c0, geomabs_c1 or geomabs_c2 code: code d' init. des parametres de discretisation. = -5 = -4 = -3 = -2 = -1 = 1 calcul rapide avec precision moyenne. = 2 calcul rapide avec meilleure precision. = 3 calcul un peu plus lent avec bonne precision. = 4 calcul lent avec la meilleure precision possible.

        """
        return _PLib.plib_JacobiParameters(*args)

    @staticmethod
    def NivConstr(*args):
        r"""

        Parameters
        ----------
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        int

        Description
        -----------
        Translates from geomabs_shape to integer.

        """
        return _PLib.plib_NivConstr(*args)

    @staticmethod
    def NoDerivativeEvalPolynomial(*args):
        r"""

        Parameters
        ----------
        U: float
        Degree: int
        Dimension: int
        DegreeDimension: int

        Return
        -------
        PolynomialCoeff: float
        Results: float

        Description
        -----------
        Same as above with derivativeorder = 0;.

        """
        return _PLib.plib_NoDerivativeEvalPolynomial(*args)

    @staticmethod
    def NoWeights(*args):
        r"""
        Return
        -------
        TColStd_Array1OfReal *

        Description
        -----------
        Used as argument for a non rational functions.

        """
        return _PLib.plib_NoWeights(*args)

    @staticmethod
    def NoWeights2(*args):
        r"""
        Return
        -------
        TColStd_Array2OfReal *

        Description
        -----------
        Used as argument for a non rational functions.

        """
        return _PLib.plib_NoWeights2(*args)

    @staticmethod
    def RationalDerivative(*args):
        r"""

        Parameters
        ----------
        Degree: int
        N: int
        Dimension: int
        All: bool (optional, default to Standard_True)

        Return
        -------
        Ders: float
        RDers: float

        Description
        -----------
        Computes the derivatives of a ratio at order <n> in dimension <dimension>. //! <ders> is an array containing the values of the input derivatives from 0 to min(<n>,<degree>). for orders higher than <degree> the inputcd /s2d1/bmdl/ derivatives are assumed to be 0. //! content of <ders>: //! x(1),x(2),...,x(dimension),w x'(1),x'(2),...,x'(dimension),w' x''(1),x''(2),...,x''(dimension),w'' //! if <all> is false, only the derivative at order <n> is computed. <rders> is an array of length dimension which will contain the result: //! x(1)/w , x(2)/w , ... derivated <n> times //! if <all> is true all the derivatives up to order <n> are computed. <rders> is an array of length dimension * (n+1) which will contains: //! x(1)/w , x(2)/w , ... x(1)/w , x(2)/w , ... derivated <1> times x(1)/w , x(2)/w , ... derivated <2> times ... x(1)/w , x(2)/w , ... derivated <n> times //! warning: <rders> must be dimensionned properly.

        """
        return _PLib.plib_RationalDerivative(*args)

    @staticmethod
    def RationalDerivatives(*args):
        r"""

        Parameters
        ----------
        DerivativesRequest: int
        Dimension: int

        Return
        -------
        PolesDerivatives: float
        WeightsDerivatives: float
        RationalDerivates: float

        Description
        -----------
        Computes derivativesrequest derivatives of a ratio at of a bspline function of degree <degree> dimension <dimension>. //! <polesderivatives> is an array containing the values of the input derivatives from 0 to <derivativerequest> for orders higher than <degree> the input derivatives are assumed to be 0. //! content of <poleasderivatives>: //! x(1),x(2),...,x(dimension) x'(1),x'(2),...,x'(dimension) x''(1),x''(2),...,x''(dimension) //! weightsderivatives is an array that contains derivatives from 0 to <derivativerequest> after returning from the routine the array rationalderivatives contains the following x(1)/w , x(2)/w , ... x(1)/w , x(2)/w , ... derivated once x(1)/w , x(2)/w , ... twice x(1)/w , x(2)/w , ... derivated <derivativerequest> times //! the array rationalderivatives and polesderivatives can be same since the overwrite is non destructive within the algorithm //! warning: <rationalderivates> must be dimensionned properly.

        """
        return _PLib.plib_RationalDerivatives(*args)

    @staticmethod
    def SetPoles(*args):
        r"""

        Parameters
        ----------
        Poles: TColgp_Array1OfPnt
        FP: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Copy in fp the coordinates of the poles.

        Parameters
        ----------
        Poles: TColgp_Array1OfPnt
        Weights: TColStd_Array1OfReal
        FP: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Copy in fp the coordinates of the poles.

        Parameters
        ----------
        Poles: TColgp_Array1OfPnt2d
        FP: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Copy in fp the coordinates of the poles.

        Parameters
        ----------
        Poles: TColgp_Array1OfPnt2d
        Weights: TColStd_Array1OfReal
        FP: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Copy in fp the coordinates of the poles.

        """
        return _PLib.plib_SetPoles(*args)

    @staticmethod
    def Trimming(*args):
        r"""

        Parameters
        ----------
        U1: float
        U2: float
        Coeffs: TColgp_Array1OfPnt
        WCoeffs: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        U1: float
        U2: float
        Coeffs: TColgp_Array1OfPnt2d
        WCoeffs: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        U1: float
        U2: float
        Coeffs: TColStd_Array1OfReal
        WCoeffs: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        U1: float
        U2: float
        dim: int
        Coeffs: TColStd_Array1OfReal
        WCoeffs: TColStd_Array1OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _PLib.plib_Trimming(*args)

    @staticmethod
    def UTrimming(*args):
        r"""

        Parameters
        ----------
        U1: float
        U2: float
        Coeffs: TColgp_Array2OfPnt
        WCoeffs: TColStd_Array2OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _PLib.plib_UTrimming(*args)

    @staticmethod
    def VTrimming(*args):
        r"""

        Parameters
        ----------
        V1: float
        V2: float
        Coeffs: TColgp_Array2OfPnt
        WCoeffs: TColStd_Array2OfReal *

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _PLib.plib_VTrimming(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _PLib.plib_swiginit(self, _PLib.new_plib())
    __swig_destroy__ = _PLib.delete_plib

# Register plib in _PLib:
_PLib.plib_swigregister(plib)
class PLib_Base(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 D0(self, *args):
        r"""

        Parameters
        ----------
        U: float
        BasisValue: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Compute the values of the basis functions in u.

        """
        return _PLib.PLib_Base_D0(self, *args)

    def D1(self, *args):
        r"""

        Parameters
        ----------
        U: float
        BasisValue: TColStd_Array1OfReal
        BasisD1: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Compute the values and the derivatives values of the basis functions in u.

        """
        return _PLib.PLib_Base_D1(self, *args)

    def D2(self, *args):
        r"""

        Parameters
        ----------
        U: float
        BasisValue: TColStd_Array1OfReal
        BasisD1: TColStd_Array1OfReal
        BasisD2: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Compute the values and the derivatives values of the basis functions in u.

        """
        return _PLib.PLib_Base_D2(self, *args)

    def D3(self, *args):
        r"""

        Parameters
        ----------
        U: float
        BasisValue: TColStd_Array1OfReal
        BasisD1: TColStd_Array1OfReal
        BasisD2: TColStd_Array1OfReal
        BasisD3: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Compute the values and the derivatives values of the basis functions in u.

        """
        return _PLib.PLib_Base_D3(self, *args)

    def ReduceDegree(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        MaxDegree: int
        Tol: float

        Return
        -------
        BaseCoeff: float
        NewDegree: int
        MaxError: float

        Description
        -----------
        Compute newdegree <= maxdegree so that maxerror is lower than tol. maxerror can be greater than tol if it is not possible to find a newdegree <= maxdegree. in this case newdegree = maxdegree.

        """
        return _PLib.PLib_Base_ReduceDegree(self, *args)

    def ToCoefficients(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        Degree: int
        CoeffinBase: TColStd_Array1OfReal
        Coefficients: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Convert the polynomial p(t) in the canonical base.

        """
        return _PLib.PLib_Base_ToCoefficients(self, *args)

    def WorkDegree(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns workdegree.

        """
        return _PLib.PLib_Base_WorkDegree(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _PLib.delete_PLib_Base

# Register PLib_Base in _PLib:
_PLib.PLib_Base_swigregister(PLib_Base)
class PLib_DoubleJacobiPolynomial(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"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        Parameters
        ----------
        JacPolU: PLib_JacobiPolynomial
        JacPolV: PLib_JacobiPolynomial

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _PLib.PLib_DoubleJacobiPolynomial_swiginit(self, _PLib.new_PLib_DoubleJacobiPolynomial(*args))

    def AverageError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        DegreeU: int
        DegreeV: int
        dJacCoeff: int
        JacCoeff: TColStd_Array1OfReal

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_AverageError(self, *args)

    def MaxError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        MinDegreeU: int
        MaxDegreeU: int
        MinDegreeV: int
        MaxDegreeV: int
        dJacCoeff: int
        JacCoeff: TColStd_Array1OfReal
        Error: float

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_MaxError(self, *args)

    def MaxErrorU(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        DegreeU: int
        DegreeV: int
        dJacCoeff: int
        JacCoeff: TColStd_Array1OfReal

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_MaxErrorU(self, *args)

    def MaxErrorV(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        DegreeU: int
        DegreeV: int
        dJacCoeff: int
        JacCoeff: TColStd_Array1OfReal

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_MaxErrorV(self, *args)

    def ReduceDegree(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        MinDegreeU: int
        MaxDegreeU: int
        MinDegreeV: int
        MaxDegreeV: int
        dJacCoeff: int
        JacCoeff: TColStd_Array1OfReal
        EpmsCut: float

        Return
        -------
        MaxError: float
        NewDegreeU: int
        NewDegreeV: int

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_ReduceDegree(self, *args)

    def TabMaxU(self, *args):
        r"""
        Return
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        Description
        -----------
        Returns mytabmaxu;.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_TabMaxU(self, *args)

    def TabMaxV(self, *args):
        r"""
        Return
        -------
        opencascade::handle<TColStd_HArray1OfReal>

        Description
        -----------
        Returns mytabmaxv;.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_TabMaxV(self, *args)

    def U(self, *args):
        r"""
        Return
        -------
        opencascade::handle<PLib_JacobiPolynomial>

        Description
        -----------
        Returns myjacpolu;.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_U(self, *args)

    def V(self, *args):
        r"""
        Return
        -------
        opencascade::handle<PLib_JacobiPolynomial>

        Description
        -----------
        Returns myjacpolv;.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_V(self, *args)

    def WDoubleJacobiToCoefficients(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        DegreeU: int
        DegreeV: int
        JacCoeff: TColStd_Array1OfReal
        Coefficients: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_DoubleJacobiPolynomial_WDoubleJacobiToCoefficients(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _PLib.delete_PLib_DoubleJacobiPolynomial

# Register PLib_DoubleJacobiPolynomial in _PLib:
_PLib.PLib_DoubleJacobiPolynomial_swigregister(PLib_DoubleJacobiPolynomial)
class PLib_HermitJacobi(PLib_Base):
    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"""

        Parameters
        ----------
        WorkDegree: int
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        None

        Description
        -----------
        Initialize the polynomial class degree has to be <= 30 constraintorder has to be geomabs_c0 geomabs_c1 geomabs_c2.

        """
        _PLib.PLib_HermitJacobi_swiginit(self, _PLib.new_PLib_HermitJacobi(*args))

    def AverageError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        NewDegree: int

        Return
        -------
        HermJacCoeff: float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_HermitJacobi_AverageError(self, *args)

    def MaxError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        NewDegree: int

        Return
        -------
        HermJacCoeff: float

        Description
        -----------
        This method computes the maximum error on the polynomial w(t) q(t) obtained by missing the coefficients of jaccoeff from newdegree +1 to degree.

        """
        return _PLib.PLib_HermitJacobi_MaxError(self, *args)

    def NivConstr(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns nivconstr.

        """
        return _PLib.PLib_HermitJacobi_NivConstr(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _PLib.delete_PLib_HermitJacobi

# Register PLib_HermitJacobi in _PLib:
_PLib.PLib_HermitJacobi_swigregister(PLib_HermitJacobi)
class PLib_JacobiPolynomial(PLib_Base):
    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"""

        Parameters
        ----------
        WorkDegree: int
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        None

        Description
        -----------
        Initialize the polynomial class degree has to be <= 30 constraintorder has to be geomabs_c0 geomabs_c1 geomabs_c2.

        """
        _PLib.PLib_JacobiPolynomial_swiginit(self, _PLib.new_PLib_JacobiPolynomial(*args))

    def AverageError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        NewDegree: int

        Return
        -------
        JacCoeff: float

        Description
        -----------
        No available documentation.

        """
        return _PLib.PLib_JacobiPolynomial_AverageError(self, *args)

    def MaxError(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        NewDegree: int

        Return
        -------
        JacCoeff: float

        Description
        -----------
        This method computes the maximum error on the polynomial w(t) q(t) obtained by missing the coefficients of jaccoeff from newdegree +1 to degree.

        """
        return _PLib.PLib_JacobiPolynomial_MaxError(self, *args)

    def MaxValue(self, *args):
        r"""

        Parameters
        ----------
        TabMax: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        This method loads for k=0,q the maximum value of abs ( w(t)*jk(t) )for t bellonging to [-1,1] this values are loaded is the array tabmax(0,myworkdegree-2*(mynivconst+1)) maxvalue ( me ; tabmaxpointer: in out real );.

        """
        return _PLib.PLib_JacobiPolynomial_MaxValue(self, *args)

    def NivConstr(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns nivconstr.

        """
        return _PLib.PLib_JacobiPolynomial_NivConstr(self, *args)

    def Points(self, *args):
        r"""

        Parameters
        ----------
        NbGaussPoints: int
        TabPoints: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the jacobi points for gauss integration ie the positive values of the legendre roots by increasing values nbgausspoints is the number of points chosen for the integral computation. tabpoints (0,nbgausspoints/2) tabpoints (0) is loaded only for the odd values of nbgausspoints the possible values for nbgausspoints are: 8, 10, 15, 20, 25, 30, 35, 40, 50, 61 nbgausspoints must be greater than degree.

        """
        return _PLib.PLib_JacobiPolynomial_Points(self, *args)

    def Weights(self, *args):
        r"""

        Parameters
        ----------
        NbGaussPoints: int
        TabWeights: TColStd_Array2OfReal

        Return
        -------
        None

        Description
        -----------
        Returns the jacobi weigths for gauss integration only for the positive values of the legendre roots in the order they are given by the method points nbgausspoints is the number of points chosen for the integral computation. tabweights (0,nbgausspoints/2,0,degree) tabweights (0,.) are only loaded for the odd values of nbgausspoints the possible values for nbgausspoints are: 8 , 10 , 15 ,20 ,25 , 30, 35 , 40 , 50 , 61 nbgausspoints must be greater than degree.

        """
        return _PLib.PLib_JacobiPolynomial_Weights(self, *args)


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


    __repr__ = _dumps_object

    __swig_destroy__ = _PLib.delete_PLib_JacobiPolynomial

# Register PLib_JacobiPolynomial in _PLib:
_PLib.PLib_JacobiPolynomial_swigregister(PLib_JacobiPolynomial)



@deprecated
def plib_Bin(*args):
	return plib.Bin(*args)

@deprecated
def plib_CoefficientsPoles(*args):
	return plib.CoefficientsPoles(*args)

@deprecated
def plib_CoefficientsPoles(*args):
	return plib.CoefficientsPoles(*args)

@deprecated
def plib_CoefficientsPoles(*args):
	return plib.CoefficientsPoles(*args)

@deprecated
def plib_CoefficientsPoles(*args):
	return plib.CoefficientsPoles(*args)

@deprecated
def plib_CoefficientsPoles(*args):
	return plib.CoefficientsPoles(*args)

@deprecated
def plib_ConstraintOrder(*args):
	return plib.ConstraintOrder(*args)

@deprecated
def plib_EvalCubicHermite(*args):
	return plib.EvalCubicHermite(*args)

@deprecated
def plib_EvalLagrange(*args):
	return plib.EvalLagrange(*args)

@deprecated
def plib_EvalLength(*args):
	return plib.EvalLength(*args)

@deprecated
def plib_EvalLength(*args):
	return plib.EvalLength(*args)

@deprecated
def plib_EvalPoly2Var(*args):
	return plib.EvalPoly2Var(*args)

@deprecated
def plib_EvalPolynomial(*args):
	return plib.EvalPolynomial(*args)

@deprecated
def plib_GetPoles(*args):
	return plib.GetPoles(*args)

@deprecated
def plib_GetPoles(*args):
	return plib.GetPoles(*args)

@deprecated
def plib_GetPoles(*args):
	return plib.GetPoles(*args)

@deprecated
def plib_GetPoles(*args):
	return plib.GetPoles(*args)

@deprecated
def plib_HermiteCoefficients(*args):
	return plib.HermiteCoefficients(*args)

@deprecated
def plib_HermiteInterpolate(*args):
	return plib.HermiteInterpolate(*args)

@deprecated
def plib_JacobiParameters(*args):
	return plib.JacobiParameters(*args)

@deprecated
def plib_NivConstr(*args):
	return plib.NivConstr(*args)

@deprecated
def plib_NoDerivativeEvalPolynomial(*args):
	return plib.NoDerivativeEvalPolynomial(*args)

@deprecated
def plib_NoWeights(*args):
	return plib.NoWeights(*args)

@deprecated
def plib_NoWeights2(*args):
	return plib.NoWeights2(*args)

@deprecated
def plib_RationalDerivative(*args):
	return plib.RationalDerivative(*args)

@deprecated
def plib_RationalDerivatives(*args):
	return plib.RationalDerivatives(*args)

@deprecated
def plib_SetPoles(*args):
	return plib.SetPoles(*args)

@deprecated
def plib_SetPoles(*args):
	return plib.SetPoles(*args)

@deprecated
def plib_SetPoles(*args):
	return plib.SetPoles(*args)

@deprecated
def plib_SetPoles(*args):
	return plib.SetPoles(*args)

@deprecated
def plib_Trimming(*args):
	return plib.Trimming(*args)

@deprecated
def plib_Trimming(*args):
	return plib.Trimming(*args)

@deprecated
def plib_Trimming(*args):
	return plib.Trimming(*args)

@deprecated
def plib_Trimming(*args):
	return plib.Trimming(*args)

@deprecated
def plib_UTrimming(*args):
	return plib.UTrimming(*args)

@deprecated
def plib_VTrimming(*args):
	return plib.VTrimming(*args)



