summaryrefslogtreecommitdiff
path: root/gold/dirsearch.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2010-10-30 23:02:32 +0000
committerDimitry Andric <dim@FreeBSD.org>2010-10-30 23:02:32 +0000
commitb3cded65e92ba4d9b5e5a33fb95c4d551bda9c1b (patch)
tree69d40fbef2c0c4ee32fe97b7a28b510f2e3c2dbc /gold/dirsearch.h
parent7a815afd9b5121ee0f65dc1e1de1c0de6de97679 (diff)
Notes
Diffstat (limited to 'gold/dirsearch.h')
-rw-r--r--gold/dirsearch.h57
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)