зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
ef0379cabc
Коммит
ab95fb6cf4
|
@ -56,6 +56,9 @@ public:
|
||||||
NS_IMETHOD GetElementAt(PRUint32 i, nsISupports* *result) {
|
NS_IMETHOD GetElementAt(PRUint32 i, nsISupports* *result) {
|
||||||
return mSubFolders->GetElementAt(i, 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) {
|
NS_IMETHOD SetElementAt(PRUint32 i, nsISupports* value) {
|
||||||
return mSubFolders->SetElementAt(i, value);
|
return mSubFolders->SetElementAt(i, value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,8 @@ interface nsICollection : nsISupports
|
||||||
|
|
||||||
PRUint32 Count();
|
PRUint32 Count();
|
||||||
nsISupports GetElementAt(in PRUint32 index);
|
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 SetElementAt(in PRUint32 index, in nsISupports item);
|
||||||
void AppendElement(in nsISupports item);
|
void AppendElement(in nsISupports item);
|
||||||
void RemoveElement(in nsISupports item);
|
void RemoveElement(in nsISupports item);
|
||||||
|
|
|
@ -39,6 +39,14 @@ public:
|
||||||
*result = ElementAt(aIndex);
|
*result = ElementAt(aIndex);
|
||||||
return NS_OK;
|
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) {
|
NS_IMETHOD SetElementAt(PRUint32 aIndex, nsISupports* value) {
|
||||||
PRBool ok = ReplaceElementAt(value, aIndex);
|
PRBool ok = ReplaceElementAt(value, aIndex);
|
||||||
return ok ? NS_OK : NS_ERROR_FAILURE;
|
return ok ? NS_OK : NS_ERROR_FAILURE;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче