helper+model: Create helper to select the replacement policy of NFD's CS

Change-Id: I10933b5c96fd95bc395a1d08642a1e07e826dc45
Refs: #3837
diff --git a/helper/ndn-stack-helper.hpp b/helper/ndn-stack-helper.hpp
index 0cb3413..bae814f 100644
--- a/helper/ndn-stack-helper.hpp
+++ b/helper/ndn-stack-helper.hpp
@@ -31,6 +31,12 @@
 #include "ndn-fib-helper.hpp"
 #include "ndn-strategy-choice-helper.hpp"
 
+namespace nfd {
+namespace cs {
+class Policy;
+} // namespace cs
+} // namespace nfd
+
 namespace ns3 {
 
 class Node;
@@ -75,6 +81,12 @@
   setCsSize(size_t maxSize);
 
   /**
+   * @brief Set the cache replacement policy for NFD's Content Store
+   */
+  void
+  setPolicy(const std::string& policy);
+
+  /**
    * @brief Set ndnSIM 1.0 content store implementation and its attributes
    * @param contentStoreClass string, representing class of the content store
    * @note ndnSIM 1.0 content store implementation have limited support for Interest selectors
@@ -262,6 +274,11 @@
   bool m_needSetDefaultRoutes;
   size_t m_maxCsSize;
 
+  typedef std::function<std::unique_ptr<nfd::cs::Policy>()> PolicyCreationCallback;
+  PolicyCreationCallback m_csPolicyCreationFunc;
+
+  std::map<std::string, PolicyCreationCallback> m_csPolicies;
+
   typedef std::list<std::pair<TypeId, FaceCreateCallback>> NetDeviceCallbackList;
   NetDeviceCallbackList m_netDeviceCallbacks;
 };