public void Sort(DiskStructure diskStructure) { rootDirectory.Sort(diskStructure); }
public void Sort(DiskStructure diskStructure) { fatImplementation.Sort(diskStructure); }
public void Sort(DiskStructure diskStructure) { if (children == null) return; foreach (var child in children) { if (child.GetType() == typeof(Directory)) ((Directory)child).Sort(diskStructure); } children.Sort(delegate(FileBase x, FileBase y) { int compare = 0; if (HandleDotAndDotDot(x, y, out compare)) return compare; if ((x.GetType() == typeof(Directory)) && (y.GetType() == typeof(File))) return 1; // Directory are after files if ((y.GetType() == typeof(Directory)) && (x.GetType() == typeof(File))) return -1; // Directory are after files DiskStructure.Directory parent = diskStructure.Root.FindDirectory(x.path); Debug.Assert(parent == diskStructure.Root.FindDirectory(y.path)); int xindex = (x.GetType() == typeof(Directory)) ? parent.GetIndexOfDirectory(x.name) : parent.GetIndexOfFile(x.name); int yindex = (y.GetType() == typeof(Directory)) ? parent.GetIndexOfDirectory(y.name) : parent.GetIndexOfFile(y.name); if (yindex < 0 || xindex < 0) throw new ArgumentOutOfRangeException(); return (xindex - yindex); }); }