src/blfwk/SearchPath.h
/*
* Copyright (c) 2013-14, Freescale Semiconductor, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !defined(_searchpath_h_)
#define _searchpath_h_
#include <string>
#include <list>
class PathSearcher
{
public:
enum _target_type
{
kFindFile,
kFindDirectory
};
typedef enum _target_type target_type_t;
protected:
static PathSearcher *s_searcher;
public:
static PathSearcher &getGlobalSearcher();
public:
PathSearcher() {}
void addSearchPath(std::string &path);
bool search(const std::string &base, target_type_t targetType, bool searchCwd, std::string &result);
protected:
typedef std::list<std::string> string_list_t;
string_list_t m_paths;
bool isAbsolute(const std::string &path);
std::string joinPaths(const std::string &first, const std::string &second);
};
#endif // _searchpath_h_
PathSearcher::addSearchPath
void addSearchPath(std::string &path)
Add a new search path to the end of the list.
Definition: apps/elftosb/common/SearchPath.cpp:33
PathSearcher::getGlobalSearcher
static PathSearcher & getGlobalSearcher()
Access global path searching object.
Definition: apps/elftosb/common/SearchPath.cpp:23
PathSearcher::search
bool search(const std::string &base, target_type_t targetType, bool searchCwd, std::string &result)
Attempts to locate a file by using the search paths.
Definition: apps/elftosb/common/SearchPath.cpp:54
PathSearcher::isAbsolute
bool isAbsolute(const std::string &path)
Returns whether path is absolute.
Definition: apps/elftosb/common/SearchPath.cpp:96
PathSearcher::string_list_t
std::list< std::string > string_list_t
Linked list of strings.
Definition: src/blfwk/SearchPath.h:70
PathSearcher::joinPaths
std::string joinPaths(const std::string &first, const std::string &second)
Combines two paths into a single one.
Definition: apps/elftosb/common/SearchPath.cpp:105
PathSearcher::m_paths
string_list_t m_paths
Ordered list of paths to search.
Definition: apps/elftosb/common/SearchPath.h:48
PathSearcher
Handles searching a list of paths for a file.
Definition: apps/elftosb/common/SearchPath.h:16
PathSearcher::PathSearcher
PathSearcher()
Constructor.
Definition: src/blfwk/SearchPath.h:62
PathSearcher::s_searcher
static PathSearcher * s_searcher
Global search object singleton.
Definition: apps/elftosb/common/SearchPath.h:31