00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_UTIL_HPP_)
00012 #define _XRB_UTIL_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include <stdlib.h>
00017 #include <string>
00018
00019 #include "xrb_enums.hpp"
00020
00021 namespace Xrb
00022 {
00023
00028 namespace Util
00029 {
00033 void ReplaceAllInString (
00034 std::string *string,
00035 std::string const &string_to_replace,
00036 std::string const &string_to_replace_with);
00039 std::string StringPrintf (char const *format, ...);
00042 void StringPrintf (std::string *string, char const *format, ...);
00043
00044
00045
00046
00047
00048
00053 char *StringDuplicate (char const *string_to_duplicate);
00057 char Lowercase (char c);
00061 char Uppercase (char c);
00064 void MakeLowercase (std::string *str);
00067 void MakeUppercase (std::string *str);
00071 char ShiftedAscii (char c);
00072
00076 bool CharacterLiteralCharNeedsEscaping (char c);
00080 bool StringLiteralCharNeedsEscaping (char c);
00090 char EscapeCode (char c);
00100 char EscapedChar (char c);
00101
00107 std::string CharacterLiteral (char c);
00113 std::string StringLiteral (std::string const &text);
00114
00118 template <typename Sint>
00119 Sint TextToSint (char const *const text)
00120 {
00121 return static_cast<Sint>(strtol(text, NULL, 10));
00122 }
00126 template <typename Uint>
00127 Uint TextToUint (char const *const text)
00128 {
00129 return static_cast<Uint>(strtoul(text, NULL, 10));
00130 }
00133 inline Float TextToFloat (char const *const text)
00134 {
00135 #if defined(WIN32)
00136 return static_cast<Float>(strtod(text, NULL));
00137 #else
00138 return strtof(text, NULL);
00139 #endif
00140 }
00145 inline Float TextToFloat (char const *const text, char const **const end)
00146 {
00147
00148 #if defined(WIN32)
00149 return static_cast<Float>(strtod(text, const_cast<char **>(end)));
00150 #else
00151 return strtof(text, const_cast<char **>(end));
00152 #endif
00153 }
00154
00157 char const *IOErrorString (IOError error);
00158
00163 std::string DirectoryPortion (std::string const &path);
00168 std::string FilenamePortion (std::string const &path);
00169 }
00170
00171 }
00172
00173 #endif // !defined(_XRB_UTIL_HPP_)
00174