ardour
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libs
pbd
ffs.cc
Go to the documentation of this file.
1
/*
2
Copyright (C) 2013 Tim Mayberry
3
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; either version 2 of the License, or
7
(at your option) any later version.
8
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
13
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18
*/
19
20
#include "
pbd/ffs.h
"
21
22
#ifndef COMPILER_MSVC
23
#include <strings.h>
24
#endif
25
26
namespace
PBD
{
27
int
28
ffs
(
int
x)
29
{
30
#if defined (COMPILER_MINGW)
31
return
__builtin_ffs(x);
32
#elif defined (COMPILER_MSVC)
33
unsigned
long
index;
34
#ifdef WIN64
35
if
(0 != _BitScanForward64(&index, (__int64)x))
36
#else
37
if
(0 != _BitScanForward(&index, (
unsigned
long
)x))
38
#endif
39
index++;
// Make the result 1-based
40
else
41
index = 0;
// All bits were zero
42
43
return
(
int
)index;
44
#else
45
return ::ffs
(x);
46
#endif
47
}
48
49
}
PBD::ffs
int ffs(int x)
Definition:
ffs.cc:28
PBD
Definition:
debug.h:30
ffs.h
Generated on Sun May 24 2015 12:15:08 for ardour by
1.8.8