diff --git a/Makefile b/Makefile index f9afbb5fa21b18b588e2b71805df3a9165c820b9..f4e9c8a759f89f3eb4e836341b41ffcc04e36b69 100644 --- a/Makefile +++ b/Makefile @@ -5,12 +5,13 @@ LIBHQR=src/libhqr.a default: testing_pivgen testing_treewalk -src/libhqr.o: include/common.h include/libhqr.h -src/libhqr_dbg.o: include/common.h include/libhqr.h +src/queue.o: include/queue.h include/common.h +src/libhqr.o: include/common.h include/libhqr.h +src/libhqr_dbg.o: include/common.h include/libhqr.h src/libhqr_systolic.o: include/common.h include/libhqr.h -src/treewalk.o: include/common.h include/libhqr.h include/queue.h +src/treewalk.o: include/common.h include/libhqr.h include/queue.h -$(LIBHQR): src/libhqr.o src/libhqr_dbg.o src/libhqr_systolic.o src/treewalk.o +$(LIBHQR): src/libhqr.o src/libhqr_dbg.o src/libhqr_systolic.o src/treewalk.o src/queue.o ar cr $@ $^ %.o : %.c diff --git a/src/queue.c b/src/queue.c new file mode 100644 index 0000000000000000000000000000000000000000..e0ce90521153bc993c960d2e85255d2cfebc3867 --- /dev/null +++ b/src/queue.c @@ -0,0 +1,122 @@ +/** + * + * @file queue.c + * + * File for queue functions. + * + * @copyright 2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, + * Univ. Bordeaux. All rights reserved. + * + * @version 1.0.0 + * @author Raphael Boucherie + * @author Mathieu Faverge + * @date 2017-04-05 + * + */ +#include "queue.h" +#include <stdlib.h> +#include <stdio.h> + +/**************************************************** + * Generic functions for queue + ***************************************************/ + +libhqr_queue_tile_t *libhqr_queue_tile_new (void) +{ + return (NULL); +} + +void libhqr_queue_tile_first (libhqr_queue_tile_t ** queue_tile) +{ + if (queue_tile != NULL && *queue_tile != NULL) + { + while ((*queue_tile)->prev != NULL) + libhqr_queue_tile_prev (queue_tile); + } + return; +} + +void libhqr_queue_tile_prev (libhqr_queue_tile_t ** queue_tile) +{ + if (queue_tile != NULL && *queue_tile != NULL) + *queue_tile = (*queue_tile)->prev; + return; +} + +void libhqr_queue_tile_last (libhqr_queue_tile_t ** queue_tile) +{ + if (queue_tile != NULL && *queue_tile != NULL) + { + while ((*queue_tile)->next != NULL) + libhqr_queue_tile_next (queue_tile); + } + return; +} + +void libhqr_queue_tile_next (libhqr_queue_tile_t ** queue_tile) +{ + if (queue_tile != NULL && *queue_tile != NULL) + *queue_tile = (*queue_tile)->next; + return; +} + +void libhqr_queue_tile_post (libhqr_queue_tile_t ** queue_tile, int numero) +{ + if (queue_tile != NULL) + { + libhqr_queue_tile_t *p_l = NULL; + libhqr_queue_tile_t *p_p = NULL; + + libhqr_queue_tile_first (queue_tile); + p_l = *queue_tile; + p_p = malloc (sizeof (*p_p)); + if (p_p != NULL) + { + p_p->numero = numero; + p_p->next = p_l; + p_p->prev = NULL; + if (p_l != NULL) + p_l->prev = p_p; + *queue_tile = p_p; + } + else + { + fprintf (stderr, "Memoire insuffisante\n"); + exit (EXIT_FAILURE); + } + } + return; +} + +int libhqr_queue_tile_get (libhqr_queue_tile_t ** queue_tile) +{ + int ret; + + if (queue_tile != NULL && *queue_tile != NULL) + { + libhqr_queue_tile_t *p_l = NULL; + libhqr_queue_tile_t *p_p = NULL; + + libhqr_queue_tile_last (queue_tile); + p_l = *queue_tile; + if (p_l != NULL) + p_p = p_l->prev; + ret = p_l->numero; + free (p_l); + p_l = NULL; + if (p_p != NULL) + p_p->next = NULL; + *queue_tile = p_p; + } + return (ret); +} + +void libhqr_queue_tile_delete (libhqr_queue_tile_t ** queue_tile) +{ + if (queue_tile != NULL && *queue_tile != NULL) + { + while (*queue_tile != NULL) + libhqr_queue_tile_get (queue_tile); + } + return; +} diff --git a/src/treewalk.c b/src/treewalk.c index 26183102e68bd1eae8d46c58425b7a796c396241..52c70c478dda6a271a4b58af54bc1beaa1316f59 100644 --- a/src/treewalk.c +++ b/src/treewalk.c @@ -2,7 +2,7 @@ * * @file treewalk.c * - * File for queue functions, and algorithm of treewalking. + * File for algorithm of treewalking. * * @copyright 2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, * Univ. Bordeaux. All rights reserved. @@ -15,113 +15,8 @@ */ #include "libhqr.h" #include "queue.h" -#include <stdlib.h> #include <stdio.h> -/**************************************************** - * Generic functions for queue - ***************************************************/ - -libhqr_queue_tile_t *libhqr_queue_tile_new (void) -{ - return (NULL); -} - -void libhqr_queue_tile_first (libhqr_queue_tile_t ** queue_tile) -{ - if (queue_tile != NULL && *queue_tile != NULL) - { - while ((*queue_tile)->prev != NULL) - libhqr_queue_tile_prev (queue_tile); - } - return; -} - -void libhqr_queue_tile_prev (libhqr_queue_tile_t ** queue_tile) -{ - if (queue_tile != NULL && *queue_tile != NULL) - *queue_tile = (*queue_tile)->prev; - return; -} - -void libhqr_queue_tile_last (libhqr_queue_tile_t ** queue_tile) -{ - if (queue_tile != NULL && *queue_tile != NULL) - { - while ((*queue_tile)->next != NULL) - libhqr_queue_tile_next (queue_tile); - } - return; -} - -void libhqr_queue_tile_next (libhqr_queue_tile_t ** queue_tile) -{ - if (queue_tile != NULL && *queue_tile != NULL) - *queue_tile = (*queue_tile)->next; - return; -} - -void libhqr_queue_tile_post (libhqr_queue_tile_t ** queue_tile, int numero) -{ - if (queue_tile != NULL) - { - libhqr_queue_tile_t *p_l = NULL; - libhqr_queue_tile_t *p_p = NULL; - - libhqr_queue_tile_first (queue_tile); - p_l = *queue_tile; - p_p = malloc (sizeof (*p_p)); - if (p_p != NULL) - { - p_p->numero = numero; - p_p->next = p_l; - p_p->prev = NULL; - if (p_l != NULL) - p_l->prev = p_p; - *queue_tile = p_p; - } - else - { - fprintf (stderr, "Memoire insuffisante\n"); - exit (EXIT_FAILURE); - } - } - return; -} - -int libhqr_queue_tile_get (libhqr_queue_tile_t ** queue_tile) -{ - int ret; - - if (queue_tile != NULL && *queue_tile != NULL) - { - libhqr_queue_tile_t *p_l = NULL; - libhqr_queue_tile_t *p_p = NULL; - - libhqr_queue_tile_last (queue_tile); - p_l = *queue_tile; - if (p_l != NULL) - p_p = p_l->prev; - ret = p_l->numero; - free (p_l); - p_l = NULL; - if (p_p != NULL) - p_p->next = NULL; - *queue_tile = p_p; - } - return (ret); -} - -void libhqr_queue_tile_delete (libhqr_queue_tile_t ** queue_tile) -{ - if (queue_tile != NULL && *queue_tile != NULL) - { - while (*queue_tile != NULL) - libhqr_queue_tile_get (queue_tile); - } - return; -} - /**************************************************** * LIBHQR_TREEWALK ***************************************************/