1//===- MCLDDirectory.h ----------------------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9#ifndef MCLD_MC_MCLDDIRECTORY_H_ 10#define MCLD_MC_MCLDDIRECTORY_H_ 11#include "mcld/Support/Directory.h" 12#include "mcld/Support/FileSystem.h" 13 14#include <llvm/ADT/StringRef.h> 15 16#include <string> 17 18namespace mcld { 19 20/** \class MCLDDirectory 21 * \brief MCLDDirectory is an directory entry for library search. 22 * 23 */ 24class MCLDDirectory : public sys::fs::Directory { 25 public: 26 MCLDDirectory(); 27 explicit MCLDDirectory(const char* pName); 28 explicit MCLDDirectory(const std::string& pName); 29 explicit MCLDDirectory(llvm::StringRef pName); 30 virtual ~MCLDDirectory(); 31 32 public: 33 MCLDDirectory& assign(llvm::StringRef pName); 34 bool isInSysroot() const; 35 36 /// setSysroot - if MCLDDirectory is in sysroot, modify the path. 37 void setSysroot(const sys::fs::Path& pPath); 38 39 const std::string& name() const { return m_Name; } 40 41 private: 42 std::string m_Name; 43 bool m_bInSysroot; 44}; 45 46} // namespace mcld 47 48#endif // MCLD_MC_MCLDDIRECTORY_H_ 49