On Wed, 9 Apr 2025, 09:12 Jonathan Wakely, <jwakely....@gmail.com> wrote:
> > > On Wed, 9 Apr 2025, 08:25 Luc Grosheintz, <luc.groshei...@gmail.com> > wrote: > >> Creates a nearly empty header mdspan and adds it to the build-system and >> Doxygen config file. >> > > Nice, thanks! I'll look at these patches properly another time (I'm > unavailable today) but one quick comment below ... > > > >> libstdc++-v3/ChangeLog: >> >> * doc/doxygen/user.cfg.in: Add <mdspan>. >> * include/Makefile.am: Ditto. >> * include/Makefile.in: Ditto. >> * include/precompiled/stdc++.h: Ditto. >> * include/std/mdspan: New file. >> >> Signed-off-by: Luc Grosheintz <luc.groshei...@gmail.com> >> --- >> libstdc++-v3/doc/doxygen/user.cfg.in | 1 + >> libstdc++-v3/include/Makefile.am | 1 + >> libstdc++-v3/include/Makefile.in | 1 + >> libstdc++-v3/include/precompiled/stdc++.h | 4 ++ >> libstdc++-v3/include/std/mdspan | 48 +++++++++++++++++++++++ >> 5 files changed, 55 insertions(+) >> create mode 100644 libstdc++-v3/include/std/mdspan >> >> diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in >> b/libstdc++-v3/doc/doxygen/user.cfg.in >> index ae50f6dd0c7..be42ea5d6b1 100644 >> --- a/libstdc++-v3/doc/doxygen/user.cfg.in >> +++ b/libstdc++-v3/doc/doxygen/user.cfg.in >> @@ -878,6 +878,7 @@ INPUT = >> @srcdir@/doc/doxygen/doxygroups.cc >> \ >> include/list \ >> include/locale \ >> include/map \ >> + include/mdspan \ >> include/memory \ >> include/memory_resource \ >> include/mutex \ >> diff --git a/libstdc++-v3/include/Makefile.am >> b/libstdc++-v3/include/Makefile.am >> index 537774c2668..1140fa0dffd 100644 >> --- a/libstdc++-v3/include/Makefile.am >> +++ b/libstdc++-v3/include/Makefile.am >> @@ -38,6 +38,7 @@ std_freestanding = \ >> ${std_srcdir}/generator \ >> ${std_srcdir}/iterator \ >> ${std_srcdir}/limits \ >> + ${std_srcdir}/mdspan \ >> ${std_srcdir}/memory \ >> ${std_srcdir}/numbers \ >> ${std_srcdir}/numeric \ >> diff --git a/libstdc++-v3/include/Makefile.in >> b/libstdc++-v3/include/Makefile.in >> index 7b96b2207f8..c96e981acd6 100644 >> --- a/libstdc++-v3/include/Makefile.in >> +++ b/libstdc++-v3/include/Makefile.in >> @@ -396,6 +396,7 @@ std_freestanding = \ >> ${std_srcdir}/generator \ >> ${std_srcdir}/iterator \ >> ${std_srcdir}/limits \ >> + ${std_srcdir}/mdspan \ >> ${std_srcdir}/memory \ >> ${std_srcdir}/numbers \ >> ${std_srcdir}/numeric \ >> diff --git a/libstdc++-v3/include/precompiled/stdc++.h >> b/libstdc++-v3/include/precompiled/stdc++.h >> index 1ffde3ed450..56c480b6203 100644 >> --- a/libstdc++-v3/include/precompiled/stdc++.h >> +++ b/libstdc++-v3/include/precompiled/stdc++.h >> @@ -237,6 +237,10 @@ >> #include <stdfloat> >> #endif >> >> +#if __cpluslus >= 202207L >> > > Typo in the macro name here. > And actually I think this #include should just be in the group above, with expected, stdfloat, and other c++23 headers. > +#include <mdspan> >> +#endif >> + >> #if __cplusplus > 202302L >> #include <text_encoding> >> #endif >> diff --git a/libstdc++-v3/include/std/mdspan >> b/libstdc++-v3/include/std/mdspan >> new file mode 100644 >> index 00000000000..4094a416d1e >> --- /dev/null >> +++ b/libstdc++-v3/include/std/mdspan >> @@ -0,0 +1,48 @@ >> +// <mdspan> -*- C++ -*- >> + >> +// Copyright (C) 2025 Free Software Foundation, Inc. >> +// >> +// This file is part of the GNU ISO C++ Library. This library is free >> +// software; you can redistribute it and/or modify it under the >> +// terms of the GNU General Public License as published by the >> +// Free Software Foundation; either version 3, or (at your option) >> +// any later version. >> + >> +// This library is distributed in the hope that it will be useful, >> +// but WITHOUT ANY WARRANTY; without even the implied warranty of >> +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +// GNU General Public License for more details. >> + >> +// Under Section 7 of GPL version 3, you are granted additional >> +// permissions described in the GCC Runtime Library Exception, version >> +// 3.1, as published by the Free Software Foundation. >> + >> +// You should have received a copy of the GNU General Public License and >> +// a copy of the GCC Runtime Library Exception along with this program; >> +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see >> +// <http://www.gnu.org/licenses/>. >> + >> +/** @file mdspan >> + * This is a Standard C++ Library header. >> + */ >> + >> +#ifndef _GLIBCXX_MDSPAN >> +#define _GLIBCXX_MDSPAN 1 >> + >> +#ifdef _GLIBCXX_SYSHDR >> +#pragma GCC system_header >> +#endif >> + >> +#define __glibcxx_want_mdspan >> +#include <bits/version.h> >> + >> +#ifdef __glibcxx_mdspan >> + >> +namespace std _GLIBCXX_VISIBILITY(default) >> +{ >> +_GLIBCXX_BEGIN_NAMESPACE_VERSION >> + >> +_GLIBCXX_END_NAMESPACE_VERSION >> +} >> +#endif >> +#endif >> -- >> 2.49.0 >> >>