summaryrefslogtreecommitdiff
path: root/xpcom
diff options
context:
space:
mode:
authorJustOff <Off.Just.Off@gmail.com>2019-03-13 18:25:55 +0200
committerJustOff <Off.Just.Off@gmail.com>2019-03-13 18:25:55 +0200
commitbcdacfe2dfb9c9e36de462182562ebf4eec94f36 (patch)
tree810c83dc331e6f575da51ffa47662fc3dd355529 /xpcom
parentacfc69ec7e3470f8682e655af289a254a1c01a2d (diff)
downloaduxp-bcdacfe2dfb9c9e36de462182562ebf4eec94f36.tar.gz
Add a ClearElementAt API to nsTArray
Diffstat (limited to 'xpcom')
-rw-r--r--xpcom/glue/nsTArray.h18
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