Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core2/src/util/String.h @ 1009

Last change on this file since 1009 was 1006, checked in by landauf, 17 years ago

started implementing a config-file manager, but this is still unfinished.

File size: 5.4 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *
4 *
5 *   License notice:
6 *
7 *   This program is free software; you can redistribute it and/or
8 *   modify it under the terms of the GNU General Public License
9 *   as published by the Free Software Foundation; either version 2
10 *   of the License, or (at your option) any later version.
11 *
12 *   This program is distributed in the hope that it will be useful,
13 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 *   GNU General Public License for more details.
16 *
17 *   You should have received a copy of the GNU General Public License
18 *   along with this program; if not, write to the Free Software
19 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20 *
21 *   Author:
22 *      Fabian 'x3n' Landau
23 *   Co-authors:
24 *      Benjamin Grauer
25 *
26 */
27
28#ifndef _Util_String_H__
29#define _Util_String_H__
30
31#include <string>
32#include <sstream>
33
34#include "UtilPrereqs.h"
35
36_UtilExport void         strip(std::string* str);
37_UtilExport std::string  getStripped(const std::string& str);
38
39_UtilExport std::string  removeTrailingWhitespaces(const std::string& str);
40
41_UtilExport bool         hasStringBetweenQuotes(const std::string& str);
42_UtilExport std::string  getStringBetweenQuotes(const std::string& str);
43
44_UtilExport void         stripEnclosingQuotes(std::string* str);
45_UtilExport std::string  getStrippedEnclosingQuotes(const std::string& str);
46
47_UtilExport bool         isEmpty(const std::string& str);
48_UtilExport bool         isComment(const std::string& str);
49_UtilExport bool         isNumeric(const std::string& str);
50
51_UtilExport void         lowercase(std::string* str);
52_UtilExport std::string  getLowercase(const std::string& str);
53
54_UtilExport void         uppercase(std::string* str);
55_UtilExport std::string  getUppercase(const std::string& str);
56
57_UtilExport int          nocaseCmp(const std::string& s1, const std::string& s2);
58_UtilExport int          nocaseCmp(const std::string& s1, const std::string& s2, unsigned int len);
59
60_UtilExport bool         hasComment(const std::string& str);
61_UtilExport std::string  getComment(const std::string& str);
62_UtilExport unsigned int getCommentPosition(const std::string& str);
63
64//! The Convert class has some static member functions to convert strings to values and values to strings.
65class _UtilExport Convert
66{
67    public:
68        /**
69            @brief Converts a value of any type to a string.
70            @param output The string to write the result in
71            @param input The variable to convert
72            @return True if the conversion succeded
73
74            @example
75            float f = 3.14;
76            std::string output;
77            bool success = Convert::ToString(&output, f);
78        */
79        template <typename T>
80        static bool ToString(std::string* output, T input)
81        {
82            std::ostringstream oss;
83            if (oss << input)
84            {
85                (*output) = oss.str();
86                return true;
87            }
88
89            return false;
90        }
91
92        /**
93            @brief Converts a value of any type to a string and assigns a defaultvalue if the conversion fails.
94            @param output The string to write the result in
95            @param input The variable to convert
96            @param fallbackString The assigned string if the conversion fails.
97            @return True if the conversion succeeded
98
99            @example
100            float f = 3.14;
101            std::string output;
102            bool success = Convert::ToString(&output, f, "0.000000");
103        */
104        template <typename T>
105        static bool ToString(std::string* output, T input, const std::string& fallbackString)
106        {
107            if (Convert::ToString(output, input))
108                return true;
109
110            (*output) = fallbackString;
111            return false;
112        }
113
114        /**
115            @brief Converts a string to a value of any type.
116            @param output The variable to assign the result to
117            @param input The string to convert
118            @return True if the conversion succeeded
119
120            @example
121            std::string input = "3.14";
122            float f;
123            bool success = string2Number(&f, input);
124        */
125        template <typename T>
126        static bool FromString(T* output, const std::string& input)
127        {
128            std::istringstream iss(input);
129            if (iss >> (*output))
130                return true;
131
132            return false;
133        }
134
135        /**
136            @brief Converts a string to a value of any type.
137            @param output The variable to assign the result to
138            @param input The string to convert
139            @param fallbackValue The assigned value if the conversion fails
140            @return True if the conversion succeeded
141
142            @example
143            std::string input = "3.14";
144            float f;
145            bool success = string2Number(&f, input, 0.000000);
146        */
147        template <typename T>
148        static bool FromString(T* output, const std::string& input, T fallbackValue)
149        {
150            if (Convert::FromString(output, input))
151                return true;
152
153            (*output) = fallbackValue;
154            return false;
155        }
156};
157
158#endif /* _Util_String_H__ */
Note: See TracBrowser for help on using the repository browser.