| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | #include "precomp_wasabi_bfc.h"#include "recursedir.h"RecurseDir::RecurseDir( const wchar_t *_path, const wchar_t *_match ) :    path( _path ), match( _match ){    if ( match.isempty() ) match = Wasabi::Std::matchAllFiles();    curdir = new ReadDir( path, match );}RecurseDir::~RecurseDir(){    dirstack.deleteAll();}int RecurseDir::next(){    for ( ;;)    {        if ( curdir == NULL )        {	// pop one off the stack            curdir = dirstack.getLast();            if ( curdir == NULL ) return 0;	// done            dirstack.removeLastItem();        }        int r = curdir->next();        if ( r <= 0 )        {            delete curdir; curdir = NULL;            continue;	// get another one        }        // ok, we have a file to look at        if ( curdir->isDir() )        {	// descend into it            StringW newpath = curdir->getPath();            newpath.AppendPath( curdir->getFilename() );            dirstack.addItem( curdir );	// push the old one            curdir = new ReadDir( newpath, match );	// start new one            continue;        }        return r;    }}const wchar_t *RecurseDir::getPath(){    if ( curdir == NULL )        return NULL;    return curdir->getPath();}const wchar_t *RecurseDir::getFilename(){    if ( curdir == NULL )        return NULL;    return curdir->getFilename();}const wchar_t *RecurseDir::getOriginalPath(){    return path;}
 |