Commit b9b5faa37d6d2eb715795cebad8647121e3ae6fa

Authored by Georg Hopp
1 parent d8b2c214

add queueDestroy and hashEmpty

... ... @@ -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
... ...
... ... @@ -28,7 +28,6 @@
28 28 static void (*cb)(const void*, const void*);
29 29
30 30 static
31   -inline
32 31 void
33 32 walk(const void * node, const void * data, const int depth)
34 33 {
... ...
... ... @@ -11,6 +11,7 @@ libqueue_la_SOURCES = queue.c \
11 11 put_first.c \
12 12 find.c \
13 13 find_parent.c \
14   - delete.c
  14 + delete.c \
  15 + destroy.c
15 16
16 17 libqueue_la_CFLAGS = $(AM_CFLAGS)
... ...
  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