X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fcompare.hh;h=929c19d81e5a0f5ad04bae4e59684c5484c5d602;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=03366b5244e94c8a4e4183cc03feb486e6fd8a69;hpb=2745cbd907f8216a4cc1fc5f488ae19efdfdbd10;p=lilypond.git diff --git a/flower/include/compare.hh b/flower/include/compare.hh index 03366b5244..929c19d81e 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--2003 Han-Wen Nienhuys - */ + Copyright (C) 1996--2014 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 - +