Adapt libs/pbd/ffs.cc to be buildable with MSVC

This commit is contained in:
John Emmas 2013-07-18 12:08:34 +01:00
parent 57e53d577b
commit 9d774969fc

View File

@ -19,14 +19,28 @@
#include "pbd/ffs.h"
#ifndef COMPILER_MSVC
#include <strings.h>
#endif
namespace PBD {
int
ffs (int x)
{
#if defined(WIN32) && defined(__GNUC__)
#if defined (COMPILER_MINGW)
return __builtin_ffs(x);
#elif defined (COMPILER_MSVC)
unsigned long index;
#ifdef WIN64
if (0 != _BitScanForward64(&index, (__int64)x))
#else
if (0 != _BitScanForward(&index, (unsigned long)x))
#endif
index++; // Make the result 1-based
else
index = 0; // All bits were zero
return (int)index;
#else
return ::ffs(x);
#endif