Add KBOOT.
This commit is contained in:
87
apps/elftosb/common/ExcludesListMatcher.cpp
Normal file
87
apps/elftosb/common/ExcludesListMatcher.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* File: ExcludesListMatcher.cpp
|
||||
*
|
||||
* Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
|
||||
* See included license file for license details.
|
||||
*/
|
||||
|
||||
#include "ExcludesListMatcher.h"
|
||||
|
||||
using namespace elftosb;
|
||||
|
||||
ExcludesListMatcher::ExcludesListMatcher()
|
||||
: GlobMatcher("")
|
||||
{
|
||||
}
|
||||
|
||||
ExcludesListMatcher::~ExcludesListMatcher()
|
||||
{
|
||||
}
|
||||
|
||||
//! \param isInclude True if this pattern is an include, false if it is an exclude.
|
||||
//! \param pattern String containing the glob pattern.
|
||||
void ExcludesListMatcher::addPattern(bool isInclude, const std::string &pattern)
|
||||
{
|
||||
glob_list_item_t item;
|
||||
item.m_isInclude = isInclude;
|
||||
item.m_glob = pattern;
|
||||
|
||||
// add to end of list
|
||||
m_patterns.push_back(item);
|
||||
}
|
||||
|
||||
//! If there are no entries in the match list, the match fails.
|
||||
//!
|
||||
//! \param testValue The string to match against the pattern list.
|
||||
//! \retval true The \a testValue argument matches.
|
||||
//! \retval false No match was made against the argument.
|
||||
bool ExcludesListMatcher::match(const std::string &testValue)
|
||||
{
|
||||
if (!m_patterns.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Iterate over the match list. Includes act as an OR operator, while
|
||||
// excludes act as an AND operator.
|
||||
bool didMatch = false;
|
||||
bool isFirstItem = true;
|
||||
glob_list_t::iterator it = m_patterns.begin();
|
||||
for (; it != m_patterns.end(); ++it)
|
||||
{
|
||||
glob_list_item_t &item = *it;
|
||||
|
||||
// if this pattern is an include and it doesn't match, or
|
||||
// if this pattern is an exclude and it does match, then the match fails
|
||||
bool didItemMatch = globMatch(testValue.c_str(), item.m_glob.c_str());
|
||||
|
||||
if (item.m_isInclude)
|
||||
{
|
||||
// Include
|
||||
if (isFirstItem)
|
||||
{
|
||||
didMatch = didItemMatch;
|
||||
}
|
||||
else
|
||||
{
|
||||
didMatch = didMatch || didItemMatch;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Exclude
|
||||
if (isFirstItem)
|
||||
{
|
||||
didMatch = !didItemMatch;
|
||||
}
|
||||
else
|
||||
{
|
||||
didMatch = didMatch && !didItemMatch;
|
||||
}
|
||||
}
|
||||
|
||||
isFirstItem = false;
|
||||
}
|
||||
|
||||
return didMatch;
|
||||
}
|
||||
Reference in New Issue
Block a user