1 | /* |
2 | * vector_impl.hpp |
3 | * |
4 | * Created on: Mar 8, 2015 |
5 | * Author: Pietro Incardona |
6 | */ |
7 | |
8 | #ifndef VECTOR_IMPL_HPP_ |
9 | #define VECTOR_IMPL_HPP_ |
10 | |
11 | #include "util/common.hpp" |
12 | |
13 | #define STD_VECTOR 1 |
14 | #define OPENFPM_NATIVE 2 |
15 | |
16 | namespace openfpm |
17 | { |
18 | /*! \brief It analyze the type given and it select correctly the implementation |
19 | * for vector |
20 | * |
21 | * \tparam type to analyze |
22 | * |
23 | * [Example] |
24 | * |
25 | * vect_isel<T>::value |
26 | * |
27 | * will return 1 for std base implementation |
28 | * will return 2 for openfpm native implementation |
29 | * |
30 | * Basically the openfpm native implementation require that T |
31 | * has some specific structure, this class check for it, if T |
32 | * does not have this structure it fall to the case 1 |
33 | * |
34 | */ |
35 | template<typename T> |
36 | struct vect_isel |
37 | { |
38 | enum |
39 | { |
40 | value = is_typedef_and_data_same<has_typedef_type<T>::value && has_data<T>::value,T>::value + 1 |
41 | }; |
42 | }; |
43 | } |
44 | |
45 | |
46 | #endif /* VECTOR_IMPL_HPP_ */ |
47 | |