104 lines
2.6 KiB
C++
104 lines
2.6 KiB
C++
// 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 <string>
|
|
#include <list>
|
|
#include <iostream>
|
|
|
|
#include <windows.h>
|
|
|
|
#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<FilePathComponent>;
|
|
|
|
#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<FilePathComponent> Components() { return m_FilePath; };
|
|
|
|
FilePath GreatestCommonPrefix(FilePath &rPath);
|
|
|
|
std::string GetStringPath();
|
|
|
|
static FilePath Root();
|
|
static bool IsValidPath(const std::string strFilePath);
|
|
|
|
private:
|
|
|
|
std::list<FilePathComponent> m_FilePath;
|
|
|
|
|
|
};
|
|
|
|
} // namespace iop
|
|
|
|
#endif // !defined(AFX_FILEPATH_H__9C7FE273_F538_11D3_A5E0_00104BD32DA8__INCLUDED_)
|