Home | History | Annotate | Download | only in MC
      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 
     18 namespace mcld {
     19 
     20 /** \class MCLDDirectory
     21  *  \brief MCLDDirectory is an directory entry for library search.
     22  *
     23  */
     24 class 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