X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fbuilder%2Ftree-node.cpp;h=3d9eed72a30271ccce106fa4b55f909532ccb4c3;hp=302c7a2cc7e497481bafe00a821c07c9ab91df03;hb=5827f9a9d195d4fba8da4d2adb2f0d386260f38c;hpb=181e7013001eabaea30eda4f56fed71ef7e8a8c8 diff --git a/dali-toolkit/devel-api/builder/tree-node.cpp b/dali-toolkit/devel-api/builder/tree-node.cpp index 302c7a2..3d9eed7 100644 --- a/dali-toolkit/devel-api/builder/tree-node.cpp +++ b/dali-toolkit/devel-api/builder/tree-node.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -17,14 +17,35 @@ // EXTERNAL INCLUDES #include +#include // INTERNAL INCLUDES #include "dali-toolkit/devel-api/builder/tree-node.h" #include "dali-toolkit/internal/builder/tree-node-manipulator.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 result = false; + if( a.length() == b.length() ) + { + result = std::equal( a.begin(), a.end(), b.begin(), CaseInsensitiveCharacterCompare ); + } + return result; +} + namespace Toolkit { @@ -80,7 +101,6 @@ bool TreeNode::GetBoolean() const return mIntValue == 1 ? true : false; } - size_t TreeNode::Size() const { size_t c = 0; @@ -120,6 +140,25 @@ const TreeNode* TreeNode::GetChild(const std::string& childName) const return NULL; } + +const TreeNode* TreeNode::GetChildIgnoreCase(const std::string& childName) const +{ + const TreeNode* p = mFirstChild; + while(p) + { + if(p->mName) + { + std::string nodeName(p->mName); + if( CaseInsensitiveStringCompare( nodeName, childName) ) + { + return p; + } + } + p = p->mNextSibling; + } + return NULL; +} + const TreeNode* TreeNode::Find(const std::string& childName) const { if(mName && std::string(mName) == childName)