X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fcompare.hh;h=0b398aa18c86e441166e9c4439cbefdefd9907dc;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=328783c2e6c8d7cce602d9931506e85fedfb4b81;hpb=fc3e875d6bf06f0680e897faffdcab36ad975a03;p=lilypond.git diff --git a/flower/include/compare.hh b/flower/include/compare.hh index 328783c2e6..0b398aa18c 100644 --- a/flower/include/compare.hh +++ b/flower/include/compare.hh @@ -1,55 +1,50 @@ /* - flowerlib + This file is part of LilyPond, the GNU music typesetter. - (c) 1996 Han-Wen Nienhuys - */ + Copyright (C) 1996--2015 Han-Wen Nienhuys + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ #ifndef COMPARE_HH #define COMPARE_HH -#define ONE_OPERATOR(type, function, op) \ -inline bool \ -operator op (type t1, type t2) {\ - return function (t1, t2) op 0;\ -}\ - -#define GPP_MINMAX_OPERATOR(type, op, opp) \ -inline type \ -operator op (type t1, type t2)\ -{\ - return (t1 opp t2) ? t1 : t2;\ -}\ - - -#if defined (__GNUG__) && ! defined (__STRICT_ANSI__) -#define GPP_MINMAX(type, prefix)\ - prefix GPP_MINMAX_OPERATOR (type, ?, >) -#else -#define GPP_MINMAX(type, prefix) -#endif +#define ONE_OPERATOR(type, function, op) \ + inline bool \ + operator op (type t1, type t2) \ + { \ + return function (t1, t2) op 0; \ + } + +/** handy notations for a signed comparison. + make the operators{<,<=,==,>=,>} and the MAX and MIN of two. + Please fill a & in the type argument if necessary. +*/ +#define TEMPLATE_INSTANTIATE_COMPARE(type, function, prefix) \ + prefix ONE_OPERATOR (type, function, >) \ + prefix ONE_OPERATOR (type, function, >=) \ + prefix ONE_OPERATOR (type, function, ==) \ + prefix ONE_OPERATOR (type, function, !=) \ + prefix ONE_OPERATOR (type, function, <) \ + prefix ONE_OPERATOR (type, function, <=) \ + /* namespace std { */ \ + prefix inline type max (type t1, type t2) { return (t1 > t2) ? t1 : t2; } \ + prefix inline type min (type t1, type t2) { return (t1 < t2) ? t1 : t2; } \ + /* } */ \ + /* stupid fix to allow ; */ \ + prefix bool operator < (type t1, type t2) + +#define INSTANTIATE_COMPARE(type, func) TEMPLATE_INSTANTIATE_COMPARE (type, func,) -/** handy notations for a signed comparison. - make the operators{<,<=,==,>=,>} and the MAX and MIN of two. - Please fill a & in the type argument if necessary. - */ -#define TEMPLATE_INSTANTIATE_COMPARE(type, function, prefix) \ -prefix ONE_OPERATOR (type, function, >)\ -prefix ONE_OPERATOR (type, function, >=)\ -prefix ONE_OPERATOR (type, function, ==)\ -prefix ONE_OPERATOR (type, function, !=)\ -prefix ONE_OPERATOR (type, function, <)\ -prefix ONE_OPERATOR (type, function, <=)\ -GPP_MINMAX (type, prefix)\ -prefix inline type max (type t1, type t2) { return (t1 > t2)? t1 : t2; }\ -prefix inline type min (type t1, type t2) { return (t1 < t2)? t1 : t2; }\ - \ -prefix bool operator< (type t1, type t2) /* stupid fix to allow ; */ - - - -#define INSTANTIATE_COMPARE(type, func) TEMPLATE_INSTANTIATE_COMPARE (type,func,) - - - #endif - +