/// <summary> /// Registers a source and also allows a given action on all objects coming from this source. /// </summary> public static void RegisterSource(this IOsmStreamTarget target, IEnumerable <OsmGeo> source, Action <OsmGeo> channel) { var filter = new OsmStreamFilterDelegate(); filter.RegisterSource(source); filter.MoveToNextEvent = (osmGeo, param) => { channel(osmGeo); return(osmGeo); }; target.RegisterSource(filter); }
/// <summary> /// Registers a source but keeps only the objects that satify a given condition. /// </summary> public static void RegisterSource(this IOsmStreamTarget target, IEnumerable <OsmGeo> source, Func <OsmGeo, bool> keep) { var filter = new OsmStreamFilterDelegate(); filter.RegisterSource(source); filter.MoveToNextEvent = (osmGeo, param) => { if (keep(osmGeo)) { return(osmGeo); } return(null); }; target.RegisterSource(filter); }
/// <summary> /// Registers a source on this target. /// </summary> public static void RegisterSource(this IOsmStreamTarget target, IEnumerable <OsmGeo> source) { target.RegisterSource(new OsmEnumerableStreamSource(source)); }