[llvm] r219240 - Add size_t MapVector::erase(KeyT) similar to the one in std::map.

Kaelyn Takata rikka at google.com
Tue Oct 7 15:44:53 PDT 2014


On Tue, Oct 7, 2014 at 2:37 PM, David Blaikie <dblaikie at gmail.com> wrote:

>
>
> On Tue, Oct 7, 2014 at 2:15 PM, Kaelyn Takata <rikka at google.com> wrote:
>
>> Author: rikka
>> Date: Tue Oct  7 16:15:51 2014
>> New Revision: 219240
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=219240&view=rev
>> Log:
>> Add size_t MapVector::erase(KeyT) similar to the one in std::map.
>>
>> Modified:
>>     llvm/trunk/include/llvm/ADT/MapVector.h
>>     llvm/trunk/unittests/ADT/MapVectorTest.cpp
>>
>> Modified: llvm/trunk/include/llvm/ADT/MapVector.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/MapVector.h?rev=219240&r1=219239&r2=219240&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ADT/MapVector.h (original)
>> +++ llvm/trunk/include/llvm/ADT/MapVector.h Tue Oct  7 16:15:51 2014
>> @@ -147,6 +147,17 @@ public:
>>      return Next;
>>    }
>>
>> +  /// \brief Remove all elements with the key value Key.
>> +  ///
>> +  /// Returns the number of elements removed.
>> +  size_type erase(const KeyT &Key) {
>> +    auto Iterator = find(Key);
>> +    if (Iterator == end())
>> +      return 0;
>> +    erase(Iterator);
>> +    return 1;
>> +  }
>> +
>>    /// \brief Remove the elements that match the predicate.
>>    ///
>>    /// Erase all elements that match \c Pred in a single pass.  Takes
>> linear
>>
>> Modified: llvm/trunk/unittests/ADT/MapVectorTest.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/MapVectorTest.cpp?rev=219240&r1=219239&r2=219240&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/unittests/ADT/MapVectorTest.cpp (original)
>> +++ llvm/trunk/unittests/ADT/MapVectorTest.cpp Tue Oct  7 16:15:51 2014
>> @@ -67,6 +67,11 @@ TEST(MapVectorTest, erase) {
>>    ASSERT_EQ(MV.find(1), MV.end());
>>    ASSERT_EQ(MV[3], 4);
>>    ASSERT_EQ(MV[5], 6);
>> +
>> +  MV.erase(3);
>> +  ASSERT_EQ(MV.size(), 1u);
>> +  ASSERT_EQ(MV.find(3), MV.end());
>> +  ASSERT_EQ(MV[5], 6);
>>
>
> Maybe a test for the return value? And a negative test (when the element
> isn't in the container)
>

Good point. How about:

--- a/unittests/ADT/MapVectorTest.cpp
+++ b/unittests/ADT/MapVectorTest.cpp
@@ -68,10 +68,13 @@ TEST(MapVectorTest, erase) {
   ASSERT_EQ(MV[3], 4);
   ASSERT_EQ(MV[5], 6);

-  MV.erase(3);
+  ASSERT_EQ(MV.erase(3), 1u);
   ASSERT_EQ(MV.size(), 1u);
   ASSERT_EQ(MV.find(3), MV.end());
   ASSERT_EQ(MV[5], 6);
+
+  ASSERT_EQ(MV.erase(79), 0u);
+  ASSERT_EQ(MV.size(), 1u);
 }

 TEST(MapVectorTest, remove_if) {


>
>>  }
>>
>>  TEST(MapVectorTest, remove_if) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141007/1ea7ee2a/attachment.html>


More information about the llvm-commits mailing list