]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/qvm/vec_traits_array.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / qvm / vec_traits_array.hpp
index 78c1333a67caf2c2e837be030a81df91310d61c4..218d0dba57361aeaa201e72d61ec2a91a49db3e4 100644 (file)
-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.\r
-\r
-//Distributed under the Boost Software License, Version 1.0. (See accompanying\r
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
-\r
-#ifndef UUID_DEC6035EA1C211DEA5E8ECB856D89593\r
-#define UUID_DEC6035EA1C211DEA5E8ECB856D89593\r
-\r
-#include <boost/qvm/inline.hpp>\r
-#include <boost/qvm/deduce_vec.hpp>\r
-#include <boost/qvm/detail/remove_const.hpp>\r
-#include <boost/qvm/assert.hpp>\r
-\r
-namespace\r
-boost\r
-    {\r
-    namespace\r
-    qvm\r
-        {\r
-        template <class T,int M,int N>\r
-        struct\r
-        vec_traits<T[M][N]>\r
-            {\r
-            static int const dim=0;\r
-            typedef void scalar_type;\r
-            };\r
-\r
-        template <class T,int Dim>\r
-        struct\r
-        vec_traits<T[Dim]>\r
-            {\r
-            typedef T this_vector[Dim];\r
-            typedef typename qvm_detail::remove_const<T>::type scalar_type;\r
-            static int const dim=Dim;\r
-\r
-            template <int I>\r
-            static\r
-            BOOST_QVM_INLINE_CRITICAL\r
-            scalar_type\r
-            read_element( this_vector const & x )\r
-                {\r
-                BOOST_QVM_STATIC_ASSERT(I>=0);\r
-                BOOST_QVM_STATIC_ASSERT(I<Dim);\r
-                return x[I];\r
-                }\r
-\r
-            template <int I>\r
-            static\r
-            BOOST_QVM_INLINE_CRITICAL\r
-            scalar_type &\r
-            write_element( this_vector & x )\r
-                {\r
-                BOOST_QVM_STATIC_ASSERT(I>=0);\r
-                BOOST_QVM_STATIC_ASSERT(I<Dim);\r
-                return x[I];\r
-                }\r
-\r
-            static\r
-            BOOST_QVM_INLINE_CRITICAL\r
-            scalar_type\r
-            read_element_idx( int i, this_vector const & x )\r
-                {\r
-                BOOST_QVM_ASSERT(i>=0);\r
-                BOOST_QVM_ASSERT(i<Dim);\r
-                return x[i];\r
-                }\r
-\r
-            static\r
-            BOOST_QVM_INLINE_CRITICAL\r
-            scalar_type &\r
-            write_element_idx( int i, this_vector & x )\r
-                {\r
-                BOOST_QVM_ASSERT(i>=0);\r
-                BOOST_QVM_ASSERT(i<Dim);\r
-                return x[i];\r
-                }\r
-            };\r
-\r
-        template <class T,int Dim,int D>\r
-        struct\r
-        deduce_vec<T[Dim],D>\r
-            {\r
-            typedef vec<T,D> type;\r
-            };\r
-\r
-        template <class T,int Dim,int D>\r
-        struct\r
-        deduce_vec<T const[Dim],D>\r
-            {\r
-            typedef vec<T,D> type;\r
-            };\r
-\r
-        template <class T1,class T2,int Dim,int D>\r
-        struct\r
-        deduce_vec2<T1[Dim],T2[Dim],D>\r
-            {\r
-            typedef vec<typename deduce_scalar<T1,T2>::type,D> type;\r
-            };\r
-\r
-        template <int Dim,class T>\r
-        T (&ptr_vref( T * ptr ))[Dim]\r
-            {\r
-            return *reinterpret_cast<T (*)[Dim]>(ptr);\r
-            }\r
-        }\r
-    }\r
-\r
-#endif\r
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_DEC6035EA1C211DEA5E8ECB856D89593
+#define UUID_DEC6035EA1C211DEA5E8ECB856D89593
+
+#include <boost/qvm/inline.hpp>
+#include <boost/qvm/deduce_vec.hpp>
+#include <boost/qvm/detail/remove_const.hpp>
+#include <boost/qvm/assert.hpp>
+
+namespace
+boost
+    {
+    namespace
+    qvm
+        {
+        template <class T,int M,int N>
+        struct
+        vec_traits<T[M][N]>
+            {
+            static int const dim=0;
+            typedef void scalar_type;
+            };
+
+        template <class T,int Dim>
+        struct
+        vec_traits<T[Dim]>
+            {
+            typedef T this_vector[Dim];
+            typedef typename qvm_detail::remove_const<T>::type scalar_type;
+            static int const dim=Dim;
+
+            template <int I>
+            static
+            BOOST_QVM_INLINE_CRITICAL
+            scalar_type
+            read_element( this_vector const & x )
+                {
+                BOOST_QVM_STATIC_ASSERT(I>=0);
+                BOOST_QVM_STATIC_ASSERT(I<Dim);
+                return x[I];
+                }
+
+            template <int I>
+            static
+            BOOST_QVM_INLINE_CRITICAL
+            scalar_type &
+            write_element( this_vector & x )
+                {
+                BOOST_QVM_STATIC_ASSERT(I>=0);
+                BOOST_QVM_STATIC_ASSERT(I<Dim);
+                return x[I];
+                }
+
+            static
+            BOOST_QVM_INLINE_CRITICAL
+            scalar_type
+            read_element_idx( int i, this_vector const & x )
+                {
+                BOOST_QVM_ASSERT(i>=0);
+                BOOST_QVM_ASSERT(i<Dim);
+                return x[i];
+                }
+
+            static
+            BOOST_QVM_INLINE_CRITICAL
+            scalar_type &
+            write_element_idx( int i, this_vector & x )
+                {
+                BOOST_QVM_ASSERT(i>=0);
+                BOOST_QVM_ASSERT(i<Dim);
+                return x[i];
+                }
+            };
+
+        template <class T,int Dim,int D>
+        struct
+        deduce_vec<T[Dim],D>
+            {
+            typedef vec<T,D> type;
+            };
+
+        template <class T,int Dim,int D>
+        struct
+        deduce_vec<T const[Dim],D>
+            {
+            typedef vec<T,D> type;
+            };
+
+        template <class T1,class T2,int Dim,int D>
+        struct
+        deduce_vec2<T1[Dim],T2[Dim],D>
+            {
+            typedef vec<typename deduce_scalar<T1,T2>::type,D> type;
+            };
+
+        template <int Dim,class T>
+        T (&ptr_vref( T * ptr ))[Dim]
+            {
+            return *reinterpret_cast<T (*)[Dim]>(ptr);
+            }
+        }
+    }
+
+#endif