core: eliminate MapValueIterator in favor of boost::adaptors::map_values

refs #2239

Change-Id: Ifcc03513b1cbe580de12725baa4338f822a71417
diff --git a/daemon/fw/face-table.cpp b/daemon/fw/face-table.cpp
index a95c562..f1db53b 100644
--- a/daemon/fw/face-table.cpp
+++ b/daemon/fw/face-table.cpp
@@ -42,6 +42,19 @@
 
 }
 
+shared_ptr<Face>
+FaceTable::get(FaceId id) const
+{
+  std::map<FaceId, shared_ptr<Face> >::const_iterator i = m_faces.find(id);
+  return (i == m_faces.end()) ? (shared_ptr<Face>()) : (i->second);
+}
+
+size_t
+FaceTable::size() const
+{
+  return m_faces.size();
+}
+
 void
 FaceTable::add(shared_ptr<Face> face)
 {
@@ -104,6 +117,22 @@
   m_forwarder.getFib().removeNextHopFromAllEntries(face);
 }
 
+FaceTable::ForwardRange
+FaceTable::getForwardRange() const
+{
+  return m_faces | boost::adaptors::map_values;
+}
 
+FaceTable::const_iterator
+FaceTable::begin() const
+{
+  return this->getForwardRange().begin();
+}
+
+FaceTable::const_iterator
+FaceTable::end() const
+{
+  return this->getForwardRange().end();
+}
 
 } // namespace nfd