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