Commit b9b5faa37d6d2eb715795cebad8647121e3ae6fa

Authored by Georg Hopp
1 parent d8b2c214

add queueDestroy and hashEmpty

@@ -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)
  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