[map] Add .values() iterator
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 8 May 2019 22:08:10 +0000 (15:08 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 8 May 2019 22:08:33 +0000 (15:08 -0700)
src/hb-map.hh
src/test-iter.cc

index a5dedac..1c2fe14 100644 (file)
@@ -216,12 +216,16 @@ struct hb_hashmap_t
     | hb_filter (&item_t::is_real)
     | hb_map (&item_t::get_pair)
   )
-
   auto keys () const HB_AUTO_RETURN
   (
     + iter()
     | hb_map (&hb_pair_t<K, V>::first)
   )
+  auto values () const HB_AUTO_RETURN
+  (
+    + iter()
+    | hb_map (&hb_pair_t<K, V>::second)
+  )
 
   protected:
 
index 69f2de9..0a0e4d1 100644 (file)
@@ -215,6 +215,14 @@ main (int argc, char **argv)
   using map_key_t = decltype (*m.keys());
   + hb_iter (m.keys ())
   | hb_filter ([] (map_key_t k) { return k < 42; })
+  | hb_drain
+  ;
+
+  m.values ();
+  using map_value_t = decltype (*m.values());
+  + hb_iter (m.values ())
+  | hb_filter ([] (map_value_t k) { return k < 42; })
+  | hb_drain
   ;
 
   unsigned int temp1 = 10;