(svn r11674) -Codechange: refactor some functions out of macros.h into more logical locations.
This commit is contained in:
@@ -276,4 +276,19 @@ template<typename T> static inline T ROR(const T x, const uint8 n)
|
||||
return (T)(x >> n | x << (sizeof(x) * 8 - n));
|
||||
}
|
||||
|
||||
/**
|
||||
* Do an operation for each set set bit in a value.
|
||||
*
|
||||
* This macros is used to do an operation for each set
|
||||
* bit in a variable. The first variable can be reused
|
||||
* in the operation due to it's the bit position counter.
|
||||
* The second variable will be cleared during the usage
|
||||
*
|
||||
* @param i The position counter
|
||||
* @param b The value which we check for set bits
|
||||
*/
|
||||
#define FOR_EACH_SET_BIT(i, b) \
|
||||
for (i = 0; b != 0; i++, b >>= 1) \
|
||||
if (b & 1)
|
||||
|
||||
#endif /* BITMATH_FUNC_HPP */
|
||||
|
22
src/core/endian_func.hpp
Normal file
22
src/core/endian_func.hpp
Normal file
@@ -0,0 +1,22 @@
|
||||
/* $Id$ */
|
||||
|
||||
/** @file endian_func.hpp */
|
||||
|
||||
#ifndef ENDIAN_FUNC_H
|
||||
#define ENDIAN_FUNC_H
|
||||
|
||||
static inline uint16 ReadLE16Aligned(const void *x)
|
||||
{
|
||||
return FROM_LE16(*(const uint16*)x);
|
||||
}
|
||||
|
||||
static inline uint16 ReadLE16Unaligned(const void *x)
|
||||
{
|
||||
#ifdef OTTD_ALIGNMENT
|
||||
return ((const byte*)x)[0] | ((const byte*)x)[1] << 8;
|
||||
#else
|
||||
return FROM_LE16(*(const uint16*)x);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* ENDIAN_FUNC_H */
|
@@ -17,6 +17,12 @@
|
||||
#undef abs
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The largest value that can be entered in a variable
|
||||
* @param type the type of the variable
|
||||
*/
|
||||
#define MAX_UVALUE(type) ((type)~(type)0)
|
||||
|
||||
/**
|
||||
* Returns the maximum of two values.
|
||||
*
|
||||
|
@@ -5,6 +5,8 @@
|
||||
#ifndef OVERFLOWSAFE_TYPE_HPP
|
||||
#define OVERFLOWSAFE_TYPE_HPP
|
||||
|
||||
#include "math_func.hpp"
|
||||
|
||||
/**
|
||||
* Overflow safe template for integers, i.e. integers that will never overflow
|
||||
* you multiply the maximum value with 2, or add 2, or substract somethng from
|
||||
|
@@ -3,9 +3,9 @@
|
||||
/** @file random_func.cpp */
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include "../macros.h"
|
||||
#include "../variables.h"
|
||||
#include "random_func.hpp"
|
||||
#include "bitmath_func.hpp"
|
||||
|
||||
uint32 InteractiveRandom()
|
||||
{
|
||||
|
Reference in New Issue
Block a user