using GeoAPI.Geometries; namespace GisSharpBlog.NetTopologySuite.Geometries.Utilities { /// /// A visitor to Geometry elements which can /// be short-circuited by a given condition. /// public abstract class ShortCircuitedGeometryVisitor { private bool isDone = false; /// /// /// /// public void ApplyTo(IGeometry geom) { for (int i = 0; i < geom.NumGeometries && !isDone; i++) { IGeometry element = geom.GetGeometryN(i); if (!(element is IGeometryCollection)) { Visit(element); if (IsDone()) { isDone = true; return; } } else { ApplyTo(element); } } } /// /// /// /// protected abstract void Visit(IGeometry element); /// /// /// /// protected abstract bool IsDone(); } }