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