//===-- Implementation header for strfromx() utilitites -------------------===// // // 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 // //===----------------------------------------------------------------------===// // According to the C23 standard, any input character sequences except a // precision specifier and the usual floating point formats, namely // %{a,A,e,E,f,F,g,G}, are not allowed and any code that does otherwise results // in undefined behaviour(including use of a '%%' conversion specifier); which // in this case is that the buffer string is simply populated with the format // string. The case of the input being nullptr should be handled in the calling // function (strfromf, strfromd, strfroml) itself. #ifndef LLVM_LIBC_SRC_STDLIB_STRFROM_UTIL_H #define LLVM_LIBC_SRC_STDLIB_STRFROM_UTIL_H #include "src/__support/CPP/type_traits.h" #include "src/__support/macros/config.h" #include "src/__support/str_to_integer.h" #include "src/stdio/printf_core/converter_atlas.h" #include "src/stdio/printf_core/core_structs.h" #include "src/stdio/printf_core/writer.h" #include <stddef.h> namespace LIBC_NAMESPACE_DECL { namespace internal { storage_type; template <typename T> printf_core::FormatSection parse_format_string(const char *__restrict format, T fp) { … } template <typename T> int strfromfloat_convert(printf_core::Writer *writer, const printf_core::FormatSection §ion) { … } } // namespace internal } // namespace LIBC_NAMESPACE_DECL #endif // LLVM_LIBC_SRC_STDLIB_STRFROM_UTIL_H