diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 |
commit | b3cded65e92ba4d9b5e5a33fb95c4d551bda9c1b (patch) | |
tree | 69d40fbef2c0c4ee32fe97b7a28b510f2e3c2dbc /gold/dirsearch.h | |
parent | 7a815afd9b5121ee0f65dc1e1de1c0de6de97679 (diff) |
Notes
Diffstat (limited to 'gold/dirsearch.h')
-rw-r--r-- | gold/dirsearch.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gold/dirsearch.h b/gold/dirsearch.h new file mode 100644 index 0000000000000..8b6ba59bf5838 --- /dev/null +++ b/gold/dirsearch.h @@ -0,0 +1,57 @@ +// dirsearch.h -- directory searching for gold -*- C++ -*- + +#ifndef GOLD_DIRSEARCH_H +#define GOLD_DIRSEARCH_H + +#include <string> +#include <list> + +#include "workqueue.h" + +namespace gold +{ + +class General_options; + +// A simple interface to manage directories to be searched for +// libraries. + +class Dirsearch +{ + public: + Dirsearch(); + + // Add a directory to the search path. + void + add(Workqueue*, const char*); + + // Add a list of directories to the search path. + void + add(Workqueue*, const General_options::Dir_list&); + + // Search for a file, giving one or two names to search for (the + // second one may be empty). Return a full path name for the file, + // or the empty string if it could not be found. This may only be + // called if the token is not blocked. + std::string + find(const std::string&, const std::string& n2 = std::string()) const; + + // Return a reference to the blocker token which controls access. + const Task_token& + token() const + { return this->token_; } + + private: + // We can not copy this class. + Dirsearch(const Dirsearch&); + Dirsearch& operator=(const Dirsearch&); + + // Directories to search. + std::list<const char*> directories_; + // Blocker token to control access from tasks. + Task_token token_; +}; + +} // End namespace gold. + +#endif // !defined(GOLD_DIRSEARCH_H) |