/// <summary> /// /// </summary> /// <param name="quantumProcessor">An instance of a class implementing <see cref="IQuantumProcessor"/> interface to be wrapped. If the parameter is null <see cref="QuantumProcessorBase"/> is used.</param> /// <param name="qubitManager">An instance of a class implementing <see cref="IQubitManager"/> interface. If the parameter is null <see cref="QubitManagerTrackingScope"/> is used.</param> /// <param name="randomSeed">A seed to be used by Q# <a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.random">Microsoft.Quantum.Intrinsic.Random</a> operation.</param> public QuantumProcessorDispatcher(IQuantumProcessor?quantumProcessor = null, IQubitManager?qubitManager = null, int?randomSeed = null) : base(qubitManager ?? new QubitManagerTrackingScope(PreallocatedQubitCount, mayExtendCapacity: true, disableBorrowing: false)) { random = new System.Random(randomSeed == null ? DateTime.Now.Millisecond : randomSeed.Value); QuantumProcessor = quantumProcessor ?? new QuantumProcessorBase(); OnOperationStart += QuantumProcessor.OnOperationStart; OnOperationEnd += QuantumProcessor.OnOperationEnd; OnFail += QuantumProcessor.OnFail; OnLog += QuantumProcessor.OnMessage; }
/// <summary> /// /// </summary> /// <param name="quantumProcessor">An instance of a class implementing <see cref="IQuantumProcessor"/> interface to be wrapped.</param> /// <param name="qubitManager">An instance of a class implementing <see cref="IQubitManager"/> interface. If the parameter is null <see cref="QubitManager"/> is used.</param> /// <param name="randomSeed">A seed to be used by Q# <a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.random">Microsoft.Quantum.Intrinsic.Random</a> operation.</param> public QuantumProcessorDispatcher(IQuantumProcessor quantumProcessor, IQubitManager?qubitManager = null, int?randomSeed = null) : base( qubitManager ?? new QubitManager( PreallocatedQubitCount, mayExtendCapacity: true, disableBorrowing: false ), randomSeed ) { QuantumProcessor = quantumProcessor; OnOperationStart += QuantumProcessor.OnOperationStart; OnOperationEnd += QuantumProcessor.OnOperationEnd; OnFail += QuantumProcessor.OnFail; OnLog += QuantumProcessor.OnMessage; }