3 static extern int g_mime_signature_list_length (IntPtr list);
6 static extern void g_mime_signature_list_clear (IntPtr list);
9 static extern int g_mime_signature_list_add (IntPtr list, IntPtr ia);
12 static extern void g_mime_signature_list_insert (IntPtr list, int index, IntPtr ia);
15 static extern bool g_mime_signature_list_remove (IntPtr list, IntPtr ia);
18 static extern bool g_mime_signature_list_remove_at (IntPtr list, int index);
21 static extern bool g_mime_signature_list_contains (IntPtr list, IntPtr ia);
24 static extern int g_mime_signature_list_index_of (IntPtr list, IntPtr ia);
27 static extern IntPtr g_mime_signature_list_get_signature (IntPtr list, int index);
30 static extern void g_mime_signature_list_set_signature (IntPtr list, int index, IntPtr ia);
33 Exception CannotAdd (object value)
36 return new ArgumentNullException ("value");
38 string message = String.Format ("Cannot add objects of type '{0}' to a SignatureCollection.",
39 value.GetType ().ToString ());
41 return new InvalidOperationException (message);
44 Exception CannotInsert (object value)
47 return new ArgumentNullException ("value");
49 string message = String.Format ("Cannot insert objects of type '{0}' into a SignatureCollection.",
50 value.GetType ().ToString ());
52 return new InvalidOperationException (message);
55 Exception CannotRemove (object value)
58 return new ArgumentNullException ("value");
60 string message = String.Format ("Cannot remove objects of type '{0}' from a SignatureCollection.",
61 value.GetType ().ToString ());
63 return new InvalidOperationException (message);
66 Exception CannotSet (object value)
69 return new ArgumentNullException ("value");
71 string message = String.Format ("Cannot set objects of type '{0}' on an SignatureCollection.",
72 value.GetType ().ToString ());
74 return new InvalidOperationException (message);
78 get { return g_mime_signature_list_length (Handle); }
81 public bool IsFixedSize {
85 public bool IsReadOnly {
89 public bool IsSynchronized {
93 public object SyncRoot {
97 public int Add (Signature signature)
99 if (signature == null)
100 throw CannotAdd (signature);
102 return g_mime_signature_list_add (Handle, signature.Handle);
105 int IList.Add (object value)
107 Signature signature = value as Signature;
109 if (signature == null)
110 throw CannotAdd (value);
112 return Add (signature);
117 g_mime_signature_list_clear (Handle);
120 public bool Contains (Signature signature)
122 if (signature == null)
125 return g_mime_signature_list_contains (Handle, signature.Handle);
128 bool IList.Contains (object value)
130 return Contains (value as Signature);
133 public void CopyTo (Array array, int index)
136 throw new ArgumentNullException ("array");
139 throw new ArgumentOutOfRangeException ("index");
143 for (int i = 0; i < n; i++)
144 array.SetValue (((IList) this)[i], index + i);
147 public IEnumerator GetEnumerator ()
151 for (int i = 0; i < n; i++)
152 yield return this[i];
157 public int IndexOf (Signature signature)
159 if (signature == null)
162 return g_mime_signature_list_index_of (Handle, signature.Handle);
165 int IList.IndexOf (object value)
167 return IndexOf (value as Signature);
170 public void Insert (int index, Signature signature)
172 if (signature == null)
173 throw CannotInsert (signature);
176 throw new ArgumentOutOfRangeException ("index");
178 g_mime_signature_list_insert (Handle, index, signature.Handle);
181 void IList.Insert (int index, object value)
183 Signature signature = value as Signature;
185 if (signature == null)
186 throw CannotInsert (value);
188 Insert (index, signature);
191 public void Remove (Signature signature)
193 if (signature == null)
194 throw CannotRemove (signature);
196 g_mime_signature_list_remove (Handle, signature.Handle);
199 void IList.Remove (object value)
201 Signature signature = value as Signature;
203 if (signature == null)
204 throw CannotRemove (value);
209 public void RemoveAt (int index)
211 if (index < 0 || index >= Count)
212 throw new ArgumentOutOfRangeException ("index");
214 g_mime_signature_list_remove_at (Handle, index);
217 public Signature this[int index] {
219 IntPtr raw = g_mime_signature_list_get_signature (Handle, index);
221 if (raw == IntPtr.Zero)
224 return GLib.Object.GetObject (raw) as Signature;
229 throw CannotSet (value);
231 g_mime_signature_list_set_signature (Handle, index, value.Handle);
235 object IList.this[int index] {
241 this[index] = value as Signature;