// FilePath.h: interface for the FilePath class. // // (c) Copyright Schlumberger Technology Corp., unpublished work, created // 2000. This computer program includes Confidential, Proprietary // Information and is a Trade Secret of Schlumberger Technology Corp. All // use, disclosure, and/or reproduction is prohibited unless authorized // in writing. All Rights Reserved. ////////////////////////////////////////////////////////////////////// #if !defined(AFX_FILEPATH_H__9C7FE273_F538_11D3_A5E0_00104BD32DA8__INCLUDED_) #define AFX_FILEPATH_H__9C7FE273_F538_11D3_A5E0_00104BD32DA8__INCLUDED_ #include #include #include #include #include "DllSymDefn.h" namespace iop { class IOPDLL_API FilePathComponent { public: FilePathComponent(unsigned short sFileID); FilePathComponent(std::string strFileID); virtual ~FilePathComponent(); unsigned short GetShortID() { return m_usFileID; }; std::string GetStringID(); friend bool operator<(FilePathComponent const &lhs, FilePathComponent const &rhs); // Needed if you want these in a list friend bool operator>(FilePathComponent const &lhs, FilePathComponent const &rhs); // Needed if you want these in a list friend bool operator==(FilePathComponent const &lhs, FilePathComponent const &rhs); friend bool operator!=(FilePathComponent const &lhs, FilePathComponent const &rhs); friend std::ostream &operator<<(std::ostream &, FilePathComponent &); private: unsigned short m_usFileID; }; #pragma warning(push) // Non-standard extension used: 'extern' before template explicit // instantiation #pragma warning(disable : 4231) IOPDLL_EXPIMP_TEMPLATE template class IOPDLL_API std::list; #pragma warning(pop) class IOPDLL_API FilePath { public: FilePath(); FilePath(const std::string strFilePath); FilePath(FilePath const &fp); virtual ~FilePath(); FilePathComponent& operator[](unsigned int index); friend bool operator==(FilePath const &lhs, FilePath const &rhs); //operator +(); const FilePath &operator +=(FilePathComponent); friend std::ostream &operator<<(std::ostream &, FilePath &); FilePathComponent Head(); FilePathComponent Tail(); void Clear(); bool IsEmpty(); FilePathComponent ChopTail(); BYTE NumComponents(); std::list Components() { return m_FilePath; }; FilePath GreatestCommonPrefix(FilePath &rPath); std::string GetStringPath(); static FilePath Root(); static bool IsValidPath(const std::string strFilePath); private: std::list m_FilePath; }; } // namespace iop #endif // !defined(AFX_FILEPATH_H__9C7FE273_F538_11D3_A5E0_00104BD32DA8__INCLUDED_)