| 1589 | xyzw = v; |
| 1590 | return (*this); |
| 1591 | } |
| 1592 | |
| 1593 | template <typename type, int cnt, int ind_x, int ind_y, int ind_z, int ind_w> |
| 1594 | void operator =(const Subvec4D<type, anti, cnt, ind_x, ind_y, ind_z, ind_w>& v) volatile |
| 1595 | { |
| 1596 | xyzw = v; |
| 1597 | } |
| 1598 | }; |
| 1599 | |
| 1600 | |
| 1601 | template <typename type_struct, bool anti> |
| 1602 | inline bool operator ==(const Vec4D<type_struct, anti>& v1, const Vec4D<type_struct, anti>& v2) |
| 1603 | { |
| 1604 | return (v1.xyzw == v2.xyzw); |
| 1605 | } |
| 1606 | |
| 1607 | template <typename type_struct, bool anti> |
| 1608 | inline bool operator !=(const Vec4D<type_struct, anti>& v1, const Vec4D<type_struct, anti>& v2) |
| 1609 | { |
| 1610 | return (v1.xyzw != v2.xyzw); |
| 1611 | } |
| 1612 | |
| 1613 | |
| 1614 | template <typename type_struct> using Antivec3D = Vec3D<type_struct, true>; |
| 1615 | template <typename type_struct> using Antivec4D = Vec4D<type_struct, true>; |
| 1616 | |
| 1617 | |
| 1618 | template <typename A_type_struct, bool A_anti, int A_count, int A_index_x, int A_index_y, int A_index_z, typename B_type_struct, int B_count, int B_index_x, int B_index_y, int B_index_z> |
| 1619 | inline float operator ^(const Subvec3D<A_type_struct, A_anti, A_count, A_index_x, A_index_y, A_index_z>& A, const Subvec3D<B_type_struct, !A_anti, B_count, B_index_x, B_index_y, B_index_z>& B) |
| 1620 | { |
| 1621 | return (A.data[A_index_x] * B.data[B_index_x] + A.data[A_index_y] * B.data[B_index_y] + A.data[A_index_z] * B.data[B_index_z]); |
| 1622 | } |
| 1623 | |
| 1624 | template <typename A_type_struct, int A_count, int A_index_x, int A_index_y, int A_index_z, int A_index_w, typename B_type_struct, int B_count, int B_index_x, int B_index_y, int B_index_z, int B_index_w> |
| 1625 | inline float operator ^(const Subvec4D<A_type_struct, false, A_count, A_index_x, A_index_y, A_index_z, A_index_w>& A, const Subvec4D<B_type_struct, true, B_count, B_index_x, B_index_y, B_index_z, B_index_w>& B) |
| 1626 | { |
| 1627 | return (A.data[A_index_x] * B.data[B_index_x] + A.data[A_index_y] * B.data[B_index_y] + A.data[A_index_z] * B.data[B_index_z] + A.data[A_index_w] * B.data[B_index_w]); |
| 1628 | } |
| 1629 | |
| 1630 | template <typename A_type_struct, int A_count, int A_index_x, int A_index_y, int A_index_z, int A_index_w, typename B_type_struct, int B_count, int B_index_x, int B_index_y, int B_index_z> |
| 1631 | inline float operator ^(const Subvec4D<A_type_struct, false, A_count, A_index_x, A_index_y, A_index_z, A_index_w>& A, const Subvec3D<B_type_struct, true, B_count, B_index_x, B_index_y, B_index_z>& B) |
| 1632 | { |
| 1633 | return (A.data[A_index_x] * B.data[B_index_x] + A.data[A_index_y] * B.data[B_index_y] + A.data[A_index_z] * B.data[B_index_z]); |
| 1634 | } |
| 1635 | |
| 1636 | template <typename A_type_struct, int A_count, int A_index_x, int A_index_y, int A_index_z, typename B_type_struct, int B_count, int B_index_x, int B_index_y, int B_index_z, int B_index_w> |
| 1637 | inline float operator ^(const Subvec3D<A_type_struct, false, A_count, A_index_x, A_index_y, A_index_z>& A, const Subvec4D<B_type_struct, true, B_count, B_index_x, B_index_y, B_index_z, B_index_w>& B) |
| 1638 | { |
| 1639 | return (A.data[A_index_x] * B.data[B_index_x] + A.data[A_index_y] * B.data[B_index_y] + A.data[A_index_z] * B.data[B_index_z]); |
| 1640 | } |
| 1641 | |
| 1642 | |
| 1643 | template <typename type_struct, int index_00, int index_01, int index_10, int index_11> |
| 1644 | struct ConverterMatrix2D |
| 1645 | { |
| 1646 | typedef typename type_struct::component_type component_type; |
| 1647 | typedef typename type_struct::matrix2D_type matrix2D_type; |
| 1648 | typedef typename type_struct::matrix2D_type const_matrix2D_type; |
nothing calls this directly
no outgoing calls
no test coverage detected