winamp/Src/nde/osx/FilenameField.cpp

46 lines
1.3 KiB
C++

#include "FilenameField.h"
#include "nde.h"
/*
Mac OS X implementation of FilenameField
only the equals operator will be case-sensitive. substring search, ends, starts, etc. will be case-insensitive,
to make things like "filename ends .mp3" easier
TODO: it'd be massive overhead, but it'd be more correct to check if the file system is actually case sensitive (for the path being searched)
*/
//---------------------------------------------------------------------------
FilenameField::FilenameField(CFStringRef Str) : StringField(Str)
{
Type = FIELD_FILENAME;
}
//---------------------------------------------------------------------------
FilenameField::FilenameField()
{
Type = FIELD_FILENAME;
}
//---------------------------------------------------------------------------
int FilenameField::Compare(Field *Entry)
{
if (!Entry) return -1;
if (Entry->GetType() != GetType()) return 0;
CFStringRef compareString = ((StringField*)Entry)->GetString();
if (!String && !compareString) return 0;
if (!String && compareString) return 1;
if (!compareString) return -1;
return CFStringCompare(String, compareString, 0);
}
Field *FilenameField::Clone(Table *pTable)
{
FilenameField *clone = new FilenameField(String);
clone->Pos = FIELD_CLONE;
clone->ID = ID;
clone->MaxSizeOnDisk = GetDataSize();
return clone;
}