Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 1 | // -*- C++ -*- |
| 2 | //===----------------------------------------------------------------------===// |
| 3 | // |
| 4 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 5 | // See https://llvm.org/LICENSE.txt for license information. |
| 6 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 7 | // |
| 8 | // Kokkos v. 4.0 |
| 9 | // Copyright (2022) National Technology & Engineering |
| 10 | // Solutions of Sandia, LLC (NTESS). |
| 11 | // |
| 12 | // Under the terms of Contract DE-NA0003525 with NTESS, |
| 13 | // the U.S. Government retains certain rights in this software. |
| 14 | // |
| 15 | //===---------------------------------------------------------------------===// |
| 16 | |
| 17 | #ifndef _LIBCPP___MDSPAN_LAYOUTS_H |
| 18 | #define _LIBCPP___MDSPAN_LAYOUTS_H |
| 19 | |
| 20 | #include <__config> |
| 21 | |
| 22 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
| 23 | # pragma GCC system_header |
| 24 | #endif |
| 25 | |
| 26 | _LIBCPP_PUSH_MACROS |
| 27 | #include <__undef_macros> |
| 28 | |
| 29 | _LIBCPP_BEGIN_NAMESPACE_STD |
| 30 | |
| 31 | #if _LIBCPP_STD_VER >= 23 |
| 32 | |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 33 | // Layout policy with a mapping which corresponds to FORTRAN-style array layouts |
| 34 | struct layout_left { |
Nikolas Klauser | 1e24b4d | 2023-07-25 02:53:39 | [diff] [blame] | 35 | template <class _Extents> |
Christian Trott | b4ff893 | 2023-06-29 19:36:07 | [diff] [blame] | 36 | class mapping; |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 37 | }; |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 38 | |
| 39 | // Layout policy with a mapping which corresponds to C-style array layouts |
| 40 | struct layout_right { |
Nikolas Klauser | 1e24b4d | 2023-07-25 02:53:39 | [diff] [blame] | 41 | template <class _Extents> |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 42 | class mapping; |
| 43 | }; |
| 44 | |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 45 | // Layout policy with a unique mapping where strides are arbitrary |
| 46 | struct layout_stride { |
Christian Trott | 639a098 | 2023-10-20 14:13:52 | [diff] [blame] | 47 | template <class _Extents> |
| 48 | class mapping; |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 49 | }; |
Christian Trott | cfa096d | 2023-06-29 14:06:47 | [diff] [blame] | 50 | |
| 51 | #endif // _LIBCPP_STD_VER >= 23 |
| 52 | |
| 53 | _LIBCPP_END_NAMESPACE_STD |
| 54 | |
| 55 | _LIBCPP_POP_MACROS |
| 56 | |
| 57 | #endif // _LIBCPP___MDSPAN_LAYOUTS_H |