Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@149 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
11 changed files with 453 additions and 123 deletions
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: 18.05.2005 |
||||
* Time: 19:08 |
||||
*/ |
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
using System.Text; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
/// <summary>
|
||||
/// Description of ParseableFileContentEnumerator.
|
||||
/// </summary>
|
||||
public class ParseableFileContentEnumerator : IEnumerator<KeyValuePair<string, string>> |
||||
{ |
||||
void IEnumerator.Reset() { |
||||
throw new NotSupportedException(); |
||||
} |
||||
|
||||
KeyValuePair<string, string> current; |
||||
|
||||
object IEnumerator.Current { |
||||
get { |
||||
return current; |
||||
} |
||||
} |
||||
|
||||
public KeyValuePair<string, string> Current { |
||||
get { |
||||
return current; |
||||
} |
||||
} |
||||
|
||||
public string CurrentFileName { |
||||
get { |
||||
return current.Key; |
||||
} |
||||
} |
||||
|
||||
public string CurrentFileContent { |
||||
get { |
||||
return current.Value; |
||||
} |
||||
} |
||||
|
||||
public void Dispose() |
||||
{ |
||||
} |
||||
|
||||
ProjectItem[] projectItems; |
||||
|
||||
public ParseableFileContentEnumerator(IProject project) : this(project.Items.ToArray()) { } |
||||
|
||||
public ParseableFileContentEnumerator(ProjectItem[] projectItems) |
||||
{ |
||||
this.projectItems = projectItems; |
||||
Properties textEditorProperties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); |
||||
getParseableContentEncoding = Encoding.GetEncoding(textEditorProperties.Get("Encoding", 1252)); |
||||
pcd = new GetParseableContentDelegate(GetParseableFileContent); |
||||
if (projectItems.Length > 0) { |
||||
nextItem = projectItems[0]; |
||||
} |
||||
} |
||||
|
||||
delegate string GetParseableContentDelegate(IProject project, string fileName); |
||||
|
||||
GetParseableContentDelegate pcd; |
||||
|
||||
Encoding getParseableContentEncoding; |
||||
|
||||
string GetParseableFileContent(IProject project, string fileName) |
||||
{ |
||||
// Loading the source files is done asynchronously:
|
||||
// While one file is parsed, the next is already loaded from disk.
|
||||
string res = project.GetParseableFileContent(fileName); |
||||
if (res != null) |
||||
return res; |
||||
// load file
|
||||
using (StreamReader r = new StreamReader(fileName, getParseableContentEncoding)) { |
||||
return r.ReadToEnd(); |
||||
} |
||||
} |
||||
|
||||
ProjectItem nextItem; |
||||
IAsyncResult res; |
||||
int index = 0; |
||||
|
||||
public int ItemCount { |
||||
get { |
||||
return projectItems.Length; |
||||
} |
||||
} |
||||
|
||||
public int Index { |
||||
get { |
||||
return index; |
||||
} |
||||
} |
||||
|
||||
public bool MoveNext() |
||||
{ |
||||
ProjectItem item = nextItem; |
||||
nextItem = (++index < projectItems.Length) ? projectItems[index] : null; |
||||
if (item == null) return false; |
||||
if (item.ItemType != ItemType.Compile) |
||||
return MoveNext(); |
||||
string fileName = item.FileName; |
||||
string fileContent; |
||||
if (res != null) |
||||
fileContent = pcd.EndInvoke(res); |
||||
else |
||||
fileContent = GetParseableFileContent(item.Project, fileName); |
||||
if (nextItem != null && nextItem.ItemType == ItemType.Compile) |
||||
res = pcd.BeginInvoke(nextItem.Project, nextItem.FileName, null, null); |
||||
else |
||||
res = null; |
||||
current = new KeyValuePair<string, string>(fileName, fileContent); |
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,63 @@
@@ -0,0 +1,63 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||
// <version value="$version"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace ICSharpCode.Core |
||||
{ |
||||
/// <summary>
|
||||
/// A reference to a class or class member.
|
||||
/// </summary>
|
||||
public class Reference |
||||
{ |
||||
string fileName; |
||||
int offset, length; |
||||
string expression; |
||||
ResolveResult resolveResult; |
||||
|
||||
public Reference(string fileName, int offset, int length, string expression, ResolveResult resolveResult) |
||||
{ |
||||
this.fileName = fileName; |
||||
this.offset = offset; |
||||
this.length = length; |
||||
this.expression = expression; |
||||
this.resolveResult = resolveResult; |
||||
} |
||||
|
||||
public string FileName { |
||||
get { |
||||
return fileName; |
||||
} |
||||
} |
||||
|
||||
public int Offset { |
||||
get { |
||||
return offset; |
||||
} |
||||
} |
||||
|
||||
public int Length { |
||||
get { |
||||
return length; |
||||
} |
||||
} |
||||
|
||||
public string Expression { |
||||
get { |
||||
return expression; |
||||
} |
||||
} |
||||
|
||||
public ResolveResult ResolveResult { |
||||
get { |
||||
return resolveResult; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue