aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp')
-rw-r--r--libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp b/libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp
new file mode 100644
index 0000000..29b6c57
--- /dev/null
+++ b/libraries/ode-0.9/OPCODE/Ice/IceUtils.cpp
@@ -0,0 +1,39 @@
1///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2/**
3 * Contains misc. useful macros & defines.
4 * \file IceUtils.cpp
5 * \author Pierre Terdiman (collected from various sources)
6 * \date April, 4, 2000
7 */
8///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
9
10///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11// Precompiled Header
12#include "Stdafx.h"
13
14using namespace IceCore;
15
16///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
17/**
18 * Returns the alignment of the input address.
19 * \fn Alignment()
20 * \param address [in] address to check
21 * \return the best alignment (e.g. 1 for odd addresses, etc)
22 */
23///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
24udword IceCore::Alignment(udword address)
25{
26 // Returns 0 for null addresses
27 if(!address) return 0;
28
29 // Test all bits
30 udword Align = 1;
31 for(udword i=1;i<32;i++)
32 {
33 // Returns as soon as the alignment is broken
34 if(address&Align) return Align;
35 Align<<=1;
36 }
37 // Here all bits are null, except the highest one (else the address would be null)
38 return Align;
39}