# -*- shell-script -*- # Copyright © 2014 Mattias Andrée (m@maandree.se) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . Telement="${T}" Tarray="${Telement}[]" Tparam="" Targ="" Targ_name="" 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" Targ_name=", 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=" " Telement="Comparable" Tarray="${Telement}[]" else Tparam="> " 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 if [[ "${T}" = @(boolean|char|byte|short|int|long|float|double) ]]; then function equal { echo "($1) == ($2)" } else function equal { echo "($1).equals($2)" } fi function fun { echo "${Tparam}${1} ${2}(${3}${Targ})" }