173870b5a00925b8735decd6b7579cceecaafbbe
Stefan Schuermans 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
Stefan Schuermans fixed comment typo

Stefan Schuermans authored 12 years ago

79) }; // class ListTracker<PARENT, TYPE, FIDI>