public override IEnumerable<Issue> GetIssues()
{
string line;
while ((line = reader.ReadLine ()) != null) {
lineno++;
if (line == "" || line.Length <= 7)
continue;
IssueType issue_type;
string type = line.Substring (0, 6);
switch (type) {
case "[MISS]":
issue_type = IssueType.Missing;
break;
case "[NIEX]":
issue_type = IssueType.Niex;
break;
case "[PINV]":
issue_type = IssueType.PInvoke;
break;
case "[TODO]":
issue_type = IssueType.Todo;
break;
default:
Console.Error.WriteLine ("Ignoring line {0} in {1}: {2}", lineno, filename, line);
continue;
}
line = line.Substring (7).Trim ();
string str1 = line;
string str2 = null;
if (issue_type == IssueType.Todo || issue_type == IssueType.PInvoke) {
string [] parts = line.Split (spl, 2);
str1 = parts [0].Trim ();
str2 = null;
if (parts.Length == 2)
str2 = parts [1].Trim ();
}
if (issue_type == IssueType.PInvoke) {
if (str1 != null)
str1 = str1.ToLowerInvariant ();
else
str1 = "";
if (str2 != null)
str2 = str2.ToLowerInvariant ();
else
str2 = "";
yield return new PInvokeIssue (str2, str1);
} else {
yield return new MemberIssue (issue_type, str1, str2);
}
}
}