4.53 beta

This commit is contained in:
Igor Pavlov
2007-08-27 00:00:00 +00:00
committed by Kornel Lesiński
parent 33ccab7e72
commit 051769bbc5
360 changed files with 4658 additions and 5167 deletions

View File

@@ -96,6 +96,23 @@ public:
return -1;
}
int AddToUniqueSorted(const T& item)
{
int left = 0, right = Size();
while (left != right)
{
int mid = (left + right) / 2;
const T& midValue = (*this)[mid];
if (item == midValue)
return mid;
if (item < midValue)
right = mid;
else
left = mid + 1;
}
Insert(right, item);
return right;
}
static void SortRefDown(T* p, int k, int size, int (*compare)(const T*, const T*, void *), void *param)
{

View File

@@ -44,50 +44,38 @@ int CompareFileNames(const UString &s1, const UString &s2)
}
// -----------------------------------------
// this function tests is name matches mask
// ? - any wchar_t or empty
// * - any characters or empty
// this function compares name with mask
// ? - any char
// * - any char or empty
static bool EnhancedMaskTest(const UString &mask, int maskPos,
const UString &name, int namePos)
static bool EnhancedMaskTest(const wchar_t *mask, const wchar_t *name)
{
int maskLen = mask.Length() - maskPos;
int nameLen = name.Length() - namePos;
if (maskLen == 0)
if (nameLen == 0)
return true;
else
return false;
wchar_t maskChar = mask[maskPos];
if(maskChar == kAnyCharChar)
for (;;)
{
/*
if (EnhancedMaskTest(mask, maskPos + 1, name, namePos))
return true;
*/
if (nameLen == 0)
return false;
return EnhancedMaskTest(mask, maskPos + 1, name, namePos + 1);
}
else if(maskChar == kAnyCharsChar)
{
if (EnhancedMaskTest(mask, maskPos + 1, name, namePos))
return true;
if (nameLen == 0)
return false;
return EnhancedMaskTest(mask, maskPos, name, namePos + 1);
}
else
{
wchar_t c = name[namePos];
if (maskChar != c)
wchar_t m = *mask;
wchar_t c = *name;
if (m == 0)
return (c == 0);
if (m == kAnyCharsChar)
{
if (g_CaseSensitive)
return false;
else if (MyCharUpper(maskChar) != MyCharUpper(c))
if (EnhancedMaskTest(mask + 1, name))
return true;
if (c == 0)
return false;
}
return EnhancedMaskTest(mask, maskPos + 1, name, namePos + 1);
else
{
if (m == kAnyCharChar)
{
if (c == 0)
return false;
}
else if (m != c)
if (g_CaseSensitive || MyCharUpper(m) != MyCharUpper(c))
return false;
mask++;
}
name++;
}
}
@@ -146,7 +134,7 @@ UString ExtractFileNameFromPath(const UString &path)
bool CompareWildCardWithName(const UString &mask, const UString &name)
{
return EnhancedMaskTest(mask, 0, name, 0);
return EnhancedMaskTest(mask, name);
}
bool DoesNameContainWildCard(const UString &path)