
# time ( x ip toint 192.168.{1..255}.{1..255} | x ip fromint - ) >/dev/null

___x_cmd_ip_fromint(){
    case "$1" in
        -h|--help)      ___x_cmd help -m ip fromint "$@" ;;
        -|--|--pipe)    ___x_cmd_ip_fromint_awk --pipe; return   ;;
    esac

    # TODO: consider using awk to acc

    local x_
    while [ $# -gt 0 ]; do
        ___x_cmd_ip_fromint_ "$1"
        printf "%s\n" "$x_"
        shift
    done
}

___x_cmd_ip_fromint_(){
    local no="$1"

    local res

    res="$(( no % 256 ))";  no="$(( no / 256 ))";   x_="$res"
    res="$(( no % 256 ))";  no="$(( no / 256 ))";   x_="$res.$x_"
    res="$(( no % 256 ))";  no="$(( no / 256 ))";   x_="$no.$res.$x_"
}

___x_cmd_ip_fromint_awk(){
    case "$1" in
        -h|--help)          ___x_cmd help -m ip fromint "$@" ;;

        -|--|--pipe)        ___x_cmd_cmds awk -v pipe=1             -f "$___X_CMD_ROOT_MOD/ip/lib/awk/ip_fromint.awk" ;;
        *)                  ___x_cmd_cmds awk -v s="$1" -v e="$2"   -f "$___X_CMD_ROOT_MOD/ip/lib/awk/ip_fromint.awk"
    esac
}

___x_cmd_ip_toint(){
    local x_

    case "$1" in
        -h|--help)      ___x_cmd help -m ip toint "$@" ;;
        -|--|--pipe)
            local ip
            while read -r ip; do
                ___x_cmd_ip_toint_ "$ip"
                printf "%s\n" "$x_"
            done
            return
        ;;
    esac

    while [ $# -gt 0 ]; do
        ___x_cmd_ip_toint_ "$1"
        printf "%s\n" "$x_"
        shift
    done
}

___x_cmd_ip_toint_(){
    local x1_
    local x2_
    local x3_
    local x4_

    ___x_cmd_ip_parse_ "$@"

    x_=$((  (  (    (
                        ( (x1_ << 8) + x2_ ) << 8
                    ) + x3_
                ) << 8
            ) + x4_
    ))
}

