created template class for...
Stefan Schuermans authored 12 years ago
|
1) /* Blinker
2) Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3) Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4) a blinkenarea.org project */
5)
6) #ifndef LISTTRACKER_H
7) #define LISTTRACKER_H
8)
9) #include <list>
10) #include <string>
11)
12) #include "Directory.h"
13) #include "File.h"
14)
15) namespace Blinker {
16)
17) /**
18) * @brief tracker of a list kept in a directory
19) * @param[in] PARENT type of parent object
20) * @param[in] TYPE type of objects to allocate for list entries
21) * @param[in] FIDI if to track files or subdirs in directory
22) (File or Directory)
23) */
24) template<typename PARENT, typename TYPE, typename FIDI>
25) class ListTracker
26) {
27) public:
28) /// list entry
29) struct Entry {
30) std::string m_name; ///< name of list entry
31) TYPE *m_pObj; ///< object
32) };
33)
34) /// list
35) typedef std::list<Entry> List;
36)
37) /// list iterator
38) typedef typename List::const_reverse_iterator ListIt;
39)
40) public:
41) /**
42) * @brief constructor
43) * @param[in] parent parent object
44) * @param[in] dir directory containing list and begin tracked
45) */
46) ListTracker(PARENT &parent, const Directory &dir);
47)
48) /// destructor
49) virtual ~ListTracker();
50)
51) private:
52) /// copy constructor disabled
53) ListTracker(const ListTracker &that);
54)
55) /// assignment operator disabled
56) const ListTracker & operator=(const ListTracker &that);
57)
58) public:
59) /// initialize list by reading directory
60) void init();
61)
62) /// clear list
63) void clear();
64)
65) /// check for update of configuration
66) void updateConfig();
67)
68) protected:
69) /// light update of list, i.e. check all entries in current list
70) void updateListLight();
71)
72) /// full update of list, i.e. scan files/subdirs in list directory
73) void updateListFull();
74)
75) public:
76) PARENT &m_parent; ///< parent object
77) Directory m_dir; ///< directory containing list and being tracked
78) List m_list; ///< list begin tracked
|