#if !defined(PETSC_USE_FORTRAN_MODULES)
#include "petsc/finclude/ftn-custom/petscdmdef.h90"
#endif
#include "petsc/finclude/ftn-custom/petscvechide.h90"
#include "petsc/finclude/ftn-custom/petscdmhide.h90"

      Interface DMCompositeGetEntries
        Subroutine DMCompositeGetEntries1(dm1, d1,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          DM_HIDE d1
          PetscErrorCode ierr
        End Subroutine

        Subroutine DMCompositeGetEntries2(dm1, d1,d2,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          DM_HIDE d1,d2
          PetscErrorCode ierr
        End Subroutine

        Subroutine DMCompositeGetEntries3(dm1, d1,d2,d3,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          DM_HIDE d1,d2,d3
          PetscErrorCode ierr
        End Subroutine

        Subroutine DMCompositeGetEntries4(dm1, d1,d2,d3,d4,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          PetscInt d2,d4
          DM_HIDE d1,d3
          PetscErrorCode ierr
        End Subroutine
      End Interface

      Interface DMCompositeGetAccess
        Subroutine DMCompositeGetAccessvpvp(dm1, v,d1,d2,d3,d4,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          VEC_HIDE v,d1,d3
          PetscScalar,pointer :: d2(:)
          PetscScalar,pointer :: d4(:)
          PetscErrorCode ierr
        End Subroutine
      End Interface

      Interface DMCompositeRestoreAccess
        Subroutine DMCompositeRestoreAccessvpvp(dm1, v,d1,d2,d3,d4,ierr)
          USE_DM_HIDE
          DM_HIDE dm1
          VEC_HIDE v,d1,d3
          PetscScalar,pointer :: d2(:)
          PetscScalar,pointer :: d4(:)
          PetscErrorCode ierr
        End Subroutine
      End Interface
