1 /************************************************************************************
2 *                                                                                   *
3 *   Copyright (c) 2014 - 2018 Axel Menzel <info@rttr.org>                           *
4 *                                                                                   *
5 *   This file is part of RTTR (Run Time Type Reflection)                            *
6 *   License: MIT License                                                            *
7 *                                                                                   *
8 *   Permission is hereby granted, free of charge, to any person obtaining           *
9 *   a copy of this software and associated documentation files (the "Software"),    *
10 *   to deal in the Software without restriction, including without limitation       *
11 *   the rights to use, copy, modify, merge, publish, distribute, sublicense,        *
12 *   and/or sell copies of the Software, and to permit persons to whom the           *
13 *   Software is furnished to do so, subject to the following conditions:            *
14 *                                                                                   *
15 *   The above copyright notice and this permission notice shall be included in      *
16 *   all copies or substantial portions of the Software.                             *
17 *                                                                                   *
18 *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR      *
19 *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,        *
20 *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE     *
21 *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER          *
22 *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,   *
23 *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE   *
24 *   SOFTWARE.                                                                       *
25 *                                                                                   *
26 *************************************************************************************/
27 
28 #ifndef RTTR_STD_CONVERSION_FUNCTIONS_H_
29 #define RTTR_STD_CONVERSION_FUNCTIONS_H_
30 
31 #include "rttr/detail/base/core_prerequisites.h"
32 #include <string>
33 
34 namespace rttr
35 {
36 namespace detail
37 {
38 /////////////////////////////////////////////////////////////////////////////////////////
39 
40 RTTR_API std::string to_string(int value, bool* ok);
41 
42 /////////////////////////////////////////////////////////////////////////////////////////
43 
44 RTTR_API std::string to_string(long value, bool* ok);
45 
46 /////////////////////////////////////////////////////////////////////////////////////////
47 
48 RTTR_API std::string to_string(long long value, bool* ok);
49 
50 /////////////////////////////////////////////////////////////////////////////////////////
51 
52 RTTR_API std::string to_string(unsigned value, bool* ok);
53 
54 /////////////////////////////////////////////////////////////////////////////////////////
55 
56 RTTR_API std::string to_string(unsigned long value, bool* ok);
57 
58 /////////////////////////////////////////////////////////////////////////////////////////
59 
60 RTTR_API std::string to_string(unsigned long long value, bool* ok);
61 
62 /////////////////////////////////////////////////////////////////////////////////////////
63 
64 RTTR_API std::string to_string(float value, bool* ok);
65 
66 /////////////////////////////////////////////////////////////////////////////////////////
67 
68 RTTR_API std::string to_string(double value, bool* ok);
69 
70 /////////////////////////////////////////////////////////////////////////////////////////
71 /////////////////////////////////////////////////////////////////////////////////////////
72 /////////////////////////////////////////////////////////////////////////////////////////
73 
74 /////////////////////////////////////////////////////////////////////////////////////////
75 
76 RTTR_API bool string_to_bool(std::string value, bool* ok);
77 
78 /////////////////////////////////////////////////////////////////////////////////////////
79 
80 RTTR_API int string_to_int(const std::string& source, bool* ok);
81 
82 /////////////////////////////////////////////////////////////////////////////////////////
83 
84 RTTR_API unsigned long string_to_ulong(const std::string& source, bool* ok);
85 
86 /////////////////////////////////////////////////////////////////////////////////////////
87 
88 RTTR_API long long string_to_long_long(const std::string& source, bool* ok);
89 
90 /////////////////////////////////////////////////////////////////////////////////////////
91 
92 RTTR_API unsigned long long string_to_ulong_long(const std::string& source, bool* ok);
93 
94 /////////////////////////////////////////////////////////////////////////////////////////
95 
96 RTTR_API float string_to_float(const std::string& source, bool* ok);
97 
98 /////////////////////////////////////////////////////////////////////////////////////////
99 
100 RTTR_API double string_to_double(const std::string& source, bool* ok);
101 
102 /////////////////////////////////////////////////////////////////////////////////////////
103 
104 } // end namespace detail
105 } // end namespace rttr
106 
107 #endif // RTTR_STD_CONVERSION_FUNCTIONS_H_
108