//===-- StringConvert.cpp -------------------------------------------------===// // // 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 #include "StringConvert.h" namespace StringConvert { int64_t ToSInt64(const char *s, int64_t fail_value, int base, bool *success_ptr) { if (s && s[0]) { char *end = nullptr; int64_t uval = ::strtoll(s, &end, base); if (*end == '\0') { if (success_ptr) *success_ptr = true; return uval; // All characters were used, return the result } } if (success_ptr) *success_ptr = false; return fail_value; } uint64_t ToUInt64(const char *s, uint64_t fail_value, int base, bool *success_ptr) { if (s && s[0]) { char *end = nullptr; uint64_t uval = ::strtoull(s, &end, base); if (*end == '\0') { if (success_ptr) *success_ptr = true; return uval; // All characters were used, return the result } } if (success_ptr) *success_ptr = false; return fail_value; } double ToDouble(const char *s, double fail_value, bool *success_ptr) { if (s && s[0]) { char *end = nullptr; double val = strtod(s, &end); if (*end == '\0') { if (success_ptr) *success_ptr = true; return val; // All characters were used, return the result } } if (success_ptr) *success_ptr = false; return fail_value; } } // namespace StringConvert