]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/include/boost/compute/type_traits/common_type.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / compute / include / boost / compute / type_traits / common_type.hpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
3 //
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
7 //
8 // See http://boostorg.github.com/compute for more information.
9 //---------------------------------------------------------------------------//
10
11 #ifndef BOOST_COMPUTE_TYPE_TRAITS_COMMON_TYPE_HPP
12 #define BOOST_COMPUTE_TYPE_TRAITS_COMMON_TYPE_HPP
13
14 #include <boost/type_traits/common_type.hpp>
15
16 #include <boost/compute/types/fundamental.hpp>
17
18 namespace boost {
19
20 /// \internal_
21 #define BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPE(scalar, size) \
22 template<> \
23 struct common_type<BOOST_COMPUTE_MAKE_VECTOR_TYPE(scalar, size), \
24 BOOST_COMPUTE_MAKE_SCALAR_TYPE(scalar)> \
25 { \
26 typedef BOOST_COMPUTE_MAKE_VECTOR_TYPE(scalar, size) type; \
27 }; \
28 template<> \
29 struct common_type<BOOST_COMPUTE_MAKE_SCALAR_TYPE(scalar), \
30 BOOST_COMPUTE_MAKE_VECTOR_TYPE(scalar, size)> \
31 { \
32 typedef BOOST_COMPUTE_MAKE_VECTOR_TYPE(scalar, size) type; \
33 };
34
35 /// \internal_
36 #define BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(scalar) \
37 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPE(scalar, 2) \
38 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPE(scalar, 4) \
39 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPE(scalar, 8) \
40 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPE(scalar, 16) \
41
42 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(char)
43 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(uchar)
44 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(short)
45 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(ushort)
46 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(int)
47 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(uint)
48 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(long)
49 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(ulong)
50 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(float)
51 BOOST_COMPUTE_DECLARE_SCALAR_VECTOR_COMMON_TYPES(double)
52
53 } // end boost namespace
54
55 #endif // BOOST_COMPUTE_TYPE_TRAITS_COMMON_TYPE_HPP