コード例 #1
0
ファイル: HexNode.cs プロジェクト: manojdjoshi/dnSpy
		public virtual void OnBufferChanged(NormalizedHexChangeCollection changes) {
			if (!changes.OverlapsWith(Span))
				return;

			foreach (var vm in HexVMs)
				vm.OnBufferChanged(changes);
		}
コード例 #2
0
ファイル: HexVM.cs プロジェクト: pashav15/pashav
 public virtual void OnBufferChanged(NormalizedHexChangeCollection changes)
 {
     foreach (var field in HexFields)
     {
         field.OnBufferChanged(changes);
     }
 }
コード例 #3
0
        public override void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            base.OnBufferChanged(changes);

            if (TreeNode.Children.Count == 0)
            {
                return;
            }

            foreach (var change in changes)
            {
                if (!changes.OverlapsWith(Span))
                {
                    continue;
                }

                var start = HexPosition.Max(Span.Start, change.OldSpan.Start);
                var end   = HexPosition.Min(Span.End, change.OldSpan.End);
                int i     = (int)((start - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
                int endi  = (int)((end - 1 - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
                Debug.Assert(0 <= i && i <= endi && endi < TreeNode.Children.Count);
                while (i <= endi)
                {
                    var obj = (MetadataTableRecordNode)TreeNode.Children[i].Data;
                    obj.OnBufferChanged(changes);
                    i++;
                }
            }
        }
コード例 #4
0
ファイル: MetaDataTableVM.cs プロジェクト: idkwim/dnSpy
        public override void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            foreach (var change in changes)
            {
                if (!change.OldSpan.OverlapsWith(Span))
                {
                    continue;
                }

                var start = HexPosition.Max(Span.Start, change.OldSpan.Start);
                var end   = HexPosition.Min(Span.End, change.OldSpan.End);
                int i     = (int)((start - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
                int endi  = (int)((end - 1 - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
                Debug.Assert(0 <= i && i <= endi && endi < Collection.Count);
                while (i <= endi)
                {
                    var obj = Collection.TryGet(i);
                    if (obj != null)
                    {
                        obj.OnBufferChanged(changes);
                    }
                    i++;
                }
            }
        }
コード例 #5
0
ファイル: HexField.cs プロジェクト: haise0/dnSurgeon
        public void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            if (!changes.OverlapsWith(Span))
            {
                return;
            }

            var newValue = ReadData();

            if (!DataFieldVM.HasError && newValue.Equals(DataFieldVM.ObjectValue))
            {
                return;
            }

            var old = disable_UpdateValue;

            try {
                disable_UpdateValue     = true;
                DataFieldVM.ObjectValue = newValue;
                OnBufferChanged(newValue);
            }
            finally {
                disable_UpdateValue = old;
            }
        }
コード例 #6
0
 public override void OnBufferChanged(NormalizedHexChangeCollection changes)
 {
     base.OnBufferChanged(changes);
     if (changes.OverlapsWith(imageSectionHeaderVM.NameVM.Span))
     {
         TreeNode.RefreshUI();
     }
 }
コード例 #7
0
ファイル: HexVersionImpl.cs プロジェクト: manojdjoshi/dnSpy
		public HexVersionImpl SetChanges(IList<HexChange> changes, int? reiteratedVersionNumber = null) {
			var normalizedChanges = NormalizedHexChangeCollection.Create(changes);
			if (reiteratedVersionNumber == null)
				reiteratedVersionNumber = changes.Count == 0 ? ReiteratedVersionNumber : VersionNumber + 1;
			var newVersion = new HexVersionImpl(Buffer, VersionNumber + 1, reiteratedVersionNumber.Value);
			this.changes = normalizedChanges;
			next = newVersion;
			return newVersion;
		}
コード例 #8
0
ファイル: TablesStreamNode.cs プロジェクト: YUJUNWEIF/dnSpy-1
        public override void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            base.OnBufferChanged(changes);

            foreach (HexNode node in TreeNode.DataChildren)
            {
                node.OnBufferChanged(changes);
            }
        }
コード例 #9
0
        public void Invalidate(NormalizedHexChangeCollection changes)
        {
            if (changes.Count == 0)
            {
                return;
            }
            var span = HexSpan.FromBounds(changes[0].OldSpan.Start, changes[changes.Count - 1].OldSpan.End);

            Invalidate(span);
        }
コード例 #10
0
 public static bool OverlapsWith(this NormalizedHexChangeCollection changes, HexSpan span)
 {
     foreach (var change in changes)
     {
         if (change.OldSpan.OverlapsWith(span))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #11
0
ファイル: HexNode.cs プロジェクト: idkwim/dnSpy
        public virtual void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            if (!changes.OverlapsWith(Span))
            {
                return;
            }

            foreach (var vm in HexVMs)
            {
                vm.OnBufferChanged(changes);
            }
        }
コード例 #12
0
ファイル: StorageStreamNode.cs プロジェクト: pashav15/pashav
        public override void OnBufferChanged(NormalizedHexChangeCollection changes)
        {
            base.OnBufferChanged(changes);
            if (changes.OverlapsWith(storageStreamVM.RCNameVM.Span))
            {
                TreeNode.RefreshUI();
            }

            foreach (HexNode node in TreeNode.DataChildren)
            {
                node.OnBufferChanged(changes);
            }
        }
コード例 #13
0
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			if (infoTuple != null) {
				var tableInfo = ((MetaDataTableNode)TreeNode.Parent.Data).TableInfo;
				foreach (var index in infoTuple.Item1) {
					var col = tableInfo.Columns[index];
					var span = new HexSpan(Span.Start + (ulong)col.Offset, (ulong)col.Size);
					if (changes.OverlapsWith(span)) {
						TreeNode.RefreshUI();
						break;
					}
				}
			}
		}
コード例 #14
0
        public HexVersionImpl SetChanges(IList <HexChange> changes, int?reiteratedVersionNumber = null)
        {
            var normalizedChanges = NormalizedHexChangeCollection.Create(changes);

            if (reiteratedVersionNumber is null)
            {
                reiteratedVersionNumber = changes.Count == 0 ? ReiteratedVersionNumber : VersionNumber + 1;
            }
            var newVersion = new HexVersionImpl(Buffer, VersionNumber + 1, reiteratedVersionNumber.Value);

            this.changes = normalizedChanges;
            next         = newVersion;
            return(newVersion);
        }
コード例 #15
0
 public override void OnBufferChanged(NormalizedHexChangeCollection changes)
 {
     if (infoTuple != null)
     {
         var tableInfo = ((MetaDataTableNode)TreeNode.Parent.Data).TableInfo;
         foreach (var index in infoTuple.Item1)
         {
             var col  = tableInfo.Columns[index];
             var span = new HexSpan(Span.Start + (ulong)col.Offset, (ulong)col.Size);
             if (changes.OverlapsWith(span))
             {
                 TreeNode.RefreshUI();
                 break;
             }
         }
     }
 }
コード例 #16
0
ファイル: HexField.cs プロジェクト: 0xd4d/dnSpy
		public void OnBufferChanged(NormalizedHexChangeCollection changes) {
			if (!changes.OverlapsWith(Span))
				return;

			var newValue = ReadData();
			if (!DataFieldVM.HasError && newValue.Equals(DataFieldVM.ObjectValue))
				return;

			var old = disable_UpdateValue;
			try {
				disable_UpdateValue = true;
				DataFieldVM.ObjectValue = newValue;
				OnBufferChanged(newValue);
			}
			finally {
				disable_UpdateValue = old;
			}
		}
コード例 #17
0
ファイル: HexBufferUndoRedo.cs プロジェクト: pashav15/pashav
 public HexBufferUndoCommand(HexBuffer buffer, NormalizedHexChangeCollection changes, int beforeReiteratedVersionNumber, int afterReiteratedVersionNumber, string description)
 {
     if (buffer == null)
     {
         throw new ArgumentNullException(nameof(buffer));
     }
     if (changes == null)
     {
         throw new ArgumentNullException(nameof(changes));
     }
     if (description == null)
     {
         throw new ArgumentNullException(nameof(description));
     }
     this.buffer  = buffer;
     this.changes = changes;
     this.beforeReiteratedVersionNumber = beforeReiteratedVersionNumber;
     this.afterReiteratedVersionNumber  = afterReiteratedVersionNumber;
     Description = description;
 }
コード例 #18
0
ファイル: MetaDataTableNode.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			base.OnBufferChanged(changes);

			if (TreeNode.Children.Count == 0)
				return;

			foreach (var change in changes) {
				if (!changes.OverlapsWith(Span))
					continue;

				var start = HexPosition.Max(Span.Start, change.OldSpan.Start);
				var end = HexPosition.Min(Span.End, change.OldSpan.End);
				int i = (int)((start - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
				int endi = (int)((end - 1 - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
				Debug.Assert(0 <= i && i <= endi && endi < TreeNode.Children.Count);
				while (i <= endi) {
					var obj = (MetaDataTableRecordNode)TreeNode.Children[i].Data;
					obj.OnBufferChanged(changes);
					i++;
				}
			}
		}
コード例 #19
0
ファイル: MetaDataTableRecordVM.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			base.OnBufferChanged(changes);
			for (int i = 0; i < hexFields.Length; i++) {
				var field = hexFields[i];
				if (IsDynamicDescription(i) && changes.OverlapsWith(field.Span))
					InvalidateDescription(i);
			}
			var infoCols = InfoColumnIndexes;
			if (infoCols != null) {
				foreach (var index in infoCols) {
					var field = hexFields[index];
					if (changes.OverlapsWith(field.Span)) {
						OnPropertyChanged(nameof(Info));
						break;
					}
				}
			}
		}
コード例 #20
0
ファイル: HexVM.cs プロジェクト: 0xd4d/dnSpy
		public virtual void OnBufferChanged(NormalizedHexChangeCollection changes) {
			foreach (var field in HexFields)
				field.OnBufferChanged(changes);
		}
コード例 #21
0
 public void InvalidateSpan(NormalizedHexChangeCollection changes) => DebuggerHexBufferStream.Invalidate(changes);
コード例 #22
0
ファイル: StorageStreamNode.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			base.OnBufferChanged(changes);
			if (changes.OverlapsWith(storageStreamVM.RCNameVM.Span))
				TreeNode.RefreshUI();

			foreach (HexNode node in TreeNode.DataChildren)
				node.OnBufferChanged(changes);
		}
コード例 #23
0
ファイル: MetaDataTableVM.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			foreach (var change in changes) {
				if (!change.OldSpan.OverlapsWith(Span))
					continue;

				var start = HexPosition.Max(Span.Start, change.OldSpan.Start);
				var end = HexPosition.Min(Span.End, change.OldSpan.End);
				int i = (int)((start - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
				int endi = (int)((end - 1 - Span.Start).ToUInt64() / (ulong)TableInfo.RowSize);
				Debug.Assert(0 <= i && i <= endi && endi < Collection.Count);
				while (i <= endi) {
					var obj = Collection.TryGet(i);
					if (obj != null)
						obj.OnBufferChanged(changes);
					i++;
				}
			}
		}
コード例 #24
0
ファイル: TablesStreamNode.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			base.OnBufferChanged(changes);

			foreach (HexNode node in TreeNode.DataChildren)
				node.OnBufferChanged(changes);
		}
コード例 #25
0
ファイル: ImageSectionHeaderNode.cs プロジェクト: 0xd4d/dnSpy
		public override void OnBufferChanged(NormalizedHexChangeCollection changes) {
			base.OnBufferChanged(changes);
			if (changes.OverlapsWith(imageSectionHeaderVM.NameVM.Span))
				TreeNode.RefreshUI();
		}