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;
8 #else
9 typedef float idScalar;
10 #endif
11 // use std::vector for arrays
12 #include <vector>
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>;
16 template <typename T>
17 struct idArray
18 {
19 	typedef std::vector<T> type;
20 };
21 typedef std::vector<int>::size_type idArrayIdx;
22 // default to standard malloc/free
23 #include <cstdlib>
24 #define idMalloc ::malloc
25 #define idFree ::free
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*) {}
36 
37 #include "details/IDMatVec.hpp"
38 #endif
39