summaryrefslogtreecommitdiff
path: root/FreeFileSync.h
diff options
context:
space:
mode:
Diffstat (limited to 'FreeFileSync.h')
-rw-r--r--FreeFileSync.h60
1 files changed, 19 insertions, 41 deletions
diff --git a/FreeFileSync.h b/FreeFileSync.h
index 92d90189..4b269863 100644
--- a/FreeFileSync.h
+++ b/FreeFileSync.h
@@ -4,9 +4,8 @@
#include <wx/string.h>
#include <set>
#include <vector>
-#include "library/statusHandler.h"
#include "library/fileHandling.h"
-
+#include "library/zstring.h"
namespace FreeFileSync
{
@@ -80,52 +79,31 @@ namespace FreeFileSync
TYPE_FILE
};
- wxString fullName; // == directory + relativeName
- wxString directory; //directory to be synced + separator
- wxString relativeName; //fullName without directory that is being synchronized
+ Zstring fullName; // == directory + relativeName
+ Zstring directory; //directory to be synced + separator
+ Zstring relativeName; //fullName without directory that is being synchronized
//Note on performance: Keep redundant information "directory" and "relativeName"!
//Extracting info from "fullName" instead would result in noticeable performance loss, with only limited memory reduction (note ref. counting strings)!
- wxString lastWriteTime;
- wxULongLong lastWriteTimeRaw;
+ time_t lastWriteTimeRaw; //number of seconds since Jan. 1st 1970 UTC
wxULongLong fileSize;
ObjectType objType; //is it a file or directory or initial?
//the following operators are needed by template class "set"
//DO NOT CHANGE THESE RELATIONS!!!
-#ifdef FFS_WIN
- //Windows does NOT distinguish between upper/lower-case
- bool operator>(const FileDescrLine& b ) const
- {
- return (relativeName.CmpNoCase(b.relativeName) > 0);
- }
- bool operator<(const FileDescrLine& b) const
- {
- return (relativeName.CmpNoCase(b.relativeName) < 0);
- }
- bool operator==(const FileDescrLine& b) const
- {
- return (relativeName.CmpNoCase(b.relativeName) == 0);
- }
-
-#elif defined FFS_LINUX
- //Linux DOES distinguish between upper/lower-case
- bool operator>(const FileDescrLine& b ) const
- {
- return (relativeName.Cmp(b.relativeName) > 0);
- }
- bool operator<(const FileDescrLine& b) const
- {
- return (relativeName.Cmp(b.relativeName) < 0);
- }
- bool operator==(const FileDescrLine& b) const
- {
- return (relativeName.Cmp(b.relativeName) == 0);
- }
-#else
- adapt this
+ bool operator < (const FileDescrLine& b) const
+ { //quick check based on string length: we are not interested in a lexicographical order!
+ const size_t aLength = relativeName.length();
+ const size_t bLength = b.relativeName.length();
+ if (aLength != bLength)
+ return aLength < bLength;
+#ifdef FFS_WIN //Windows does NOT distinguish between upper/lower-case
+ return relativeName.CmpNoCase(b.relativeName) < 0;
+#elif defined FFS_LINUX //Linux DOES distinguish between upper/lower-case
+ return relativeName.Cmp(b.relativeName) < 0;
#endif
+ }
};
- typedef set<FileDescrLine> DirectoryDescrType;
+ typedef vector<FileDescrLine> DirectoryDescrType;
enum CompareFilesResult
@@ -160,8 +138,8 @@ namespace FreeFileSync
struct FolderPair
{
- wxString leftDirectory;
- wxString rightDirectory;
+ Zstring leftDirectory;
+ Zstring rightDirectory;
};
bgstack15