Initial CVS checkin of gold
[deliverable/binutils-gdb.git] / gold / dirsearch.h
diff --git a/gold/dirsearch.h b/gold/dirsearch.h
new file mode 100644 (file)
index 0000000..3beb143
--- /dev/null
@@ -0,0 +1,56 @@
+// dirsearch.h -- directory searching for gold  -*- C++ -*-
+
+#ifndef GOLD_DIRSEARCH_H
+#define GOLD_DIRSEARCH_H
+
+#include <string>
+#include <list>
+
+#include "options.h"
+#include "workqueue.h"
+
+namespace gold
+{
+
+// 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)
This page took 0.030892 seconds and 4 git commands to generate.