MathFu
An open source project by FPL.
 All Classes Namespaces Files Functions Variables Typedefs Friends Groups Pages
utilities.h File Reference

Utility macros and functions. More...

#include <assert.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <algorithm>
#include <memory>

Go to the source code of this file.

Detailed Description

Utility macros and functions.

Utilities

Classes

class  mathfu::simd_allocator< T >
 SIMD-safe memory allocator, for use with STL types like std::vector. More...
 
struct  mathfu::simd_allocator< T >::rebind< _Tp1 >
 Obtains an allocator of a different type. More...
 

Namespaces

 mathfu
 Namespace for MathFu library.
 

Macros

#define MATHFU_COMPILE_WITHOUT_SIMD_SUPPORT
 Disable SIMD build configuration. More...
 
#define MATHFU_COMPILE_FORCE_PADDING
 Enable / disable padding of data structures. More...
 
#define MATHFU_VERSION_MAJOR   1
 Major version number of the library. More...
 
#define MATHFU_VERSION_MINOR   1
 Minor version number of the library. More...
 
#define MATHFU_VERSION_REVISION   0
 Revision number of the library. More...
 
#define MATHFU_BUILD_OPTIONS_STRING   (MATHFU_BUILD_OPTIONS_SIMD " " MATHFU_BUILD_OPTIONS_PADDING)
 String that describes the library's build configuration.
 
#define MATHFU_STATIC_ASSERT(x)   static_assert_util<(x)>()
 Compile time assert for pre-C++11 compilers. More...
 
#define MATHFU_ALIGNMENT   16
 Alignment (in bytes) of memory allocated by AllocateAligned. More...
 
#define MATHFU_DEFINE_GLOBAL_SIMD_AWARE_NEW_DELETE
 Macro which overrides the default new and delete allocators. More...
 
#define MATHFU_DEFINE_CLASS_SIMD_AWARE_NEW_DELETE
 Macro which defines the new and delete for MathFu classes. More...
 

Functions

template<class T >
mathfu::Clamp (const T &x, const T &lower, const T &upper)
 Clamp x within [lower, upper]. More...
 
template<class T , class T2 >
mathfu::Lerp (const T &range_start, const T &range_end, const T2 &percent)
 Linearly interpolate between range_start and range_end, based on percent. More...
 
template<class T >
mathfu::Lerp (const T &range_start, const T &range_end, const T &percent)
 Linearly interpolate between range_start and range_end, based on percent. More...
 
template<class T >
bool mathfu::InRange (T val, T range_start, T range_end)
 Check if val is within [range_start..range_end). More...
 
template<class T >
mathfu::Random ()
 Generate a random value of type T. More...
 
template<class T >
mathfu::RandomRange (T range)
 Generate a random value of type T in the range -range...+range. More...
 
template<class T >
mathfu::RandomInRange (T range_start, T range_end)
 Generate a random number between [range_start, range_end]. More...
 
template<class T >
mathfu::RoundUpToPowerOf2 (T x)
 Round a value up to the nearest power of 2. More...
 
template<>
int32_t mathfu::RoundUpToPowerOf2 (int32_t x)
 Specialized version of RoundUpToPowerOf2 for int32_t.
 
template<typename T >
uint32_t mathfu::RoundUpToTypeBoundary (uint32_t v)
 Round a value up to the type's size boundary. More...
 
void * mathfu::AllocateAligned (size_t n)
 Allocate an aligned block of memory. More...
 
void mathfu::FreeAligned (void *p)
 Deallocate a block of memory allocated with AllocateAligned(). More...
 

Variables

volatile const char * kMathFuVersionString
 String which identifies the current version of MathFu. More...