From: Martin Read Date: Wed, 9 Mar 2011 10:15:45 +0000 (+0000) Subject: Added "divup" (integer divide, rounding up) API to libmormegil X-Git-Tag: v1.0.0~15 X-Git-Url: http://git.blackswordsonics.com/?a=commitdiff_plain;h=2614c5ea69bb753235282400a1c779390176bb22;p=libmormegil Added "divup" (integer divide, rounding up) API to libmormegil --- diff --git a/include/libmormegil/divup.hh b/include/libmormegil/divup.hh new file mode 100644 index 0000000..207b159 --- /dev/null +++ b/include/libmormegil/divup.hh @@ -0,0 +1,44 @@ +// libmormegil/divup.hh +// +// Copyright 2010 Martin Read. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. Neither the name of the author nor the names of any other contributors +// may be used to endorse or promote products derived from this software +// without their specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +// SUCH DAMAGE. + +#ifndef libmormegil_divup_hh +#define libmormegil_divup_hh + +namespace libmormegil +{ + // TODO - use type traits to select an implementation. + // TODO - do we want overflow checking or is that fairly the user's + // problem? + template inline T divup(const T& i, const T& j) + { + return i + (j - 1) / j; + } +} +#endif // libmormegil_abs_hh + +// vim:ts=8:sw=4:expandtab:fo=c diff --git a/man/libmormegil::divup.3 b/man/libmormegil::divup.3 new file mode 100644 index 0000000..5d6fe05 --- /dev/null +++ b/man/libmormegil::divup.3 @@ -0,0 +1,20 @@ +.TH "LIBMORMEGIL::DIVUP" 3 "March 1, 2011" "libmormegil Version 1.0" "libmormegil User Manual" +.SH NAME +libmormegil::divup, \- divide and round up +.SH SYNOPSIS +#include + +template T libmormegil::divup(const T& i, const T& j); + +.SH DESCRIPTION +The \fIlibmormegil::divup\fP function returns the value of \fIi\fP divided +by \fIj\fP, rounded \fIup\fP (rather than down, as integer division behaves +by default). + +Its behaviour on floating-point types will not be as desired. + +.SH AUTHOR +Martin Read + +.SH SEE ALSO +libmormegil(3)