1d52f0aecSMichael Jones //===-- Implementation of strtoull ----------------------------------------===// 2d52f0aecSMichael Jones // 3d52f0aecSMichael Jones // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4d52f0aecSMichael Jones // See https://llvm.org/LICENSE.txt for license information. 5d52f0aecSMichael Jones // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6d52f0aecSMichael Jones // 7d52f0aecSMichael Jones //===----------------------------------------------------------------------===// 8d52f0aecSMichael Jones 9d52f0aecSMichael Jones #include "src/stdlib/strtoull.h" 10d52f0aecSMichael Jones #include "src/__support/common.h" 11*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 1231d797f4SMichael Jones #include "src/__support/str_to_integer.h" 1304a9c625SMichael Jones #include "src/errno/libc_errno.h" 14d52f0aecSMichael Jones 15*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 16d52f0aecSMichael Jones 17d52f0aecSMichael Jones LLVM_LIBC_FUNCTION(unsigned long long, strtoull, 18d52f0aecSMichael Jones (const char *__restrict str, char **__restrict str_end, 19d52f0aecSMichael Jones int base)) { 2074da5e6cSMichael Jones auto result = internal::strtointeger<unsigned long long>(str, base); 2174da5e6cSMichael Jones if (result.has_error()) 2204a9c625SMichael Jones libc_errno = result.error; 2374da5e6cSMichael Jones 2474da5e6cSMichael Jones if (str_end != nullptr) 2574da5e6cSMichael Jones *str_end = const_cast<char *>(str + result.parsed_len); 2674da5e6cSMichael Jones 2774da5e6cSMichael Jones return result; 28d52f0aecSMichael Jones } 29d52f0aecSMichael Jones 30*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 31