d40707a134
git-svn-id: svn://10.65.10.50/branches/R_10_00@23098 c028cbd2-c16b-5b4b-a496-9718f37d4682
79 lines
2.2 KiB
C++
79 lines
2.2 KiB
C++
#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
|