##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Support des fonctions uprovided(), uprovide() et urequire() de ulib dans le
## cas où cette librairie n'est pas chargée
##@cooked nocomments
# Ce fichier ne doit pas être sourcé, mais inclus avec uinc
if [ -z "$ULIBDIR" -o "$ULIBDIR" != "$ULIBINIT" ]; then
    ULIBPROVIDED=()
    function uprovided() {
        local module
        for module in "${ULIBPROVIDED[@]}"; do
            [ "$module" == "$1" ] && return 0
        done
        return 1
    }
    function uprovide() {
        uprovided "$1" && return 1
        ULIBPROVIDED=("${ULIBPROVIDED[@]}" "$1")
    }
    function urequire() {
        # si ulib n'est pas disponible pour charger le module, on compte sur
        # l'utilisateur pour charger manuellement les librairies nécessaires.
        # retourner 1 si un module n'est pas disponible
        local module r=0
        for module in "$@"; do
            uprovided "$module" && continue
            echo "error: $module: this module is required but cannot be automatically loaded" 1>&2
            r=1
        done
        return $r
    }
    uprovide base.ulib
fi