mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-11 06:34:36 +00:00
Engine directory for ticket #1
This commit is contained in:
parent
352279af7a
commit
7dbfe6994d
3795 changed files with 1363358 additions and 0 deletions
38
Engine/lib/opcode/Ice/IceUtils.cpp
Normal file
38
Engine/lib/opcode/Ice/IceUtils.cpp
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Contains misc. useful macros & defines.
|
||||
* \file IceUtils.cpp
|
||||
* \author Pierre Terdiman (collected from various sources)
|
||||
* \date April, 4, 2000
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "../Opcode.h"
|
||||
|
||||
using namespace IceCore;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Returns the alignment of the input address.
|
||||
* \fn Alignment()
|
||||
* \param address [in] address to check
|
||||
* \return the best alignment (e.g. 1 for odd addresses, etc)
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
udword IceCore::Alignment(udword address)
|
||||
{
|
||||
// Returns 0 for null addresses
|
||||
if(!address) return 0;
|
||||
|
||||
// Test all bits
|
||||
udword Align = 1;
|
||||
for(udword i=1;i<32;i++)
|
||||
{
|
||||
// Returns as soon as the alignment is broken
|
||||
if(address&Align) return Align;
|
||||
Align<<=1;
|
||||
}
|
||||
// Here all bits are null, except the highest one (else the address would be null)
|
||||
return Align;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue