public static int Distance <T>(this ListIterator <T> first, ListIterator <T> last) { return(last.Index - first.Index); }
public static bool NotEqual <T>(this ListIterator <T> it, ListIterator <T> other) { return(it.List != other.List || it.Index != other.Index); }
public static ListIterator <T> GetAdvanced <T>(this ListIterator <T> it, int distance) { return(new ListIterator <T> { List = it.List, Index = it.Index + distance }); }
public static bool IsEqual <T>(this ListIterator <T> it, ListIterator <T> other) { return(it.List == other.List && it.Index == other.Index); }
public static ListIterator <T> GetPrev <T>(this ListIterator <T> it) { it.Index--; return(it); }
public static ListIterator <T> GetNext <T>(this ListIterator <T> it) { it.Index++; return(it); }
public static void SetCurrent <T>(this ListIterator <T> it, T val) { it.List[it.Index] = val; }
public static T GetCurrent <T>(this ListIterator <T> it) { return(it.List[it.Index]); }