diff options
-rw-r--r-- | libs/pbd/msvc/msvc_pbd.cc | 21 | ||||
-rw-r--r-- | libs/pbd/pbd/msvc_pbd.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/libs/pbd/msvc/msvc_pbd.cc b/libs/pbd/msvc/msvc_pbd.cc index 5b9c9d449a..ddef968569 100644 --- a/libs/pbd/msvc/msvc_pbd.cc +++ b/libs/pbd/msvc/msvc_pbd.cc @@ -241,6 +241,27 @@ 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)); +} + namespace PBD { //*************************************************************** diff --git a/libs/pbd/pbd/msvc_pbd.h b/libs/pbd/pbd/msvc_pbd.h index a623ca2eb2..bee9b8b4a4 100644 --- a/libs/pbd/pbd/msvc_pbd.h +++ b/libs/pbd/pbd/msvc_pbd.h @@ -231,6 +231,7 @@ LIBPBD_API ssize_t PBD_APICALLTYPE pread(int handle, void *buf, size_t nbytes, 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 double PBD_APICALLTYPE round(double x); +LIBPBD_API double PBD_APICALLTYPE trunc(double x); namespace PBD { |