#pragma once #ifndef __PATHNAME_H__ #define __PATHNAME_H__ /////////////////////////////////////////////////////////// // CPathName /////////////////////////////////////////////////////////// typedef char gt_string[264]; errno_t gt_strcpy (_Out_z_cap_(264) gt_string dst, _In_z_ const char* src); errno_t gt_strcat (_Out_z_cap_(264) gt_string dst, _In_z_ const char* src); errno_t gt_chrcat (_Out_z_cap_(264) gt_string dst, _In_z_ const char src); bool gt_strsame(_In_z_ const char* dst, _In_z_ const char* src); class CPathList; class CPathName { gt_string _name; protected: size_t Scan(CPathList* list) const; public: bool empty() const { return *_name <= ' '; } const char* Path() const; const char* FullName() const; const char* Name() const; const char* Ext() const; CPathName& Set(const char* p); CPathName& Set(const char* p, const char* n, const char* e); CPathName& SetPath(const char* p); CPathName& SetName(const char* n); CPathName& SetExt(const char* e); const char* c_str() const { return _name; } operator const char*() const { return c_str(); } bool operator==(const char* str) const { return gt_strsame(_name, str); } CPathName& operator=(const char* str) { return Set(str); } CPathName& operator=(const CPathName& p) { return Set(p.c_str()); } bool IsFile() const; bool IsDirectory() const; size_t List(CPathList& files) const { return Scan(&files); } size_t Count() const { return Scan(NULL); } bool Copy(const CPathName& dst) const; bool Move(const CPathName& dst) const; bool Remove() const; CPathName() { memset(_name, 0, sizeof(_name)); } CPathName(const CPathName& n) { Set(n.c_str()); } CPathName(const char* pathname) { Set(pathname); } }; class CPathList { size_t _items, _max; CPathName* _file; public: size_t size() const { return _items; } size_t push_back(const char* p); size_t push_back(const CPathName& p); const CPathName& operator[](size_t i) const; CPathName& operator[](size_t i); CPathList() : _items(0), _max(0), _file(NULL) {} ~CPathList(); }; char* wstring2string(const wchar_t* str); wchar_t* string2wstring(const char* str); #endif