#include "IDirectory.h" #include "nsDeque.h" #include "nsString.h" #include "direct.h" #include "io.h" /*************************************************************************************** ***************************************************************************************/ class CDirEntry : public IDirEntry { public: CDirEntry(const nsCString& aName,IDirectory* aParent,int aAttrs,int aSize) : IDirEntry(), mName(aName){ mAttributes=aAttrs; mParent=aParent; mSize=aSize; } virtual CDirEntry::~CDirEntry() { } virtual nsCString& getName(void){ return mName; } virtual IDirEntry* getParent(void){ return mParent; } virtual int getAttributes(void){ return mAttributes; } virtual int getSize(void){ return mSize; } virtual void getPath(nsCString& aString){ if(mParent){ mParent->getPath(aString); aString+='/'; } aString+=mName; } protected: nsCString mName; int mAttributes; int mSize; IDirectory* mParent; }; /*************************************************************************************** ***************************************************************************************/ class CDirectory : public IDirectory { public: CDirectory(const nsCString& aName,const char* aFileSpec,IDirectory* aParent) : IDirectory(), mChildren(0), mName(aName), mFileSpec(aFileSpec) { mState=eUninitialized; mParent=aParent; } virtual CDirectory::~CDirectory() { IDirEntry* theEntry=0; while(theEntry=(IDirEntry*)mChildren.Pop()) { delete theEntry; } } /** * * @update gess 6/1/99 * @param * @return */ virtual nsCString& getName(void){ return mName; } /** * * @update gess 6/1/99 * @param * @return */ virtual IDirEntry* getParent(void){ return mParent; } /** * * @update gess 6/1/99 * @param * @return */ virtual int getAttributes(void){ return mAttributes; } virtual int getSize(void){ if(eUninitialized==mState){ rescan(); } return mChildren.GetSize(); } /** * * @update gess 6/1/99 * @param * @return */ virtual void getPath(nsCString& aString){ if(mParent){ mParent->getPath(aString); aString+='/'; } aString+=mName; } /** * * @update gess 6/1/99 * @param * @return */ virtual IDirEntry* getEntryAt(int anIndex){ IDirEntry* result=0; if(eUninitialized==mState){ rescan(); } if(anIndex