Newer
Older
CGTrack / Assets / Oculus / Platform / Scripts / Models / DeserializeableList.cs
namespace Oculus.Platform.Models
{
  using UnityEngine;
  using System.Collections;
  using System.Collections.Generic;
  using Oculus.Platform.Models;

  public class DeserializableList<T> : IList<T>
  {

    //IList
    public int Count { get {return _Data.Count;} }
    bool ICollection<T>.IsReadOnly { get {return ((IList<T>)_Data).IsReadOnly;} } //if you insist in getting it...
    public int IndexOf(T obj) {return _Data.IndexOf(obj);}
    public T this[int index] { get{return _Data[index];} set{_Data[index] = value;} }

    public void Add(T item) {_Data.Add(item);}
    public void Clear() {_Data.Clear();}
    public bool Contains(T item) {return _Data.Contains(item);}
    public void CopyTo(T[] array, int arrayIndex) {_Data.CopyTo(array, arrayIndex);}
    public IEnumerator<T> GetEnumerator() {return _Data.GetEnumerator();}
    public void Insert(int index, T item) {_Data.Insert(index, item);}
    public bool Remove(T item) {return _Data.Remove(item);}
    public void RemoveAt(int index) {_Data.RemoveAt(index);}

    // taken from examples here: https://msdn.microsoft.com/en-us/library/s793z9y2(v=vs.110).aspx
    private IEnumerator GetEnumerator1()
    {
      return this.GetEnumerator();
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
      return GetEnumerator1();
    }

    // Internals and getters

    // Seems like Obsolete properties are broken in this version of Mono.
    // Anyway, don't use this.
    [System.Obsolete("Use IList interface on the DeserializableList object instead.", false)]
    public List<T> Data {
      get {return _Data;}
    }

    protected List<T> _Data;
    protected string  _NextUrl;
    protected string  _PreviousUrl;

    public bool   HasNextPage     { get { return !System.String.IsNullOrEmpty(NextUrl);     } }
    public bool   HasPreviousPage { get { return !System.String.IsNullOrEmpty(PreviousUrl); } }
    public string NextUrl         { get { return _NextUrl;                                  } }
    public string PreviousUrl     { get { return _PreviousUrl;                              } }
  }
}