campo-sirio/SSAservice/PathName.h
guy d40707a134 Versione 12
git-svn-id: svn://10.65.10.50/branches/R_10_00@23098 c028cbd2-c16b-5b4b-a496-9718f37d4682
2015-05-15 09:09:10 +00:00

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