NS_IMETHODIMP nsINIParserImpl::GetSections(nsIUTF8StringEnumerator* *aResult) { nsTArray<nsCString> *strings = new nsTArray<nsCString>; if (!strings) return NS_ERROR_OUT_OF_MEMORY; nsresult rv = mParser.GetSections(SectionCB, strings); if (NS_SUCCEEDED(rv)) rv = NS_NewAdoptingUTF8StringEnumerator(aResult, strings); if (NS_FAILED(rv)) delete strings; return rv; }
NS_IMETHODIMP nsGnomeVFSMimeApp::GetSupportedURISchemes(nsIUTF8StringEnumerator** aSchemes) { *aSchemes = nsnull; nsCStringArray *array = new nsCStringArray(); NS_ENSURE_TRUE(array, NS_ERROR_OUT_OF_MEMORY); for (GList *list = mApp->supported_uri_schemes; list; list = list->next) { if (!array->AppendCString(nsDependentCString((char*) list->data))) { delete array; return NS_ERROR_OUT_OF_MEMORY; } } return NS_NewAdoptingUTF8StringEnumerator(aSchemes, array); }
nsresult nsCharsetConverterManager::GetList(const nsACString& aCategory, const nsACString& aPrefix, nsIUTF8StringEnumerator** aResult) { if (aResult == NULL) return NS_ERROR_NULL_POINTER; *aResult = NULL; nsresult rv; nsCOMPtr<nsICategoryManager> catman = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv); if (NS_FAILED(rv)) return rv; nsTArray<nsCString>* array = new nsTArray<nsCString>; if (!array) return NS_ERROR_OUT_OF_MEMORY; nsCOMPtr<nsISimpleEnumerator> enumerator; catman->EnumerateCategory(PromiseFlatCString(aCategory).get(), getter_AddRefs(enumerator)); bool hasMore; while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMore)) && hasMore) { nsCOMPtr<nsISupports> supports; if (NS_FAILED(enumerator->GetNext(getter_AddRefs(supports)))) continue; nsCOMPtr<nsISupportsCString> supStr = do_QueryInterface(supports); if (!supStr) continue; nsCAutoString name; if (NS_FAILED(supStr->GetData(name))) continue; nsCAutoString fullName(aPrefix); fullName.Append(name); NS_ENSURE_TRUE(array->AppendElement(fullName), NS_ERROR_OUT_OF_MEMORY); } return NS_NewAdoptingUTF8StringEnumerator(aResult, array); }
NS_IMETHODIMP nsINIParserImpl::GetKeys(const nsACString& aSection, nsIUTF8StringEnumerator* *aResult) { nsTArray<nsCString> *strings = new nsTArray<nsCString>; if (!strings) return NS_ERROR_OUT_OF_MEMORY; nsresult rv = mParser.GetStrings(PromiseFlatCString(aSection).get(), KeyCB, strings); if (NS_SUCCEEDED(rv)) rv = NS_NewAdoptingUTF8StringEnumerator(aResult, strings); if (NS_FAILED(rv)) delete strings; return rv; }