Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/network/src/util/String.h @ 1454

Last change on this file since 1454 was 1446, checked in by landauf, 16 years ago

merged console branch into network branch

after several heavy troubles it compiles, but there is still a bug I couldn't fix: orxonox crashes as soon as one presses a key after opening the console… maybe someone else sees the problem?

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