From 8e2d1c7f2a099df5701a605ec884e786dcedae8b Mon Sep 17 00:00:00 2001 From: John Emmas Date: Fri, 19 Aug 2016 12:56:34 +0100 Subject: [PATCH] Move 'round()' / 'trunc()' etc so that they won't conflict with any versions already available in MSVC --- libs/pbd/msvc/msvc_pbd.cc | 114 +++++++++++----------- libs/pbd/pbd/msvc_pbd.h | 6 +- msvc_extra_headers/ardourext/misc.h.input | 6 +- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/libs/pbd/msvc/msvc_pbd.cc b/libs/pbd/msvc/msvc_pbd.cc index 68596e3463..20065fff26 100644 --- a/libs/pbd/msvc/msvc_pbd.cc +++ b/libs/pbd/msvc/msvc_pbd.cc @@ -223,63 +223,6 @@ ssize_t ret; return (ret); } -//*************************************************************** -// -// roundf() -// -// Emulates roundf() using floorf(). -// -// Returns: -// -// On Success: The largest integer that is less than or -// equal to 'x'. -// On Failure: None -// -LIBPBD_API float PBD_APICALLTYPE -roundf(float x) -{ - return (floorf(x)); -} - -//*************************************************************** -// -// round() -// -// Emulates round() using floor(). -// -// Returns: -// -// On Success: The largest integer that is less than or -// equal to 'x'. -// On Failure: None -// -LIBPBD_API double PBD_APICALLTYPE -round(double x) -{ - return (floor(x)); -} - -//*************************************************************** -// -// trunc() -// -// Emulates trunc() using floor() and ceil(). -// -// Returns: -// -// On Success: The largest integer whose magnitude is less -// than or equal to 'x' (regardless of sign). -// On Failure: None -// -LIBPBD_API double PBD_APICALLTYPE -trunc(double x) -{ - if (x < 0) - return (ceil(x)); - - return (floor(x)); -} - #if defined(_MSC_VER) && (_MSC_VER < 1800) //*************************************************************** // @@ -318,6 +261,42 @@ log1p(double x) { return (log(x + (double)1.0)); } + +//*************************************************************** +// +// roundf() +// +// Emulates roundf() using floorf(). +// +// Returns: +// +// On Success: The largest integer that is less than or +// equal to 'x'. +// On Failure: None +// +LIBPBD_API float PBD_APICALLTYPE +roundf(float x) +{ + return (floorf(x)); +} + +//*************************************************************** +// +// round() +// +// Emulates round() using floor(). +// +// Returns: +// +// On Success: The largest integer that is less than or +// equal to 'x'. +// On Failure: None +// +LIBPBD_API double PBD_APICALLTYPE +round(double x) +{ + return (floor(x)); +} #endif #if defined(_MSC_VER) && (_MSC_VER < 1900) @@ -339,6 +318,27 @@ log2(double x) { return (log(x) / log((double)2.0)); } + +//*************************************************************** +// +// trunc() +// +// Emulates trunc() using floor() and ceil(). +// +// Returns: +// +// On Success: The largest integer whose magnitude is less +// than or equal to 'x' (regardless of sign). +// On Failure: None +// +LIBPBD_API double PBD_APICALLTYPE +trunc(double x) +{ + if (x < 0) + return (ceil(x)); + + return (floor(x)); +} #endif namespace PBD { diff --git a/libs/pbd/pbd/msvc_pbd.h b/libs/pbd/pbd/msvc_pbd.h index 1a017fcb8a..9a3c102662 100644 --- a/libs/pbd/pbd/msvc_pbd.h +++ b/libs/pbd/pbd/msvc_pbd.h @@ -230,17 +230,17 @@ LIBPBD_API int __cdecl gettimeofday(struct timeval *__restrict tv, __ LIBPBD_API ssize_t PBD_APICALLTYPE pread(int handle, void *buf, size_t nbytes, off_t offset); LIBPBD_API ssize_t PBD_APICALLTYPE pwrite(int handle, const void *buf, size_t nbytes, off_t offset); LIBPBD_API int PBD_APICALLTYPE poll(struct pollfd *fds, nfds_t nfds, int timeout); -LIBPBD_API float PBD_APICALLTYPE roundf(float x); -LIBPBD_API double PBD_APICALLTYPE round(double x); -LIBPBD_API double PBD_APICALLTYPE trunc(double x); #if defined(_MSC_VER) && (_MSC_VER < 1800) LIBPBD_API double PBD_APICALLTYPE expm1(double x); LIBPBD_API double PBD_APICALLTYPE log1p(double x); +LIBPBD_API double PBD_APICALLTYPE round(double x); +LIBPBD_API float PBD_APICALLTYPE roundf(float x); #endif #if defined(_MSC_VER) && (_MSC_VER < 1900) LIBPBD_API double PBD_APICALLTYPE log2 (double x); +LIBPBD_API double PBD_APICALLTYPE trunc(double x); #endif namespace PBD { diff --git a/msvc_extra_headers/ardourext/misc.h.input b/msvc_extra_headers/ardourext/misc.h.input index 6b6533b510..47cff56295 100644 --- a/msvc_extra_headers/ardourext/misc.h.input +++ b/msvc_extra_headers/ardourext/misc.h.input @@ -252,17 +252,17 @@ inline int64_t abs(int64_t val) throw() #endif #if !defined(LIBPBD_API) || defined(PBD_IS_IN_WIN_STATIC_LIB) -extern double round(double x); -extern float roundf(float x); - // Emulate some C99 math functions which MSVC itself didn't // implement until later in life. #if defined(_MSC_VER) && (_MSC_VER < 1800) extern double expm1(double x); extern double log1p(double x); +extern double round(double x); +extern float roundf(float x); #endif #if defined(_MSC_VER) && (_MSC_VER < 1900) extern double log2 (double x); +extern double trunc(double x); #endif #endif