forked from mirror/openmw-tes3mp
Apply 27e669296e
(locale-unaware tolower) to more code
In particular, the one in VFS::normalizeFilename was affecting cell loading performance.
This commit is contained in:
parent
f962ce0bbe
commit
d5a738bd39
5 changed files with 15 additions and 20 deletions
|
@ -2,7 +2,7 @@
|
|||
#define GAME_MWDIALOGUE_KEYWORDSEARCH_H
|
||||
|
||||
#include <map>
|
||||
#include <locale>
|
||||
#include <cctype>
|
||||
#include <stdexcept>
|
||||
#include <vector>
|
||||
#include <algorithm> // std::reverse
|
||||
|
@ -44,7 +44,7 @@ public:
|
|||
typename Entry::childen_t::iterator current;
|
||||
typename Entry::childen_t::iterator next;
|
||||
|
||||
current = mRoot.mChildren.find (std::tolower (*keyword.begin(), mLocale));
|
||||
current = mRoot.mChildren.find (tolower (*keyword.begin()));
|
||||
if (current == mRoot.mChildren.end())
|
||||
return false;
|
||||
else if (current->second.mKeyword.size() && Misc::StringUtils::ciEqual(current->second.mKeyword, keyword))
|
||||
|
@ -55,7 +55,7 @@ public:
|
|||
|
||||
for (Point i = ++keyword.begin(); i != keyword.end(); ++i)
|
||||
{
|
||||
next = current->second.mChildren.find(std::tolower (*i, mLocale));
|
||||
next = current->second.mChildren.find(tolower (*i));
|
||||
if (next == current->second.mChildren.end())
|
||||
return false;
|
||||
if (Misc::StringUtils::ciEqual(next->second.mKeyword, keyword))
|
||||
|
@ -89,7 +89,7 @@ public:
|
|||
|
||||
|
||||
// check first character
|
||||
typename Entry::childen_t::iterator candidate = mRoot.mChildren.find (std::tolower (*i, mLocale));
|
||||
typename Entry::childen_t::iterator candidate = mRoot.mChildren.find (tolower (*i));
|
||||
|
||||
// no match, on to next character
|
||||
if (candidate == mRoot.mChildren.end ())
|
||||
|
@ -104,7 +104,7 @@ public:
|
|||
|
||||
while ((j + 1) != end)
|
||||
{
|
||||
typename Entry::childen_t::iterator next = candidate->second.mChildren.find (std::tolower (*++j, mLocale));
|
||||
typename Entry::childen_t::iterator next = candidate->second.mChildren.find (tolower (*++j));
|
||||
|
||||
if (next == candidate->second.mChildren.end ())
|
||||
{
|
||||
|
@ -136,7 +136,7 @@ public:
|
|||
|
||||
while (k != end && t != candidate->second.mKeyword.end ())
|
||||
{
|
||||
if (std::tolower (*k, mLocale) != std::tolower (*t, mLocale))
|
||||
if (tolower (*k) != tolower (*t))
|
||||
break;
|
||||
|
||||
++k, ++t;
|
||||
|
@ -212,7 +212,7 @@ private:
|
|||
|
||||
void seed_impl (string_t keyword, value_t value, size_t depth, Entry & entry)
|
||||
{
|
||||
int ch = tolower (keyword.at (depth), mLocale);
|
||||
int ch = tolower (keyword.at (depth));
|
||||
|
||||
typename Entry::childen_t::iterator j = entry.mChildren.find (ch);
|
||||
|
||||
|
@ -249,7 +249,6 @@ private:
|
|||
}
|
||||
|
||||
Entry mRoot;
|
||||
std::locale mLocale;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -29,8 +29,6 @@ struct JournalViewModelImpl : JournalViewModel
|
|||
mutable bool mKeywordSearchLoaded;
|
||||
mutable KeywordSearchT mKeywordSearch;
|
||||
|
||||
std::locale mLocale;
|
||||
|
||||
JournalViewModelImpl ()
|
||||
{
|
||||
mKeywordSearchLoaded = false;
|
||||
|
@ -74,7 +72,7 @@ struct JournalViewModelImpl : JournalViewModel
|
|||
}
|
||||
}
|
||||
|
||||
wchar_t tolower (wchar_t ch) const { return std::tolower (ch, mLocale); }
|
||||
wchar_t tolower (wchar_t ch) const { return tolower (ch); }
|
||||
|
||||
bool isEmpty () const
|
||||
{
|
||||
|
@ -319,7 +317,7 @@ struct JournalViewModelImpl : JournalViewModel
|
|||
|
||||
for (MWBase::Journal::TTopicIter i = journal->topicBegin (); i != journal->topicEnd (); ++i)
|
||||
{
|
||||
if (i->first [0] != std::tolower (character, mLocale))
|
||||
if (i->first [0] != tolower (character))
|
||||
continue;
|
||||
|
||||
visitor (i->second.getName());
|
||||
|
|
|
@ -28,8 +28,8 @@ namespace Files
|
|||
|
||||
for (std::size_t i=0; i<len; ++i)
|
||||
{
|
||||
char l = std::tolower (left[i]);
|
||||
char r = std::tolower (right[i]);
|
||||
char l = tolower (left[i]);
|
||||
char r = tolower (right[i]);
|
||||
|
||||
if (l!=r)
|
||||
return false;
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <locale>
|
||||
#include <cctype>
|
||||
|
||||
#include <boost/filesystem/path.hpp>
|
||||
|
@ -25,12 +24,11 @@ namespace Files
|
|||
return left<right;
|
||||
|
||||
std::size_t min = std::min (left.length(), right.length());
|
||||
std::locale loc;
|
||||
|
||||
for (std::size_t i=0; i<min; ++i)
|
||||
{
|
||||
char l = std::tolower (left[i], loc);
|
||||
char r = std::tolower (right[i], loc);
|
||||
char l = tolower (left[i]);
|
||||
char r = tolower (right[i]);
|
||||
|
||||
if (l<r)
|
||||
return true;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "manager.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <stdexcept>
|
||||
#include <locale>
|
||||
|
||||
#include "archive.hpp"
|
||||
|
||||
|
@ -15,7 +15,7 @@ namespace
|
|||
|
||||
char nonstrict_normalize_char(char ch)
|
||||
{
|
||||
return ch == '\\' ? '/' : std::tolower(ch,std::locale::classic());
|
||||
return ch == '\\' ? '/' : tolower(ch);
|
||||
}
|
||||
|
||||
void normalize_path(std::string& path, bool strict)
|
||||
|
|
Loading…
Reference in a new issue