RuntimeStats Exec(string[] input) { var stats = new RuntimeStats(); var registers = new Dictionary <string, int>(); foreach (var line in input) { var instruction = Parse(line); var regV = registers.GetOrDefault(instruction.CondRegister); var opV = instruction.CondValue; if (!instruction.CondOp(regV, opV)) { continue; } regV = registers.GetOrDefault(instruction.Register); opV = instruction.Value; var result = instruction.Op(regV, opV); registers[instruction.Register] = result; if (stats.LifetimeMaxGegisterValue < result) { stats.LifetimeMaxGegisterValue = result; } } foreach (var v in registers.Values) { if (stats.FinalMaxRegisterValue < v) { stats.FinalMaxRegisterValue = v; } } return(stats); }
static int Main(string[] args) { var directories = new List <DirectoryInfo>(); var switches = new List <string>(); var maybeSwitch = true; foreach (var arg in args) { if (maybeSwitch) { if (arg.StartsWithAny("-", "/")) { switches.Add(arg); continue; } maybeSwitch = false; } var directory = new DirectoryInfo(arg); if (!directory.Exists) { Console.WriteLine($"[Error] Directory {arg} not found - Aborting!"); return((int)CLI.ExitCode.DirectoryNotFound); } directories.Add(directory); } // add current directory if none passed if (!directories.Any()) { directories.Add(new DirectoryInfo(Environment.CurrentDirectory)); } var configuration = new Configuration(); CLI.ProcessCommandLine(switches, configuration); var stats = new RuntimeStats(); DuplicateFileMerger.ProcessFolders(directories, configuration, stats); Console.WriteLine(); Console.WriteLine("Statistics"); Console.WriteLine(); Console.WriteLine(" HardLinks SymbolicLinks"); Console.WriteLine($"Created {stats.HardLinkStats.Created,9:N0} {stats.SymbolicLinkStats.Created,13:N0}"); Console.WriteLine($"Removed {stats.HardLinkStats.Removed,9:N0} {stats.SymbolicLinkStats.Removed,13:N0}"); Console.WriteLine($"Deleted {stats.HardLinkStats.Deleted,9:N0} {stats.SymbolicLinkStats.Deleted,13:N0}"); Console.WriteLine($"Seen {stats.HardLinkStats.Seen,9:N0} {stats.SymbolicLinkStats.Seen,13:N0}"); Console.WriteLine(); Console.WriteLine($"Folders Total : {stats.FolderCount:N0}"); Console.WriteLine($"Files Total : {stats.FileCount:N0}"); Console.WriteLine($"Bytes Total : {stats.BytesTotal:N0} ({FilesizeFormatter.FormatIEC(stats.BytesTotal,"N1")})"); #if DEBUG Console.WriteLine("READY."); Console.ReadKey(); #endif return((int)CLI.ExitCode.Success); }