Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ode/ode-0.9/OPCODE/Ice/IceUtils.cpp @ 216

Last change on this file since 216 was 216, checked in by mathiask, 17 years ago

[Physik] add ode-0.9

File size: 1.7 KB
Line 
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}
Note: See TracBrowser for help on using the repository browser.