diff options
author | JustOff <Off.Just.Off@gmail.com> | 2019-03-13 18:25:55 +0200 |
---|---|---|
committer | JustOff <Off.Just.Off@gmail.com> | 2019-03-13 18:25:55 +0200 |
commit | bcdacfe2dfb9c9e36de462182562ebf4eec94f36 (patch) | |
tree | 810c83dc331e6f575da51ffa47662fc3dd355529 /xpcom | |
parent | acfc69ec7e3470f8682e655af289a254a1c01a2d (diff) | |
download | uxp-bcdacfe2dfb9c9e36de462182562ebf4eec94f36.tar.gz |
Add a ClearElementAt API to nsTArray
Diffstat (limited to 'xpcom')
-rw-r--r-- | xpcom/glue/nsTArray.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/xpcom/glue/nsTArray.h b/xpcom/glue/nsTArray.h index 82586a79a7..64af17bbb3 100644 --- a/xpcom/glue/nsTArray.h +++ b/xpcom/glue/nsTArray.h @@ -1503,6 +1503,24 @@ public: mozilla::Forward<Item>(aItem)); } + // Reconstruct the element at the given index, and return a pointer to the + // reconstructed element. This will destroy the existing element and + // default-construct a new one, giving you a state much like what single-arg + // InsertElementAt(), or no-arg AppendElement() does, but without changing the + // length of the array. + // + // array[idx] = T() + // + // would accomplish the same thing as long as T has the appropriate moving + // operator=, but some types don't for various reasons. + elem_type* ReconstructElementAt(index_type aIndex) + { + elem_type* elem = &ElementAt(aIndex); + elem_traits::Destruct(elem); + elem_traits::Construct(elem); + return elem; + } + // This method searches for the smallest index of an element that is strictly // greater than |aItem|. If |aItem| is inserted at this index, the array will // remain sorted and |aItem| would come after all elements that are equal to |