1 ///@file Configuration for Inverse Dynamics Library without external dependencies
2 #ifndef INVDYNCONFIG_BUILTIN_HPP_
3 #define INVDYNCONFIG_BUILTIN_HPP_
4 #define btInverseDynamics btInverseDynamicsBuiltin
5 #ifdef BT_USE_DOUBLE_PRECISION
6 // choose double/single precision version
7 typedef double idScalar;
9 typedef float idScalar;
11 // use std::vector for arrays
13 // this is to make it work with C++2003, otherwise we could do this
14 // template <typename T>
15 // using idArray = std::vector<T>;
19 typedef std::vector<T> type;
21 typedef std::vector<int>::size_type idArrayIdx;
22 // default to standard malloc/free
24 #define idMalloc ::malloc
26 // currently not aligned at all...
27 #define ID_DECLARE_ALIGNED_ALLOCATOR() \
28 inline void* operator new(std::size_t sizeInBytes) { return idMalloc(sizeInBytes); } \
29 inline void operator delete(void* ptr) { idFree(ptr); } \
30 inline void* operator new(std::size_t, void* ptr) { return ptr; } \
31 inline void operator delete(void*, void*) {} \
32 inline void* operator new[](std::size_t sizeInBytes) { return idMalloc(sizeInBytes); } \
33 inline void operator delete[](void* ptr) { idFree(ptr); } \
34 inline void* operator new[](std::size_t, void* ptr) { return ptr; } \
35 inline void operator delete[](void*, void*) {}
37 #include "details/IDMatVec.hpp"