| //===- RealPath.h ---------------------------------------------------------===// |
| // |
| // The MCLinker Project |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| #ifndef MCLD_REAL_PATH_H |
| #define MCLD_REAL_PATH_H |
| #ifdef ENABLE_UNITTEST |
| #include <gtest.h> |
| #endif |
| #include "mcld/Support/Path.h" |
| #include <string> |
| |
| namespace mcld { |
| namespace sys { |
| namespace fs { |
| |
| /** \class RealPath |
| * \brief The canonicalized absolute pathname. |
| * |
| */ |
| class RealPath : public Path |
| { |
| public: |
| typedef Path::ValueType ValueType; |
| typedef Path::StringType StringType; |
| |
| public: |
| RealPath(); |
| explicit RealPath(const ValueType* s ); |
| explicit RealPath(const StringType &s ); |
| explicit RealPath(const Path& pPath); |
| |
| ~RealPath(); |
| |
| RealPath& assign(const Path& pPath); |
| |
| protected: |
| void initialize(); |
| }; |
| |
| } // namespace of fs |
| } // namespace of sys |
| } // namespace of mcld |
| |
| //-------------------------------------------------------------------------// |
| // STL compatible functions // |
| //-------------------------------------------------------------------------// |
| namespace std { |
| |
| template<> |
| struct less<mcld::sys::fs::RealPath> : public binary_function< |
| mcld::sys::fs::RealPath, |
| mcld::sys::fs::RealPath, |
| bool> |
| { |
| bool operator() (const mcld::sys::fs::RealPath& pX, |
| const mcld::sys::fs::RealPath& pY) const { |
| if (pX.native().size() < pY.native().size()) |
| return true; |
| return (pX.native() < pY.native()); |
| } |
| }; |
| |
| } // namespace of std |
| |
| |
| #endif |
| |