/** * See nsIMutableArray */ NS_IMETHODIMP sbPropertyArray::AppendElement(nsISupports* aElement, bool aWeak) { NS_ENSURE_ARG_POINTER(aElement); // No support for weak references here NS_ENSURE_FALSE(aWeak, NS_ERROR_FAILURE); nsresult rv; nsCOMPtr<sbIProperty> property = do_QueryInterface(aElement, &rv); NS_ENSURE_SUCCESS(rv, rv); nsAutoLock lock(mArrayLock); if (mStrict) { bool valid; rv = PropertyIsValid(property, &valid); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(valid, NS_ERROR_ILLEGAL_VALUE); } bool success = mArray.AppendObject(property); NS_ENSURE_STATE(success); return NS_OK; }
/** * See nsIMutableArray */ NS_IMETHODIMP sbPropertyArray::ReplaceElementAt(nsISupports* aElement, PRUint32 aIndex, bool aWeak) { NS_ENSURE_ARG_POINTER(aElement); NS_ENSURE_ARG(aIndex < static_cast<PRUint32>(mArray.Count())); // No support for weak references here NS_ENSURE_FALSE(aWeak, NS_ERROR_NOT_IMPLEMENTED); nsresult rv; nsCOMPtr<sbIProperty> property = do_QueryInterface(aElement, &rv); NS_ENSURE_SUCCESS(rv, rv); nsAutoLock lock(mArrayLock); if (mStrict) { bool valid; rv = PropertyIsValid(property, &valid); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(valid, NS_ERROR_ILLEGAL_VALUE); } bool success = mArray.ReplaceObjectAt(property, aIndex); NS_ENSURE_STATE(success); return NS_OK; }
/** * See nsIMutableArray */ NS_IMETHODIMP sbPropertyArray::InsertElementAt(nsISupports* aElement, PRUint32 aIndex, PRBool aWeak) { NS_ENSURE_ARG_POINTER(aElement); NS_ENSURE_ARG_MAX((PRInt32)aIndex, mArray.Count()); // No support for weak references here NS_ENSURE_FALSE(aWeak, NS_ERROR_FAILURE); nsresult rv; nsCOMPtr<sbIProperty> property = do_QueryInterface(aElement, &rv); NS_ENSURE_SUCCESS(rv, rv); nsAutoLock lock(mArrayLock); if (mStrict) { PRBool valid; rv = PropertyIsValid(property, &valid); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(valid, NS_ERROR_ILLEGAL_VALUE); } PRBool success = mArray.InsertObjectAt(property, aIndex); NS_ENSURE_STATE(success); return NS_OK; }