Showing
6 changed files
with
52 additions
and
13 deletions
@@ -36,6 +36,8 @@ TR_CLASS(TR_Hash) { | @@ -36,6 +36,8 @@ TR_CLASS(TR_Hash) { | ||
36 | TR_INSTANCE_INIT(TR_Hash); | 36 | TR_INSTANCE_INIT(TR_Hash); |
37 | TR_CLASSVARS_DECL(TR_Hash) {}; | 37 | TR_CLASSVARS_DECL(TR_Hash) {}; |
38 | 38 | ||
39 | +#define TR_hashEmpty(hash) (NULL == (hash)->root) | ||
40 | + | ||
39 | void * TR_hashAdd(TR_Hash, void *); | 41 | void * TR_hashAdd(TR_Hash, void *); |
40 | void * TR_hashDelete(TR_Hash, const char *, size_t); | 42 | void * TR_hashDelete(TR_Hash, const char *, size_t); |
41 | void * TR_hashGet(TR_Hash, const char *, size_t); | 43 | void * TR_hashGet(TR_Hash, const char *, size_t); |
@@ -57,6 +57,7 @@ void * TR_queueGet(TR_Queue); | @@ -57,6 +57,7 @@ void * TR_queueGet(TR_Queue); | ||
57 | TR_Queue TR_queueFind(TR_Queue, void *); | 57 | TR_Queue TR_queueFind(TR_Queue, void *); |
58 | TR_Queue TR_queueFindParent(TR_Queue, void *); | 58 | TR_Queue TR_queueFindParent(TR_Queue, void *); |
59 | void TR_queueDelete(TR_Queue, void *); | 59 | void TR_queueDelete(TR_Queue, void *); |
60 | +void TR_queueDestroy(TR_Queue); | ||
60 | 61 | ||
61 | #define TR_queueEmpty(this) (0 >= (this)->nmsg) | 62 | #define TR_queueEmpty(this) (0 >= (this)->nmsg) |
62 | 63 |
@@ -28,7 +28,6 @@ | @@ -28,7 +28,6 @@ | ||
28 | static void (*cb)(const void*, const void*); | 28 | static void (*cb)(const void*, const void*); |
29 | 29 | ||
30 | static | 30 | static |
31 | -inline | ||
32 | void | 31 | void |
33 | walk(const void * node, const void * data, const int depth) | 32 | walk(const void * node, const void * data, const int depth) |
34 | { | 33 | { |
@@ -11,6 +11,7 @@ libqueue_la_SOURCES = queue.c \ | @@ -11,6 +11,7 @@ libqueue_la_SOURCES = queue.c \ | ||
11 | put_first.c \ | 11 | put_first.c \ |
12 | find.c \ | 12 | find.c \ |
13 | find_parent.c \ | 13 | find_parent.c \ |
14 | - delete.c | 14 | + delete.c \ |
15 | + destroy.c | ||
15 | 16 | ||
16 | libqueue_la_CFLAGS = $(AM_CFLAGS) | 17 | libqueue_la_CFLAGS = $(AM_CFLAGS) |
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,17 +40,7 @@ static | ||
40 | void | 40 | void |
41 | queueDtor(void * _this) | 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 | TR_INIT_IFACE(TR_Class, queueCtor, queueDtor, NULL); | 46 | TR_INIT_IFACE(TR_Class, queueCtor, queueDtor, NULL); |
Please
register
or
login
to post a comment