Remove boost::to_lower_copy
Replaced with inline std::transform lambda for lowercase conversion,
removing Boost dependency.
Tested: added UT and verified all tests passed
Change-Id: Ie875e131b2e0a7d5ab53288928983d640a9d1c12
Signed-off-by: George Liu <liuxiwei@ieisystem.com>
diff --git a/src/entity_manager/dbus_interface.cpp b/src/entity_manager/dbus_interface.cpp
index 461b27c..d7169ce 100644
--- a/src/entity_manager/dbus_interface.cpp
+++ b/src/entity_manager/dbus_interface.cpp
@@ -3,7 +3,6 @@
 #include "perform_probe.hpp"
 #include "utils.hpp"
 
-#include <boost/algorithm/string/case_conv.hpp>
 #include <boost/container/flat_map.hpp>
 #include <phosphor-logging/lg2.hpp>
 
diff --git a/src/entity_manager/entity_manager.cpp b/src/entity_manager/entity_manager.cpp
index 522c6f3..f9560f3 100644
--- a/src/entity_manager/entity_manager.cpp
+++ b/src/entity_manager/entity_manager.cpp
@@ -13,7 +13,6 @@
 #include "topology.hpp"
 #include "utils.hpp"
 
-#include <boost/algorithm/string/case_conv.hpp>
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/post.hpp>
 #include <boost/asio/steady_timer.hpp>
diff --git a/src/entity_manager/utils.cpp b/src/entity_manager/utils.cpp
index 4e46395..86024c5 100644
--- a/src/entity_manager/utils.cpp
+++ b/src/entity_manager/utils.cpp
@@ -5,7 +5,6 @@
 #include "expression.hpp"
 #include "phosphor-logging/lg2.hpp"
 
-#include <boost/algorithm/string/case_conv.hpp>
 #include <phosphor-logging/lg2.hpp>
 #include <sdbusplus/bus/match.hpp>
 
@@ -291,8 +290,7 @@
                                      const std::string& boardType)
 {
     std::string path = "/xyz/openbmc_project/inventory/system/";
-    std::string boardTypeLower = boost::algorithm::to_lower_copy(boardType);
-
+    std::string boardTypeLower = toLowerCopy(boardType);
     std::regex_replace(boardName.begin(), boardName.begin(), boardName.end(),
                        illegalDbusMemberRegex, "_");
 
diff --git a/src/utils.cpp b/src/utils.cpp
index de433c8..d88df36 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -235,3 +235,11 @@
         pos += replace.size();
     }
 }
+
+std::string toLowerCopy(std::string_view str)
+{
+    std::string result(str);
+    std::transform(result.begin(), result.end(), result.begin(),
+                   [](unsigned char c) { return asciiToLower(c); });
+    return result;
+}
diff --git a/src/utils.hpp b/src/utils.hpp
index 5ec882c..107d97e 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -103,6 +103,8 @@
 void replaceAll(std::string& str, std::string_view search,
                 std::string_view replace);
 
+std::string toLowerCopy(std::string_view str);
+
 template <typename T>
 std::from_chars_result fromCharsWrapper(const std::string_view& str, T& out,
                                         bool& fullMatch, int base = 10)
diff --git a/test/test_utils.cpp b/test/test_utils.cpp
index 54e2957..309eaeb 100644
--- a/test/test_utils.cpp
+++ b/test/test_utils.cpp
@@ -151,3 +151,18 @@
     iReplaceAll(str, "abc", "");
     EXPECT_EQ(str, "  ");
 }
+
+TEST(ToLowerCopyTest, BasicTests)
+{
+    EXPECT_EQ(toLowerCopy("HelloWorld"), "helloworld");
+
+    EXPECT_EQ(toLowerCopy("HELLOWORLD"), "helloworld");
+
+    EXPECT_EQ(toLowerCopy("helloworld"), "helloworld");
+
+    EXPECT_EQ(toLowerCopy("123ABC!@#"), "123abc!@#");
+
+    EXPECT_EQ(toLowerCopy("!@#$%^&*()_+"), "!@#$%^&*()_+");
+
+    EXPECT_EQ(toLowerCopy(""), "");
+}