File tree 1 file changed +7
-7
lines changed
1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -3,24 +3,24 @@ class Shared // template definition
3
3
{
4
4
public:
5
5
Shared () {
6
- queue = new rtos::Queue<T, 16 >;
7
6
}
8
- operator T () const {
9
- osEvent evt = queue-> get ();
7
+ operator T () {
8
+ osEvent evt = queue. get ();
10
9
if (evt.status == osEventMessage) {
11
10
T x = *((T*)evt.value .p );
12
11
delete (T*)evt.value .p ;
13
12
return x;
14
13
}
14
+ return val;
15
15
}
16
16
T& operator = (const T& other) {
17
- if (queue-> full ()) {
18
- // invokes operator T()
17
+ if (queue. full ()) {
18
+ // invokes operator T() to discard oldest element and free its memory
19
19
T discard = *this ;
20
20
}
21
21
val = other;
22
22
T* obj = new T (val);
23
- queue-> put (obj);
23
+ queue. put (obj);
24
24
return (*obj);
25
25
}
26
26
T& peek () {
@@ -31,7 +31,7 @@ class Shared // template definition
31
31
}
32
32
private:
33
33
T val;
34
- rtos::Queue<T, 16 >* queue;
34
+ rtos::Queue<T, 16 > queue;
35
35
};
36
36
37
37
#define CONCAT2 (x,y ) x##y
You can’t perform that action at this time.
0 commit comments