blob: d3945f02be8c127708df37bdebd9e2dfa83dfa62 [file] [log] [blame]
Mark de Weverdf5fd832020-11-26 19:12:18 +01001// -*- C++ -*-
2//===--------------------------- format -----------------------------------===//
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//===----------------------------------------------------------------------===//
9
10#ifndef _LIBCPP_FORMAT
11#define _LIBCPP_FORMAT
12
13/*
14
15namespace std {
16 // [format.error], class format_error
17 class format_error : public runtime_error {
18 public:
19 explicit format_error(const string& what_arg);
20 explicit format_error(const char* what_arg);
21 };
Mark de Wever6a67a5f2021-02-02 18:10:33 +010022
23 // [format.parse.ctx], class template basic_format_parse_context
24 template<class charT>
25 class basic_format_parse_context {
26 public:
27 using char_type = charT;
28 using const_iterator = typename basic_string_view<charT>::const_iterator;
29 using iterator = const_iterator;
30
31 private:
32 iterator begin_; // exposition only
33 iterator end_; // exposition only
34 enum indexing { unknown, manual, automatic }; // exposition only
35 indexing indexing_; // exposition only
36 size_t next_arg_id_; // exposition only
37 size_t num_args_; // exposition only
38
39 public:
40 constexpr explicit basic_format_parse_context(basic_string_view<charT> fmt,
41 size_t num_args = 0) noexcept;
42 basic_format_parse_context(const basic_format_parse_context&) = delete;
43 basic_format_parse_context& operator=(const basic_format_parse_context&) = delete;
44
45 constexpr const_iterator begin() const noexcept;
46 constexpr const_iterator end() const noexcept;
47 constexpr void advance_to(const_iterator it);
48
49 constexpr size_t next_arg_id();
50 constexpr void check_arg_id(size_t id);
51 };
52 using format_parse_context = basic_format_parse_context<char>;
53 using wformat_parse_context = basic_format_parse_context<wchar_t>;
Mark de Weverdf5fd832020-11-26 19:12:18 +010054}
55
56*/
57
58#include <__config>
Mark de Wever1aef5d02021-04-25 17:58:03 +020059#include <__format/format_error.h>
Mark de Wevere26bdbb2021-04-25 18:23:42 +020060#include <__format/format_parse_context.h>
Mark de Weverdf5fd832020-11-26 19:12:18 +010061#include <version>
62
63#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
64# pragma GCC system_header
65#endif
66
67_LIBCPP_PUSH_MACROS
68#include <__undef_macros>
69
70_LIBCPP_BEGIN_NAMESPACE_STD
71
72#if _LIBCPP_STD_VER > 17
73
Mark de Weverdf5fd832020-11-26 19:12:18 +010074#endif //_LIBCPP_STD_VER > 17
75
76_LIBCPP_END_NAMESPACE_STD
77
78_LIBCPP_POP_MACROS
79
80#endif // _LIBCPP_FORMAT