vrfileman

annotate src/fs.h @ 6:b041bc1c38ad

layout
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 03 Feb 2015 15:42:03 +0200
parents d487181ee1d9
children
rev   line source
nuclear@1 1 #ifndef FS_H_
nuclear@1 2 #define FS_H_
nuclear@1 3
nuclear@1 4 #include <vector>
nuclear@1 5
nuclear@1 6 class FSNode {
nuclear@2 7 public:
nuclear@2 8 enum Type { UNKNOWN, DIRECTORY, REGFILE, LINK, DEVICE, SOCKET, FIFO };
nuclear@2 9
nuclear@1 10 protected:
nuclear@1 11 char *path, *name;
nuclear@1 12 FSNode *parent;
nuclear@1 13
nuclear@1 14 std::vector<FSNode*> children;
nuclear@2 15 bool expanded, sorted;
nuclear@1 16
nuclear@2 17 Type type;
nuclear@1 18 unsigned int uid, gid, mode;
nuclear@1 19
nuclear@1 20 private:
nuclear@1 21 FSNode(const FSNode&);
nuclear@1 22 FSNode &operator =(const FSNode&);
nuclear@1 23
nuclear@2 24 void sort_children();
nuclear@2 25
nuclear@1 26 public:
nuclear@1 27 FSNode();
nuclear@1 28 virtual ~FSNode();
nuclear@1 29
nuclear@2 30 virtual void init();
nuclear@2 31 virtual void destroy();
nuclear@2 32 virtual void destroy_tree();
nuclear@2 33
nuclear@2 34 virtual void set_type(Type type);
nuclear@2 35 virtual Type get_type() const;
nuclear@2 36 virtual bool is_file() const;
nuclear@2 37 virtual bool is_directory() const;
nuclear@1 38
nuclear@1 39 virtual void set_path(const char *path);
nuclear@1 40 virtual void set_name(const char *name);
nuclear@1 41
nuclear@1 42 virtual const char *get_path() const;
nuclear@1 43 virtual const char *get_name() const;
nuclear@1 44
nuclear@2 45 virtual bool add_child(FSNode *node);
nuclear@2 46 virtual bool remove_child(FSNode *node);
nuclear@2 47
nuclear@2 48 virtual int find_child(FSNode *node) const;
nuclear@2 49 virtual int find_child(const char *name) const;
nuclear@1 50
nuclear@1 51 virtual FSNode *get_parent();
nuclear@1 52 virtual const FSNode *get_parent() const;
nuclear@1 53
nuclear@1 54 virtual int get_child_count() const;
nuclear@1 55 virtual FSNode *get_child(int n);
nuclear@1 56 virtual const FSNode *get_child(int n) const;
nuclear@1 57
nuclear@2 58 virtual bool expand();
nuclear@1 59 virtual bool is_expanded() const;
nuclear@1 60 };
nuclear@1 61
nuclear@1 62 class FSDir : public FSNode {
nuclear@1 63 public:
nuclear@1 64 FSDir();
nuclear@1 65
nuclear@2 66 virtual bool expand();
nuclear@1 67 };
nuclear@1 68
nuclear@1 69 class FSFile : public FSNode {
nuclear@1 70 protected:
nuclear@1 71 unsigned long size;
nuclear@2 72 enum Type type;
nuclear@1 73
nuclear@1 74 public:
nuclear@1 75 FSFile();
nuclear@1 76
nuclear@2 77 virtual void set_size(unsigned long s);
nuclear@2 78 virtual unsigned long get_size() const;
nuclear@1 79 };
nuclear@1 80
nuclear@1 81 #endif // FS_H_