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
|
fix (reverse) interator typ...
Stefan Schuermans authored 12 years ago
|
38) typedef typename List::const_iterator ListIt;
39)
40) /// reverse list iterator
41) typedef typename List::const_reverse_iterator ListRevIt;
|
created template class for...
Stefan Schuermans authored 12 years ago
|
42)
43) public:
44) /**
45) * @brief constructor
46) * @param[in] parent parent object
47) * @param[in] dir directory containing list and begin tracked
48) */
49) ListTracker(PARENT &parent, const Directory &dir);
50)
51) /// destructor
52) virtual ~ListTracker();
53)
54) private:
55) /// copy constructor disabled
56) ListTracker(const ListTracker &that);
57)
58) /// assignment operator disabled
59) const ListTracker & operator=(const ListTracker &that);
60)
61) public:
62) /// initialize list by reading directory
63) void init();
64)
65) /// clear list
66) void clear();
67)
68) /// check for update of configuration
69) void updateConfig();
70)
71) protected:
72) /// light update of list, i.e. check all entries in current list
73) void updateListLight();
74)
75) /// full update of list, i.e. scan files/subdirs in list directory
76) void updateListFull();
77)
78) public:
79) PARENT &m_parent; ///< parent object
80) Directory m_dir; ///< directory containing list and being tracked
81) List m_list; ///< list begin tracked
|
fixed comment typo
Stefan Schuermans authored 12 years ago
|
82) }; // class ListTracker<PARENT, TYPE, FIDI>
|