From: Adeel Kazmi Date: Tue, 6 Oct 2020 09:04:45 +0000 (+0000) Subject: Merge "use string_view to avoid temporary string allocation." into devel/master X-Git-Tag: dali_1.9.33~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=f11be450471738b68f98fa4c552b3a22482ae4de;hp=4be6d23fa53be011c4784bdfcaa038ee17ad832a Merge "use string_view to avoid temporary string allocation." into devel/master --- diff --git a/dali-toolkit/devel-api/builder/tree-node.cpp b/dali-toolkit/devel-api/builder/tree-node.cpp index 0825905..ef0071d 100644 --- a/dali-toolkit/devel-api/builder/tree-node.cpp +++ b/dali-toolkit/devel-api/builder/tree-node.cpp @@ -18,8 +18,8 @@ // EXTERNAL INCLUDES #include #include -#include #include +#include // INTERNAL INCLUDES #include "dali-toolkit/devel-api/builder/tree-node.h" @@ -27,23 +27,15 @@ namespace Dali { -bool CaseInsensitiveCharacterCompare(unsigned char a, unsigned char b) -{ - // Converts to lower case in the current locale. - return std::tolower(a) == std::tolower(b); -} /** * return true if the lower cased ASCII strings are equal. */ -bool CaseInsensitiveStringCompare(const std::string& a, const std::string& b) +bool CaseInsensitiveStringCompare(std::string_view a, std::string_view b) { - bool result = false; - if(a.length() == b.length()) - { - result = std::equal(a.begin(), a.end(), b.begin(), CaseInsensitiveCharacterCompare); - } - return result; + return (a.length() == b.length()) && std::equal(a.begin(), a.end(), b.begin(), [](auto x, auto y) { + return std::tolower(x) == std::tolower(y); + }); } namespace Toolkit @@ -143,13 +135,9 @@ const TreeNode* TreeNode::GetChildIgnoreCase(const std::string& childName) const const TreeNode* p = mFirstChild; while(p) { - if(p->mName) + if(p->mName && CaseInsensitiveStringCompare(p->mName, childName)) { - std::string nodeName(p->mName); - if(CaseInsensitiveStringCompare(nodeName, childName)) - { - return p; - } + return p; } p = p->mNextSibling; } diff --git a/dali-toolkit/internal/builder/dictionary.h b/dali-toolkit/internal/builder/dictionary.h index 88095eb..65c7e18 100644 --- a/dali-toolkit/internal/builder/dictionary.h +++ b/dali-toolkit/internal/builder/dictionary.h @@ -18,11 +18,13 @@ */ #include + #include +#include namespace Dali { -extern bool CaseInsensitiveStringCompare( const std::string& a, const std::string& b ); +extern bool CaseInsensitiveStringCompare(std::string_view a, std::string_view b); namespace Toolkit {