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

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*)
    int DMLabelGetNonEmptyStratumValuesIS(PetscDMLabel, PetscIS*)
