  type, extends(tPetscObject) ::  tTaoLineSearch
  end type tTaoLineSearch
  TaoLineSearch, parameter :: PETSC_NULL_TAOLINESEARCH = tTaoLineSearch(0)
  TaoLineSearch, target :: PETSC_NULL_TAOLINESEARCH_ARRAY(1) = [tTaoLineSearch(0)]
  TaoLineSearch, pointer :: PETSC_NULL_TAOLINESEARCH_POINTER(:) => PETSC_NULL_TAOLINESEARCH_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_TAOLINESEARCH
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_TAOLINESEARCH_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_TAOLINESEARCH_POINTER
#endif

  type eTaoLineSearchConvergedReason
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eTaoLineSearchConvergedReason

  TaoLineSearchConvergedReason, parameter :: PETSC_NULL_TAOLINESEARCHCONVERGEDREASON = eTaoLineSearchConvergedReason(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_TAOLINESEARCHCONVERGEDREASON
#endif
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_FAILED_INFORNAN = eTaoLineSearchConvergedReason(-1)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_FAILED_BADPARAMETER = eTaoLineSearchConvergedReason(-2)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_FAILED_ASCENT = eTaoLineSearchConvergedReason(-3)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_CONTINUE_ITERATING = eTaoLineSearchConvergedReason(0)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_SUCCESS = eTaoLineSearchConvergedReason(1)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_SUCCESS_USER = eTaoLineSearchConvergedReason(2)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_OTHER = eTaoLineSearchConvergedReason(3)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_MAXFCN = eTaoLineSearchConvergedReason(4)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_UPPERBOUND = eTaoLineSearchConvergedReason(5)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_LOWERBOUND = eTaoLineSearchConvergedReason(6)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_RTOL = eTaoLineSearchConvergedReason(7)
    TaoLineSearchConvergedReason, parameter :: TAOLINESEARCH_HALTED_USER = eTaoLineSearchConvergedReason(8)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_FAILED_INFORNAN 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_FAILED_BADPARAMETER 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_FAILED_ASCENT 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_CONTINUE_ITERATING 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_SUCCESS 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_SUCCESS_USER 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_OTHER 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_MAXFCN 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_UPPERBOUND 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_LOWERBOUND 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_RTOL 
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCH_HALTED_USER 
#endif

  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHUNIT = 'unit'
  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHMT = 'more-thuente'
  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHGPCG = 'gpcg'
  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHARMIJO = 'armijo'
  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHOWARMIJO = 'owarmijo'
  CHARACTER(LEN=*), PARAMETER :: TAOLINESEARCHIPM = 'ipm'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHUNIT
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHMT
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHGPCG
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHARMIJO
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHOWARMIJO
!DEC$ ATTRIBUTES DLLEXPORT::TAOLINESEARCHIPM
#endif

