using System; using System.Collections; namespace TeamXBMC.TranslatorCore { /// /// Available enumerators for the TranslatorArray class. /// public enum TranslatorArrayEnumerator { All=0, Translated, Untranslated, Changed }; /// /// Enumerates a TranslatorArray class by items with the state translated. /// public class EnumeratorTranslated : IEnumerator { private IEnumerator enumerator=null; public EnumeratorTranslated(IEnumerator enumerator) { this.enumerator=enumerator; } #region IEnumerator Members public void Reset() { enumerator.Reset(); MoveNext(); } public object Current { get { return enumerator.Current; } } public bool MoveNext() { if (!enumerator.MoveNext()) return false; TranslatorItem item=(TranslatorItem)enumerator.Current; while (item.State!=TranslationState.Translated) { if (!enumerator.MoveNext()) return false; item=(TranslatorItem)enumerator.Current; } return true; } #endregion }; /// /// Enumerates a TranslatorArray class by items with the state untranslated. /// public class EnumeratorUntranslated : IEnumerator { private IEnumerator enumerator=null; public EnumeratorUntranslated(IEnumerator enumerator) { this.enumerator=enumerator; } #region IEnumerator Members public void Reset() { enumerator.Reset(); MoveNext(); } public object Current { get { return enumerator.Current; } } public bool MoveNext() { if (!enumerator.MoveNext()) return false; TranslatorItem item=(TranslatorItem)enumerator.Current; while (item.State!=TranslationState.Untranslated) { if (!enumerator.MoveNext()) return false; item=(TranslatorItem)enumerator.Current; } return true; } #endregion }; /// /// Enumerates a TranslatorArray class by items with the state changed. /// public class EnumeratorChanged : IEnumerator { private IEnumerator enumerator=null; public EnumeratorChanged(IEnumerator enumerator) { this.enumerator=enumerator; } #region IEnumerator Members public void Reset() { enumerator.Reset(); MoveNext(); } public object Current { get { return enumerator.Current; } } public bool MoveNext() { if (!enumerator.MoveNext()) return false; TranslatorItem item=(TranslatorItem)enumerator.Current; while (item.State!=TranslationState.Changed) { if (!enumerator.MoveNext()) return false; item=(TranslatorItem)enumerator.Current; } return true; } #endregion }; }