587ae25b84177c5af73d1794bba555c6643b39bd
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) 
Stefan Schuermans namespace for preprocessor...

Stefan Schuermans authored 12 years ago

6) #ifndef BLINKER_LISTTRACKER_H
7) #define BLINKER_LISTTRACKER_H
Stefan Schuermans created template class for...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

82) }; // class ListTracker<PARENT, TYPE, FIDI>
Stefan Schuermans created template class for...

Stefan Schuermans authored 12 years ago

83) 
84) } // namespace Blinker
85) 
Stefan Schuermans namespace for preprocessor...

Stefan Schuermans authored 12 years ago

86) #endif // #ifndef BLINKER_LISTTRACKER_H