Commit 081c1db0 authored by Mark de Wever's avatar Mark de Wever
Browse files

[libc++] Implement format_error.

This is the first step at implementing <format>. It adds the <format> header
and implements the `format_error`. class.

Implemnts parts of:
-P0645 Text Formatting

Reviewed By: ldionne, #libc, miscco, curdeius

Differential Revision: https://reviews.llvm.org/D92214
parent 207d4be4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@
"`P0466 <https://wg21.link/P0466>`__","LWG","Layout-compatibility and Pointer-interconvertibility Traits","Cologne","",""
"`P0553 <https://wg21.link/P0553>`__","LWG","Bit operations","Cologne","|Complete|","9.0"
"`P0631 <https://wg21.link/P0631>`__","LWG","Math Constants","Cologne","|Complete|","11.0"
"`P0645 <https://wg21.link/P0645>`__","LWG","Text Formatting","Cologne","",""
"`P0645 <https://wg21.link/P0645>`__","LWG","Text Formatting","Cologne","|In Progress|",""
"`P0660 <https://wg21.link/P0660>`__","LWG","Stop Token and Joining Thread, Rev 10","Cologne","",""
"`P0784 <https://wg21.link/P0784>`__","CWG","More constexpr containers","Cologne","|Complete|","12.0"
"`P0980 <https://wg21.link/P0980>`__","LWG","Making std::string constexpr","Cologne","",""
+2 −0
Original line number Diff line number Diff line
@@ -234,6 +234,8 @@ Status
    ------------------------------------------------- -----------------
    ``__cpp_lib_execution``                           *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_format``                              *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_generic_unordered_lookup``            ``201811L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_int_pow2``                            ``202002L``
+1 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ set(files
  fenv.h
  filesystem
  float.h
  format
  forward_list
  fstream
  functional

libcxx/include/format

0 → 100644
+56 −0
Original line number Diff line number Diff line
// -*- C++ -*-
//===--------------------------- format -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_FORMAT
#define _LIBCPP_FORMAT

/*

namespace std {
  // [format.error], class format_error
  class format_error : public runtime_error {
  public:
    explicit format_error(const string& what_arg);
    explicit format_error(const char* what_arg);
  };
}

*/

#include <__config>
#include <stdexcept>
#include <version>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#  pragma GCC system_header
#endif

_LIBCPP_PUSH_MACROS
#include <__undef_macros>

_LIBCPP_BEGIN_NAMESPACE_STD

#if _LIBCPP_STD_VER > 17

class _LIBCPP_EXCEPTION_ABI format_error : public runtime_error {
public:
  _LIBCPP_INLINE_VISIBILITY explicit format_error(const string& __s)
      : runtime_error(__s) {}
  _LIBCPP_INLINE_VISIBILITY explicit format_error(const char* __s)
      : runtime_error(__s) {}
  virtual ~format_error() noexcept;
};

#endif //_LIBCPP_STD_VER > 17

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_FORMAT
+4 −0
Original line number Diff line number Diff line
@@ -292,6 +292,10 @@ module std [system] {
    header "filesystem"
    export *
  }
  module format {
    header "format"
    export *
  }
  module forward_list {
    header "forward_list"
    export initializer_list
Loading