Communication Library for Autonomous Systems v1.0
Reliable and secure communication library for autonomous vehicle systems
Loading...
Searching...
No Matches
list.h
Go to the documentation of this file.
1#ifndef LIST_H
2#define LIST_H
3
4#include <list>
5#include <mutex>
6
7// Simple List implementation
8template<typename T>
9class List {
10public:
11 List() = default;
12 ~List() = default;
13
14 void insert(T* item);
16 bool empty() const;
17
18private:
19 std::list<T*> _list;
20 mutable std::mutex _mutex;
21};
22
23// Simple Ordered List implementation
24template<typename T, typename R>
26public:
27 typedef typename std::list<T*>::iterator Iterator;
28
29 Ordered_List() = default;
30 ~Ordered_List() = default;
31
32 void insert(T* item);
33 void remove(T* item);
36 bool empty() const;
37
38private:
39 std::list<T*> _list;
40 mutable std::mutex _mutex;
41};
42
43// List implementations
44template<typename T>
46 std::lock_guard<std::mutex> lock(_mutex);
47 _list.push_back(item);
48}
49
50template<typename T>
52 std::lock_guard<std::mutex> lock(_mutex);
53 if (_list.empty()) {
54 return nullptr;
55 }
56 T* item = _list.front();
57 _list.pop_front();
58 return item;
59}
60
61template<typename T>
62bool List<T>::empty() const {
63 std::lock_guard<std::mutex> lock(_mutex);
64 return _list.empty();
65}
66
67// Ordered_List implementations
68template<typename T, typename R>
70 std::lock_guard<std::mutex> lock(_mutex);
71 _list.push_back(item);
72}
73
74template<typename T, typename R>
76 std::lock_guard<std::mutex> lock(_mutex);
77 _list.remove(item);
78}
79
80template<typename T, typename R>
82 return _list.begin();
83}
84
85template<typename T, typename R>
87 return _list.end();
88}
89
90template<typename T, typename R>
92 std::lock_guard<std::mutex> lock(_mutex);
93 return _list.empty();
94}
95
96#endif // LIST_H
Definition list.h:9
void insert(T *item)
Definition list.h:45
bool empty() const
Definition list.h:62
List()=default
T * remove()
Definition list.h:51
~List()=default
Definition list.h:25
Iterator begin()
Definition list.h:81
void insert(T *item)
Definition list.h:69
Iterator end()
Definition list.h:86
Ordered_List()=default
bool empty() const
Definition list.h:91
std::list< T * >::iterator Iterator
Definition list.h:27
void remove(T *item)
Definition list.h:75
~Ordered_List()=default
Select_Debug<(Traits< T >::debugged &&Traits< Debug >::error)> db(Debug_Error l)
Definition debug.h:166