コード例 #1
0
        public AsmEdHexDocument GetOrCreate(string filename)
        {
            if (!File.Exists(filename))
            {
                return(null);
            }
            filename = GetFullPath(filename);

            lock (lockObj) {
                var doc = TryGet_NoLock(filename);
                if (doc != null)
                {
                    return(doc);
                }

                byte[] data;
                try {
                    data = File.ReadAllBytes(filename);
                }
                catch {
                    return(null);
                }

                doc = new AsmEdHexDocument(undoCommandService, data, filename);
                filenameToDoc[filename] = new WeakReference(doc);
                return(doc);
            }
        }
コード例 #2
0
		void OnDocumentDirty(AsmEdHexDocument doc) {
			lock (lockObj) {
				object dictObj;
				bool b = filenameToDoc.TryGetValue(doc.Name, out dictObj);
				Debug.Assert(b);
				if (!b)
					return;
				filenameToDoc[doc.Name] = doc;
			}
		}
コード例 #3
0
 void OnDocumentDirty(AsmEdHexDocument doc)
 {
     lock (lockObj) {
         object dictObj;
         bool   b = filenameToDoc.TryGetValue(doc.Name, out dictObj);
         Debug.Assert(b);
         if (!b)
         {
             return;
         }
         filenameToDoc[doc.Name] = doc;
     }
 }
コード例 #4
0
		void OnDocumentSaved(AsmEdHexDocument doc) {
			lock (lockObj) {
				object dictObj;
				bool b = filenameToDoc.TryGetValue(doc.Name, out dictObj);
				Debug.Assert(b);
				if (!b)
					return;
				if (dictObj is WeakReference) {
					Debug.Assert(((WeakReference)dictObj).Target == doc);
					return;
				}
				Debug.Assert(doc == dictObj);
				filenameToDoc[doc.Name] = new WeakReference(doc);
			}
		}
コード例 #5
0
 void OnDocumentSaved(AsmEdHexDocument doc)
 {
     lock (lockObj) {
         object dictObj;
         bool   b = filenameToDoc.TryGetValue(doc.Name, out dictObj);
         Debug.Assert(b);
         if (!b)
         {
             return;
         }
         if (dictObj is WeakReference)
         {
             Debug.Assert(((WeakReference)dictObj).Target == doc);
             return;
         }
         Debug.Assert(doc == dictObj);
         filenameToDoc[doc.Name] = new WeakReference(doc);
     }
 }
コード例 #6
0
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                var doc = TryGet_NoLock(filename);
                if (doc != null)
                {
                    return(doc);
                }

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(undoCommandService, data, filename);
                    filenameToDoc[filename] = new WeakReference(doc);
                    return(doc);
                }
            }
        }
コード例 #7
0
ファイル: SaveHexOptionsVM.cs プロジェクト: GreenDamTan/dnSpy
		public SaveHexOptionsVM(AsmEdHexDocument doc) {
			this.doc = doc;
			this.FileName = doc.Name ?? string.Empty;
		}
コード例 #8
0
ファイル: HexTabSaver.cs プロジェクト: lovebanyi/dnSpy
		HexTabSaver(Lazy<IDocumentSaver> documentSaver, AsmEdHexDocument doc) {
			this.documentSaver = documentSaver;
			this.doc = doc;
		}
コード例 #9
0
 static IUndoObject GetUndoObject(AsmEdHexDocument file) => file.UndoObject;
コード例 #10
0
 HexTabSaver(Lazy <IDocumentSaver> documentSaver, AsmEdHexDocument doc)
 {
     this.documentSaver = documentSaver;
     this.doc           = doc;
 }
コード例 #11
0
		static IUndoObject GetUndoObject(AsmEdHexDocument file) {
			return file.UndoObject;
		}
コード例 #12
0
		public AsmEdHexDocument GetOrCreate(IPEImage peImage) {
			var filename = GetFullPath(peImage.FileName);

			lock (lockObj) {
				var doc = TryGet_NoLock(filename);
				if (doc != null)
					return doc;

				using (var stream = peImage.CreateFullStream()) {
					var data = stream.ReadAllBytes();
					doc = new AsmEdHexDocument(undoCommandManager, data, filename);
					filenameToDoc[filename] = new WeakReference(doc);
					return doc;
				}
			}
		}
コード例 #13
0
		public AsmEdHexDocument GetOrCreate(string filename) {
			if (!File.Exists(filename))
				return null;
			filename = GetFullPath(filename);

			lock (lockObj) {
				var doc = TryGet_NoLock(filename);
				if (doc != null)
					return doc;

				byte[] data;
				try {
					data = File.ReadAllBytes(filename);
				}
				catch {
					return null;
				}

				doc = new AsmEdHexDocument(undoCommandManager, data, filename);
				filenameToDoc[filename] = new WeakReference(doc);
				return doc;
			}
		}
コード例 #14
0
 static IUndoObject GetUndoObject(AsmEdHexDocument file)
 {
     return(file.UndoObject);
 }