brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 4c2061b Raw
122 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//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-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP_CHARCONV11#define _LIBCPP_CHARCONV12 13/*14    charconv synopsis15 16namespace std {17 18  // floating-point format for primitive numerical conversion19  enum class chars_format {20    scientific = unspecified,21    fixed = unspecified,22    hex = unspecified,23    general = fixed | scientific24  };25 26  // 23.20.2, primitive numerical output conversion27  struct to_chars_result {28    char* ptr;29    errc ec;30    friend bool operator==(const to_chars_result&, const to_chars_result&) = default; // since C++2031    constexpr explicit operator bool() const noexcept { return ec == errc{}; }        // since C++2632  };33 34  constexpr to_chars_result to_chars(char* first, char* last, see below value,35                                     int base = 10);                                  // constexpr since C++2336  to_chars_result to_chars(char* first, char* last, bool value,37                           int base = 10) = delete;38 39  to_chars_result to_chars(char* first, char* last, float value);40  to_chars_result to_chars(char* first, char* last, double value);41  to_chars_result to_chars(char* first, char* last, long double value);42 43  to_chars_result to_chars(char* first, char* last, float value,44                           chars_format fmt);45  to_chars_result to_chars(char* first, char* last, double value,46                           chars_format fmt);47  to_chars_result to_chars(char* first, char* last, long double value,48                           chars_format fmt);49 50  to_chars_result to_chars(char* first, char* last, float value,51                           chars_format fmt, int precision);52  to_chars_result to_chars(char* first, char* last, double value,53                           chars_format fmt, int precision);54  to_chars_result to_chars(char* first, char* last, long double value,55                           chars_format fmt, int precision);56 57  // 23.20.3, primitive numerical input conversion58  struct from_chars_result {59    const char* ptr;60    errc ec;61    friend bool operator==(const from_chars_result&, const from_chars_result&) = default; // since C++2062    constexpr explicit operator bool() const noexcept { return ec == errc{}; }            // since C++2663  };64 65  constexpr from_chars_result from_chars(const char* first, const char* last,66                               see below& value, int base = 10);                         // constexpr since C++2367 68  from_chars_result from_chars(const char* first, const char* last,69                               float& value, chars_format fmt);70 71  from_chars_result from_chars(const char* first, const char* last,72                               double& value, chars_format fmt);73 74} // namespace std75 76*/77 78#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)79#  include <__cxx03/__config>80#else81#  include <__config>82 83#  if _LIBCPP_STD_VER >= 1784#    include <__charconv/chars_format.h>85#    include <__charconv/from_chars_floating_point.h>86#    include <__charconv/from_chars_integral.h>87#    include <__charconv/from_chars_result.h>88#    include <__charconv/tables.h>89#    include <__charconv/to_chars.h>90#    include <__charconv/to_chars_base_10.h>91#    include <__charconv/to_chars_floating_point.h>92#    include <__charconv/to_chars_integral.h>93#    include <__charconv/to_chars_result.h>94#    include <__charconv/traits.h>95#  endif // _LIBCPP_STD_VER >= 1796 97#  include <version>98 99#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)100#    pragma GCC system_header101#  endif102 103_LIBCPP_BEGIN_NAMESPACE_STD104 105_LIBCPP_END_NAMESPACE_STD106 107#  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20108#    include <cmath>109#    include <concepts>110#    include <cstddef>111#    include <cstdint>112#    include <cstdlib>113#    include <cstring>114#    include <iosfwd>115#    include <limits>116#    include <new>117#    include <type_traits>118#  endif119#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)120 121#endif // _LIBCPP_CHARCONV122