Linux Mac OSX Windows

Implemented by

 nsIMutableArray
 A separate set of methods that will act on the array. Consumers of
 nsIArray should not QueryInterface to nsIMutableArray unless they
 own the array.

 As above, it is legal to add null elements to the array. Note also
 that null elements can be created as a side effect of
 insertElementAt(). Conversely, if insertElementAt() is never used,
 and null elements are never explicitly added to the array, then it
 is guaranteed that queryElementAt() will never return a null value.

 Any of these methods may throw NS_ERROR_OUT_OF_MEMORY when the
 array must grow to complete the call, but the allocation fails.

 @status UNDER_REVIEW
[scriptable, uuid(af059da0-c85b-40ec-af07-ae4bfdc192cc)]
interface nsIMutableArray : nsIArray

Methods

 appendElement()
 
 Append an element at the end of the array.

 @param element The element to append.
 @param weak    Whether or not to store the element using a weak
                reference.
 @throws NS_ERROR_FAILURE when a weak reference is requested,
                          but the element does not support
                          nsIWeakReference.
void appendElement(in nsISupports element, in boolean weak)
 clear()

 clear the entire array, releasing all stored objects
void clear()
 insertElementAt()

 Insert an element at the given position, moving the element 
 currently located in that position, and all elements in higher
 position, up by one.

 @param element The element to insert
 @param index   The position in the array:
                If the position is lower than the current length
                of the array, the elements at that position and
                onwards are bumped one position up.
                If the position is equal to the current length
                of the array, the new element is appended.
                An index lower than 0 or higher than the current
                length of the array is invalid and will be ignored.

 @throws NS_ERROR_FAILURE when a weak reference is requested,
                          but the element does not support
                          nsIWeakReference.
void insertElementAt(in nsISupports element, in unsigned long index, in boolean weak)
 removeElementAt()
 
 Remove an element at a specific position, moving all elements
 stored at a higher position down one.
 To remove a specific element, use indexOf() to find the index
 first, then call removeElementAt().

 @param index the position of the item

void removeElementAt(in unsigned long index)
 replaceElementAt()

 Replace the element at the given position.

 @param element The new element to insert
 @param index   The position in the array
                If the position is lower than the current length
                of the array, an existing element will be replaced.
                If the position is equal to the current length
                of the array, the new element is appended.
                If the position is higher than the current length
                of the array, empty elements are appended followed
                by the new element at the specified position.
                An index lower than 0 is invalid and will be ignored.

 @param weak    Whether or not to store the new element using a weak
                reference.

 @throws NS_ERROR_FAILURE when a weak reference is requested,
                          but the element does not support
                          nsIWeakReference.
void replaceElementAt(in nsISupports element, in unsigned long index, in boolean weak)