public Register NewRegister(IDictionary <ulong, Complex> initStates, int width) { Quantum.Register reg = _comp.NewRegister(initStates, width); Register created = Init(reg); _modelRefs[created.Model] = created; created.Model.Qubits.CollectionChanged += Qubits_CollectionChanged; return(created); }
public Register NewRegister(ulong initval, int width, int?size = null) { Quantum.Register reg = _comp.NewRegister(initval, width, size); Register created = Init(reg); _modelRefs[created.Model] = created; created.Model.Qubits.CollectionChanged += Qubits_CollectionChanged; return(created); }
internal Register NewFromModel(RegisterModel regModel) { Quantum.Register reg = _comp.NewRegister(regModel.InitStates, regModel.Qubits.Count); Register created = InitFromModel(reg, regModel); if (!_modelRefs.ContainsKey(created.Model)) { regModel.Qubits.CollectionChanged += Qubits_CollectionChanged; } _modelRefs[created.Model] = created; return(created); }
private Register InitFromModel(Quantum.Register reg, RegisterModel regModel) { if (_quantumRoot == null) { _quantumRoot = _comp.GetRootRegister(reg); } else { _quantumRoot = _comp.GetRootRegister(_quantumRoot, reg); } _parserRoot = new Register(_model, _quantumRoot, null, 0); return(new Register(_model, reg, regModel)); }
internal Quantum.Register ModelToSource(RegisterPartModel model) { Quantum.Register toReturn = _parserRoot.SourceRegister; if (model.Register != null) { toReturn = _modelRefs[model.Register].SourceRegister; } if (model.Width == toReturn.Width) { return(toReturn); } else { return(toReturn[model.Offset, model.Width]); } }
private Register Init(Quantum.Register reg) { RegisterModel regModel = new RegisterModel( _model.Registers.Count, 0, reg.Width, reg.GetAmplitudes()); if (_quantumRoot == null) { _quantumRoot = _comp.GetRootRegister(reg); } else { _quantumRoot = _comp.GetRootRegister(_quantumRoot, reg); } _parserRoot = new Register(_model, _quantumRoot, null, 0); _listenToModelChanges = false; _model.AddRegister(regModel); _listenToModelChanges = true; return(new Register(_model, reg, regModel)); }