3 using System.Collections;
4 using System.Collections.Generic;
5 using System.Globalization;
11 public class JsonArray : JsonValue, IList<JsonValue>
15 public JsonArray (params JsonValue [] items)
17 list = new List<JsonValue> ();
21 public JsonArray (IEnumerable<JsonValue> items)
24 throw new ArgumentNullException ("items");
26 list = new List<JsonValue> (items);
29 public override int Count {
30 get { return list.Count; }
33 public bool IsReadOnly {
37 public override sealed JsonValue this [int index] {
38 get { return list [index]; }
39 set { list [index] = value; }
42 public override JsonType JsonType {
43 get { return JsonType.Array; }
46 public void Add (JsonValue item)
51 public void AddRange (IEnumerable<JsonValue> items)
54 throw new ArgumentNullException ("items");
56 list.AddRange (items);
59 public void AddRange (params JsonValue [] items)
64 list.AddRange (items);
72 public bool Contains (JsonValue item)
74 return list.Contains (item);
77 public void CopyTo (JsonValue [] array, int arrayIndex)
79 list.CopyTo (array, arrayIndex);
82 public int IndexOf (JsonValue item)
84 return list.IndexOf (item);
87 public void Insert (int index, JsonValue item)
89 list.Insert (index, item);
92 public bool Remove (JsonValue item)
94 return list.Remove (item);
97 public void RemoveAt (int index)
99 list.RemoveAt (index);
102 public override void Save (Stream stream)
105 throw new ArgumentNullException ("stream");
106 stream.WriteByte ((byte) '[');
107 for (int i = 0; i < list.Count; i++) {
108 JsonValue v = list [i];
112 stream.WriteByte ((byte) 'n');
113 stream.WriteByte ((byte) 'u');
114 stream.WriteByte ((byte) 'l');
115 stream.WriteByte ((byte) 'l');
119 stream.WriteByte ((byte) ',');
120 stream.WriteByte ((byte) ' ');
123 stream.WriteByte ((byte) ']');
126 IEnumerator<JsonValue> IEnumerable<JsonValue>.GetEnumerator ()
128 return list.GetEnumerator ();
131 IEnumerator IEnumerable.GetEnumerator ()
133 return list.GetEnumerator ();