Showing
6 changed files
with
52 additions
and
13 deletions
... | ... | @@ -36,6 +36,8 @@ TR_CLASS(TR_Hash) { |
36 | 36 | TR_INSTANCE_INIT(TR_Hash); |
37 | 37 | TR_CLASSVARS_DECL(TR_Hash) {}; |
38 | 38 | |
39 | +#define TR_hashEmpty(hash) (NULL == (hash)->root) | |
40 | + | |
39 | 41 | void * TR_hashAdd(TR_Hash, void *); |
40 | 42 | void * TR_hashDelete(TR_Hash, const char *, size_t); |
41 | 43 | void * TR_hashGet(TR_Hash, const char *, size_t); | ... | ... |
... | ... | @@ -57,6 +57,7 @@ void * TR_queueGet(TR_Queue); |
57 | 57 | TR_Queue TR_queueFind(TR_Queue, void *); |
58 | 58 | TR_Queue TR_queueFindParent(TR_Queue, void *); |
59 | 59 | void TR_queueDelete(TR_Queue, void *); |
60 | +void TR_queueDestroy(TR_Queue); | |
60 | 61 | |
61 | 62 | #define TR_queueEmpty(this) (0 >= (this)->nmsg) |
62 | 63 | ... | ... |
src/queue/destroy.c
0 → 100644
1 | +/** | |
2 | + * \file | |
3 | + * | |
4 | + * \author Georg Hopp | |
5 | + * | |
6 | + * \copyright | |
7 | + * Copyright © 2014 Georg Hopp | |
8 | + * | |
9 | + * This program is free software: you can redistribute it and/or modify | |
10 | + * it under the terms of the GNU General Public License as published by | |
11 | + * the Free Software Foundation, either version 3 of the License, or | |
12 | + * (at your option) any later version. | |
13 | + * | |
14 | + * This program is distributed in the hope that it will be useful, | |
15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | + * GNU General Public License for more details. | |
18 | + * | |
19 | + * You should have received a copy of the GNU General Public License | |
20 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
21 | + */ | |
22 | + | |
23 | +#include <stdarg.h> | |
24 | + | |
25 | +#include "trbase.h" | |
26 | +#include "tr/queue.h" | |
27 | + | |
28 | +void | |
29 | +TR_queueDestroy(TR_Queue this) | |
30 | +{ | |
31 | + TR_Queue node = this->first; | |
32 | + | |
33 | + while (NULL != node) { | |
34 | + TR_Queue next = node->next; | |
35 | + if (this->free_msgs) { | |
36 | + TR_delete(node->msg); | |
37 | + } | |
38 | + TR_delete(node); | |
39 | + node = next; | |
40 | + } | |
41 | + | |
42 | + this->first = this->next = this->last = NULL; | |
43 | + this->nmsg = 0; | |
44 | +} | |
45 | + | |
46 | +// vim: set ts=4 sw=4: | ... | ... |
... | ... | @@ -40,17 +40,7 @@ static |
40 | 40 | void |
41 | 41 | queueDtor(void * _this) |
42 | 42 | { |
43 | - TR_Queue this = _this; | |
44 | - TR_Queue node = this->first; | |
45 | - | |
46 | - while (NULL != node) { | |
47 | - TR_Queue next = node->next; | |
48 | - if (this->free_msgs) { | |
49 | - TR_delete(node->msg); | |
50 | - } | |
51 | - TR_delete(node); | |
52 | - node = next; | |
53 | - } | |
43 | + TR_queueDestroy((TR_Queue)_this); | |
54 | 44 | } |
55 | 45 | |
56 | 46 | TR_INIT_IFACE(TR_Class, queueCtor, queueDtor, NULL); | ... | ... |
Please
register
or
login
to post a comment