/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
// EXTERNAL INCLUDES
#include <algorithm>
#include <cctype>
-#include <cstring>
#include <string>
+#include <string_view>
// INTERNAL INCLUDES
#include "dali-toolkit/devel-api/builder/tree-node.h"
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
return c;
}
-size_t TreeNode::Count(const std::string& childName) const
+size_t TreeNode::Count(std::string_view childName) const
{
const TreeNode* c = GetChild(childName);
if(c)
}
}
-const TreeNode* TreeNode::GetChild(const std::string& childName) const
+const TreeNode* TreeNode::GetChild(std::string_view childName) const
{
const TreeNode* p = mFirstChild;
while(p)
{
- if(p->mName && (std::string(p->mName) == childName))
+ if(p->mName && (std::string_view(p->mName) == childName))
{
return p;
}
return NULL;
}
-const TreeNode* TreeNode::GetChildIgnoreCase(const std::string& childName) const
+const TreeNode* TreeNode::GetChildIgnoreCase(std::string_view 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;
}
return NULL;
}
-const TreeNode* TreeNode::Find(const std::string& childName) const
+const TreeNode* TreeNode::Find(std::string_view childName) const
{
- if(mName && std::string(mName) == childName)
+ if(mName && std::string_view(mName) == childName)
{
return this;
}