/work/obj-fuzz/dist/include/nsCOMArray.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef nsCOMArray_h__ |
8 | | #define nsCOMArray_h__ |
9 | | |
10 | | #include "mozilla/Attributes.h" |
11 | | #include "mozilla/ArrayIterator.h" |
12 | | #include "mozilla/MemoryReporting.h" |
13 | | #include "mozilla/ReverseIterator.h" |
14 | | |
15 | | #include "nsCycleCollectionNoteChild.h" |
16 | | #include "nsTArray.h" |
17 | | #include "nsISupports.h" |
18 | | |
19 | | // See below for the definition of nsCOMArray<T> |
20 | | |
21 | | // a class that's nsISupports-specific, so that we can contain the |
22 | | // work of this class in the XPCOM dll |
23 | | class nsCOMArray_base |
24 | | { |
25 | | friend class nsArrayBase; |
26 | | protected: |
27 | | nsCOMArray_base() {} |
28 | | explicit nsCOMArray_base(int32_t aCount) : mArray(aCount) {} |
29 | | nsCOMArray_base(const nsCOMArray_base& aOther); |
30 | | ~nsCOMArray_base(); |
31 | | |
32 | | int32_t IndexOf(nsISupports* aObject, uint32_t aStartIndex = 0) const; |
33 | | bool Contains(nsISupports* aObject) const |
34 | 0 | { |
35 | 0 | return IndexOf(aObject) != -1; |
36 | 0 | } |
37 | | |
38 | | int32_t IndexOfObject(nsISupports* aObject) const; |
39 | | bool ContainsObject(nsISupports* aObject) const |
40 | 0 | { |
41 | 0 | return IndexOfObject(aObject) != -1; |
42 | 0 | } |
43 | | |
44 | | typedef bool (*nsBaseArrayEnumFunc)(void* aElement, void* aData); |
45 | | |
46 | | // enumerate through the array with a callback. |
47 | | bool EnumerateForwards(nsBaseArrayEnumFunc aFunc, void* aData) const; |
48 | | |
49 | | bool EnumerateBackwards(nsBaseArrayEnumFunc aFunc, void* aData) const; |
50 | | |
51 | | typedef int (*nsBaseArrayComparatorFunc)(nsISupports* aElement1, |
52 | | nsISupports* aElement2, |
53 | | void* aData); |
54 | | |
55 | | struct nsCOMArrayComparatorContext |
56 | | { |
57 | | nsBaseArrayComparatorFunc mComparatorFunc; |
58 | | void* mData; |
59 | | }; |
60 | | |
61 | | static int nsCOMArrayComparator(const void* aElement1, const void* aElement2, |
62 | | void* aData); |
63 | | void Sort(nsBaseArrayComparatorFunc aFunc, void* aData); |
64 | | |
65 | | bool InsertObjectAt(nsISupports* aObject, int32_t aIndex); |
66 | | void InsertElementAt(uint32_t aIndex, nsISupports* aElement); |
67 | | void InsertElementAt(uint32_t aIndex, already_AddRefed<nsISupports> aElement); |
68 | | bool InsertObjectsAt(const nsCOMArray_base& aObjects, int32_t aIndex); |
69 | | void InsertElementsAt(uint32_t aIndex, const nsCOMArray_base& aElements); |
70 | | void InsertElementsAt(uint32_t aIndex, nsISupports* const* aElements, |
71 | | uint32_t aCount); |
72 | | void ReplaceObjectAt(nsISupports* aObject, int32_t aIndex); |
73 | | void ReplaceElementAt(uint32_t aIndex, nsISupports* aElement) |
74 | 0 | { |
75 | 0 | nsISupports* oldElement = mArray[aIndex]; |
76 | 0 | NS_IF_ADDREF(mArray[aIndex] = aElement); |
77 | 0 | NS_IF_RELEASE(oldElement); |
78 | 0 | } |
79 | | bool AppendObject(nsISupports* aObject) |
80 | | { |
81 | | return InsertObjectAt(aObject, Count()); |
82 | | } |
83 | | void AppendElement(nsISupports* aElement) |
84 | | { |
85 | | InsertElementAt(Length(), aElement); |
86 | | } |
87 | | void AppendElement(already_AddRefed<nsISupports> aElement) |
88 | 0 | { |
89 | 0 | InsertElementAt(Length(), std::move(aElement)); |
90 | 0 | } |
91 | | |
92 | | bool AppendObjects(const nsCOMArray_base& aObjects) |
93 | | { |
94 | | return InsertObjectsAt(aObjects, Count()); |
95 | | } |
96 | | void AppendElements(const nsCOMArray_base& aElements) |
97 | 0 | { |
98 | 0 | return InsertElementsAt(Length(), aElements); |
99 | 0 | } |
100 | | void AppendElements(nsISupports* const* aElements, uint32_t aCount) |
101 | 0 | { |
102 | 0 | return InsertElementsAt(Length(), aElements, aCount); |
103 | 0 | } |
104 | | bool RemoveObject(nsISupports* aObject); |
105 | | nsISupports** Elements() { return mArray.Elements(); } |
106 | | void SwapElements(nsCOMArray_base& aOther) |
107 | 0 | { |
108 | 0 | mArray.SwapElements(aOther.mArray); |
109 | 0 | } |
110 | | |
111 | | void Adopt(nsISupports** aElements, uint32_t aCount); |
112 | | uint32_t Forget(nsISupports*** aElements); |
113 | | public: |
114 | | // elements in the array (including null elements!) |
115 | | int32_t Count() const { return mArray.Length(); } |
116 | | // nsTArray-compatible version |
117 | | uint32_t Length() const { return mArray.Length(); } |
118 | 0 | bool IsEmpty() const { return mArray.IsEmpty(); } |
119 | | |
120 | | // If the array grows, the newly created entries will all be null; |
121 | | // if the array shrinks, the excess entries will all be released. |
122 | | bool SetCount(int32_t aNewCount); |
123 | | // nsTArray-compatible version |
124 | | void TruncateLength(uint32_t aNewLength) |
125 | 0 | { |
126 | 0 | if (mArray.Length() > aNewLength) { |
127 | 0 | RemoveElementsAt(aNewLength, mArray.Length() - aNewLength); |
128 | 0 | } |
129 | 0 | } |
130 | | |
131 | | // remove all elements in the array, and call NS_RELEASE on each one |
132 | | void Clear(); |
133 | | |
134 | | nsISupports* ObjectAt(int32_t aIndex) const { return mArray[aIndex]; } |
135 | | // nsTArray-compatible version |
136 | 0 | nsISupports* ElementAt(uint32_t aIndex) const { return mArray[aIndex]; } |
137 | | |
138 | | nsISupports* SafeObjectAt(int32_t aIndex) const |
139 | | { |
140 | | return mArray.SafeElementAt(aIndex, nullptr); |
141 | | } |
142 | | // nsTArray-compatible version |
143 | | nsISupports* SafeElementAt(uint32_t aIndex) const |
144 | 0 | { |
145 | 0 | return mArray.SafeElementAt(aIndex, nullptr); |
146 | 0 | } |
147 | | |
148 | | nsISupports* operator[](int32_t aIndex) const { return mArray[aIndex]; } |
149 | | |
150 | | // remove an element at a specific position, shrinking the array |
151 | | // as necessary |
152 | | bool RemoveObjectAt(int32_t aIndex); |
153 | | // nsTArray-compatible version |
154 | | void RemoveElementAt(uint32_t aIndex); |
155 | | |
156 | | // remove a range of elements at a specific position, shrinking the array |
157 | | // as necessary |
158 | | bool RemoveObjectsAt(int32_t aIndex, int32_t aCount); |
159 | | // nsTArray-compatible version |
160 | | void RemoveElementsAt(uint32_t aIndex, uint32_t aCount); |
161 | | |
162 | | void SwapElementsAt(uint32_t aIndex1, uint32_t aIndex2) |
163 | 0 | { |
164 | 0 | nsISupports* tmp = mArray[aIndex1]; |
165 | 0 | mArray[aIndex1] = mArray[aIndex2]; |
166 | 0 | mArray[aIndex2] = tmp; |
167 | 0 | } |
168 | | |
169 | | // Ensures there is enough space to store a total of aCapacity objects. |
170 | | // This method never deletes any objects. |
171 | | void SetCapacity(uint32_t aCapacity) { mArray.SetCapacity(aCapacity); } |
172 | 0 | uint32_t Capacity() { return mArray.Capacity(); } |
173 | | |
174 | | // Measures the size of the array's element storage. If you want to measure |
175 | | // anything hanging off the array, you must iterate over the elements and |
176 | | // measure them individually; hence the "Shallow" prefix. Note that because |
177 | | // each element in an nsCOMArray<T> is actually a T* any such iteration |
178 | | // should use a SizeOfIncludingThis() function on each element rather than a |
179 | | // SizeOfExcludingThis() function, so that the memory taken by the T itself |
180 | | // is included as well as anything it points to. |
181 | | size_t ShallowSizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const |
182 | 0 | { |
183 | 0 | return mArray.ShallowSizeOfExcludingThis(aMallocSizeOf); |
184 | 0 | } |
185 | | |
186 | | private: |
187 | | |
188 | | // the actual storage |
189 | | nsTArray<nsISupports*> mArray; |
190 | | |
191 | | // don't implement these, defaults will muck with refcounts! |
192 | | nsCOMArray_base& operator=(const nsCOMArray_base& aOther) = delete; |
193 | | }; |
194 | | |
195 | | inline void |
196 | | ImplCycleCollectionUnlink(nsCOMArray_base& aField) |
197 | 0 | { |
198 | 0 | aField.Clear(); |
199 | 0 | } |
200 | | |
201 | | inline void |
202 | | ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback, |
203 | | nsCOMArray_base& aField, |
204 | | const char* aName, |
205 | | uint32_t aFlags = 0) |
206 | | { |
207 | | aFlags |= CycleCollectionEdgeNameArrayFlag; |
208 | | int32_t length = aField.Count(); |
209 | | for (int32_t i = 0; i < length; ++i) { |
210 | | CycleCollectionNoteChild(aCallback, aField[i], aName, aFlags); |
211 | | } |
212 | | } |
213 | | |
214 | | |
215 | | // a non-XPCOM, refcounting array of XPCOM objects |
216 | | // used as a member variable or stack variable - this object is NOT |
217 | | // refcounted, but the objects that it holds are |
218 | | // |
219 | | // most of the read-only accessors like ObjectAt()/etc do NOT refcount |
220 | | // on the way out. This means that you can do one of two things: |
221 | | // |
222 | | // * does an addref, but holds onto a reference |
223 | | // nsCOMPtr<T> foo = array[i]; |
224 | | // |
225 | | // * avoids the refcount, but foo might go stale if array[i] is ever |
226 | | // * modified/removed. Be careful not to NS_RELEASE(foo)! |
227 | | // T* foo = array[i]; |
228 | | // |
229 | | // This array will accept null as an argument for any object, and will store |
230 | | // null in the array. But that also means that methods like ObjectAt() may |
231 | | // return null when referring to an existing, but null entry in the array. |
232 | | template<class T> |
233 | | class nsCOMArray : public nsCOMArray_base |
234 | | { |
235 | | public: |
236 | | typedef int32_t index_type; |
237 | | typedef mozilla::ArrayIterator<T*, nsCOMArray> iterator; |
238 | | typedef mozilla::ArrayIterator<const T*, nsCOMArray> const_iterator; |
239 | | typedef mozilla::ReverseIterator<iterator> reverse_iterator; |
240 | | typedef mozilla::ReverseIterator<const_iterator> const_reverse_iterator; |
241 | | |
242 | 20 | nsCOMArray() {} Unexecuted instantiation: nsCOMArray<nsIPropertyElement>::nsCOMArray() nsCOMArray<nsIThread>::nsCOMArray() Line | Count | Source | 242 | 7 | nsCOMArray() {} |
Unexecuted instantiation: nsCOMArray<nsIX509CertList>::nsCOMArray() nsCOMArray<nsIFile>::nsCOMArray() Line | Count | Source | 242 | 3 | nsCOMArray() {} |
nsCOMArray<nsIChannelEventSink>::nsCOMArray() Line | Count | Source | 242 | 3 | nsCOMArray() {} |
Unexecuted instantiation: nsCOMArray<nsIRequest>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIContentSniffer>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsICookie>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsITimer>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsWifiAccessPoint>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsZipHeader>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIVariant>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozIStorageVacuumParticipant>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozIStorageRow>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIPermission>::nsCOMArray() nsCOMArray<nsIDocumentLoader>::nsCOMArray() Line | Count | Source | 242 | 3 | nsCOMArray() {} |
Unexecuted instantiation: nsCOMArray<nsIWeakReference>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIOfflineCacheUpdateObserver>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIURI>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIFormControl>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsMutationReceiverBase>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsMutationReceiver>::nsCOMArray() nsCOMArray<nsIContentPolicy>::nsCOMArray() Line | Count | Source | 242 | 1 | nsCOMArray() {} |
Unexecuted instantiation: nsCOMArray<nsINode>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsISecurityConsoleMessage>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIDocument>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIScriptErrorNote>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIContent>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIEventListenerInfo>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozilla::dom::Event>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIDOMWindow>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsXBLKeyEventHandler>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIScriptElement>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozilla::dom::Element>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIDirectoryEnumerator>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIScriptLoaderObserver>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIPresentationAvailabilityListener>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIKeyEventInPluginCallback>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsITransactionListener>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::nsCOMArray() Unexecuted instantiation: nsCOMArray<imgIContainer>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIDocShellTreeItem>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsISHEntry>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIContentViewer>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIDocShell>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozISpellCheckingEngine>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsISiteSecurityState>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIPerformanceStats>::nsCOMArray() Unexecuted instantiation: nsCOMArray<mozIStorageCompletionCallback>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsINavBookmarkObserver>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsINavHistoryObserver>::nsCOMArray() nsCOMArray<nsIFetchTelemetryDataCallback>::nsCOMArray() Line | Count | Source | 242 | 3 | nsCOMArray() {} |
Unexecuted instantiation: nsCOMArray<nsIAutoCompleteSearch>::nsCOMArray() Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::nsCOMArray() Unexecuted instantiation: nsCOMArray<IFoo>::nsCOMArray() Unexecuted instantiation: nsCOMArray<IBar>::nsCOMArray() Unexecuted instantiation: nsCOMArray<TestHashtables::IFoo>::nsCOMArray() |
243 | 6 | explicit nsCOMArray(int32_t aCount) : nsCOMArray_base(aCount) {} nsCOMArray<nsIFile>::nsCOMArray(int) Line | Count | Source | 243 | 6 | explicit nsCOMArray(int32_t aCount) : nsCOMArray_base(aCount) {} |
Unexecuted instantiation: nsCOMArray<nsICookie>::nsCOMArray(int) Unexecuted instantiation: nsCOMArray<nsIProperty>::nsCOMArray(int) Unexecuted instantiation: nsCOMArray<imgIContainer>::nsCOMArray(int) |
244 | 0 | explicit nsCOMArray(const nsCOMArray<T>& aOther) : nsCOMArray_base(aOther) {} Unexecuted instantiation: nsCOMArray<nsIRequest>::nsCOMArray(nsCOMArray<nsIRequest> const&) Unexecuted instantiation: nsCOMArray<nsINode>::nsCOMArray(nsCOMArray<nsINode> const&) Unexecuted instantiation: nsCOMArray<nsIAutoCompleteSearch>::nsCOMArray(nsCOMArray<nsIAutoCompleteSearch> const&) |
245 | | nsCOMArray(nsCOMArray<T>&& aOther) { SwapElements(aOther); } |
246 | | ~nsCOMArray() {} |
247 | | |
248 | | // We have a move assignment operator, but no copy assignment operator. |
249 | | nsCOMArray<T>& operator=(nsCOMArray<T> && aOther) |
250 | | { |
251 | | SwapElements(aOther); |
252 | | return *this; |
253 | | } |
254 | | |
255 | | // these do NOT refcount on the way out, for speed |
256 | | T* ObjectAt(int32_t aIndex) const |
257 | 3 | { |
258 | 3 | return static_cast<T*>(nsCOMArray_base::ObjectAt(aIndex)); |
259 | 3 | } Unexecuted instantiation: nsCOMArray<nsMutationReceiverBase>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIThread>::ObjectAt(int) const nsCOMArray<nsIFile>::ObjectAt(int) const Line | Count | Source | 257 | 3 | { | 258 | 3 | return static_cast<T*>(nsCOMArray_base::ObjectAt(aIndex)); | 259 | 3 | } |
Unexecuted instantiation: nsCOMArray<nsIX509CertList>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIChannelEventSink>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIContentSniffer>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsITimer>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsWifiAccessPoint>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsZipHeader>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozIStorageVacuumParticipant>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozIStorageRow>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIVariant>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDocumentLoader>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIWeakReference>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIOfflineCacheUpdateObserver>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIURI>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIFormControl>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIContentPolicy>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsMutationReceiver>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsISecurityConsoleMessage>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsINode>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDocument>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsISupports>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIScriptErrorNote>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIContent>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozilla::dom::Event>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIRequest>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDOMWindow>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsXBLKeyEventHandler>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDirectoryEnumerator>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIScriptLoaderObserver>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIPresentationAvailabilityListener>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIKeyEventInPluginCallback>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsITransactionListener>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<imgIContainer>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDocShellTreeItem>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsISHEntry>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDocShell>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozISpellCheckingEngine>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIPerformanceStats>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozIStorageCompletionCallback>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIFetchTelemetryDataCallback>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteSearch>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<IFoo>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<IBar>::ObjectAt(int) const Unexecuted instantiation: nsCOMArray<TestHashtables::IFoo>::ObjectAt(int) const |
260 | | // nsTArray-compatible version |
261 | | T* ElementAt(uint32_t aIndex) const |
262 | 0 | { |
263 | 0 | return static_cast<T*>(nsCOMArray_base::ElementAt(aIndex)); |
264 | 0 | } Unexecuted instantiation: nsCOMArray<nsINode>::ElementAt(unsigned int) const Unexecuted instantiation: nsCOMArray<nsIURI>::ElementAt(unsigned int) const Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::ElementAt(unsigned int) const Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::ElementAt(unsigned int) const Unexecuted instantiation: nsCOMArray<nsISHEntry>::ElementAt(unsigned int) const Unexecuted instantiation: nsCOMArray<IBar>::ElementAt(unsigned int) const |
265 | | |
266 | | // these do NOT refcount on the way out, for speed |
267 | | T* SafeObjectAt(int32_t aIndex) const |
268 | 0 | { |
269 | 0 | return static_cast<T*>(nsCOMArray_base::SafeObjectAt(aIndex)); |
270 | 0 | } Unexecuted instantiation: nsCOMArray<nsINode>::SafeObjectAt(int) const Unexecuted instantiation: nsCOMArray<mozilla::dom::Element>::SafeObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIDocShellTreeItem>::SafeObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::SafeObjectAt(int) const Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::SafeObjectAt(int) const |
271 | | // nsTArray-compatible version |
272 | | T* SafeElementAt(uint32_t aIndex) const |
273 | 0 | { |
274 | 0 | return static_cast<T*>(nsCOMArray_base::SafeElementAt(aIndex)); |
275 | 0 | } |
276 | | |
277 | | // indexing operator for syntactic sugar |
278 | 3 | T* operator[](int32_t aIndex) const { return ObjectAt(aIndex); } Unexecuted instantiation: nsCOMArray<nsMutationReceiverBase>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIThread>::operator[](int) const nsCOMArray<nsIFile>::operator[](int) const Line | Count | Source | 278 | 3 | T* operator[](int32_t aIndex) const { return ObjectAt(aIndex); } |
Unexecuted instantiation: nsCOMArray<nsIX509CertList>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIChannelEventSink>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIContentSniffer>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsITimer>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsWifiAccessPoint>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsZipHeader>::operator[](int) const Unexecuted instantiation: nsCOMArray<mozIStorageVacuumParticipant>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIDocumentLoader>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIWeakReference>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIOfflineCacheUpdateObserver>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIURI>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIFormControl>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIContentPolicy>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsMutationReceiver>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsISecurityConsoleMessage>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsINode>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIDocument>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIScriptErrorNote>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIContent>::operator[](int) const Unexecuted instantiation: nsCOMArray<mozilla::dom::Event>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIRequest>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIDOMWindow>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsXBLKeyEventHandler>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIDirectoryEnumerator>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIScriptLoaderObserver>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIKeyEventInPluginCallback>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsISupports>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsITransactionListener>::operator[](int) const Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::operator[](int) const Unexecuted instantiation: nsCOMArray<imgIContainer>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsISHEntry>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIDocShell>::operator[](int) const Unexecuted instantiation: nsCOMArray<mozISpellCheckingEngine>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIPerformanceStats>::operator[](int) const Unexecuted instantiation: nsCOMArray<mozIStorageCompletionCallback>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIFetchTelemetryDataCallback>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::operator[](int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteSearch>::operator[](int) const Unexecuted instantiation: nsCOMArray<IFoo>::operator[](int) const Unexecuted instantiation: nsCOMArray<TestHashtables::IFoo>::operator[](int) const |
279 | | |
280 | | // index of the element in question.. does NOT refcount |
281 | | // note: this does not check COM object identity. Use |
282 | | // IndexOfObject() for that purpose |
283 | | int32_t IndexOf(T* aObject, uint32_t aStartIndex = 0) const |
284 | 0 | { |
285 | 0 | return nsCOMArray_base::IndexOf(aObject, aStartIndex); |
286 | 0 | } Unexecuted instantiation: nsCOMArray<nsITimer>::IndexOf(nsITimer*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsIFormControl>::IndexOf(nsIFormControl*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsIContent>::IndexOf(nsIContent*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::IndexOf(nsIPresentationDevice*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsIContentViewer>::IndexOf(nsIContentViewer*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::IndexOf(nsNavHistoryResultNode*, unsigned int) const Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::IndexOf(nsIAutoCompleteResult*, unsigned int) const |
287 | | bool Contains(T* aObject) const |
288 | 0 | { |
289 | 0 | return nsCOMArray_base::Contains(aObject); |
290 | 0 | } Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::Contains(nsIPresentationDeviceProvider*) const Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::Contains(nsIPresentationDevice*) const Unexecuted instantiation: nsCOMArray<nsIPresentationAvailabilityListener>::Contains(nsIPresentationAvailabilityListener*) const |
291 | | |
292 | | // index of the element in question.. be careful! |
293 | | // this is much slower than IndexOf() because it uses |
294 | | // QueryInterface to determine actual COM identity of the object |
295 | | // if you need to do this frequently then consider enforcing |
296 | | // COM object identity before adding/comparing elements |
297 | | int32_t IndexOfObject(T* aObject) const |
298 | 0 | { |
299 | 0 | return nsCOMArray_base::IndexOfObject(aObject); |
300 | 0 | } Unexecuted instantiation: nsCOMArray<nsIRequest>::IndexOfObject(nsIRequest*) const Unexecuted instantiation: nsCOMArray<nsISHEntry>::IndexOfObject(nsISHEntry*) const |
301 | | bool ContainsObject(nsISupports* aObject) const |
302 | | { |
303 | | return nsCOMArray_base::ContainsObject(aObject); |
304 | | } |
305 | | |
306 | | // inserts aObject at aIndex, shifting the objects at aIndex and |
307 | | // later to make space |
308 | | bool InsertObjectAt(T* aObject, int32_t aIndex) |
309 | 0 | { |
310 | 0 | return nsCOMArray_base::InsertObjectAt(aObject, aIndex); |
311 | 0 | } Unexecuted instantiation: nsCOMArray<nsIVariant>::InsertObjectAt(nsIVariant*, int) Unexecuted instantiation: nsCOMArray<nsIContent>::InsertObjectAt(nsIContent*, int) Unexecuted instantiation: nsCOMArray<nsISHEntry>::InsertObjectAt(nsISHEntry*, int) Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::InsertObjectAt(nsNavHistoryResultNode*, int) Unexecuted instantiation: nsCOMArray<TestHashtables::IFoo>::InsertObjectAt(TestHashtables::IFoo*, int) |
312 | | // nsTArray-compatible version |
313 | | void InsertElementAt(uint32_t aIndex, T* aElement) |
314 | | { |
315 | | nsCOMArray_base::InsertElementAt(aIndex, aElement); |
316 | | } |
317 | | |
318 | | // inserts the objects from aObject at aIndex, shifting the |
319 | | // objects at aIndex and later to make space |
320 | | bool InsertObjectsAt(const nsCOMArray<T>& aObjects, int32_t aIndex) |
321 | 0 | { |
322 | 0 | return nsCOMArray_base::InsertObjectsAt(aObjects, aIndex); |
323 | 0 | } |
324 | | // nsTArray-compatible version |
325 | | void InsertElementsAt(uint32_t aIndex, const nsCOMArray<T>& aElements) |
326 | | { |
327 | | nsCOMArray_base::InsertElementsAt(aIndex, aElements); |
328 | | } |
329 | | void InsertElementsAt(uint32_t aIndex, T* const* aElements, uint32_t aCount) |
330 | | { |
331 | | nsCOMArray_base::InsertElementsAt( |
332 | | aIndex, reinterpret_cast<nsISupports* const*>(aElements), aCount); |
333 | | } |
334 | | |
335 | | // replaces an existing element. Warning: if the array grows, |
336 | | // the newly created entries will all be null |
337 | | void ReplaceObjectAt(T* aObject, int32_t aIndex) |
338 | 0 | { |
339 | 0 | nsCOMArray_base::ReplaceObjectAt(aObject, aIndex); |
340 | 0 | } Unexecuted instantiation: nsCOMArray<nsIFile>::ReplaceObjectAt(nsIFile*, int) Unexecuted instantiation: nsCOMArray<nsINode>::ReplaceObjectAt(nsINode*, int) Unexecuted instantiation: nsCOMArray<nsIRequest>::ReplaceObjectAt(nsIRequest*, int) Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::ReplaceObjectAt(mozilla::css::Rule*, int) Unexecuted instantiation: nsCOMArray<imgIContainer>::ReplaceObjectAt(imgIContainer*, int) Unexecuted instantiation: nsCOMArray<nsIContent>::ReplaceObjectAt(nsIContent*, int) Unexecuted instantiation: nsCOMArray<nsISHEntry>::ReplaceObjectAt(nsISHEntry*, int) Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::ReplaceObjectAt(nsIAutoCompleteResult*, int) |
341 | | // nsTArray-compatible version |
342 | | void ReplaceElementAt(uint32_t aIndex, T* aElement) |
343 | | { |
344 | | nsCOMArray_base::ReplaceElementAt(aIndex, aElement); |
345 | | } |
346 | | |
347 | | typedef int (*nsCOMArrayComparatorFunc)(T* aElement1, T* aElement2, |
348 | | void* aData); |
349 | | |
350 | | void Sort(nsCOMArrayComparatorFunc aFunc, void* aData) |
351 | 3 | { |
352 | 3 | nsCOMArray_base::Sort(nsBaseArrayComparatorFunc(aFunc), aData); |
353 | 3 | } nsCOMArray<nsIFile>::Sort(int (*)(nsIFile*, nsIFile*, void*), void*) Line | Count | Source | 351 | 3 | { | 352 | 3 | nsCOMArray_base::Sort(nsBaseArrayComparatorFunc(aFunc), aData); | 353 | 3 | } |
Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::Sort(int (*)(nsNavHistoryResultNode*, nsNavHistoryResultNode*, void*), void*) |
354 | | |
355 | | // append an object, growing the array as necessary |
356 | | bool AppendObject(T* aObject) |
357 | 3 | { |
358 | 3 | return nsCOMArray_base::AppendObject(aObject); |
359 | 3 | } Unexecuted instantiation: nsCOMArray<nsINode>::AppendObject(nsINode*) Unexecuted instantiation: nsCOMArray<nsMutationReceiverBase>::AppendObject(nsMutationReceiverBase*) Unexecuted instantiation: nsCOMArray<nsIPropertyElement>::AppendObject(nsIPropertyElement*) Unexecuted instantiation: nsCOMArray<nsIDocumentLoader>::AppendObject(nsIDocumentLoader*) Unexecuted instantiation: nsCOMArray<nsIThread>::AppendObject(nsIThread*) Unexecuted instantiation: nsCOMArray<nsITransactionListener>::AppendObject(nsITransactionListener*) nsCOMArray<nsIFile>::AppendObject(nsIFile*) Line | Count | Source | 357 | 3 | { | 358 | 3 | return nsCOMArray_base::AppendObject(aObject); | 359 | 3 | } |
Unexecuted instantiation: nsCOMArray<nsIRequest>::AppendObject(nsIRequest*) Unexecuted instantiation: nsCOMArray<nsICookie>::AppendObject(nsICookie*) Unexecuted instantiation: nsCOMArray<nsITimer>::AppendObject(nsITimer*) Unexecuted instantiation: nsCOMArray<nsWifiAccessPoint>::AppendObject(nsWifiAccessPoint*) Unexecuted instantiation: nsCOMArray<nsIScriptLoaderObserver>::AppendObject(nsIScriptLoaderObserver*) Unexecuted instantiation: nsCOMArray<nsIProperty>::AppendObject(nsIProperty*) Unexecuted instantiation: nsCOMArray<nsZipHeader>::AppendObject(nsZipHeader*) Unexecuted instantiation: nsCOMArray<mozIStorageRow>::AppendObject(mozIStorageRow*) Unexecuted instantiation: nsCOMArray<nsIPermission>::AppendObject(nsIPermission*) Unexecuted instantiation: nsCOMArray<nsIWeakReference>::AppendObject(nsIWeakReference*) Unexecuted instantiation: nsCOMArray<nsIOfflineCacheUpdateObserver>::AppendObject(nsIOfflineCacheUpdateObserver*) Unexecuted instantiation: nsCOMArray<nsIURI>::AppendObject(nsIURI*) Unexecuted instantiation: nsCOMArray<nsIFormControl>::AppendObject(nsIFormControl*) Unexecuted instantiation: nsCOMArray<nsMutationReceiver>::AppendObject(nsMutationReceiver*) Unexecuted instantiation: nsCOMArray<nsIDocument>::AppendObject(nsIDocument*) Unexecuted instantiation: nsCOMArray<nsIScriptErrorNote>::AppendObject(nsIScriptErrorNote*) Unexecuted instantiation: nsCOMArray<nsIContent>::AppendObject(nsIContent*) Unexecuted instantiation: nsCOMArray<mozilla::dom::Event>::AppendObject(mozilla::dom::Event*) Unexecuted instantiation: nsCOMArray<nsIDOMWindow>::AppendObject(nsIDOMWindow*) Unexecuted instantiation: nsCOMArray<nsXBLKeyEventHandler>::AppendObject(nsXBLKeyEventHandler*) Unexecuted instantiation: nsCOMArray<nsIScriptElement>::AppendObject(nsIScriptElement*) Unexecuted instantiation: nsCOMArray<mozilla::dom::Element>::AppendObject(mozilla::dom::Element*) Unexecuted instantiation: nsCOMArray<nsIDirectoryEnumerator>::AppendObject(nsIDirectoryEnumerator*) Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::AppendObject(mozilla::css::Rule*) Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::AppendObject(nsIWebProgressListener*) Unexecuted instantiation: nsCOMArray<nsIDocShellTreeItem>::AppendObject(nsIDocShellTreeItem*) Unexecuted instantiation: nsCOMArray<nsISHEntry>::AppendObject(nsISHEntry*) Unexecuted instantiation: nsCOMArray<nsIContentViewer>::AppendObject(nsIContentViewer*) Unexecuted instantiation: nsCOMArray<mozISpellCheckingEngine>::AppendObject(mozISpellCheckingEngine*) Unexecuted instantiation: nsCOMArray<nsIVariant>::AppendObject(nsIVariant*) Unexecuted instantiation: nsCOMArray<nsISiteSecurityState>::AppendObject(nsISiteSecurityState*) Unexecuted instantiation: nsCOMArray<mozIStorageCompletionCallback>::AppendObject(mozIStorageCompletionCallback*) Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::AppendObject(nsNavHistoryResultNode*) Unexecuted instantiation: nsCOMArray<nsIFetchTelemetryDataCallback>::AppendObject(nsIFetchTelemetryDataCallback*) Unexecuted instantiation: nsCOMArray<nsIAutoCompleteSearch>::AppendObject(nsIAutoCompleteSearch*) Unexecuted instantiation: nsCOMArray<IFoo>::AppendObject(IFoo*) Unexecuted instantiation: nsCOMArray<IBar>::AppendObject(IBar*) |
360 | | // nsTArray-compatible version |
361 | | void AppendElement(T* aElement) |
362 | 0 | { |
363 | 0 | nsCOMArray_base::AppendElement(aElement); |
364 | 0 | } Unexecuted instantiation: nsCOMArray<nsISecurityConsoleMessage>::AppendElement(nsISecurityConsoleMessage*) Unexecuted instantiation: nsCOMArray<nsIURI>::AppendElement(nsIURI*) Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::AppendElement(nsIPresentationDeviceProvider*) Unexecuted instantiation: nsCOMArray<nsIPresentationDevice>::AppendElement(nsIPresentationDevice*) Unexecuted instantiation: nsCOMArray<nsIPresentationAvailabilityListener>::AppendElement(nsIPresentationAvailabilityListener*) Unexecuted instantiation: nsCOMArray<nsIKeyEventInPluginCallback>::AppendElement(nsIKeyEventInPluginCallback*) Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::AppendElement(nsIWebProgressListener*) Unexecuted instantiation: nsCOMArray<nsIPerformanceStats>::AppendElement(nsIPerformanceStats*) Unexecuted instantiation: nsCOMArray<nsINavBookmarkObserver>::AppendElement(nsINavBookmarkObserver*) Unexecuted instantiation: nsCOMArray<nsINavHistoryObserver>::AppendElement(nsINavHistoryObserver*) Unexecuted instantiation: nsCOMArray<IBar>::AppendElement(IBar*) |
365 | | void AppendElement(already_AddRefed<T> aElement) |
366 | 0 | { |
367 | 0 | nsCOMArray_base::AppendElement(std::move(aElement)); |
368 | 0 | } Unexecuted instantiation: nsCOMArray<nsIChannelEventSink>::AppendElement(already_AddRefed<nsIChannelEventSink>) Unexecuted instantiation: nsCOMArray<nsIContentSniffer>::AppendElement(already_AddRefed<nsIContentSniffer>) Unexecuted instantiation: nsCOMArray<mozIStorageVacuumParticipant>::AppendElement(already_AddRefed<mozIStorageVacuumParticipant>) Unexecuted instantiation: nsCOMArray<nsIContentPolicy>::AppendElement(already_AddRefed<nsIContentPolicy>) Unexecuted instantiation: nsCOMArray<nsIEventListenerInfo>::AppendElement(already_AddRefed<nsIEventListenerInfo>) Unexecuted instantiation: nsCOMArray<nsIFile>::AppendElement(already_AddRefed<nsIFile>) Unexecuted instantiation: nsCOMArray<nsIURI>::AppendElement(already_AddRefed<nsIURI>) Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::AppendElement(already_AddRefed<nsIPresentationDeviceProvider>) Unexecuted instantiation: nsCOMArray<nsIObserver>::AppendElement(already_AddRefed<nsIObserver>) Unexecuted instantiation: nsCOMArray<imgIContainer>::AppendElement(already_AddRefed<imgIContainer>) Unexecuted instantiation: nsCOMArray<nsIDocShell>::AppendElement(already_AddRefed<nsIDocShell>) Unexecuted instantiation: nsCOMArray<nsNavHistoryResultNode>::AppendElement(already_AddRefed<nsNavHistoryResultNode>) |
369 | | |
370 | | // append objects, growing the array as necessary |
371 | | bool AppendObjects(const nsCOMArray<T>& aObjects) |
372 | 0 | { |
373 | 0 | return nsCOMArray_base::AppendObjects(aObjects); |
374 | 0 | } Unexecuted instantiation: nsCOMArray<nsIThread>::AppendObjects(nsCOMArray<nsIThread> const&) Unexecuted instantiation: nsCOMArray<nsIFile>::AppendObjects(nsCOMArray<nsIFile> const&) Unexecuted instantiation: nsCOMArray<nsISupports>::AppendObjects(nsCOMArray<nsISupports> const&) Unexecuted instantiation: nsCOMArray<nsIDocShellTreeItem>::AppendObjects(nsCOMArray<nsIDocShellTreeItem> const&) Unexecuted instantiation: nsCOMArray<nsIAutoCompleteResult>::AppendObjects(nsCOMArray<nsIAutoCompleteResult> const&) |
375 | | // nsTArray-compatible version |
376 | | void AppendElements(const nsCOMArray<T>& aElements) |
377 | | { |
378 | | return nsCOMArray_base::AppendElements(aElements); |
379 | | } |
380 | | void AppendElements(T* const* aElements, uint32_t aCount) |
381 | | { |
382 | | InsertElementsAt(Length(), aElements, aCount); |
383 | | } |
384 | | |
385 | | // remove the first instance of the given object and shrink the |
386 | | // array as necessary |
387 | | // Warning: if you pass null here, it will remove the first null element |
388 | | bool RemoveObject(T* aObject) |
389 | 0 | { |
390 | 0 | return nsCOMArray_base::RemoveObject(aObject); |
391 | 0 | } Unexecuted instantiation: nsCOMArray<nsIDocumentLoader>::RemoveObject(nsIDocumentLoader*) Unexecuted instantiation: nsCOMArray<nsIThread>::RemoveObject(nsIThread*) Unexecuted instantiation: nsCOMArray<nsITransactionListener>::RemoveObject(nsITransactionListener*) Unexecuted instantiation: nsCOMArray<nsIScriptLoaderObserver>::RemoveObject(nsIScriptLoaderObserver*) Unexecuted instantiation: nsCOMArray<nsIWeakReference>::RemoveObject(nsIWeakReference*) Unexecuted instantiation: nsCOMArray<nsIFormControl>::RemoveObject(nsIFormControl*) Unexecuted instantiation: nsCOMArray<nsMutationReceiver>::RemoveObject(nsMutationReceiver*) Unexecuted instantiation: nsCOMArray<nsISupports>::RemoveObject(nsISupports*) Unexecuted instantiation: nsCOMArray<nsIContent>::RemoveObject(nsIContent*) Unexecuted instantiation: nsCOMArray<nsIRequest>::RemoveObject(nsIRequest*) Unexecuted instantiation: nsCOMArray<nsIScriptElement>::RemoveObject(nsIScriptElement*) Unexecuted instantiation: nsCOMArray<nsISHEntry>::RemoveObject(nsISHEntry*) Unexecuted instantiation: nsCOMArray<nsIFile>::RemoveObject(nsIFile*) Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::RemoveObject(nsIWebProgressListener*) Unexecuted instantiation: nsCOMArray<IBar>::RemoveObject(IBar*) |
392 | | // nsTArray-compatible version |
393 | | bool RemoveElement(T* aElement) |
394 | 0 | { |
395 | 0 | return nsCOMArray_base::RemoveObject(aElement); |
396 | 0 | } Unexecuted instantiation: nsCOMArray<nsIPresentationDeviceProvider>::RemoveElement(nsIPresentationDeviceProvider*) Unexecuted instantiation: nsCOMArray<nsIPresentationAvailabilityListener>::RemoveElement(nsIPresentationAvailabilityListener*) Unexecuted instantiation: nsCOMArray<IBar>::RemoveElement(IBar*) |
397 | | |
398 | | T** Elements() |
399 | | { |
400 | | return reinterpret_cast<T**>(nsCOMArray_base::Elements()); |
401 | | } |
402 | | void SwapElements(nsCOMArray<T>& aOther) |
403 | 0 | { |
404 | 0 | nsCOMArray_base::SwapElements(aOther); |
405 | 0 | } Unexecuted instantiation: nsCOMArray<nsIFile>::SwapElements(nsCOMArray<nsIFile>&) Unexecuted instantiation: nsCOMArray<imgIContainer>::SwapElements(nsCOMArray<imgIContainer>&) |
406 | | |
407 | | /** |
408 | | * Adopt parameters that resulted from an XPIDL outparam. The aElements |
409 | | * parameter will be freed as a result of the call. |
410 | | * |
411 | | * Example usage: |
412 | | * nsCOMArray<nsISomeInterface> array; |
413 | | * nsISomeInterface** elements; |
414 | | * uint32_t length; |
415 | | * ptr->GetSomeArray(&elements, &length); |
416 | | * array.Adopt(elements, length); |
417 | | */ |
418 | | void Adopt(T** aElements, uint32_t aSize) |
419 | | { |
420 | | nsCOMArray_base::Adopt(reinterpret_cast<nsISupports**>(aElements), aSize); |
421 | | } |
422 | | |
423 | | /** |
424 | | * Export the contents of this array to an XPIDL outparam. The array will be |
425 | | * Clear()'d after this operation. |
426 | | * |
427 | | * Example usage: |
428 | | * nsCOMArray<nsISomeInterface> array; |
429 | | * *length = array.Forget(retval); |
430 | | */ |
431 | | uint32_t Forget(T*** aElements) |
432 | 0 | { |
433 | 0 | return nsCOMArray_base::Forget(reinterpret_cast<nsISupports***>(aElements)); |
434 | 0 | } Unexecuted instantiation: nsCOMArray<nsIEventListenerInfo>::Forget(nsIEventListenerInfo***) Unexecuted instantiation: nsCOMArray<nsINavBookmarkObserver>::Forget(nsINavBookmarkObserver***) Unexecuted instantiation: nsCOMArray<nsINavHistoryObserver>::Forget(nsINavHistoryObserver***) |
435 | | |
436 | | // Methods for range-based for loops. |
437 | 0 | iterator begin() { return iterator(*this, 0); } Unexecuted instantiation: nsCOMArray<nsINode>::begin() Unexecuted instantiation: nsCOMArray<nsIURI>::begin() Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::begin() Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::begin() Unexecuted instantiation: nsCOMArray<nsISHEntry>::begin() |
438 | 0 | const_iterator begin() const { return const_iterator(*this, 0); } |
439 | | const_iterator cbegin() const { return begin(); } |
440 | 0 | iterator end() { return iterator(*this, Length()); } Unexecuted instantiation: nsCOMArray<nsINode>::end() Unexecuted instantiation: nsCOMArray<nsIURI>::end() Unexecuted instantiation: nsCOMArray<mozilla::css::Rule>::end() Unexecuted instantiation: nsCOMArray<nsIWebProgressListener>::end() Unexecuted instantiation: nsCOMArray<nsISHEntry>::end() |
441 | 0 | const_iterator end() const { return const_iterator(*this, Length()); } |
442 | | const_iterator cend() const { return end(); } |
443 | | |
444 | | // Methods for reverse iterating. |
445 | | reverse_iterator rbegin() { return reverse_iterator(end()); } |
446 | | const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } |
447 | | const_reverse_iterator crbegin() const { return rbegin(); } |
448 | | reverse_iterator rend() { return reverse_iterator(begin()); } |
449 | | const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } |
450 | | const_reverse_iterator crend() const { return rend(); } |
451 | | |
452 | | private: |
453 | | |
454 | | // don't implement these! |
455 | | nsCOMArray<T>& operator=(const nsCOMArray<T>& aOther) = delete; |
456 | | }; |
457 | | |
458 | | template<typename T> |
459 | | inline void |
460 | | ImplCycleCollectionUnlink(nsCOMArray<T>& aField) |
461 | 0 | { |
462 | 0 | aField.Clear(); |
463 | 0 | } Unexecuted instantiation: void ImplCycleCollectionUnlink<nsIDocumentLoader>(nsCOMArray<nsIDocumentLoader>&) Unexecuted instantiation: void ImplCycleCollectionUnlink<nsIContent>(nsCOMArray<nsIContent>&) Unexecuted instantiation: void ImplCycleCollectionUnlink<mozilla::dom::Event>(nsCOMArray<mozilla::dom::Event>&) Unexecuted instantiation: void ImplCycleCollectionUnlink<nsITransactionListener>(nsCOMArray<nsITransactionListener>&) Unexecuted instantiation: void ImplCycleCollectionUnlink<nsNavHistoryResultNode>(nsCOMArray<nsNavHistoryResultNode>&) |
464 | | |
465 | | template<typename E> |
466 | | inline void |
467 | | ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback, |
468 | | nsCOMArray<E>& aField, |
469 | | const char* aName, |
470 | | uint32_t aFlags = 0) |
471 | 0 | { |
472 | 0 | aFlags |= CycleCollectionEdgeNameArrayFlag; |
473 | 0 | int32_t length = aField.Count(); |
474 | 0 | for (int32_t i = 0; i < length; ++i) { |
475 | 0 | CycleCollectionNoteChild(aCallback, aField[i], aName, aFlags); |
476 | 0 | } |
477 | 0 | } Unexecuted instantiation: void ImplCycleCollectionTraverse<nsIDocumentLoader>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsIDocumentLoader>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsMutationReceiver>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsMutationReceiver>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsIContent>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsIContent>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<mozilla::dom::Event>(nsCycleCollectionTraversalCallback&, nsCOMArray<mozilla::dom::Event>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsINode>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsINode>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsISupports>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsISupports>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsITransactionListener>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsITransactionListener>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsNavHistoryResultNode>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsNavHistoryResultNode>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsIAutoCompleteSearch>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsIAutoCompleteSearch>&, char const*, unsigned int) Unexecuted instantiation: void ImplCycleCollectionTraverse<nsIAutoCompleteResult>(nsCycleCollectionTraversalCallback&, nsCOMArray<nsIAutoCompleteResult>&, char const*, unsigned int) |
478 | | |
479 | | #endif |