| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| //===-- Implementation of strtold_l ---------------------------------------===// | ||
| // | ||
| // 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 | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #include "src/stdlib/strtold_l.h" | ||
| #include "src/__support/common.h" | ||
| #include "src/__support/macros/config.h" | ||
| #include "src/__support/str_to_float.h" | ||
| #include "src/errno/libc_errno.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| LLVM_LIBC_FUNCTION(long double, strtold_l, | ||
| (const char *__restrict str, char **__restrict str_end, | ||
| locale_t)) { | ||
| auto result = internal::strtofloatingpoint<long double>(str); | ||
| if (result.has_error()) | ||
| libc_errno = result.error; | ||
|
|
||
| if (str_end != nullptr) | ||
| *str_end = const_cast<char *>(str + result.parsed_len); | ||
|
|
||
| return result.value; | ||
| } | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Implementation header for strtold_l ---------------------*- C++ -*-===// | ||
| // | ||
| // 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 LLVM_LIBC_SRC_STDLIB_STRTOLD_L_H | ||
| #define LLVM_LIBC_SRC_STDLIB_STRTOLD_L_H | ||
|
|
||
| #include "include/llvm-libc-types/locale_t.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| long double strtold_l(const char *__restrict str, char **__restrict str_end, | ||
| locale_t locale); | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC_STDLIB_STRTOLD_L_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| //===-- Implementation of strtoll_l ---------------------------------------===// | ||
| // | ||
| // 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 | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #include "src/stdlib/strtoll_l.h" | ||
| #include "src/__support/common.h" | ||
| #include "src/__support/macros/config.h" | ||
| #include "src/__support/str_to_integer.h" | ||
| #include "src/errno/libc_errno.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| LLVM_LIBC_FUNCTION(long long, strtoll_l, | ||
| (const char *__restrict str, char **__restrict str_end, | ||
| int base, locale_t)) { | ||
| auto result = internal::strtointeger<long long>(str, base); | ||
| if (result.has_error()) | ||
| libc_errno = result.error; | ||
|
|
||
| if (str_end != nullptr) | ||
| *str_end = const_cast<char *>(str + result.parsed_len); | ||
|
|
||
| return result; | ||
| } | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Implementation header for strtoll_l ---------------------*- C++ -*-===// | ||
| // | ||
| // 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 LLVM_LIBC_SRC_STDLIB_STRTOLL_L_H | ||
| #define LLVM_LIBC_SRC_STDLIB_STRTOLL_L_H | ||
|
|
||
| #include "include/llvm-libc-types/locale_t.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| long long strtoll_l(const char *__restrict str, char **__restrict str_end, | ||
| int base, locale_t locale); | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC_STDLIB_STRTOLL_L_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| //===-- Implementation of strtoul_l ---------------------------------------===// | ||
| // | ||
| // 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 | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #include "src/stdlib/strtoul_l.h" | ||
| #include "src/__support/common.h" | ||
| #include "src/__support/macros/config.h" | ||
| #include "src/__support/str_to_integer.h" | ||
| #include "src/errno/libc_errno.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| LLVM_LIBC_FUNCTION(unsigned long, strtoul_l, | ||
| (const char *__restrict str, char **__restrict str_end, | ||
| int base, locale_t)) { | ||
| auto result = internal::strtointeger<unsigned long>(str, base); | ||
| if (result.has_error()) | ||
| libc_errno = result.error; | ||
|
|
||
| if (str_end != nullptr) | ||
| *str_end = const_cast<char *>(str + result.parsed_len); | ||
|
|
||
| return result; | ||
| } | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Implementation header for strtoul_l ---------------------*- C++ -*-===// | ||
| // | ||
| // 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 LLVM_LIBC_SRC_STDLIB_STRTOUL_L_H | ||
| #define LLVM_LIBC_SRC_STDLIB_STRTOUL_L_H | ||
|
|
||
| #include "include/llvm-libc-types/locale_t.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| unsigned long strtoul_l(const char *__restrict str, char **__restrict str_end, | ||
| int base, locale_t locale); | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC_STDLIB_STRTOUL_L_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| //===-- Implementation of strtoull_l --------------------------------------===// | ||
| // | ||
| // 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 | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #include "src/stdlib/strtoull_l.h" | ||
| #include "src/__support/common.h" | ||
| #include "src/__support/macros/config.h" | ||
| #include "src/__support/str_to_integer.h" | ||
| #include "src/errno/libc_errno.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| LLVM_LIBC_FUNCTION(unsigned long long, strtoull_l, | ||
| (const char *__restrict str, char **__restrict str_end, | ||
| int base, locale_t)) { | ||
| auto result = internal::strtointeger<unsigned long long>(str, base); | ||
| if (result.has_error()) | ||
| libc_errno = result.error; | ||
|
|
||
| if (str_end != nullptr) | ||
| *str_end = const_cast<char *>(str + result.parsed_len); | ||
|
|
||
| return result; | ||
| } | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| //===-- Implementation header for strtoull_l --------------------*- C++ -*-===// | ||
| // | ||
| // 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 LLVM_LIBC_SRC_STDLIB_STRTOULL_L_H | ||
| #define LLVM_LIBC_SRC_STDLIB_STRTOULL_L_H | ||
|
|
||
| #include "include/llvm-libc-types/locale_t.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
|
|
||
| unsigned long long strtoull_l(const char *__restrict str, | ||
| char **__restrict str_end, int base, | ||
| locale_t locale); | ||
|
|
||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC_STDLIB_STRTOULL_L_H |