27 #ifndef SB_XPCOM_UTILS_H_
28 #define SB_XPCOM_UTILS_H_
50 #include <nsICategoryManager.h>
51 #include <nsISupportsPrimitives.h>
52 #include <nsServiceManagerUtils.h>
53 #include <nsStringGlue.h>
70 static inline nsresult
72 nsTArray<nsCString>& aEntryValueList)
75 NS_ENSURE_ARG_POINTER(aCategory);
81 nsCOMPtr<nsICategoryManager>
82 categoryManager = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
83 NS_ENSURE_SUCCESS(rv, rv);
86 nsCOMPtr<nsISimpleEnumerator> enumerator;
87 rv = categoryManager->EnumerateCategory(aCategory,
88 getter_AddRefs(enumerator));
89 NS_ENSURE_SUCCESS(rv, rv);
93 rv = enumerator->HasMoreElements(&hasMore);
94 NS_ENSURE_SUCCESS(rv, rv);
98 nsCOMPtr<nsISupports> entryNameSupports;
99 rv = enumerator->GetNext(getter_AddRefs(entryNameSupports));
100 NS_ENSURE_SUCCESS(rv, rv);
101 nsCOMPtr<nsISupportsCString>
102 entryNameSupportsCString = do_QueryInterface(entryNameSupports, &rv);
103 NS_ENSURE_SUCCESS(rv, rv);
104 rv = entryNameSupportsCString->GetData(entryName);
105 NS_ENSURE_SUCCESS(rv, rv);
108 nsCString entryValue;
109 rv = categoryManager->GetCategoryEntry(aCategory,
111 getter_Copies(entryValue));
112 NS_ENSURE_SUCCESS(rv, rv);
115 nsCString* appendedElement = aEntryValueList.AppendElement(entryValue);
116 NS_ENSURE_TRUE(appendedElement, NS_ERROR_OUT_OF_MEMORY);
119 rv = enumerator->HasMoreElements(&hasMore);
120 NS_ENSURE_SUCCESS(rv, rv);
127 #endif // SB_XPCOM_UTILS_H_
StringArrayEnumerator prototype hasMore
static nsresult SB_GetCategoryEntryValues(const char *aCategory, nsTArray< nsCString > &aEntryValueList)