1/*
2 * File:	GlobSectionSelector.h
3 *
4 * Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
5 * See included license file for license details.
6 */
7#if !defined(_StringMatcher_h_)
8#define _StringMatcher_h_
9
10#include <string>
11
12namespace elftosb
13{
14
15/*!
16 * \brief Abstract interface class used to select strings by name.
17 */
18class StringMatcher
19{
20public:
21	//! \brief Performs a single string match test against testValue.
22	//!
23	//! \retval true The \a testValue argument matches.
24	//! \retval false No match was made against the argument.
25	virtual bool match(const std::string & testValue)=0;
26};
27
28/*!
29 * \brief String matcher subclass that matches all test strings.
30 */
31class WildcardMatcher : public StringMatcher
32{
33public:
34	//! \brief Always returns true, indicating a positive match.
35	virtual bool match(const std::string & testValue) { return true; }
36};
37
38/*!
39 * \brief Simple string matcher that compares against a fixed value.
40 */
41class FixedMatcher : public StringMatcher
42{
43public:
44	//! \brief Constructor. Sets the string to compare against to be \a fixedValue.
45	FixedMatcher(const std::string & fixedValue) : m_value(fixedValue) {}
46
47	//! \brief Returns whether \a testValue is the same as the value passed to the constructor.
48	//!
49	//! \retval true The \a testValue argument matches the fixed compare value.
50	//! \retval false The argument is not the same as the compare value.
51	virtual bool match(const std::string & testValue)
52	{
53		return testValue == m_value;
54	}
55
56protected:
57	const std::string & m_value;	//!< The section name to look for.
58};
59
60}; // namespace elftosb
61
62#endif // _StringMatcher_h_
63