File indexing completed on 2025-01-18 09:50:45
0001 #ifndef BOOST_QVM_GEN_SWIZZLE2_HPP_INCLUDED
0002 #define BOOST_QVM_GEN_SWIZZLE2_HPP_INCLUDED
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <boost/qvm/config.hpp>
0012 #include <boost/qvm/detail/swizzle_traits.hpp>
0013 #include <boost/qvm/enable_if.hpp>
0014
0015 namespace boost { namespace qvm {
0016
0017 BOOST_QVM_INLINE_TRIVIAL
0018 qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > const &
0019 _11()
0020 {
0021 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > const *>(qvm_detail::get_null());
0022 }
0023 BOOST_QVM_INLINE_TRIVIAL
0024 qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > const &
0025 _01()
0026 {
0027 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > const *>(qvm_detail::get_null());
0028 }
0029 template <class V>
0030 BOOST_QVM_INLINE_TRIVIAL
0031 typename enable_if_c<
0032 is_vec<V>::value && vec_traits<V>::dim>=4,
0033 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > const &>::type
0034 W1( V const & a )
0035 {
0036 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0037 }
0038 template <class V>
0039 BOOST_QVM_INLINE_TRIVIAL
0040 typename enable_if_c<
0041 is_vec<V>::value && vec_traits<V>::dim>=4,
0042 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > &>::type
0043 W1( V & a )
0044 {
0045 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > &>(a);
0046 }
0047 template <class V>
0048 BOOST_QVM_INLINE_TRIVIAL
0049 typename enable_if_c<
0050 is_vec<V>::value && vec_traits<V>::dim>=3,
0051 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > const &>::type
0052 Z1( V const & a )
0053 {
0054 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0055 }
0056 template <class V>
0057 BOOST_QVM_INLINE_TRIVIAL
0058 typename enable_if_c<
0059 is_vec<V>::value && vec_traits<V>::dim>=3,
0060 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > &>::type
0061 Z1( V & a )
0062 {
0063 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > &>(a);
0064 }
0065 template <class V>
0066 BOOST_QVM_INLINE_TRIVIAL
0067 typename enable_if_c<
0068 is_vec<V>::value && vec_traits<V>::dim>=2,
0069 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > const &>::type
0070 Y1( V const & a )
0071 {
0072 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0073 }
0074 template <class V>
0075 BOOST_QVM_INLINE_TRIVIAL
0076 typename enable_if_c<
0077 is_vec<V>::value && vec_traits<V>::dim>=2,
0078 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > &>::type
0079 Y1( V & a )
0080 {
0081 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > &>(a);
0082 }
0083 template <class V>
0084 BOOST_QVM_INLINE_TRIVIAL
0085 typename enable_if_c<
0086 is_vec<V>::value && vec_traits<V>::dim>=1,
0087 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>::type
0088 X1( V const & a )
0089 {
0090 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0091 }
0092 template <class S>
0093 BOOST_QVM_INLINE_TRIVIAL
0094 typename enable_if_c<
0095 is_scalar<S>::value,
0096 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>::type
0097 X1( S const & a )
0098 {
0099 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0100 }
0101 template <class V>
0102 BOOST_QVM_INLINE_TRIVIAL
0103 typename enable_if_c<
0104 is_vec<V>::value && vec_traits<V>::dim>=1,
0105 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>::type
0106 X1( V & a )
0107 {
0108 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
0109 }
0110 template <class S>
0111 BOOST_QVM_INLINE_TRIVIAL
0112 typename enable_if_c<
0113 is_scalar<S>::value,
0114 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>::type
0115 X1( S & a )
0116 {
0117 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
0118 }
0119 BOOST_QVM_INLINE_TRIVIAL
0120 qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > const &
0121 _10()
0122 {
0123 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > const *>(qvm_detail::get_null());
0124 }
0125 BOOST_QVM_INLINE_TRIVIAL
0126 qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > const &
0127 _00()
0128 {
0129 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > const *>(qvm_detail::get_null());
0130 }
0131 template <class V>
0132 BOOST_QVM_INLINE_TRIVIAL
0133 typename enable_if_c<
0134 is_vec<V>::value && vec_traits<V>::dim>=4,
0135 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > const &>::type
0136 W0( V const & a )
0137 {
0138 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0139 }
0140 template <class V>
0141 BOOST_QVM_INLINE_TRIVIAL
0142 typename enable_if_c<
0143 is_vec<V>::value && vec_traits<V>::dim>=4,
0144 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > &>::type
0145 W0( V & a )
0146 {
0147 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > &>(a);
0148 }
0149 template <class V>
0150 BOOST_QVM_INLINE_TRIVIAL
0151 typename enable_if_c<
0152 is_vec<V>::value && vec_traits<V>::dim>=3,
0153 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > const &>::type
0154 Z0( V const & a )
0155 {
0156 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0157 }
0158 template <class V>
0159 BOOST_QVM_INLINE_TRIVIAL
0160 typename enable_if_c<
0161 is_vec<V>::value && vec_traits<V>::dim>=3,
0162 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > &>::type
0163 Z0( V & a )
0164 {
0165 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > &>(a);
0166 }
0167 template <class V>
0168 BOOST_QVM_INLINE_TRIVIAL
0169 typename enable_if_c<
0170 is_vec<V>::value && vec_traits<V>::dim>=2,
0171 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > const &>::type
0172 Y0( V const & a )
0173 {
0174 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0175 }
0176 template <class V>
0177 BOOST_QVM_INLINE_TRIVIAL
0178 typename enable_if_c<
0179 is_vec<V>::value && vec_traits<V>::dim>=2,
0180 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > &>::type
0181 Y0( V & a )
0182 {
0183 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > &>(a);
0184 }
0185 template <class V>
0186 BOOST_QVM_INLINE_TRIVIAL
0187 typename enable_if_c<
0188 is_vec<V>::value && vec_traits<V>::dim>=1,
0189 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>::type
0190 X0( V const & a )
0191 {
0192 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0193 }
0194 template <class S>
0195 BOOST_QVM_INLINE_TRIVIAL
0196 typename enable_if_c<
0197 is_scalar<S>::value,
0198 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>::type
0199 X0( S const & a )
0200 {
0201 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0202 }
0203 template <class V>
0204 BOOST_QVM_INLINE_TRIVIAL
0205 typename enable_if_c<
0206 is_vec<V>::value && vec_traits<V>::dim>=1,
0207 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>::type
0208 X0( V & a )
0209 {
0210 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
0211 }
0212 template <class S>
0213 BOOST_QVM_INLINE_TRIVIAL
0214 typename enable_if_c<
0215 is_scalar<S>::value,
0216 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>::type
0217 X0( S & a )
0218 {
0219 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
0220 }
0221 template <class V>
0222 BOOST_QVM_INLINE_TRIVIAL
0223 typename enable_if_c<
0224 is_vec<V>::value && vec_traits<V>::dim>=4,
0225 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > const &>::type
0226 _1W( V const & a )
0227 {
0228 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > const &>(a);
0229 }
0230 template <class V>
0231 BOOST_QVM_INLINE_TRIVIAL
0232 typename enable_if_c<
0233 is_vec<V>::value && vec_traits<V>::dim>=4,
0234 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > &>::type
0235 _1W( V & a )
0236 {
0237 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > &>(a);
0238 }
0239 template <class V>
0240 BOOST_QVM_INLINE_TRIVIAL
0241 typename enable_if_c<
0242 is_vec<V>::value && vec_traits<V>::dim>=4,
0243 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > const &>::type
0244 _0W( V const & a )
0245 {
0246 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > const &>(a);
0247 }
0248 template <class V>
0249 BOOST_QVM_INLINE_TRIVIAL
0250 typename enable_if_c<
0251 is_vec<V>::value && vec_traits<V>::dim>=4,
0252 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > &>::type
0253 _0W( V & a )
0254 {
0255 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > &>(a);
0256 }
0257 template <class V>
0258 BOOST_QVM_INLINE_TRIVIAL
0259 typename enable_if_c<
0260 is_vec<V>::value && vec_traits<V>::dim>=4,
0261 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > const &>::type
0262 WW( V const & a )
0263 {
0264 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > const &>(a);
0265 }
0266 template <class V>
0267 BOOST_QVM_INLINE_TRIVIAL
0268 typename enable_if_c<
0269 is_vec<V>::value && vec_traits<V>::dim>=4,
0270 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > &>::type
0271 WW( V & a )
0272 {
0273 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > &>(a);
0274 }
0275 template <class V>
0276 BOOST_QVM_INLINE_TRIVIAL
0277 typename enable_if_c<
0278 is_vec<V>::value && vec_traits<V>::dim>=4,
0279 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > const &>::type
0280 ZW( V const & a )
0281 {
0282 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > const &>(a);
0283 }
0284 template <class V>
0285 BOOST_QVM_INLINE_TRIVIAL
0286 typename enable_if_c<
0287 is_vec<V>::value && vec_traits<V>::dim>=4,
0288 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > &>::type
0289 ZW( V & a )
0290 {
0291 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > &>(a);
0292 }
0293 template <class V>
0294 BOOST_QVM_INLINE_TRIVIAL
0295 typename enable_if_c<
0296 is_vec<V>::value && vec_traits<V>::dim>=4,
0297 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > const &>::type
0298 YW( V const & a )
0299 {
0300 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > const &>(a);
0301 }
0302 template <class V>
0303 BOOST_QVM_INLINE_TRIVIAL
0304 typename enable_if_c<
0305 is_vec<V>::value && vec_traits<V>::dim>=4,
0306 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > &>::type
0307 YW( V & a )
0308 {
0309 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > &>(a);
0310 }
0311 template <class V>
0312 BOOST_QVM_INLINE_TRIVIAL
0313 typename enable_if_c<
0314 is_vec<V>::value && vec_traits<V>::dim>=4,
0315 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > const &>::type
0316 XW( V const & a )
0317 {
0318 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > const &>(a);
0319 }
0320 template <class V>
0321 BOOST_QVM_INLINE_TRIVIAL
0322 typename enable_if_c<
0323 is_vec<V>::value && vec_traits<V>::dim>=4,
0324 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > &>::type
0325 XW( V & a )
0326 {
0327 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > &>(a);
0328 }
0329 template <class V>
0330 BOOST_QVM_INLINE_TRIVIAL
0331 typename enable_if_c<
0332 is_vec<V>::value && vec_traits<V>::dim>=3,
0333 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > const &>::type
0334 _1Z( V const & a )
0335 {
0336 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > const &>(a);
0337 }
0338 template <class V>
0339 BOOST_QVM_INLINE_TRIVIAL
0340 typename enable_if_c<
0341 is_vec<V>::value && vec_traits<V>::dim>=3,
0342 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > &>::type
0343 _1Z( V & a )
0344 {
0345 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > &>(a);
0346 }
0347 template <class V>
0348 BOOST_QVM_INLINE_TRIVIAL
0349 typename enable_if_c<
0350 is_vec<V>::value && vec_traits<V>::dim>=3,
0351 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > const &>::type
0352 _0Z( V const & a )
0353 {
0354 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > const &>(a);
0355 }
0356 template <class V>
0357 BOOST_QVM_INLINE_TRIVIAL
0358 typename enable_if_c<
0359 is_vec<V>::value && vec_traits<V>::dim>=3,
0360 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > &>::type
0361 _0Z( V & a )
0362 {
0363 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > &>(a);
0364 }
0365 template <class V>
0366 BOOST_QVM_INLINE_TRIVIAL
0367 typename enable_if_c<
0368 is_vec<V>::value && vec_traits<V>::dim>=4,
0369 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > const &>::type
0370 WZ( V const & a )
0371 {
0372 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > const &>(a);
0373 }
0374 template <class V>
0375 BOOST_QVM_INLINE_TRIVIAL
0376 typename enable_if_c<
0377 is_vec<V>::value && vec_traits<V>::dim>=4,
0378 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > &>::type
0379 WZ( V & a )
0380 {
0381 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > &>(a);
0382 }
0383 template <class V>
0384 BOOST_QVM_INLINE_TRIVIAL
0385 typename enable_if_c<
0386 is_vec<V>::value && vec_traits<V>::dim>=3,
0387 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > const &>::type
0388 ZZ( V const & a )
0389 {
0390 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > const &>(a);
0391 }
0392 template <class V>
0393 BOOST_QVM_INLINE_TRIVIAL
0394 typename enable_if_c<
0395 is_vec<V>::value && vec_traits<V>::dim>=3,
0396 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > &>::type
0397 ZZ( V & a )
0398 {
0399 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > &>(a);
0400 }
0401 template <class V>
0402 BOOST_QVM_INLINE_TRIVIAL
0403 typename enable_if_c<
0404 is_vec<V>::value && vec_traits<V>::dim>=3,
0405 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > const &>::type
0406 YZ( V const & a )
0407 {
0408 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > const &>(a);
0409 }
0410 template <class V>
0411 BOOST_QVM_INLINE_TRIVIAL
0412 typename enable_if_c<
0413 is_vec<V>::value && vec_traits<V>::dim>=3,
0414 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > &>::type
0415 YZ( V & a )
0416 {
0417 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > &>(a);
0418 }
0419 template <class V>
0420 BOOST_QVM_INLINE_TRIVIAL
0421 typename enable_if_c<
0422 is_vec<V>::value && vec_traits<V>::dim>=3,
0423 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > const &>::type
0424 XZ( V const & a )
0425 {
0426 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > const &>(a);
0427 }
0428 template <class V>
0429 BOOST_QVM_INLINE_TRIVIAL
0430 typename enable_if_c<
0431 is_vec<V>::value && vec_traits<V>::dim>=3,
0432 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > &>::type
0433 XZ( V & a )
0434 {
0435 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > &>(a);
0436 }
0437 template <class V>
0438 BOOST_QVM_INLINE_TRIVIAL
0439 typename enable_if_c<
0440 is_vec<V>::value && vec_traits<V>::dim>=2,
0441 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > const &>::type
0442 _1Y( V const & a )
0443 {
0444 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > const &>(a);
0445 }
0446 template <class V>
0447 BOOST_QVM_INLINE_TRIVIAL
0448 typename enable_if_c<
0449 is_vec<V>::value && vec_traits<V>::dim>=2,
0450 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > &>::type
0451 _1Y( V & a )
0452 {
0453 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > &>(a);
0454 }
0455 template <class V>
0456 BOOST_QVM_INLINE_TRIVIAL
0457 typename enable_if_c<
0458 is_vec<V>::value && vec_traits<V>::dim>=2,
0459 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > const &>::type
0460 _0Y( V const & a )
0461 {
0462 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > const &>(a);
0463 }
0464 template <class V>
0465 BOOST_QVM_INLINE_TRIVIAL
0466 typename enable_if_c<
0467 is_vec<V>::value && vec_traits<V>::dim>=2,
0468 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > &>::type
0469 _0Y( V & a )
0470 {
0471 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > &>(a);
0472 }
0473 template <class V>
0474 BOOST_QVM_INLINE_TRIVIAL
0475 typename enable_if_c<
0476 is_vec<V>::value && vec_traits<V>::dim>=4,
0477 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > const &>::type
0478 WY( V const & a )
0479 {
0480 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > const &>(a);
0481 }
0482 template <class V>
0483 BOOST_QVM_INLINE_TRIVIAL
0484 typename enable_if_c<
0485 is_vec<V>::value && vec_traits<V>::dim>=4,
0486 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > &>::type
0487 WY( V & a )
0488 {
0489 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > &>(a);
0490 }
0491 template <class V>
0492 BOOST_QVM_INLINE_TRIVIAL
0493 typename enable_if_c<
0494 is_vec<V>::value && vec_traits<V>::dim>=3,
0495 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > const &>::type
0496 ZY( V const & a )
0497 {
0498 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > const &>(a);
0499 }
0500 template <class V>
0501 BOOST_QVM_INLINE_TRIVIAL
0502 typename enable_if_c<
0503 is_vec<V>::value && vec_traits<V>::dim>=3,
0504 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > &>::type
0505 ZY( V & a )
0506 {
0507 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > &>(a);
0508 }
0509 template <class V>
0510 BOOST_QVM_INLINE_TRIVIAL
0511 typename enable_if_c<
0512 is_vec<V>::value && vec_traits<V>::dim>=2,
0513 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > const &>::type
0514 YY( V const & a )
0515 {
0516 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > const &>(a);
0517 }
0518 template <class V>
0519 BOOST_QVM_INLINE_TRIVIAL
0520 typename enable_if_c<
0521 is_vec<V>::value && vec_traits<V>::dim>=2,
0522 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > &>::type
0523 YY( V & a )
0524 {
0525 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > &>(a);
0526 }
0527 template <class V>
0528 BOOST_QVM_INLINE_TRIVIAL
0529 typename enable_if_c<
0530 is_vec<V>::value && vec_traits<V>::dim>=2,
0531 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > const &>::type
0532 XY( V const & a )
0533 {
0534 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > const &>(a);
0535 }
0536 template <class V>
0537 BOOST_QVM_INLINE_TRIVIAL
0538 typename enable_if_c<
0539 is_vec<V>::value && vec_traits<V>::dim>=2,
0540 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > &>::type
0541 XY( V & a )
0542 {
0543 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > &>(a);
0544 }
0545 template <class V>
0546 BOOST_QVM_INLINE_TRIVIAL
0547 typename enable_if_c<
0548 is_vec<V>::value && vec_traits<V>::dim>=1,
0549 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>::type
0550 _1X( V const & a )
0551 {
0552 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0553 }
0554 template <class S>
0555 BOOST_QVM_INLINE_TRIVIAL
0556 typename enable_if_c<
0557 is_scalar<S>::value,
0558 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>::type
0559 _1X( S const & a )
0560 {
0561 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0562 }
0563 template <class V>
0564 BOOST_QVM_INLINE_TRIVIAL
0565 typename enable_if_c<
0566 is_vec<V>::value && vec_traits<V>::dim>=1,
0567 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>::type
0568 _1X( V & a )
0569 {
0570 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
0571 }
0572 template <class S>
0573 BOOST_QVM_INLINE_TRIVIAL
0574 typename enable_if_c<
0575 is_scalar<S>::value,
0576 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>::type
0577 _1X( S & a )
0578 {
0579 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
0580 }
0581 template <class V>
0582 BOOST_QVM_INLINE_TRIVIAL
0583 typename enable_if_c<
0584 is_vec<V>::value && vec_traits<V>::dim>=1,
0585 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>::type
0586 _0X( V const & a )
0587 {
0588 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0589 }
0590 template <class S>
0591 BOOST_QVM_INLINE_TRIVIAL
0592 typename enable_if_c<
0593 is_scalar<S>::value,
0594 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>::type
0595 _0X( S const & a )
0596 {
0597 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0598 }
0599 template <class V>
0600 BOOST_QVM_INLINE_TRIVIAL
0601 typename enable_if_c<
0602 is_vec<V>::value && vec_traits<V>::dim>=1,
0603 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>::type
0604 _0X( V & a )
0605 {
0606 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
0607 }
0608 template <class S>
0609 BOOST_QVM_INLINE_TRIVIAL
0610 typename enable_if_c<
0611 is_scalar<S>::value,
0612 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>::type
0613 _0X( S & a )
0614 {
0615 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
0616 }
0617 template <class V>
0618 BOOST_QVM_INLINE_TRIVIAL
0619 typename enable_if_c<
0620 is_vec<V>::value && vec_traits<V>::dim>=4,
0621 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > const &>::type
0622 WX( V const & a )
0623 {
0624 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > const &>(a);
0625 }
0626 template <class V>
0627 BOOST_QVM_INLINE_TRIVIAL
0628 typename enable_if_c<
0629 is_vec<V>::value && vec_traits<V>::dim>=4,
0630 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > &>::type
0631 WX( V & a )
0632 {
0633 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > &>(a);
0634 }
0635 template <class V>
0636 BOOST_QVM_INLINE_TRIVIAL
0637 typename enable_if_c<
0638 is_vec<V>::value && vec_traits<V>::dim>=3,
0639 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > const &>::type
0640 ZX( V const & a )
0641 {
0642 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0643 }
0644 template <class V>
0645 BOOST_QVM_INLINE_TRIVIAL
0646 typename enable_if_c<
0647 is_vec<V>::value && vec_traits<V>::dim>=3,
0648 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > &>::type
0649 ZX( V & a )
0650 {
0651 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > &>(a);
0652 }
0653 template <class V>
0654 BOOST_QVM_INLINE_TRIVIAL
0655 typename enable_if_c<
0656 is_vec<V>::value && vec_traits<V>::dim>=2,
0657 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > const &>::type
0658 YX( V const & a )
0659 {
0660 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0661 }
0662 template <class V>
0663 BOOST_QVM_INLINE_TRIVIAL
0664 typename enable_if_c<
0665 is_vec<V>::value && vec_traits<V>::dim>=2,
0666 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > &>::type
0667 YX( V & a )
0668 {
0669 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > &>(a);
0670 }
0671 template <class V>
0672 BOOST_QVM_INLINE_TRIVIAL
0673 typename enable_if_c<
0674 is_vec<V>::value && vec_traits<V>::dim>=1,
0675 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>::type
0676 XX( V const & a )
0677 {
0678 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
0679 }
0680 template <class S>
0681 BOOST_QVM_INLINE_TRIVIAL
0682 typename enable_if_c<
0683 is_scalar<S>::value,
0684 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>::type
0685 XX( S const & a )
0686 {
0687 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
0688 }
0689 template <class V>
0690 BOOST_QVM_INLINE_TRIVIAL
0691 typename enable_if_c<
0692 is_vec<V>::value && vec_traits<V>::dim>=1,
0693 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>::type
0694 XX( V & a )
0695 {
0696 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
0697 }
0698 template <class S>
0699 BOOST_QVM_INLINE_TRIVIAL
0700 typename enable_if_c<
0701 is_scalar<S>::value,
0702 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>::type
0703 XX( S & a )
0704 {
0705 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
0706 }
0707 } }
0708
0709 #endif