]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/qvm/test/test_qvm_quaternion.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / qvm / test / test_qvm_quaternion.hpp
CommitLineData
b32b8144
FG
1//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.\r
2\r
3//Distributed under the Boost Software License, Version 1.0. (See accompanying\r
4//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5\r
6#ifndef UUID_EF9152E42E4711DFB699737156D89593\r
7#define UUID_EF9152E42E4711DFB699737156D89593\r
8\r
9#include <boost/qvm/quat_traits_defaults.hpp>\r
10#include <boost/qvm/deduce_quat.hpp>\r
11#include <boost/qvm/assert.hpp>\r
12#include "test_qvm.hpp"\r
13\r
14namespace\r
15test_qvm\r
16 {\r
17 template <class Tag,class T=float>\r
18 struct\r
19 quaternion\r
20 {\r
21 T a[4];\r
22 mutable T b[4];\r
23\r
24 explicit\r
25 quaternion( T start=T(0), T step=T(0) )\r
26 {\r
27 for( int i=0; i!=4; ++i,start+=step )\r
28 a[i]=b[i]=start;\r
29 }\r
30 };\r
31\r
32 template <class Tag1,class T1,class Tag2,class T2>\r
33 void\r
34 dump_ab( quaternion<Tag1,T1> const & a, quaternion<Tag2,T2> const & b )\r
35 {\r
36 detail::dump_ab(a.a,b.a);\r
37 }\r
38 }\r
39\r
40namespace\r
41boost\r
42 {\r
43 namespace\r
44 qvm\r
45 {\r
46 template <class Tag,class T>\r
47 struct\r
48 quat_traits< test_qvm::quaternion<Tag,T> >:\r
49 quat_traits_defaults<test_qvm::quaternion<Tag,T>,T>\r
50 {\r
51 typedef quat_traits_defaults<test_qvm::quaternion<Tag,T>,T> base;\r
52\r
53 template <int I>\r
54 static\r
55 typename base::scalar_type &\r
56 write_element( typename base::quat_type & m )\r
57 {\r
58 BOOST_QVM_STATIC_ASSERT(I>=0);\r
59 BOOST_QVM_STATIC_ASSERT(I<4);\r
60 return m.a[I];\r
61 }\r
62 };\r
63\r
64 template <class Tag,class T>\r
65 struct\r
66 deduce_quat2<test_qvm::quaternion<Tag,T>,test_qvm::quaternion<Tag,T> >\r
67 {\r
68 typedef test_qvm::quaternion<Tag,T> type;\r
69 };\r
70 }\r
71 }\r
72\r
73namespace\r
74 {\r
75 struct Q1;\r
76 struct Q2;\r
77 struct Q3;\r
78 }\r
79\r
80#endif\r