#ifndef DC_FILE_H #define DC_FILE_H #include #include using namespace std; class dc_dir; #define DIR_SEP "\\" class dc_file { public: dc_file(dc_dir* p, const QString& n, const QString &s, bool d = false); QString get_name() const { return name; } QString get_full_name() const { return full_name; } QString get_root_name() const { return root_name; } QString get_size() const { return size; } bool is_dir() const { return dir; } const dc_dir* get_parent() const { return parent; } bool operator==(const dc_file &f) { return name == f.get_name(); } bool operator==(const QString &f) { return name == f; } bool operator!=(const dc_file &f) { return name != f.get_name(); } bool operator!=(const QString &f) { return name != f; } protected: QString root_name; private: dc_dir *parent; QString name, size, full_name; bool dir; }; bool operator==(dc_file* d, const dc_file &f); bool operator==(dc_file* d, const QString &f); bool operator!=(dc_file* d, const dc_file &f); bool operator!=(dc_file* d, const QString &f); class dc_dir : public dc_file { public: dc_dir(dc_dir* parent, const QString &n) : dc_file(parent, n, 0, true) {} dc_dir(const QString &n) : dc_file(0, n, 0, true) {} bool add_file (dc_file* f); bool add_dir (dc_dir* d); void rm_file(const QString &f); dc_file* get_file(const QString &f); dc_file* get_file(int i) const { return files[i]; } int num_files() const { return files.size(); } private: deque::iterator get_file_itr(const QString &f); deque files; }; #endif