//===- 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