# --------------------------------------------------------------------

cdef extern from* nogil:

    int DMLabelCreate(MPI_Comm,char[],PetscDMLabel*)
    #int DMLabelView(PetscDMLabel,PetscViewer)
    #int DMLabelReset(PetscDMLabel)
    int DMLabelDestroy(PetscDMLabel*)
    #int DMLabelGetDefaultValue(PetscDMLabel,PetscInt*)
    #int DMLabelSetDefaultValue(PetscDMLabel,PetscInt)
    #int DMLabelDuplicate(PetscDMLabel,PetscDMLabel*)
    #int DMLabelGetValue(PetscDMLabel,PetscInt,PetscInt*)
    #int DMLabelSetValue(PetscDMLabel,PetscInt,PetscInt)
    #int DMLabelClearValue(PetscDMLabel,PetscInt,PetscInt)
    #int DMLabelAddStratum(PetscDMLabel,PetscInt)
    #int DMLabelAddStrata(PetscDMLabel,PetscInt,const PetscInt[])
    #int DMLabelAddStrataIS(PetscDMLabel,PetscIS)
    int DMLabelInsertIS(PetscDMLabel,PetscIS,PetscInt)
    #int DMLabelGetNumValues(PetscDMLabel,PetscInt*)
    #int DMLabelGetStratumBounds(PetscDMLabel,PetscInt,PetscInt*,PetscInt*)
    #int DMLabelGetValueIS(PetscDMLabel,PetscIS*)
    #int DMLabelStratumHasPoint(PetscDMLabel,PetscInt,PetscInt,PetscBool*)
    #int DMLabelHasStratum(PetscDMLabel,PetscInt,PetscBool*)
    #int DMLabelGetStratumSize(PetscDMLabel,PetscInt,PetscInt*)
    #int DMLabelGetStratumIS(PetscDMLabel,PetscInt,PetscIS*)
    #int DMLabelSetStratumIS(PetscDMLabel,PetscInt,PetscIS)
    #int DMLabelClearStratum(PetscDMLabel,PetscInt)

    #int DMLabelComputeIndex(PetscDMLabel)
    #int DMLabelCreateIndex(PetscDMLabel,PetscInt,PetscInt)
    #int DMLabelDestroyIndex(PetscDMLabel)
    #int DMLabelHasValue(PetscDMLabel,PetscInt,PetscBool*)
    #int DMLabelHasPoint(PetscDMLabel,PetscInt,PetscBool*)
    #int DMLabelGetBounds(PetscDMLabel,PetscInt*,PetscInt*)
    #int DMLabelFilter(PetscDMLabel,PetscInt,PetscInt)
    #int DMLabelPermute(PetscDMLabel,PetscIS,PetscDMLabel*)
    #int DMLabelDistribute(PetscDMLabel,PetscSF,PetscDMLabel*)
    #int DMLabelGather(PetscDMLabel,PetscSF,PetscDMLabel*)
    #int DMLabelConvertToSection(PetscDMLabel,PetscSection*,PetscIS*)
