3 static extern int internet_address_list_length (IntPtr list);
6 static extern void internet_address_list_clear (IntPtr list);
9 static extern int internet_address_list_add (IntPtr list, IntPtr ia);
11 //[DllImport("gmime")]
12 //static extern void internet_address_list_concat (IntPtr list, IntPtr concat);
15 static extern void internet_address_list_insert (IntPtr list, int index, IntPtr ia);
18 static extern bool internet_address_list_remove (IntPtr list, IntPtr ia);
21 static extern bool internet_address_list_remove_at (IntPtr list, int index);
24 static extern bool internet_address_list_contains (IntPtr list, IntPtr ia);
27 static extern int internet_address_list_index_of (IntPtr list, IntPtr ia);
30 static extern IntPtr internet_address_list_get_address (IntPtr list, int index);
33 static extern void internet_address_list_set_address (IntPtr list, int index, IntPtr ia);
36 static extern IntPtr internet_address_list_to_string (IntPtr list, bool encode);
39 static extern IntPtr internet_address_list_parse_string (IntPtr str);
42 Exception CannotAdd (object value)
45 return new ArgumentNullException ("value");
47 string message = String.Format ("Cannot add objects of type '{0}' to an InternetAddressList.",
48 value.GetType ().ToString ());
50 return new InvalidOperationException (message);
53 Exception CannotInsert (object value)
56 return new ArgumentNullException ("value");
58 string message = String.Format ("Cannot insert objects of type '{0}' into an InternetAddressList.",
59 value.GetType ().ToString ());
61 return new InvalidOperationException (message);
64 Exception CannotRemove (object value)
67 return new ArgumentNullException ("value");
69 string message = String.Format ("Cannot remove objects of type '{0}' from an InternetAddressList.",
70 value.GetType ().ToString ());
72 return new InvalidOperationException (message);
75 Exception CannotSet (object value)
78 return new ArgumentNullException ("value");
80 string message = String.Format ("Cannot set objects of type '{0}' on an InternetAddressList.",
81 value.GetType ().ToString ());
83 return new InvalidOperationException (message);
87 get { return internet_address_list_length (Handle); }
90 public bool IsFixedSize {
94 public bool IsReadOnly {
98 public bool IsSynchronized {
102 public object SyncRoot {
106 public int Add (InternetAddress addr)
109 throw CannotAdd (addr);
111 return internet_address_list_add (Handle, addr.Handle);
114 int IList.Add (object value)
116 InternetAddress addr = value as InternetAddress;
119 throw CannotAdd (value);
126 internet_address_list_clear (Handle);
129 public bool Contains (InternetAddress addr)
134 return internet_address_list_contains (Handle, addr.Handle);
137 bool IList.Contains (object value)
139 return Contains (value as InternetAddress);
142 public void CopyTo (Array array, int index)
145 throw new ArgumentNullException ("array");
148 throw new ArgumentOutOfRangeException ("index");
152 for (int i = 0; i < n; i++)
153 array.SetValue (((IList) this)[i], index + i);
156 public IEnumerator GetEnumerator ()
160 for (int i = 0; i < n; i++)
161 yield return this[i];
166 public int IndexOf (InternetAddress addr)
171 return internet_address_list_index_of (Handle, addr.Handle);
174 int IList.IndexOf (object value)
176 return IndexOf (value as InternetAddress);
179 public void Insert (int index, InternetAddress addr)
182 throw CannotInsert (addr);
185 throw new ArgumentOutOfRangeException ("index");
187 internet_address_list_insert (Handle, index, addr.Handle);
190 void IList.Insert (int index, object value)
192 InternetAddress addr = value as InternetAddress;
195 throw CannotInsert (value);
197 Insert (index, addr);
200 public void Remove (InternetAddress addr)
203 throw CannotRemove (addr);
205 internet_address_list_remove (Handle, addr.Handle);
208 void IList.Remove (object value)
210 InternetAddress addr = value as InternetAddress;
213 throw CannotRemove (value);
218 public void RemoveAt (int index)
220 if (index < 0 || index >= Count)
221 throw new ArgumentOutOfRangeException ("index");
223 internet_address_list_remove_at (Handle, index);
226 public InternetAddress this[int index] {
228 IntPtr raw = internet_address_list_get_address (Handle, index);
230 if (raw == IntPtr.Zero)
233 return GLib.Object.GetObject (raw) as InternetAddress;
238 throw CannotSet (value);
240 internet_address_list_set_address (Handle, index, value.Handle);
244 object IList.this[int index] {
250 this[index] = value as InternetAddress;
254 public static InternetAddressList Parse (string str)
256 IntPtr native_str = GLib.Marshaller.StringToPtrGStrdup (str);
257 IntPtr raw = internet_address_list_parse_string (native_str);
258 InternetAddressList list = null;
260 if (raw != IntPtr.Zero)
261 list = new InternetAddressList (raw);
263 GLib.Marshaller.Free (native_str);
268 public string ToString (bool encode)
270 IntPtr raw = internet_address_list_to_string (Handle, encode);
272 if (raw == IntPtr.Zero)
275 return GLib.Marshaller.PtrToStringGFree (raw);
278 public override string ToString ()
280 return ToString (false);