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