Esempio n. 1
0
        public void Toggle(ITextEditorUIContext uiContext, int line, int column = 0)
        {
            var bps   = uiContext.GetCodeMappings().Find(line, column);
            var ilbps = GetILCodeBreakpoints(uiContext, bps);

            if (ilbps.Count > 0)
            {
                if (IsEnabled(ilbps))
                {
                    foreach (var ilbp in ilbps)
                    {
                        Remove(ilbp);
                    }
                }
                else
                {
                    foreach (var bpm in ilbps)
                    {
                        bpm.IsEnabled = true;
                    }
                }
            }
            else if (bps.Count > 0)
            {
                foreach (var bp in bps)
                {
                    var md     = bp.Mapping.Method;
                    var serMod = serializedDnModuleCreator.Create(md.Module);
                    var key    = new SerializedDnToken(serMod, md.MDToken);
                    Add(new ILCodeBreakpoint(key, bp.ILRange.From));
                }
                uiContext.ScrollAndMoveCaretTo(bps[0].StartPosition.Line, bps[0].StartPosition.Column);
            }
        }
Esempio n. 2
0
        public CodeMappings(IList <MemberMapping> mappings, ISerializedDnModuleCreator serializedDnModuleCreator)
        {
            this.dict = new Dictionary <SerializedDnToken, MemberMapping>(mappings.Count);

            var serDict = new Dictionary <ModuleDef, SerializedDnModule>();

            foreach (var m in mappings)
            {
                var module = m.Method.Module;
                if (module == null)
                {
                    continue;
                }

                SerializedDnModule serMod;
                if (!serDict.TryGetValue(module, out serMod))
                {
                    serMod = serializedDnModuleCreator.Create(module);
                    serDict.Add(module, serMod);
                }
                var           key = new SerializedDnToken(serMod, m.Method.MDToken);
                MemberMapping oldMm;
                if (this.dict.TryGetValue(key, out oldMm))
                {
                    if (m.MemberCodeMappings.Count < oldMm.MemberCodeMappings.Count)
                    {
                        continue;
                    }
                }
                this.dict[key] = m;
            }
        }
Esempio n. 3
0
		public CodeMappings(IList<MemberMapping> mappings, ISerializedDnModuleCreator serializedDnModuleCreator) {
			this.dict = new Dictionary<SerializedDnToken, MemberMapping>(mappings.Count);

			var serDict = new Dictionary<ModuleDef, SerializedDnModule>();
			foreach (var m in mappings) {
				var module = m.Method.Module;
				if (module == null)
					continue;

				SerializedDnModule serMod;
				if (!serDict.TryGetValue(module, out serMod)) {
					serMod = serializedDnModuleCreator.Create(module);
					serDict.Add(module, serMod);
				}
				var key = new SerializedDnToken(serMod, m.Method.MDToken);
				MemberMapping oldMm;
				if (this.dict.TryGetValue(key, out oldMm)) {
					if (m.MemberCodeMappings.Count < oldMm.MemberCodeMappings.Count)
						continue;
				}
				this.dict[key] = m;
			}
		}