1 //
2 // atox.cpp
3 //
4 // Copyright (c) Microsoft Corporation. All rights reserved.
5 //
6 // The "simple" string conversion functions: atoi, atol, atoll, and their wide
7 // string functions.
8 //
9 #define _ALLOW_OLD_VALIDATE_MACROS
10 #include <corecrt_internal_strtox.h>
11 #include <stdlib.h>
12
13
14
15 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 //
17 // Narrow Strings => Various Integers (Simple Functions, wtox)
18 //
19 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
atoi(char const * const string)20 extern "C" int __cdecl atoi(char const* const string)
21 {
22 // Note: We parse as a long to avoid an extra specialization of parse_integer_from_string
23 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, nullptr);
24 }
25
_atoi_l(char const * const string,_locale_t const locale)26 extern "C" int __cdecl _atoi_l(char const* const string, _locale_t const locale)
27 {
28 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, locale);
29 }
30
atol(char const * const string)31 extern "C" long __cdecl atol(char const* const string)
32 {
33 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, nullptr);
34 }
35
_atol_l(char const * const string,_locale_t const locale)36 extern "C" long __cdecl _atol_l(char const* const string, _locale_t const locale)
37 {
38 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, locale);
39 }
40
atoll(char const * const string)41 extern "C" long long __cdecl atoll(char const* const string)
42 {
43 return __crt_strtox::parse_integer_from_string<long long>(string, nullptr, 10, nullptr);
44 }
45
_atoll_l(char const * const string,_locale_t const locale)46 extern "C" long long __cdecl _atoll_l(char const* const string, _locale_t const locale)
47 {
48 return __crt_strtox::parse_integer_from_string<long long>(string, nullptr, 10, locale);
49 }
50
_atoi64(char const * const string)51 extern "C" __int64 __cdecl _atoi64(char const* const string)
52 {
53 return __crt_strtox::parse_integer_from_string<__int64>(string, nullptr, 10, nullptr);
54 }
55
_atoi64_l(char const * const string,_locale_t const locale)56 extern "C" __int64 __cdecl _atoi64_l(char const* const string, _locale_t const locale)
57 {
58 return __crt_strtox::parse_integer_from_string<__int64>(string, nullptr, 10, locale);
59 }
60
61
62
63 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64 //
65 // Wide Strings => Various Integers (Simple Functions, wtox)
66 //
67 //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
_wtoi(wchar_t const * const string)68 extern "C" int __cdecl _wtoi(wchar_t const* const string)
69 {
70 // Note: We parse as a long to avoid an extra specialization of parse_integer_from_string
71 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, nullptr);
72 }
73
_wtoi_l(wchar_t const * const string,_locale_t const locale)74 extern "C" int __cdecl _wtoi_l(wchar_t const* const string, _locale_t const locale)
75 {
76 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, locale);
77 }
78
_wtol(wchar_t const * const string)79 extern "C" long __cdecl _wtol(wchar_t const* const string)
80 {
81 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, nullptr);
82 }
83
_wtol_l(wchar_t const * const string,_locale_t const locale)84 extern "C" long __cdecl _wtol_l(wchar_t const* const string, _locale_t const locale)
85 {
86 return __crt_strtox::parse_integer_from_string<long>(string, nullptr, 10, locale);
87 }
88
_wtoll(wchar_t const * const string)89 extern "C" long long __cdecl _wtoll(wchar_t const* const string)
90 {
91 return __crt_strtox::parse_integer_from_string<long long>(string, nullptr, 10, nullptr);
92 }
93
_wtoll_l(wchar_t const * const string,_locale_t const locale)94 extern "C" long long __cdecl _wtoll_l(wchar_t const* const string, _locale_t const locale)
95 {
96 return __crt_strtox::parse_integer_from_string<long long>(string, nullptr, 10, locale);
97 }
98
_wtoi64(wchar_t const * const string)99 extern "C" __int64 __cdecl _wtoi64(wchar_t const* const string)
100 {
101 return __crt_strtox::parse_integer_from_string<__int64>(string, nullptr, 10, nullptr);
102 }
103
_wtoi64_l(wchar_t const * const string,_locale_t const locale)104 extern "C" __int64 __cdecl _wtoi64_l(wchar_t const* const string, _locale_t const locale)
105 {
106 return __crt_strtox::parse_integer_from_string<__int64>(string, nullptr, 10, locale);
107 }
108