public static ProjectDom GetFileDom(FilePath file) { if (file.IsNull) { file = Path.GetTempFileName(); } file = file.CanonicalPath; lock (singleDatabases) { SingleFileCacheEntry entry; if (singleDatabases.TryGetValue(file, out entry)) { entry.AccessTime = DateTime.Now; return(entry.Database); } else { if (singleDatabases.Count >= MAX_SINGLEDB_CACHE_SIZE) { DateTime tim = DateTime.MaxValue; string toDelete = null; foreach (KeyValuePair <FilePath, SingleFileCacheEntry> pce in singleDatabases) { DateTime ptim = pce.Value.AccessTime; if (ptim < tim) { tim = ptim; toDelete = pce.Key; } } singleDatabases.Remove(toDelete); } ProjectDom db = ParserDatabase.LoadSingleFileDom(file); db.Uri = "File:" + file; db.UpdateReferences(); entry = new SingleFileCacheEntry(); entry.Database = db; entry.AccessTime = DateTime.Now; singleDatabases [file] = entry; db.ReferenceCount = 1; return(db); } } }
public static ProjectDom GetFileDom (FilePath file) { if (file.IsNull) file = Path.GetTempFileName (); file = file.CanonicalPath; lock (singleDatabases) { SingleFileCacheEntry entry; if (singleDatabases.TryGetValue (file, out entry)) { entry.AccessTime = DateTime.Now; return entry.Database; } else { if (singleDatabases.Count >= MAX_SINGLEDB_CACHE_SIZE) { DateTime tim = DateTime.MaxValue; string toDelete = null; foreach (KeyValuePair<FilePath,SingleFileCacheEntry> pce in singleDatabases) { DateTime ptim = pce.Value.AccessTime; if (ptim < tim) { tim = ptim; toDelete = pce.Key; } } singleDatabases.Remove (toDelete); } ProjectDom db = ParserDatabase.LoadSingleFileDom (file); db.Uri = "File:" + file; db.UpdateReferences (); entry = new SingleFileCacheEntry (); entry.Database = db; entry.AccessTime = DateTime.Now; singleDatabases [file] = entry; db.ReferenceCount = 1; return db; } } }
internal SimpleCodeCompletionDatabase GetSingleFileDatabase(string file) { lock (singleDatabases) { SingleFileCacheEntry entry = singleDatabases [file] as SingleFileCacheEntry; if (entry != null) { entry.AccessTime = DateTime.Now; return entry.Database; } else { if (singleDatabases.Count >= MAX_SINGLEDB_CACHE_SIZE) { DateTime tim = DateTime.MaxValue; string toDelete = null; foreach (DictionaryEntry pce in singleDatabases) { DateTime ptim = ((SingleFileCacheEntry)pce.Value).AccessTime; if (ptim < tim) { tim = ptim; toDelete = pce.Key.ToString(); } } singleDatabases.Remove (toDelete); } SimpleCodeCompletionDatabase db = new SimpleCodeCompletionDatabase (file, this); entry = new SingleFileCacheEntry (); entry.Database = db; entry.AccessTime = DateTime.Now; singleDatabases [file] = entry; return db; } } }