46 lines
1.3 KiB
C++
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;
|
|
}
|