# -*- 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})"
}