X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fbuilder%2Ftree-node.cpp;h=f8473adf2a910a898a00e151866c0f14ef2a3fb0;hb=74eb7efe4b59df25545ce1c29b9c98e2e2084fc2;hp=302c7a2cc7e497481bafe00a821c07c9ab91df03;hpb=9d09b345fbdef7a0532f5b45ffe65754f87258c6;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/devel-api/builder/tree-node.cpp b/dali-toolkit/devel-api/builder/tree-node.cpp index 302c7a2..f8473ad 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. @@ -16,15 +16,38 @@ */ // EXTERNAL INCLUDES +#include #include +#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 +103,6 @@ bool TreeNode::GetBoolean() const return mIntValue == 1 ? true : false; } - size_t TreeNode::Size() const { size_t c = 0; @@ -120,6 +142,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)