From 7f1b6ff70b97e424ce73314809838c7cd94f3ae7 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Wed, 22 Apr 2020 19:51:30 -0700 Subject: feat: interfaces of newick io more general. can now take arbitrary readers/writers --- sys/libbio/test.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'sys/libbio/test.c') diff --git a/sys/libbio/test.c b/sys/libbio/test.c index 18bb993..3941290 100644 --- a/sys/libbio/test.c +++ b/sys/libbio/test.c @@ -33,6 +33,45 @@ bio·free(void *ptr) static mem·Allocator arena = {.alloc = &bio·alloc, .realloc = &bio·realloc, .free = &bio·free }; +// ----------------------------------------------------------------------- +// Read/writer + +static Stream* INPUT; + +static +byte +get() +{ + return io·getbyte(INPUT); +} + +static +error +unget(byte c) +{ + return io·ungetbyte(INPUT, c); +} + +static io·Peeker peeker = {.get = &get, .unget = &unget}; + +static Stream* OUTPUT; + +static +error +put(byte b) +{ + return io·putbyte(OUTPUT, b); +} + +static +int +putstr(string s) +{ + return io·putstring(OUTPUT, s); +} + +static io·Putter putter = {.put = &put, .putstr = &putstr}; + // ----------------------------------------------------------------------- // Point of entry for testing @@ -54,11 +93,15 @@ main() fd[0] = io·open("/home/nolln/root/data/test/example.nwk", "r"); fd[1] = io·open("/home/nolln/root/data/test/example.proc.nwk", "w"); + INPUT = fd[0]; + OUTPUT = fd[1]; + printf("starting\n"); - t = bio·readnewick(fd[0], arena); - err = bio·writenewick(t, fd[1]); + t = bio·readnewick(peeker, arena); + err = bio·writenewick(t, putter); printf("ending\n"); + io·flush(fd[1]); io·close(fd[0]); io·close(fd[1]); return 0; } -- cgit v1.2.1