From 4b0ef5bf1644520bcec05a7b2f59d6787eb616f8 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 22 Apr 2021 10:29:35 -0700 Subject: chore(refactor): explicit definition of useful interfaces --- include/libn.h | 59 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 21 deletions(-) (limited to 'include') diff --git a/include/libn.h b/include/libn.h index 19fb43c..30b4c87 100644 --- a/include/libn.h +++ b/include/libn.h @@ -69,16 +69,14 @@ typedef struct mem·Allocator { void *(*alloc)(void *iface, uint n, ulong size); void (*free)(void *iface, void *ptr); } mem·Allocator; +extern mem·Allocator mem·System; typedef struct mem·Reallocator { void *(*alloc)(void *iface, uint n, ulong size); void *(*realloc)(void *iface, void *ptr, uint n, ulong size); void (*free)(void *iface, void *ptr); } mem·Reallocator; - -/* system implementation */ -extern mem·Allocator mem·sys; -extern mem·Reallocator mem·rsys; +extern mem·Reallocator mem·FullSystem; /* simple memory arena */ typedef struct mem·Arena mem·Arena; @@ -163,7 +161,7 @@ int utf8·istitle(rune r); // ----------------------------------------------------------------------------- // i/o -typedef FILE Stream; +typedef FILE io·Stream; typedef struct stat io·Stat; enum SeekPos @@ -181,19 +179,19 @@ enum }; /* file handling */ -Stream *io·open(byte *name, byte *mode); -int io·fd(Stream *s); -error io·stat(Stream *s, io·Stat *buf); -error io·close(Stream *s); -byte io·getbyte(Stream *s); -error io·ungetbyte(Stream *s, byte c); -int io·read(Stream *s, int sz, int n, void *buf); -int io·readln(Stream *s, int n, byte *buf); -error io·putbyte(Stream *s, byte c); -int io·putstring(Stream *s, string str); -int io·write(Stream *s, int sz, int n, void *buf); -int io·flush(Stream *s); -int io·seek(Stream *s, long off, enum SeekPos whence); +io·Stream *io·open(byte *name, byte *mode); +int io·fd(io·Stream *s); +error io·stat(io·Stream *s, io·Stat *buf); +error io·close(io·Stream *s); +byte io·getbyte(io·Stream *s); +error io·ungetbyte(io·Stream *s, byte c); +int io·read(io·Stream *s, int sz, int n, void *buf); +int io·readln(io·Stream *s, int n, byte *buf); +error io·putbyte(io·Stream *s, byte c); +int io·putstring(io·Stream *s, string str); +int io·write(io·Stream *s, int sz, int n, void *buf); +int io·flush(io·Stream *s); +int io·seek(io·Stream *s, long off, enum SeekPos whence); /* basic os helpers */ int os·exists(byte *path, int flag); @@ -205,46 +203,55 @@ typedef struct io·Reader { int (*read)(void*, int sz, int n, void *buf); } io·Reader; +extern io·Reader sys·Reader; +/* typedef struct io·LineReader { int (*readln)(void*, int n, void *buf); } io·LineReader; +*/ typedef struct io·Peeker { byte (*get)(void*); error (*unget)(void*, byte); } io·Peeker; +extern io·Peeker sys·Peeker; typedef struct io·FullReader { io·Reader; io·Peeker; } io·FullReader; +extern io·FullReader sys·FullReader; typedef struct io·Writer { int (*write)(void*, int sz, int n, void *buf); } io·Writer; +extern io·Writer sys·Writer; typedef struct io·Putter { - error (*put)(void*, byte); - int (*putstr)(void*, string); + error (*put) (void*, byte); + int (*puts)(void*, string); } io·Putter; +extern io·Putter sys·Putter; typedef struct io·FullWriter { io·Writer; io·Putter; } io·FullWriter; +extern io·FullWriter sys·FullWriter; typedef struct io·ReadWriter { io·Reader; io·Writer; } io·ReadWriter; +extern io·ReadWriter sys·ReadWriter; /* buffered i/o */ typedef struct io·Buffer io·Buffer; @@ -350,7 +357,17 @@ error flate·closewriter(flate·Writer *wtr); typedef void gz·Stream; -gz·Stream* gz·open(byte *path, byte *mode); +/* interfaces */ +extern io·Reader gz·Reader; +extern io·Peeker gz·Peeker; +extern io·FullReader gz·FullReader; + +extern io·Writer gz·Writer; +extern io·Putter gz·Putter; +extern io·FullWriter gz·FullWriter; +extern io·ReadWriter gz·ReadWriter; + +gz·Stream *gz·open(byte *path, byte *mode); error gz·close(gz·Stream* s); int gz·read(gz·Stream *s, int sz, int n, void* buf); int gz·readln(gz·Stream *s, int n, byte *buf); -- cgit v1.2.1