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
};
}