Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/archive/shader/src/util/String.h @ 11188

Last change on this file since 11188 was 1505, checked in by rgrieder, 16 years ago

f* svn: It doesn't even inform you if you attempt to set a non existing property. It is svn:eol-style and not eol-style when using the command by the way…

  • Property svn:eol-style set to native
File size: 5.7 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.