summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2021-02-17 08:57:56 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2021-02-17 08:57:56 +0200
commit26ab990a747ab675bcff32a40734dcb61468f652 (patch)
treeef820c67202a3fb97ff4b2ae5df7caf347403b58 /src/main.c
parente5a7592b606f6e75981fd48b32b3593a1d7c7f77 (diff)
downloadalgos-ld1-26ab990a747ab675bcff32a40734dcb61468f652.tar.gz
algos-ld1-26ab990a747ab675bcff32a40734dcb61468f652.tar.bz2
algos-ld1-26ab990a747ab675bcff32a40734dcb61468f652.zip
Most of sorting an array in memory is wired up.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/main.c b/src/main.c
index 390be6a..c2d24ce 100644
--- a/src/main.c
+++ b/src/main.c
@@ -12,6 +12,7 @@
#include "defs.h"
#include "cache.h"
#include "datagen.h"
+#include "mergesort.h"
static struct settings settings = {0};
@@ -64,11 +65,11 @@ int main(int argc, char **argv)
}
break;
case mode_generate:
- try_s((ret = cache_transfer(&file_in, &file_out)), out);
- break;
+ try_s((ret = cache_transfer(&file_in, &file_out)), out);
+ break;
case mode_normal:
- /* TODO */
- ;
+ try_s((ret = cache_create(&file_out)), out);
+ try_s((ret = merge_sort(&file_in, &file_out)), out);
}
} else { /* uncached */
@@ -175,21 +176,23 @@ int load_io_functions(struct settings const * const s, struct stream * const in)
if (in->type == stream_out) {
if (s->format == array) {
- /* TODO */
- } else {
+ in->get_next_element_cache = cached_get_array;
+ in->place_next_element_cache = cached_put_array;
+ } else { /* if (s->format == list */
/* TODO */
}
} else if (in->type == stream_in) { /* reading streams do not support dumping */
if (s->format == array) {
- /* TODO */
- } else {
+ in->get_next_element_cache = cached_get_array;
+ in->place_next_element_cache = cached_put_array;
+ } else { /* if (s->format == list */
/* TODO */
}
} else if (in->type == stream_randread) { /* data generation streams do not support dumping nor any cache I/O beyond initial data generation */
if (s->format == array) {
in->get_next_element_direct = gen_get_array;
in->place_next_element_cache = cached_put_array;
- } else {
+ } else { /* if (s->format == list */
in->get_next_element_direct = gen_get_list;
in->place_next_element_cache = cached_put_list;
}