X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmisc.hh;h=174b2f4c01663be76fed63778e558d03cf708d6f;hb=8e2eaf4959bec63a1128a444591a540f4f1e2937;hp=511fc0545f8fd51ca377551b8fe47bb7aa0801e1;hpb=cb951038d3e74a85ec8539d0dc51260088251556;p=lilypond.git diff --git a/lily/include/misc.hh b/lily/include/misc.hh index 511fc0545f..174b2f4c01 100644 --- a/lily/include/misc.hh +++ b/lily/include/misc.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2012 Han-Wen Nienhuys + Copyright (C) 2005--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 @@ -27,7 +27,26 @@ using namespace std; #include "interval.hh" double log_2 (double x); -int intlog2 (int d); + +/* + Return the 2-log, rounded down +*/ +template +int +intlog2 (T d) +{ + if (d <= 0) + error ("intlog2 with negative argument: " + ::to_string (d)); + int i = 0; + while ((d != 1)) + { + d /= 2; + i++; + } + + assert (! (d / 2)); + return i; +} inline int sign (int i) @@ -61,10 +80,9 @@ normalize (Real x, Real x1, Real x2) Real directed_round (Real f, Direction d); -Offset get_point_in_y_direction (Offset orig, Real slope, Real dist, Direction dir); Real peak_around (Real epsilon, Real threshold, Real x); Real convex_amplifier (Real standard_x, Real increase_factor, Real x); -string camel_case_to_lisp_identifier (string in); +string camel_case_to_lisp_identifier (const string &in); #endif