aboutsummaryrefslogtreecommitdiff
path: root/Src/nde/osx/FilenameField.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/nde/osx/FilenameField.cpp')
-rw-r--r--Src/nde/osx/FilenameField.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/Src/nde/osx/FilenameField.cpp b/Src/nde/osx/FilenameField.cpp
new file mode 100644
index 00000000..7cb50f49
--- /dev/null
+++ b/Src/nde/osx/FilenameField.cpp
@@ -0,0 +1,45 @@
+#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;
+}