internal Computer(long id, IEnumerable <long> initialMemory, FeedInput inFunc, HandleOutput outFunc, MachineHalted machineHalted = null) { this.memory = new long[initialMemory.Count()]; Array.Copy(initialMemory.ToArray(), 0, this.memory, 0, this.memory.Length); this.feedInput = inFunc; this.handleOutput = outFunc; this.machineHalted = machineHalted; this.machineHalted = machineHalted; this.Id = id; }
internal Computer(long id, IEnumerable <long> initialMemory, ConcurrentQueue <long> inputQ, ConcurrentQueue <long> outputQ, MachineHalted machineHalted = null) { this.memory = new long[initialMemory.Count()]; Array.Copy(initialMemory.ToArray(), 0, this.memory, 0, this.memory.Length); this.input = inputQ; this.output = outputQ; this.machineHalted = machineHalted; this.Id = id; r = new Random(); }
/// <summary> /// Raises <see cref="MachineHalted"/> event with specified arguments /// </summary> /// <param name="machineHaltedEventArgs"><see cref="MachineHalted"/> event arguments</param> public static void InvokeMachineHaltedEvent(MachineHaltedEventArgs machineHaltedEventArgs) { MachineHalted?.Invoke(Machine.RunningInstance, machineHaltedEventArgs); }