diff --git a/include/vieter_job_queue.h b/include/vieter_job_queue.h index bc2f5e5..6c21da0 100644 --- a/include/vieter_job_queue.h +++ b/include/vieter_job_queue.h @@ -12,9 +12,9 @@ * other things. */ typedef enum vieter_job_state { - vieter_job_state_queued = 0, - vieter_job_state_ready = 1, - vieter_job_state_build_finished = 2 + vieter_job_queued = 0, + vieter_job_dispatched = 1, + vieter_job_finished = 2 } vieter_job_state; // This macro should be kept in sync with the above enum @@ -27,14 +27,6 @@ typedef struct vieter_job { bool single; vieter_job_state state; uint64_t state_transition_times[VIETER_JOB_STATES]; - bool dispatched; - void *build_config; } vieter_job; -typedef struct vieter_job_queue vieter_job_queue; - -vieter_job_queue *vieter_job_queue_init(); - -void vieter_job_queue_insert(int id); - #endif diff --git a/include/vieter_tree.h b/include/vieter_tree.h index 2079eb9..d3abd2f 100644 --- a/include/vieter_tree.h +++ b/include/vieter_tree.h @@ -9,8 +9,7 @@ typedef struct vieter_tree vieter_tree; typedef enum vieter_tree_error { vieter_tree_ok = 0, vieter_tree_already_present = 1, - vieter_tree_not_present = 2, - vieter_tree_iterator_done = 3 + vieter_tree_not_present = 2 } vieter_tree_error; /* @@ -46,25 +45,4 @@ vieter_tree_error vieter_tree_remove(void **out, vieter_tree *tree, */ uint64_t vieter_tree_size(vieter_tree *tree); -/* - * An iterator that can be used to traverse a tree in-order. - */ -typedef struct vieter_tree_iterator vieter_tree_iterator; - -/* - * Allocate and initialize a new iterator from the given tree. - */ -vieter_tree_iterator *vieter_tree_iterator_from(vieter_tree *tree); - -/* - * Free an iterator. - */ -void vieter_tree_iterator_free(vieter_tree_iterator **ptp); - -/* - * Return the iterator's next element. - */ -vieter_tree_error vieter_tree_iterator_next(void **out, - vieter_tree_iterator *iter); - #endif diff --git a/src/job-queue/vieter_job_queue_internal.h b/src/job-queue/vieter_job_queue_internal.h deleted file mode 100644 index cbad8f8..0000000 --- a/src/job-queue/vieter_job_queue_internal.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef VIETER_JOB_QUEUE_INTERNAL -#define VIETER_JOB_QUEUE_INTERNAL - -#include "vieter_tree.h" - -struct vieter_job_queue { - vieter_tree *tree; - -}; - -#endif diff --git a/src/tree/vieter_tree.c b/src/tree/vieter_tree.c index 84a1a26..eef2aef 100644 --- a/src/tree/vieter_tree.c +++ b/src/tree/vieter_tree.c @@ -1,5 +1,11 @@ -#include "vieter_tree_balancing.h" #include "vieter_tree_internal.h" +#include "vieter_tree_node.h" +#include "vieter_tree_balancing.h" + +struct vieter_tree { + uint64_t size; + vieter_tree_node *root; +}; vieter_tree *vieter_tree_init() { return calloc(1, sizeof(vieter_tree)); } diff --git a/src/tree/vieter_tree_internal.h b/src/tree/vieter_tree_internal.h index 855139f..670d45b 100644 --- a/src/tree/vieter_tree_internal.h +++ b/src/tree/vieter_tree_internal.h @@ -1,22 +1,10 @@ #include "vieter_tree.h" -#include "vieter_tree_node.h" #include -struct vieter_tree { - uint64_t size; - vieter_tree_node *root; -}; - /* * Inspect whether the tree is still a valid red-black-tree. * * @return true if valid, false otherwise. */ bool vieter_tree_validate(vieter_tree *tree); - -struct vieter_tree_iterator { - vieter_tree_node *current_node; - bool started; - bool done; -}; diff --git a/src/tree/vieter_tree_iterator.c b/src/tree/vieter_tree_iterator.c deleted file mode 100644 index 4eefe02..0000000 --- a/src/tree/vieter_tree_iterator.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "vieter_tree.h" -#include "vieter_tree_internal.h" - -vieter_tree_iterator *vieter_tree_iterator_from(vieter_tree *tree) { - vieter_tree_iterator *iter = calloc(1, sizeof(vieter_tree_iterator)); - - // An empty tree's iterator will be done immediately - if (tree->size == 0) { - iter->started = true; - iter->done = true; - - return iter; - } - - iter->current_node = tree->root; - - return iter; -} - -vieter_tree_error vieter_tree_iterator_next(void **out, - vieter_tree_iterator *iter) { - if (iter->done) { - return vieter_tree_iterator_done; - } - - if (!iter->started) { - while (iter->current_node->children[0] != NULL) { - iter->current_node = iter->current_node->children[0]; - } - - iter->started = true; - } - - *out = iter->current_node->data; - - iter->current_node = vieter_tree_node_next(iter->current_node); - - if (iter->current_node == NULL) { - iter->done = true; - } - - return vieter_tree_ok; -} - -void vieter_tree_iterator_free(vieter_tree_iterator **ptp) { - free(*ptp); - - *ptp = NULL; -} diff --git a/src/tree/vieter_tree_node.c b/src/tree/vieter_tree_node.c index 0a8e658..e58092e 100644 --- a/src/tree/vieter_tree_node.c +++ b/src/tree/vieter_tree_node.c @@ -150,22 +150,3 @@ void vieter_tree_node_set(vieter_tree_node *node, vieter_tree_node_flag flag, bool vieter_tree_node_get(vieter_tree_node *node, vieter_tree_node_flag flag) { return (node->flags & flag) != 0; } - -vieter_tree_node *vieter_tree_node_next(vieter_tree_node *node) { - if (node->children[1] != NULL) { - node = node->children[1]; - - while (node->children[0] != NULL) { - node = node->children[0]; - } - - return node; - } - - while (node->parent != NULL && - vieter_tree_node_get(node, vieter_tree_node_right)) { - node = node->parent; - } - - return node->parent; -} diff --git a/src/tree/vieter_tree_node.h b/src/tree/vieter_tree_node.h index 3cf8e56..3b1c169 100644 --- a/src/tree/vieter_tree_node.h +++ b/src/tree/vieter_tree_node.h @@ -77,10 +77,4 @@ void vieter_tree_node_set_children(vieter_tree_node *parent, vieter_tree_node ** */ void vieter_tree_node_set_child(vieter_tree_node *parent, vieter_tree_node *child, bool right); -/* - * Return the in-order successor of the given node, or NULL if it's the last - * node in the tree. - */ -vieter_tree_node *vieter_tree_node_next(vieter_tree_node *node); - #endif diff --git a/test/tree/test_tree.c b/test/tree/test_tree.c index 10235cb..2ab6870 100644 --- a/test/tree/test_tree.c +++ b/test/tree/test_tree.c @@ -16,30 +16,19 @@ void test_insert() { vieter_tree *tree = vieter_tree_init(); for (uint64_t i = 0; i < 250; i++) { - TEST_CHECK(vieter_tree_insert(tree, i, (void *)i) == vieter_tree_ok); + TEST_CHECK(vieter_tree_insert(tree, i, NULL) == vieter_tree_ok); TEST_SIZE(tree, i + 1); TEST_CHECK(vieter_tree_validate(tree)); } - vieter_tree_iterator *iter = vieter_tree_iterator_from(tree); - - void *out = NULL; + void *out; for (uint64_t i = 0; i < 250; i++) { TEST_CHECK(vieter_tree_search(&out, tree, i) == vieter_tree_ok); - TEST_CHECK(out == (void *)i); TEST_CHECK(vieter_tree_insert(tree, i, NULL) == vieter_tree_already_present); TEST_CHECK(vieter_tree_search(&out, tree, i) == vieter_tree_ok); - - out = NULL; - - TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_ok); - TEST_CHECK(out == (void *)i); } - TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_iterator_done); - - vieter_tree_iterator_free(&iter); vieter_tree_free(tree); } diff --git a/test/tree/test_tree_random.c b/test/tree/test_tree_random.c deleted file mode 100644 index d1b9ab0..0000000 --- a/test/tree/test_tree_random.c +++ /dev/null @@ -1,59 +0,0 @@ -#include "acutest.h" -#include "vieter_tree_internal.h" - -#define TEST_SIZE(tree, size) \ - TEST_CHECK(vieter_tree_size(tree) == size); \ - TEST_MSG("Size: %zu", vieter_tree_size(tree)) - -int uint64_t_compare(const void *a, const void *b) { - if ((*(uint64_t *)a) < (*(uint64_t *)b)) { - return -1; - } else if ((*(uint64_t *)a) > (*(uint64_t *)b)) { - return 1; - } else { - return 0; - } -} - -void test_insert_random() { - const uint64_t n = 1000; - srand(0); - - vieter_tree *tree = vieter_tree_init(); - - uint64_t *numbers = malloc(n * sizeof(uint64_t)); - uint64_t num; - void *out = NULL; - - for (uint64_t i = 0; i < n; i++) { - num = rand(); - vieter_tree_insert(tree, num, (void *)num); - TEST_SIZE(tree, i + 1); - TEST_CHECK(vieter_tree_validate(tree)); - TEST_CHECK(vieter_tree_search(&out, tree, num) == vieter_tree_ok); - TEST_CHECK(out == (void *)num); - - out = NULL; - - numbers[i] = num; - } - - qsort(numbers, n, sizeof(uint64_t), uint64_t_compare); - - vieter_tree_iterator *iter = vieter_tree_iterator_from(tree); - out = NULL; - - for (uint64_t i = 0; i < n; i++) { - TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_ok); - TEST_CHECK(out == (void *)numbers[i]); - } - - free(numbers); - vieter_tree_iterator_free(&iter); - vieter_tree_free(tree); -} - -TEST_LIST = { - {"tree insert random", test_insert_random}, - {NULL, NULL} -};