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=f8473adf2a910a898a00e151866c0f14ef2a3fb0;hp=85152802b981332c16c0e2ea94f7fb4ec64d70fc;hb=badf37081ad290803c67e03c3393e57a304546b4;hpb=12b5da1b6e2e4b88f3cdb24b81d1b54b68b5f4f1 diff --git a/dali-toolkit/devel-api/builder/tree-node.cpp b/dali-toolkit/devel-api/builder/tree-node.cpp index 8515280..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) @@ -182,11 +223,6 @@ TreeNode::KeyNodePair TreeNode::ConstIterator::operator *() return KeyNodePair(mNode->mName, *mNode); } -TreeNode::KeyNodePair TreeNode::ConstIterator::operator ->() -{ - return KeyNodePair(mNode->mName, *mNode); -} - bool TreeNode::ConstIterator::operator!=( const TreeNode::ConstIterator& rhs ) const { return mNode != rhs.mNode;