1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-11 23:54:18 +00:00

Refactored various string processing in the library. Removed a couple of String accessors that relied on assumptions about the format of the string's internal data (if your code has any problems with these changes, you should probably use the String::getCharPointer() method instead).

This commit is contained in:
Julian Storer 2011-01-31 17:59:38 +00:00
parent c10c810aee
commit 3bacbe2a8c
37 changed files with 780 additions and 893 deletions

View file

@ -37,7 +37,7 @@ StringPool::~StringPool() {}
namespace StringPoolHelpers
{
template <class StringType>
const juce_wchar* getPooledStringFromArray (Array<String>& strings, StringType newString)
const String::CharPointerType getPooledStringFromArray (Array<String>& strings, StringType newString)
{
int start = 0;
int end = strings.size();
@ -48,14 +48,14 @@ namespace StringPoolHelpers
{
jassert (start <= end);
strings.insert (start, newString);
return strings.getReference (start);
return strings.getReference (start).getCharPointer();
}
else
{
const String& startString = strings.getReference (start);
if (startString == newString)
return startString;
return startString.getCharPointer();
const int halfway = (start + end) >> 1;
@ -65,13 +65,13 @@ namespace StringPoolHelpers
++start;
strings.insert (start, newString);
return strings.getReference (start);
return strings.getReference (start).getCharPointer();
}
const int comp = strings.getReference (halfway).compare (newString);
if (comp == 0)
return strings.getReference (halfway);
return strings.getReference (halfway).getCharPointer();
else if (comp < 0)
start = halfway;
else
@ -81,26 +81,26 @@ namespace StringPoolHelpers
}
}
const juce_wchar* StringPool::getPooledString (const String& s)
const String::CharPointerType StringPool::getPooledString (const String& s)
{
if (s.isEmpty())
return String::empty;
return String::empty.getCharPointer();
return StringPoolHelpers::getPooledStringFromArray (strings, s);
}
const juce_wchar* StringPool::getPooledString (const char* const s)
const String::CharPointerType StringPool::getPooledString (const char* const s)
{
if (s == 0 || *s == 0)
return String::empty;
return String::empty.getCharPointer();
return StringPoolHelpers::getPooledStringFromArray (strings, s);
}
const juce_wchar* StringPool::getPooledString (const juce_wchar* const s)
const String::CharPointerType StringPool::getPooledString (const juce_wchar* const s)
{
if (s == 0 || *s == 0)
return String::empty;
return String::empty.getCharPointer();
return StringPoolHelpers::getPooledStringFromArray (strings, s);
}
@ -112,7 +112,7 @@ int StringPool::size() const throw()
const juce_wchar* StringPool::operator[] (const int index) const throw()
{
return strings [index];
return strings [index].getCharPointer();
}
END_JUCE_NAMESPACE