vrfileman

annotate src/fs.h @ 5:d487181ee1d9

fixed movement
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 03 Feb 2015 03:35:14 +0200
parents 282da6123fd4
children b041bc1c38ad
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@5 20 void *data;
nuclear@5 21
nuclear@1 22 private:
nuclear@1 23 FSNode(const FSNode&);
nuclear@1 24 FSNode &operator =(const FSNode&);
nuclear@1 25
nuclear@2 26 void sort_children();
nuclear@2 27
nuclear@1 28 public:
nuclear@1 29 FSNode();
nuclear@1 30 virtual ~FSNode();
nuclear@1 31
nuclear@2 32 virtual void init();
nuclear@2 33 virtual void destroy();
nuclear@2 34 virtual void destroy_tree();
nuclear@2 35
nuclear@2 36 virtual void set_type(Type type);
nuclear@2 37 virtual Type get_type() const;
nuclear@2 38 virtual bool is_file() const;
nuclear@2 39 virtual bool is_directory() const;
nuclear@1 40
nuclear@1 41 virtual void set_path(const char *path);
nuclear@1 42 virtual void set_name(const char *name);
nuclear@1 43
nuclear@1 44 virtual const char *get_path() const;
nuclear@1 45 virtual const char *get_name() const;
nuclear@1 46
nuclear@2 47 virtual bool add_child(FSNode *node);
nuclear@2 48 virtual bool remove_child(FSNode *node);
nuclear@2 49
nuclear@2 50 virtual int find_child(FSNode *node) const;
nuclear@2 51 virtual int find_child(const char *name) const;
nuclear@1 52
nuclear@1 53 virtual FSNode *get_parent();
nuclear@1 54 virtual const FSNode *get_parent() const;
nuclear@1 55
nuclear@1 56 virtual int get_child_count() const;
nuclear@1 57 virtual FSNode *get_child(int n);
nuclear@1 58 virtual const FSNode *get_child(int n) const;
nuclear@1 59
nuclear@2 60 virtual bool expand();
nuclear@1 61 virtual bool is_expanded() const;
nuclear@5 62
nuclear@5 63 virtual void set_ext_data(void *data);
nuclear@5 64 virtual void *get_ext_data() const;
nuclear@1 65 };
nuclear@1 66
nuclear@1 67 class FSDir : public FSNode {
nuclear@1 68 public:
nuclear@1 69 FSDir();
nuclear@1 70
nuclear@2 71 virtual bool expand();
nuclear@1 72 };
nuclear@1 73
nuclear@1 74 class FSFile : public FSNode {
nuclear@1 75 protected:
nuclear@1 76 unsigned long size;
nuclear@2 77 enum Type type;
nuclear@1 78
nuclear@1 79 public:
nuclear@1 80 FSFile();
nuclear@1 81
nuclear@2 82 virtual void set_size(unsigned long s);
nuclear@2 83 virtual unsigned long get_size() const;
nuclear@1 84 };
nuclear@1 85
nuclear@1 86 #endif // FS_H_