use lambda instead of inner class for name assignment functions

Change-Id: Icebc0df03aad489a945365b829338d9dc2879fdd
diff --git a/src/name-assignments/assignment-hash.cpp b/src/name-assignments/assignment-hash.cpp
index 4849324..ebcf6d0 100644
--- a/src/name-assignments/assignment-hash.cpp
+++ b/src/name-assignments/assignment-hash.cpp
@@ -31,40 +31,32 @@
     if (startIndex != factoryParam.size()) {
         paramList.push_back(factoryParam.substr(startIndex));
     }
-    return HashAssignmentFunc(paramList);
-}
+    return [paramList](const std::vector<std::tuple<std::string, std::string>> params){
+        if (params.size() > paramList.size() * 8) { // might be attack
+            BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
+        }
+        std::map<std::string, std::string> paramMap;
+        for (const auto& param : params) {
+            paramMap[std::get<0>(param)] = std::get<1>(param);
+        }
 
-AssignmentHash::HashAssignmentFunc::HashAssignmentFunc(std::list<std::string> paramList)
-    : m_paramList(std::move(paramList))
-{}
+        //construct name
+        PartialName name;
+        for (const auto& field : paramList) {
+            auto it = paramMap.find(field);
+            if (it == paramMap.end()) {
+                return std::vector<PartialName>();
+            } else {
+                name.append(it->second);
+            }
+        }
+        std::vector<PartialName> nameList;
+        util::Sha256 digest;
+        digest << name.wireEncode();
+        nameList.emplace_back(digest.toString());
 
-std::vector<PartialName>
-AssignmentHash::HashAssignmentFunc::operator() (const std::vector<std::tuple<std::string, std::string>> params)
-{
-  if (params.size() > m_paramList.size() * 8) { // might be attack
-      BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
-  }
-  std::map<std::string, std::string> paramMap;
-  for (const auto& param : params) {
-      paramMap[std::get<0>(param)] = std::get<1>(param);
-  }
-
-  //construct name
-  PartialName name;
-  for (const auto& field : m_paramList) {
-      auto it = paramMap.find(field);
-      if (it == paramMap.end()) {
-          return std::vector<PartialName>();
-      } else {
-          name.append(it->second);
-      }
-  }
-  std::vector<PartialName> nameList;
-  util::Sha256 digest;
-  digest << name.wireEncode();
-  nameList.emplace_back(digest.toString());
-
-  return nameList;
+        return nameList;
+    };
 }
 
 }
diff --git a/src/name-assignments/assignment-hash.hpp b/src/name-assignments/assignment-hash.hpp
index 19b0618..8ff253f 100644
--- a/src/name-assignments/assignment-hash.hpp
+++ b/src/name-assignments/assignment-hash.hpp
@@ -19,16 +19,6 @@
 
   NameAssignmentFunc getFunction(const std::string &factoryParam) override;
 
-  class HashAssignmentFunc {
-  public:
-    HashAssignmentFunc(std::list<std::string> paramList);
-
-    std::vector<PartialName>
-    operator() (const std::vector<std::tuple<std::string, std::string>> params);
-  private:
-    std::list<std::string> m_paramList;
-  };
-
 };
 }
 }
diff --git a/src/name-assignments/assignment-or.cpp b/src/name-assignments/assignment-or.cpp
index 6fc3e97..78cfc3e 100644
--- a/src/name-assignments/assignment-or.cpp
+++ b/src/name-assignments/assignment-or.cpp
@@ -18,7 +18,15 @@
 NameAssignmentFunc
 AssignmentOr::getFunction(std::list<NameAssignmentFunc> funcs){
     if (funcs.size() == 1) return *funcs.begin();
-    return OrAssignmentFunc(funcs);
+    return [funcs](const std::vector<std::tuple<std::string, std::string>> params){
+        std::vector<PartialName> nameList;
+        for (const auto& func : funcs) {
+            auto result = func(params);
+            nameList.insert(nameList.end(), result.begin(), result.end());
+        }
+
+        return nameList;
+    };
 }
 
 NameAssignmentFunc
@@ -51,21 +59,5 @@
     return getFunction(paramList);
 }
 
