Added QueryElementAt() which combines GetElementAt() and QueryInterface(). Rationale: combining operations saves a call to AddRef/Release, since it's done by QI. Approved by dp.

This commit is contained in:
beard%netscape.com 1999-09-16 21:29:22 +00:00
Родитель 8554135704
Коммит 85da0d0df7
3 изменённых файлов: 13 добавлений и 0 удалений

Просмотреть файл

@ -56,6 +56,9 @@ public:
NS_IMETHOD GetElementAt(PRUint32 i, nsISupports* *result) {
return mSubFolders->GetElementAt(i, result);
}
NS_IMETHOD QueryElementAt(PRUint32 i, const nsIID & iid, void * *result) {
return mSubFolders->QueryElementAt(i, iid, result);
}
NS_IMETHOD SetElementAt(PRUint32 i, nsISupports* value) {
return mSubFolders->SetElementAt(i, value);
}

Просмотреть файл

@ -25,6 +25,8 @@ interface nsICollection : nsISupports
PRUint32 Count();
nsISupports GetElementAt(in PRUint32 index);
void QueryElementAt(in PRUint32 index, in nsIIDRef uuid,
[iid_is(uuid),retval] out nsQIResult result);
void SetElementAt(in PRUint32 index, in nsISupports item);
void AppendElement(in nsISupports item);
void RemoveElement(in nsISupports item);

Просмотреть файл

@ -39,6 +39,14 @@ public:
*result = ElementAt(aIndex);
return NS_OK;
}
NS_IMETHOD QueryElementAt(PRUint32 aIndex, const nsIID & aIID, void * *aResult) {
if (aIndex < mCount) {
nsISupports* element = mArray[aIndex];
if (nsnull != element)
return element->QueryInterface(aIID, aResult);
}
return NS_ERROR_FAILURE;
}
NS_IMETHOD SetElementAt(PRUint32 aIndex, nsISupports* value) {
PRBool ok = ReplaceElementAt(value, aIndex);
return ok ? NS_OK : NS_ERROR_FAILURE;