15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- RealPath.h ---------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_REAL_PATH_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_REAL_PATH_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/Path.h" 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <string> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld { 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace sys { 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace fs { 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class RealPath 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * \brief The canonicalized absolute pathname. 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass RealPath : public Path 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao typedef Path::ValueType ValueType; 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao typedef Path::StringType StringType; 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao RealPath(); 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao explicit RealPath(const ValueType* s ); 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao explicit RealPath(const StringType &s ); 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao explicit RealPath(const Path& pPath); 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ~RealPath(); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao RealPath& assign(const Path& pPath); 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprotected: 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao void initialize(); 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of fs 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of sys 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//-------------------------------------------------------------------------// 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// STL compatible functions // 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//-------------------------------------------------------------------------// 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace std { 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<> 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaostruct less<mcld::sys::fs::RealPath> : public binary_function< 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mcld::sys::fs::RealPath, 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mcld::sys::fs::RealPath, 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool> 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool operator() (const mcld::sys::fs::RealPath& pX, 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const mcld::sys::fs::RealPath& pY) const { 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (pX.native().size() < pY.native().size()) 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return true; 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return (pX.native() < pY.native()); 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of std 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 73