version 1.13, 2004/05/18 11:03:38
|
version 1.14, 2004/10/01 10:21:16
|
|
|
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
#include <io.h> |
|
#include <direct.h> | #include <direct.h> |
| |
struct DirRep |
|
{ |
|
long file; |
|
struct _finddata_t findData; |
|
}; |
|
| |
Dir::Dir(const String& path) : |
Dir::Dir(const String& path) |
_rep(new DirRep) |
|
{ | { |
_rep->file = _findfirst((path+"/*").getCString(), &_rep->findData); |
_dirRep.file = _findfirst((path+"/*").getCString(), &_dirRep.findData); |
| |
if (_rep->file == -1) |
if (_dirRep.file == -1) |
{ | { |
_more = false; | _more = false; |
//delete _rep; |
|
_rep.reset(); |
|
throw CannotOpenDirectory(path); | throw CannotOpenDirectory(path); |
} | } |
else | else |
|
|
| |
Dir::~Dir() | Dir::~Dir() |
{ | { |
if (_rep->file != -1) |
if (_dirRep.file != -1) |
_findclose(_rep->file); |
_findclose(_dirRep.file); |
|
|
| |
_rep.reset(); |
|
} | } |
| |
const char* Dir::getName() const | const char* Dir::getName() const |
{ | { |
return _rep->findData.name; |
return _dirRep.findData.name; |
} | } |
| |
void Dir::next() | void Dir::next() |
|
|
if (!_more) | if (!_more) |
return; | return; |
| |
_more = _findnext(_rep->file, &_rep->findData) == 0; |
_more = _findnext(_dirRep.file, &_dirRep.findData) == 0; |
} | } |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |