Mercurial > hg > Database > jungle-sharp
view src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-main/util/IterableConverter.cs @ 17:01a08cf4b2d9
Liq Files
author | Kazuma |
---|---|
date | Mon, 07 Nov 2016 01:05:24 +0900 |
parents | abe0c247f5a5 |
children |
line wrap: on
line source
using UnityEngine; using System.Collections.Generic; using System.Collections; using System; public class IterableConverter<A,B> : IEnumerable<A> { private IEnumerable<B> iterable; private Converter<A,B> converter; IEnumerator IEnumerable.GetEnumerator() { // call the generic version of the method return this.GetEnumerator(); } public IEnumerator<A> GetEnumerator() { return iterator (); } public IterableConverter(IEnumerable<B> _iterable,Converter<A,B> _converter) { iterable = _iterable; converter = _converter; } public IEnumerator<A> iterator() { return new IteratorConverter<A,B>(iterable.GetEnumerator(),converter); } private class IteratorConverter<A,B> : IEnumerator<A> { public List<A> appLines { get; set; } private IEnumerator<B> iterator; private Converter<A,B> converter; public IteratorConverter(IEnumerator<B> _iterator,Converter<A,B> _converter) { iterator = _iterator; converter = _converter; } public bool MoveNext() { return iterator.MoveNext(); } public A Current { get{ return converter.conv (iterator.Current); } } public void Reset() { // ホントはremove? iterator.Reset(); } object IEnumerator.Current { get { return appLines; } } public void Dispose() { ((IEnumerator<A>)this.appLines).Dispose (); } } public interface Converter<A,B>{ A conv (B _b); } }