  type, extends(tPetscObject) ::  tDMLabel
  end type tDMLabel
  DMLabel, parameter :: PETSC_NULL_DMLABEL = tDMLabel(0)
  DMLabel, target :: PETSC_NULL_DMLABEL_ARRAY(1) = [tDMLabel(0)]
  DMLabel, pointer :: PETSC_NULL_DMLABEL_POINTER(:) => PETSC_NULL_DMLABEL_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMLABEL
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMLABEL_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMLABEL_POINTER
#endif

  CHARACTER(LEN=*), PARAMETER :: DMLABELCONCRETE = 'concrete'
  CHARACTER(LEN=*), PARAMETER :: DMLABELEPHEMERAL = 'ephemeral'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMLABELCONCRETE
!DEC$ ATTRIBUTES DLLEXPORT::DMLABELEPHEMERAL
#endif