-AssignmentOr::OrAssignmentFunc::OrAssignmentFunc(std::list<NameAssignmentFunc> funcList)
-    : m_funcList(std::move(funcList))
-{}
-
-std::vector<PartialName>
-AssignmentOr::OrAssignmentFunc::operator() (const std::vector<std::tuple<std::string, std::string>> params)
-{
-  std::vector<PartialName> nameList;
-  for (const auto& func : m_funcList) {
-      auto result = func(params);
-      nameList.insert(nameList.end(), result.begin(), result.end());
-  }
-
-  return nameList;
-}
-
 }
 }
diff --git a/src/name-assignments/assignment-or.hpp b/src/name-assignments/assignment-or.hpp
index 68ffd66..8d056f3 100644
--- a/src/name-assignments/assignment-or.hpp
+++ b/src/name-assignments/assignment-or.hpp
@@ -21,16 +21,6 @@
 
   NameAssignmentFunc getFunction(const std::string &factoryParam) override;
 
-  class OrAssignmentFunc {
-  public:
-    OrAssignmentFunc(std::list<NameAssignmentFunc> funcList);
-
-    std::vector<PartialName>
-    operator() (const std::vector<std::tuple<std::string, std::string>> params);
-  private:
-    std::list<NameAssignmentFunc> m_funcList;
-  };
-
 };
 }
 }
diff --git a/src/name-assignments/assignment-param.cpp b/src/name-assignments/assignment-param.cpp
index c5cbf09..e32665e 100644
--- a/src/name-assignments/assignment-param.cpp
+++ b/src/name-assignments/assignment-param.cpp
@@ -30,40 +30,32 @@
     if (startIndex != factoryParam.size()) {
         paramList.push_back(factoryParam.substr(startIndex));
     }
-    return ParamAssignmentFunc(paramList);
-}
+    return [paramList](const std::vector<std::tuple<std::string, std::string>> params){
+        if (params.size() > paramList.size() * 8) { // might be attack
+            BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
+        }
+        std::map<std::string, std::string> paramMap;
+        for (const auto& param : params) {
+            paramMap[std::get<0>(param)] = std::get<1>(param);
+            if (std::get<1>(param).size() == 0) { // empty parameter!
+                return std::vector<PartialName>();
+            }
+        }
 
-AssignmentParam::ParamAssignmentFunc::ParamAssignmentFunc(std::list<std::string> paramList)
-    : m_paramList(std::move(paramList))
-{}
-
-std::vector<PartialName>
-AssignmentParam::ParamAssignmentFunc::operator() (const std::vector<std::tuple<std::string, std::string>> params)
-{
-  if (params.size() > m_paramList.size() * 8) { // might be attack
-      BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
-  }
-  std::map<std::string, std::string> paramMap;
-  for (const auto& param : params) {
-      paramMap[std::get<0>(param)] = std::get<1>(param);
-      if (std::get<1>(param).size() == 0) { // empty parameter!
-          return std::vector<PartialName>();
-      }
-  }
-
-  //construct name
-  PartialName name;
-  for (const auto& field : m_paramList) {
-      auto it = paramMap.find(field);
-      if (it == paramMap.end()) {
-          return std::vector<PartialName>();
-      } else {
-          name.append(it->second);
-      }
-  }
-  std::vector<PartialName> nameList;
-  nameList.push_back(name);
-  return nameList;
+        //construct name
+        PartialName name;
+        for (const auto& field : paramList) {
+            auto it = paramMap.find(field);
+            if (it == paramMap.end()) {
+                return std::vector<PartialName>();
+            } else {
+                name.append(it->second);
+            }
+        }
+        std::vector<PartialName> nameList;
+        nameList.push_back(name);
+        return nameList;
+    };
 }
 
 }
diff --git a/src/name-assignments/assignment-param.hpp b/src/name-assignments/assignment-param.hpp
index 7c6a377..c80f850 100644
--- a/src/name-assignments/assignment-param.hpp
+++ b/src/name-assignments/assignment-param.hpp
@@ -19,16 +19,6 @@
 
   NameAssignmentFunc getFunction(const std::string &factoryParam) override;
 
-  class ParamAssignmentFunc {
-  public:
-    ParamAssignmentFunc(std::list<std::string> paramList);
-
-    std::vector<PartialName>
-    operator() (const std::vector<std::tuple<std::string, std::string>> params);
-  private:
-    std::list<std::string> m_paramList;
-  };
-
 };
 }
 }