public override void ExitRule(IParseTreeListener listener) { ISearchListener typedListener = listener as ISearchListener; if (typedListener != null) { typedListener.ExitExactText(this); } }
public override void EnterRule(IParseTreeListener listener) { ISearchListener typedListener = listener as ISearchListener; if (typedListener != null) { typedListener.EnterHashText(this); } }
public void Search(string path, ISearchListener listener) { var attrs = File.GetAttributes(path); if (!attrs.HasFlag(FileAttributes.Directory)) { listener.OnFile(path); return; } var stack = new Stack <string>(); stack.Push(path); while (stack.Count > 0) { var dir = stack.Pop(); var result = listener.OnDirectory(dir); if (result == SearchControl.Abort) { return; } if (result == SearchControl.Visit) { // find files foreach (var file in Directory.EnumerateFiles(dir)) { var fileResult = listener.OnFile(file); if (fileResult == SearchControl.Abort) { return; } } // find directories foreach (var subdir in Directory.EnumerateDirectories(dir)) { stack.Push(subdir); } } } }