#ifndef EDIR_H
#define EDIR_H

#include "eutils.h"

#include "estr.h"
#include "earray.h"
#include "efile.h"

#ifdef _WIN32
 #include <windows.h>
#endif

/*
class ediritem
{
 public:
  estr name;

#ifdef _WIN32
  DWORD type;
#else
  int type;
#endif

  bool isDir() const;
  bool isArchive() const;

  ediritem();
  ediritem(const ediritem& diritem);
#ifdef _WIN32
  ediritem(WIN32_FIND_DATA& ditem);
#else
  ediritem(struct dirent* ditem);
#endif
};
*/

class edir;

class efsmanager
{
 public:
//  void open(edir& dir);
//  void open(efile& file);
};

class edir
{
 public:
  efsmanager *fsmanager;

  estr name;
  estrarrayof<edir> dirs;
  estrarrayof<efile> files;

  edir();
  edir(const estr& dirname);

  void open(const estr& dirname="");

  void serial(estr& data) const;
  size_t unserial(const estr& data,size_t i=0);
  void serial(const efile& f) const;
  bool unserial(const efile& f);
};

ostream& operator<<(ostream& stream,const edir& dir);


edir ls(const estr& dirname=".");

void cd(const estr& dirname="~");
estr pwd();

estrarray env();
estr env(const estr& varname);


#endif

