[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / BulletInverseDynamics / IDConfigBuiltin.hpp
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