# -*- shell-script -*- Telement="${T}" Tarray="${Telement}[]" Tparam="" Targ="" function T-array { elems="" for elem in "$@"; do elems="${elems:+${elems}, }${elem}" done if [ "${T}" = T ]; then echo "((${T}[])(new Object[] { ${elems} }))" else echo "(new ${T}[] { ${elems} })" fi } if [ "${T}" = boolean ]; then function cmp { echo "(($1) == ($2) ? 0 : ($1) ? 1 : -1)" } function greater { echo "($1) & !($2)" } function greater= { echo "($1) | !($2)" } function = { echo "($1) == ($2)" } function not= { echo "($1) ^ ($2)" } function less= { echo "!($1) | ($2)" } function less { echo "!($1) & ($2)" } elif [[ "${T}" = @(T|T+|T++) ]]; then if [ "${T}" = T ]; then Tparam=" " Targ=", Comparator comparator" function cmp { echo "comparator.compare($1, $2)" } function greater { echo "comparator.compare($1, $2) > 0" } function greater= { echo "comparator.compare($1, $2) >= 0" } function = { echo "comparator.compare($1, $2) == 0" } function not= { echo "comparator.compare($1, $2) != 0" } function less= { echo "comparator.compare($1, $2) <= 0" } function less { echo "comparator.compare($1, $2) < 0" } else if [ "${T}" = T++ ]; then Tparam=" " Targ="" Telement="Comparable" Tarray="${Telement}[]" else Tparam="> " Targ="" fi function cmp { echo "($1).compareTo($2)" } function greater { echo "($1).compareTo($2) > 0" } function greater= { echo "($1).compareTo($2) >= 0" } function = { echo "($1).compareTo($2) == 0" } function not= { echo "($1).compareTo($2) != 0" } function less= { echo "($1).compareTo($2) <= 0" } function less { echo "($1).compareTo($2) < 0" } T=T fi else if [ "${T}" = long ]; then function cmp { echo "(int)(($1) - ($2) | ($1) - ($2) >> 32L)" } elif [[ "${T}" = @(float|double) ]]; then function cmp { echo "(($1) < ($2) ? -1 : ($1) > ($2) ? 1 : 0)" } else function cmp { echo "(($1) - ($2))" } fi function greater { echo "($1) > ($2)" } function greater= { echo "($1) >= ($2)" } function = { echo "($1) == ($2)" } function not= { echo "($1) != ($2)" } function less= { echo "($1) <= ($2)" } function less { echo "($1) < ($2)" } fi function fun { echo "${Tparam}${1} ${2}(${3}${Targ})" }