Esempio n. 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(data, filename);
                filenameToDoc[filename] = new WeakReference(doc);
                return(doc);
            }
        }
Esempio n. 2
0
        public AsmEdHexDocument GetOrCreate(string filename)
        {
            if (!File.Exists(filename))
            {
                return(null);
            }
            filename = GetFullPath(filename);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                {
                    return(doc);
                }

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

                doc = new AsmEdHexDocument(data, filename);
                filenameToDoc.Add(filename, doc);
                return(doc);
            }
        }
Esempio n. 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;
			}
		}
Esempio n. 4
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;
     }
 }
Esempio n. 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);
			}
		}
Esempio n. 6
0
        public AsmEdHexDocument GetOrCreate(string filename)
        {
            filename = GetFullPath(filename);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                    return doc;

                //TODO: This reads the whole file into memory
                doc = new AsmEdHexDocument(filename);
                filenameToDoc.Add(filename, doc);
                return doc;
            }
        }
Esempio n. 7
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);
     }
 }
Esempio n. 8
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(data, filename);
                    filenameToDoc[filename] = new WeakReference(doc);
                    return(doc);
                }
            }
        }
Esempio n. 9
0
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                {
                    return(doc);
                }

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(data, filename);
                    filenameToDoc.Add(filename, doc);
                    return(doc);
                }
            }
        }
Esempio n. 10
0
        public AsmEdHexDocument GetOrCreate(string filename)
        {
            if (!File.Exists(filename))
                return null;
            filename = GetFullPath(filename);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                    return doc;

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

                doc = new AsmEdHexDocument(data, filename);
                filenameToDoc.Add(filename, doc);
                return doc;
            }
        }
Esempio n. 11
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(data, filename);
					filenameToDoc[filename] = new WeakReference(doc);
					return doc;
				}
			}
		}
Esempio n. 12
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(data, filename);
				filenameToDoc[filename] = new WeakReference(doc);
				return doc;
			}
		}
Esempio n. 13
0
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                    return doc;

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(data, filename);
                    filenameToDoc.Add(filename, doc);
                    return doc;
                }
            }
        }
Esempio n. 14
0
		internal IUndoObject GetUndoObject(AsmEdHexDocument file) {
			return file.UndoObject;
		}
Esempio n. 15
0
 internal IUndoObject GetUndoObject(AsmEdHexDocument file)
 {
     return(file.UndoObject);
 }