nuclear@1: #ifndef FS_H_ nuclear@1: #define FS_H_ nuclear@1: nuclear@1: #include nuclear@1: nuclear@1: class FSNode { nuclear@1: protected: nuclear@1: char *path, *name; nuclear@1: FSNode *parent; nuclear@1: nuclear@1: std::vector children; nuclear@1: bool expanded; nuclear@1: nuclear@1: unsigned int uid, gid, mode; nuclear@1: nuclear@1: private: nuclear@1: FSNode(const FSNode&); nuclear@1: FSNode &operator =(const FSNode&); nuclear@1: nuclear@1: public: nuclear@1: FSNode(); nuclear@1: virtual ~FSNode(); nuclear@1: nuclear@1: void init(); nuclear@1: void destroy(); nuclear@1: void destroy_tree(); nuclear@1: nuclear@1: virtual void set_path(const char *path); nuclear@1: virtual void set_name(const char *name); nuclear@1: nuclear@1: virtual const char *get_path() const; nuclear@1: virtual const char *get_name() const; nuclear@1: nuclear@1: virtual void add_child(FSNode *node); nuclear@1: nuclear@1: virtual FSNode *get_parent(); nuclear@1: virtual const FSNode *get_parent() const; nuclear@1: nuclear@1: virtual int get_child_count() const; nuclear@1: virtual FSNode *get_child(int n); nuclear@1: virtual const FSNode *get_child(int n) const; nuclear@1: nuclear@1: virtual void expand(); nuclear@1: virtual bool is_expanded() const; nuclear@1: }; nuclear@1: nuclear@1: class FSDir : public FSNode { nuclear@1: public: nuclear@1: FSDir(); nuclear@1: nuclear@1: virtual void expand(); nuclear@1: }; nuclear@1: nuclear@1: class FSFile : public FSNode { nuclear@1: protected: nuclear@1: unsigned long size; nuclear@1: nuclear@1: public: nuclear@1: FSFile(); nuclear@1: nuclear@1: void set_size(unsigned long s); nuclear@1: unsigned long get_size() const; nuclear@1: }; nuclear@1: nuclear@1: #endif // FS_H_