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_
|