public static IEnumerable <Member> GetMembers(this CodeModule module, vbext_ProcKind?procedureKind = null) { var currentLine = module.CountOfDeclarationLines + 1; while (currentLine < module.CountOfLines) { vbext_ProcKind kind; var name = module.get_ProcOfLine(currentLine, out kind); if ((procedureKind ?? kind) == kind) { var startLine = module.get_ProcStartLine(name, kind); var lineCount = module.get_ProcCountLines(name, kind); var body = module.Lines[startLine, lineCount].Split('\n'); Member member; if (Member.TryParse(body, new QualifiedModuleName(module.Parent), out member)) { yield return(member); currentLine = startLine + lineCount; } else { currentLine = currentLine + 1; } } } }
public IEnumerable <Member> GetMembers() { var currentLine = _module.CountOfDeclarationLines + 1; while (currentLine < _module.CountOfLines) { vbext_ProcKind kind; var name = _module.get_ProcOfLine(currentLine, out kind); var startLine = _module.get_ProcStartLine(name, kind); var lineCount = _module.get_ProcCountLines(name, kind); var body = _module.Lines[startLine, lineCount].Split('\n'); Member member; if (Member.TryParse(body, _module.Parent.Collection.Parent.Name, _module.Parent.Name, out member)) { yield return(member); currentLine = startLine + lineCount; } } }
public int get_ProcStartLine(string ProcName, Microsoft.Vbe.Interop.vbext_ProcKind ProcKind) { return(_codeModule.get_ProcStartLine(ProcName, ProcKind)); }