#ifndef PATH_H #define PATH_H #include "CKALL.H" #include "windows.h" #include #include #include "Shlwapi.h" #pragma comment (lib,"SHLWAPI.LIB") class XPath { private: char path_separator_; char drive_separator_; char extension_separator_; public: XString data_; //ctors inline XPath(); XPath( const XPath& path ); XPath( const XString& filepath ); XPath( const XString& dirpath, const XString& filename ); XPath ( const XString& dirpath, const XString& base, const XString& extension ); XPath ( char drive, const XString& dirpath, const XString& filename ); XPath ( char drive, const XString& dirpath, const XString& base, const XString& extension ); //components XString operator[]( int index ) const; // Testing. bool absolute() const; bool relative() const; bool directory_path() const; bool has_directory() const; bool has_extension() const; bool has_drive() const; bool is_valid(); // Conversion. operator const char*() const; operator const XString&() const; // Comparison int operator==( const XPath& path ) const; int operator==( const XString& string ) const; int operator!=( const XPath& path ) const; int operator!=( const XString& string ) const; int operator<( const XPath& path ) const; int operator<( const XString& string ) const; XPath& operator=( const XString& filepath ); XPath& operator=( const XPath& path ); //used for the objectmode XPath& operator+=(CKBeObject *beo){ if(data_.Length() == 0)data_ = VxGetTempPath().CStr(); data_ << beo->GetName() << ".nmo"; return *this; } // Accessors. char* GetFileName(); char* GetPath(); char path_separator() const; char drive_separator() const; char extension_separator() const; int absolute_levels() const; protected: void init_separators(); // Common finds. size_t last_extension_separator() const; }; /************************************************************************/ /* protected funtions */ /************************************************************************/ inline void XPath::init_separators(){ path_separator_ = '\\'; drive_separator_ = ':'; extension_separator_ = '.'; } /************************************************************************/ /* ctors //ops // converts */ /************************************************************************/ inline XPath::XPath(const XString& dirpath, const XString& filename ){ init_separators(); data_ << dirpath <