summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/StringUtil.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-10-13 19:21:25 +0000
committerhrydgard <hrydgard@gmail.com>2008-10-13 19:21:25 +0000
commite13ca7e384d7f529854aa314f8cdf62ed9898a09 (patch)
treebe0df6fa0437f71d4d65605c6bed1312f0287c0f /Source/Core/Common/Src/StringUtil.cpp
parent744efe72e5a46375835e2bd06cf9a5e77476b764 (diff)
Fix Action Replay properly (i hope :P).. some misc code cleanup
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@851 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/StringUtil.cpp')
-rw-r--r--Source/Core/Common/Src/StringUtil.cpp193
1 files changed, 50 insertions, 143 deletions
diff --git a/Source/Core/Common/Src/StringUtil.cpp b/Source/Core/Common/Src/StringUtil.cpp
index 133d2fb515..fface8ae1c 100644
--- a/Source/Core/Common/Src/StringUtil.cpp
+++ b/Source/Core/Common/Src/StringUtil.cpp
@@ -28,103 +28,35 @@ bool AsciiToHex(const char* _szValue, u32& result)
size_t finish = strlen(_szValue);
if (finish > 8)
- {
- finish = 8;
- }
+ finish = 8; // Max 32-bit values are supported.
for (size_t count = 0; count < finish; count++)
{
value <<= 4;
-
switch (_szValue[count])
{
- case '0':
- break;
-
- case '1':
- value += 1;
- break;
-
- case '2':
- value += 2;
- break;
-
- case '3':
- value += 3;
- break;
-
- case '4':
- value += 4;
- break;
-
- case '5':
- value += 5;
- break;
-
- case '6':
- value += 6;
- break;
-
- case '7':
- value += 7;
- break;
-
- case '8':
- value += 8;
- break;
-
- case '9':
- value += 9;
- break;
-
+ case '0': break;
+ case '1': value += 1; break;
+ case '2': value += 2; break;
+ case '3': value += 3; break;
+ case '4': value += 4; break;
+ case '5': value += 5; break;
+ case '6': value += 6; break;
+ case '7': value += 7; break;
+ case '8': value += 8; break;
+ case '9': value += 9; break;
case 'A':
- value += 10;
- break;
-
- case 'a':
- value += 10;
- break;
-
+ case 'a': value += 10; break;
case 'B':
- value += 11;
- break;
-
- case 'b':
- value += 11;
- break;
-
+ case 'b': value += 11; break;
case 'C':
- value += 12;
- break;
-
- case 'c':
- value += 12;
- break;
-
+ case 'c': value += 12; break;
case 'D':
- value += 13;
- break;
-
- case 'd':
- value += 13;
- break;
-
+ case 'd': value += 13; break;
case 'E':
- value += 14;
- break;
-
- case 'e':
- value += 14;
- break;
-
+ case 'e': value += 14; break;
case 'F':
- value += 15;
- break;
-
- case 'f':
- value += 15;
- break;
-
+ case 'f': value += 15; break;
default:
return false;
break;
@@ -201,10 +133,10 @@ void ToStringFromFormat(std::string* out, const char* format, ...)
// Turns " hej " into "hej". Also handles tabs.
-std::string StripSpaces(std::string s)
+std::string StripSpaces(const std::string &str)
{
+ std::string s = str;
int i;
-
for (i = 0; i < (int)s.size(); i++)
{
if ((s[i] != ' ') && (s[i] != 9))
@@ -223,7 +155,7 @@ std::string StripSpaces(std::string s)
}
}
- return(s.substr(0, i + 1));
+ return s.substr(0, i + 1);
}
@@ -233,15 +165,23 @@ std::string StripSpaces(std::string s)
std::string StripQuotes(const std::string& s)
{
if ((s[0] == '\"') && (s[s.size() - 1] == '\"'))
- {
- return(s.substr(1, s.size() - 2));
- }
+ return s.substr(1, s.size() - 2);
else
- {
- return(s);
- }
+ return s;
}
+// "\"hello\"" is turned to "hello"
+// This one assumes that the string has already been space stripped in both
+// ends, as done by StripSpaces above, for example.
+std::string StripNewline(const std::string& s)
+{
+ if (!s.size())
+ return s;
+ else if (s[s.size() - 1] == '\n')
+ return s.substr(0, s.size() - 1);
+ else
+ return s;
+}
bool TryParseInt(const char* str, int* outVal)
{
@@ -261,7 +201,7 @@ bool TryParseInt(const char* str, int* outVal)
if ((c < '0') || (c > '9'))
{
- return(false);
+ return false;
}
value = value * 10 + (c - '0');
@@ -270,7 +210,7 @@ bool TryParseInt(const char* str, int* outVal)
value = -value;
*outVal = value;
- return(true);
+ return true;
}
@@ -279,32 +219,28 @@ bool TryParseBool(const char* str, bool* output)
if ((str[0] == '1') || !strcmp(str, "true") || !strcmp(str, "True") || !strcmp(str, "TRUE"))
{
*output = true;
- return(true);
+ return true;
}
else if (str[0] == '0' || !strcmp(str, "false") || !strcmp(str, "False") || !strcmp(str, "FALSE"))
{
*output = false;
- return(true);
+ return true;
}
-
- return(false);
+ return false;
}
-
std::string StringFromInt(int value)
{
char temp[16];
sprintf(temp, "%i", value);
- return(std::string(temp));
+ return std::string(temp);
}
-
std::string StringFromBool(bool value)
{
- return(value ? "True" : "False");
+ return value ? "True" : "False";
}
-
#ifdef _WIN32
bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _pFilename, std::string* _pExtension)
{
@@ -330,10 +266,10 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
*_pExtension = ext;
}
- return(true);
+ return true;
}
- return(false);
+ return false;
}
@@ -344,14 +280,14 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
if (last_slash == std::string::npos)
{
- return(false);
+ return false;
}
size_t last_dot = full_path.rfind('.');
if ((last_dot == std::string::npos) || (last_dot < last_slash))
{
- return(false);
+ return false;
}
if (_pPath)
@@ -374,7 +310,7 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
*_pFilename += full_path.substr(last_dot);
}
- return(true);
+ return true;
}
@@ -418,49 +354,20 @@ void SplitString(const std::string& str, const std::string& delim, std::vector<s
bool TryParseUInt(const std::string& str, u32* output)
{
if (!strcmp(str.substr(0, 2).c_str(), "0x") || !strcmp(str.substr(0, 2).c_str(), "0X"))
- {
- return(sscanf(str.c_str() + 2, "%x", output) > 0);
- }
+ return sscanf(str.c_str() + 2, "%x", output) > 0;
else
- {
- return(sscanf(str.c_str(), "%d", output) > 0);
- }
+ return sscanf(str.c_str(), "%d", output) > 0;
}
int ChooseStringFrom(const char* str, const char* * items)
{
int i = 0;
-
while (items[i] != 0)
{
if (!strcmp(str, items[i]))
- {
- return(i);
- }
-
+ return i;
i++;
}
-
- return(-1);
-}
-
-
-// Hmm, sometimes this test doesn't get run :P
-TEST(splitStringTest)
-{
- /*
- std::string orig = "abc:def";
- std::vector<std::string> split;
- SplitString(orig, std::string(":"), split);
- CHECK(split.size() == 2);
- CHECK(!strcmp(split[0].c_str(), "abc"));
- CHECK(!strcmp(split[1].c_str(), "def"));
-
- orig = "abc";
- SplitString(orig, std::string(":"), split);
- CHECK(split.size() == 1);
- orig = ":";
- SplitString(orig, std::string(":"), split);
- CHECK(split.size() == 2);*/
+ return -1;
}