aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-04-22 10:29:35 -0700
committerNicholas Noll <nbnoll@eml.cc>2021-04-22 10:29:35 -0700
commit4b0ef5bf1644520bcec05a7b2f59d6787eb616f8 (patch)
tree0d92e510096020202a50c177db802dab77fba118 /include
parent4bee1c911c0a710da47b62a31e84535d2e0b7c76 (diff)
chore(refactor): explicit definition of useful interfaces
Diffstat (limited to 'include')
-rw-r--r--include/libn.h59
1 files changed, 38 insertions, 21 deletions
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);