Replace ios_t with struct
This commit is contained in:
parent
41cf0e7b2c
commit
f2fb37e520
|
@ -574,7 +574,7 @@ void to_sized_ptr(value_t v, char *fname, char **pdata, size_t *psz)
|
|||
{
|
||||
if (iscvalue(v)) {
|
||||
cvalue_t *pcv = (cvalue_t *)ptr(v);
|
||||
ios_t *x = value2c(ios_t *, v);
|
||||
struct ios *x = value2c(struct ios *, v);
|
||||
if (cv_class(pcv) == iostreamtype && (x->bm == bm_mem)) {
|
||||
*pdata = x->buf;
|
||||
*psz = x->size;
|
||||
|
|
3
c/dump.c
3
c/dump.c
|
@ -11,7 +11,8 @@ static char hexdig[] = "0123456789abcdef";
|
|||
display a given number of bytes from a buffer, with the first
|
||||
address label being startoffs
|
||||
*/
|
||||
void hexdump(ios_t *dest, const char *buffer, size_t len, size_t startoffs)
|
||||
void hexdump(struct ios *dest, const char *buffer, size_t len,
|
||||
size_t startoffs)
|
||||
{
|
||||
size_t offs = 0;
|
||||
size_t i, pos;
|
||||
|
|
|
@ -2608,7 +2608,7 @@ int fl_load_system_image(value_t sys_image_iostream)
|
|||
{
|
||||
while (1) {
|
||||
e = fl_read_sexpr(Stack[SP - 1]);
|
||||
if (ios_eof(value2c(ios_t *, Stack[SP - 1])))
|
||||
if (ios_eof(value2c(struct ios *, Stack[SP - 1])))
|
||||
break;
|
||||
if (isfunction(e)) {
|
||||
// stage 0 format: series of thunks
|
||||
|
@ -2635,7 +2635,7 @@ int fl_load_system_image(value_t sys_image_iostream)
|
|||
ios_putc('\n', ios_stderr);
|
||||
return 1;
|
||||
}
|
||||
ios_close(value2c(ios_t *, Stack[SP - 1]));
|
||||
ios_close(value2c(struct ios *, Stack[SP - 1]));
|
||||
POPN(1);
|
||||
return 0;
|
||||
}
|
||||
|
|
12
c/flisp.h
12
c/flisp.h
|
@ -133,7 +133,7 @@ extern value_t FL_NIL, FL_T, FL_F, FL_EOF;
|
|||
|
||||
/* read, eval, print main entry points */
|
||||
value_t fl_read_sexpr(value_t f);
|
||||
void fl_print(ios_t *f, value_t v);
|
||||
void fl_print(struct ios *f, value_t v);
|
||||
value_t fl_toplevel_eval(value_t expr);
|
||||
value_t fl_apply(value_t f, value_t l);
|
||||
value_t fl_applyn(uint32_t n, value_t f, ...);
|
||||
|
@ -212,7 +212,7 @@ static inline void argcount(char *fname, uint32_t nargs, uint32_t c)
|
|||
}
|
||||
|
||||
typedef struct {
|
||||
void (*print)(value_t self, ios_t *f);
|
||||
void (*print)(value_t self, struct ios *f);
|
||||
void (*relocate)(value_t oldv, value_t newv);
|
||||
void (*finalize)(value_t self);
|
||||
void (*print_traverse)(value_t self);
|
||||
|
@ -244,9 +244,9 @@ typedef enum {
|
|||
|
||||
value_t relocate_lispvalue(value_t v);
|
||||
void print_traverse(value_t v);
|
||||
void fl_print_chr(char c, ios_t *f);
|
||||
void fl_print_str(char *s, ios_t *f);
|
||||
void fl_print_child(ios_t *f, value_t v);
|
||||
void fl_print_chr(char c, struct ios *f);
|
||||
void fl_print_str(char *s, struct ios *f);
|
||||
void fl_print_child(struct ios *f, value_t v);
|
||||
|
||||
typedef int (*cvinitfunc_t)(struct _fltype_t *, value_t, void *);
|
||||
|
||||
|
@ -367,7 +367,7 @@ int fl_isstring(value_t v);
|
|||
int fl_isnumber(value_t v);
|
||||
int fl_isgensym(value_t v);
|
||||
int fl_isiostream(value_t v);
|
||||
ios_t *fl_toiostream(value_t v, char *fname);
|
||||
struct ios *fl_toiostream(value_t v, char *fname);
|
||||
value_t cvalue_compare(value_t a, value_t b);
|
||||
int numeric_compare(value_t a, value_t b, int eq, int eqnans, char *fname);
|
||||
|
||||
|
|
100
c/ios.c
100
c/ios.c
|
@ -147,7 +147,7 @@ static int _os_write_all(long fd, void *buf, size_t n, size_t *nwritten)
|
|||
|
||||
/* internal utility functions */
|
||||
|
||||
static char *_buf_realloc(ios_t *s, size_t sz)
|
||||
static char *_buf_realloc(struct ios *s, size_t sz)
|
||||
{
|
||||
char *temp;
|
||||
|
||||
|
@ -186,7 +186,7 @@ static char *_buf_realloc(ios_t *s, size_t sz)
|
|||
|
||||
// write a block of data into the buffer at the current position, resizing
|
||||
// if necessary. returns # written.
|
||||
static size_t _write_grow(ios_t *s, char *data, size_t n)
|
||||
static size_t _write_grow(struct ios *s, char *data, size_t n)
|
||||
{
|
||||
size_t amt;
|
||||
size_t newsize;
|
||||
|
@ -222,7 +222,7 @@ static size_t _write_grow(ios_t *s, char *data, size_t n)
|
|||
|
||||
/* interface functions, low level */
|
||||
|
||||
static size_t _ios_read(ios_t *s, char *dest, size_t n, int all)
|
||||
static size_t _ios_read(struct ios *s, char *dest, size_t n, int all)
|
||||
{
|
||||
size_t tot = 0;
|
||||
size_t got, avail;
|
||||
|
@ -283,17 +283,17 @@ static size_t _ios_read(ios_t *s, char *dest, size_t n, int all)
|
|||
return tot;
|
||||
}
|
||||
|
||||
size_t ios_read(ios_t *s, char *dest, size_t n)
|
||||
size_t ios_read(struct ios *s, char *dest, size_t n)
|
||||
{
|
||||
return _ios_read(s, dest, n, 0);
|
||||
}
|
||||
|
||||
size_t ios_readall(ios_t *s, char *dest, size_t n)
|
||||
size_t ios_readall(struct ios *s, char *dest, size_t n)
|
||||
{
|
||||
return _ios_read(s, dest, n, 1);
|
||||
}
|
||||
|
||||
size_t ios_readprep(ios_t *s, size_t n)
|
||||
size_t ios_readprep(struct ios *s, size_t n)
|
||||
{
|
||||
if (s->state == bst_wr && s->bm != bm_mem) {
|
||||
ios_flush(s);
|
||||
|
@ -324,7 +324,7 @@ size_t ios_readprep(ios_t *s, size_t n)
|
|||
return s->size - s->bpos;
|
||||
}
|
||||
|
||||
static void _write_update_pos(ios_t *s)
|
||||
static void _write_update_pos(struct ios *s)
|
||||
{
|
||||
if (s->bpos > s->ndirty)
|
||||
s->ndirty = s->bpos;
|
||||
|
@ -332,7 +332,7 @@ static void _write_update_pos(ios_t *s)
|
|||
s->size = s->bpos;
|
||||
}
|
||||
|
||||
size_t ios_write(ios_t *s, char *data, size_t n)
|
||||
size_t ios_write(struct ios *s, char *data, size_t n)
|
||||
{
|
||||
if (s->readonly)
|
||||
return 0;
|
||||
|
@ -388,7 +388,7 @@ size_t ios_write(ios_t *s, char *data, size_t n)
|
|||
return wrote;
|
||||
}
|
||||
|
||||
off_t ios_seek(ios_t *s, off_t pos)
|
||||
off_t ios_seek(struct ios *s, off_t pos)
|
||||
{
|
||||
s->_eof = 0;
|
||||
if (s->bm == bm_mem) {
|
||||
|
@ -405,7 +405,7 @@ off_t ios_seek(ios_t *s, off_t pos)
|
|||
return 0;
|
||||
}
|
||||
|
||||
off_t ios_seek_end(ios_t *s)
|
||||
off_t ios_seek_end(struct ios *s)
|
||||
{
|
||||
s->_eof = 1;
|
||||
if (s->bm == bm_mem) {
|
||||
|
@ -420,7 +420,7 @@ off_t ios_seek_end(ios_t *s)
|
|||
return 0;
|
||||
}
|
||||
|
||||
off_t ios_skip(ios_t *s, off_t offs)
|
||||
off_t ios_skip(struct ios *s, off_t offs)
|
||||
{
|
||||
if (offs != 0) {
|
||||
if (offs > 0) {
|
||||
|
@ -454,7 +454,7 @@ off_t ios_skip(ios_t *s, off_t offs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
off_t ios_pos(ios_t *s)
|
||||
off_t ios_pos(struct ios *s)
|
||||
{
|
||||
if (s->bm == bm_mem)
|
||||
return (off_t)s->bpos;
|
||||
|
@ -474,7 +474,7 @@ off_t ios_pos(ios_t *s)
|
|||
return fdpos;
|
||||
}
|
||||
|
||||
size_t ios_trunc(ios_t *s, size_t size)
|
||||
size_t ios_trunc(struct ios *s, size_t size)
|
||||
{
|
||||
if (s->bm == bm_mem) {
|
||||
if (size == s->size)
|
||||
|
@ -493,7 +493,7 @@ size_t ios_trunc(ios_t *s, size_t size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ios_eof(ios_t *s)
|
||||
int ios_eof(struct ios *s)
|
||||
{
|
||||
if (s->bm == bm_mem)
|
||||
return (s->_eof ? 1 : 0);
|
||||
|
@ -504,7 +504,7 @@ int ios_eof(ios_t *s)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ios_flush(ios_t *s)
|
||||
int ios_flush(struct ios *s)
|
||||
{
|
||||
if (s->ndirty == 0 || s->bm == bm_mem || s->buf == NULL)
|
||||
return 0;
|
||||
|
@ -548,7 +548,7 @@ int ios_flush(ios_t *s)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ios_close(ios_t *s)
|
||||
void ios_close(struct ios *s)
|
||||
{
|
||||
ios_flush(s);
|
||||
if (s->fd != -1 && s->ownfd)
|
||||
|
@ -560,7 +560,7 @@ void ios_close(ios_t *s)
|
|||
s->size = s->maxsize = s->bpos = 0;
|
||||
}
|
||||
|
||||
static void _buf_init(ios_t *s, bufmode_t bm)
|
||||
static void _buf_init(struct ios *s, bufmode_t bm)
|
||||
{
|
||||
s->bm = bm;
|
||||
if (s->bm == bm_mem || s->bm == bm_none) {
|
||||
|
@ -573,7 +573,7 @@ static void _buf_init(ios_t *s, bufmode_t bm)
|
|||
s->size = s->bpos = 0;
|
||||
}
|
||||
|
||||
char *ios_takebuf(ios_t *s, size_t *psize)
|
||||
char *ios_takebuf(struct ios *s, size_t *psize)
|
||||
{
|
||||
char *buf;
|
||||
|
||||
|
@ -598,7 +598,7 @@ char *ios_takebuf(ios_t *s, size_t *psize)
|
|||
return buf;
|
||||
}
|
||||
|
||||
int ios_setbuf(ios_t *s, char *buf, size_t size, int own)
|
||||
int ios_setbuf(struct ios *s, char *buf, size_t size, int own)
|
||||
{
|
||||
ios_flush(s);
|
||||
size_t nvalid = 0;
|
||||
|
@ -620,7 +620,7 @@ int ios_setbuf(ios_t *s, char *buf, size_t size, int own)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ios_bufmode(ios_t *s, bufmode_t mode)
|
||||
int ios_bufmode(struct ios *s, bufmode_t mode)
|
||||
{
|
||||
// no fd; can only do mem-only buffering
|
||||
if (s->fd == -1 && mode != bm_mem)
|
||||
|
@ -629,7 +629,7 @@ int ios_bufmode(ios_t *s, bufmode_t mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ios_set_readonly(ios_t *s)
|
||||
void ios_set_readonly(struct ios *s)
|
||||
{
|
||||
if (s->readonly)
|
||||
return;
|
||||
|
@ -638,7 +638,8 @@ void ios_set_readonly(ios_t *s)
|
|||
s->readonly = 1;
|
||||
}
|
||||
|
||||
static size_t ios_copy_(ios_t *to, ios_t *from, size_t nbytes, bool_t all)
|
||||
static size_t ios_copy_(struct ios *to, struct ios *from, size_t nbytes,
|
||||
bool_t all)
|
||||
{
|
||||
size_t total = 0, avail;
|
||||
if (!ios_eof(from)) {
|
||||
|
@ -666,19 +667,19 @@ static size_t ios_copy_(ios_t *to, ios_t *from, size_t nbytes, bool_t all)
|
|||
return total;
|
||||
}
|
||||
|
||||
size_t ios_copy(ios_t *to, ios_t *from, size_t nbytes)
|
||||
size_t ios_copy(struct ios *to, struct ios *from, size_t nbytes)
|
||||
{
|
||||
return ios_copy_(to, from, nbytes, 0);
|
||||
}
|
||||
|
||||
size_t ios_copyall(ios_t *to, ios_t *from)
|
||||
size_t ios_copyall(struct ios *to, struct ios *from)
|
||||
{
|
||||
return ios_copy_(to, from, 0, 1);
|
||||
}
|
||||
|
||||
#define LINE_CHUNK_SIZE 160
|
||||
|
||||
size_t ios_copyuntil(ios_t *to, ios_t *from, char delim)
|
||||
size_t ios_copyuntil(struct ios *to, struct ios *from, char delim)
|
||||
{
|
||||
size_t total = 0, avail = from->size - from->bpos;
|
||||
int first = 1;
|
||||
|
@ -708,7 +709,7 @@ size_t ios_copyuntil(ios_t *to, ios_t *from, char delim)
|
|||
return total;
|
||||
}
|
||||
|
||||
static void _ios_init(ios_t *s)
|
||||
static void _ios_init(struct ios *s)
|
||||
{
|
||||
// put all fields in a sane initial state
|
||||
s->bm = bm_block;
|
||||
|
@ -731,7 +732,8 @@ static void _ios_init(ios_t *s)
|
|||
|
||||
/* stream object initializers. we do no allocation. */
|
||||
|
||||
ios_t *ios_file(ios_t *s, char *fname, int rd, int wr, int create, int trunc)
|
||||
struct ios *ios_file(struct ios *s, char *fname, int rd, int wr, int create,
|
||||
int trunc)
|
||||
{
|
||||
int fd;
|
||||
if (!(rd || wr))
|
||||
|
@ -754,7 +756,7 @@ open_file_err:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ios_t *ios_mem(ios_t *s, size_t initsize)
|
||||
struct ios *ios_mem(struct ios *s, size_t initsize)
|
||||
{
|
||||
_ios_init(s);
|
||||
s->bm = bm_mem;
|
||||
|
@ -762,7 +764,7 @@ ios_t *ios_mem(ios_t *s, size_t initsize)
|
|||
return s;
|
||||
}
|
||||
|
||||
ios_t *ios_str(ios_t *s, char *str)
|
||||
struct ios *ios_str(struct ios *s, char *str)
|
||||
{
|
||||
size_t n = strlen(str);
|
||||
if (ios_mem(s, n + 1) == NULL)
|
||||
|
@ -772,7 +774,7 @@ ios_t *ios_str(ios_t *s, char *str)
|
|||
return s;
|
||||
}
|
||||
|
||||
ios_t *ios_static_buffer(ios_t *s, char *buf, size_t sz)
|
||||
struct ios *ios_static_buffer(struct ios *s, char *buf, size_t sz)
|
||||
{
|
||||
ios_mem(s, 0);
|
||||
ios_setbuf(s, buf, sz, 0);
|
||||
|
@ -781,7 +783,7 @@ ios_t *ios_static_buffer(ios_t *s, char *buf, size_t sz)
|
|||
return s;
|
||||
}
|
||||
|
||||
ios_t *ios_fd(ios_t *s, long fd, int isfile, int own)
|
||||
struct ios *ios_fd(struct ios *s, long fd, int isfile, int own)
|
||||
{
|
||||
_ios_init(s);
|
||||
s->fd = fd;
|
||||
|
@ -794,27 +796,27 @@ ios_t *ios_fd(ios_t *s, long fd, int isfile, int own)
|
|||
return s;
|
||||
}
|
||||
|
||||
ios_t *ios_stdin = NULL;
|
||||
ios_t *ios_stdout = NULL;
|
||||
ios_t *ios_stderr = NULL;
|
||||
struct ios *ios_stdin = NULL;
|
||||
struct ios *ios_stdout = NULL;
|
||||
struct ios *ios_stderr = NULL;
|
||||
|
||||
void ios_init_stdstreams()
|
||||
{
|
||||
ios_stdin = LLT_ALLOC(sizeof(ios_t));
|
||||
ios_stdin = LLT_ALLOC(sizeof(struct ios));
|
||||
ios_fd(ios_stdin, STDIN_FILENO, 0, 0);
|
||||
|
||||
ios_stdout = LLT_ALLOC(sizeof(ios_t));
|
||||
ios_stdout = LLT_ALLOC(sizeof(struct ios));
|
||||
ios_fd(ios_stdout, STDOUT_FILENO, 0, 0);
|
||||
ios_stdout->bm = bm_line;
|
||||
|
||||
ios_stderr = LLT_ALLOC(sizeof(ios_t));
|
||||
ios_stderr = LLT_ALLOC(sizeof(struct ios));
|
||||
ios_fd(ios_stderr, STDERR_FILENO, 0, 0);
|
||||
ios_stderr->bm = bm_none;
|
||||
}
|
||||
|
||||
/* higher level interface */
|
||||
|
||||
int ios_putc(int c, ios_t *s)
|
||||
int ios_putc(int c, struct ios *s)
|
||||
{
|
||||
char ch = (char)c;
|
||||
|
||||
|
@ -828,7 +830,7 @@ int ios_putc(int c, ios_t *s)
|
|||
return (int)ios_write(s, &ch, 1);
|
||||
}
|
||||
|
||||
int ios_getc(ios_t *s)
|
||||
int ios_getc(struct ios *s)
|
||||
{
|
||||
char ch;
|
||||
if (s->state == bst_rd && s->bpos < s->size) {
|
||||
|
@ -844,7 +846,7 @@ int ios_getc(ios_t *s)
|
|||
return (unsigned char)ch;
|
||||
}
|
||||
|
||||
int ios_peekc(ios_t *s)
|
||||
int ios_peekc(struct ios *s)
|
||||
{
|
||||
if (s->bpos < s->size)
|
||||
return (unsigned char)s->buf[s->bpos];
|
||||
|
@ -856,7 +858,7 @@ int ios_peekc(ios_t *s)
|
|||
return (unsigned char)s->buf[s->bpos];
|
||||
}
|
||||
|
||||
int ios_ungetc(int c, ios_t *s)
|
||||
int ios_ungetc(int c, struct ios *s)
|
||||
{
|
||||
if (s->state == bst_wr)
|
||||
return IOS_EOF;
|
||||
|
@ -877,7 +879,7 @@ int ios_ungetc(int c, ios_t *s)
|
|||
return c;
|
||||
}
|
||||
|
||||
int ios_getutf8(ios_t *s, uint32_t *pwc)
|
||||
int ios_getutf8(struct ios *s, uint32_t *pwc)
|
||||
{
|
||||
int c;
|
||||
size_t sz;
|
||||
|
@ -904,7 +906,7 @@ int ios_getutf8(ios_t *s, uint32_t *pwc)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int ios_peekutf8(ios_t *s, uint32_t *pwc)
|
||||
int ios_peekutf8(struct ios *s, uint32_t *pwc)
|
||||
{
|
||||
int c;
|
||||
size_t sz;
|
||||
|
@ -926,7 +928,7 @@ int ios_peekutf8(ios_t *s, uint32_t *pwc)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int ios_pututf8(ios_t *s, uint32_t wc)
|
||||
int ios_pututf8(struct ios *s, uint32_t wc)
|
||||
{
|
||||
char buf[8];
|
||||
if (wc < 0x80)
|
||||
|
@ -935,16 +937,16 @@ int ios_pututf8(ios_t *s, uint32_t wc)
|
|||
return ios_write(s, buf, n);
|
||||
}
|
||||
|
||||
void ios_purge(ios_t *s)
|
||||
void ios_purge(struct ios *s)
|
||||
{
|
||||
if (s->state == bst_rd) {
|
||||
s->bpos = s->size;
|
||||
}
|
||||
}
|
||||
|
||||
char *ios_readline(ios_t *s)
|
||||
char *ios_readline(struct ios *s)
|
||||
{
|
||||
ios_t dest;
|
||||
struct ios dest;
|
||||
ios_mem(&dest, 0);
|
||||
ios_copyuntil(&dest, s, '\n');
|
||||
size_t n;
|
||||
|
@ -953,7 +955,7 @@ char *ios_readline(ios_t *s)
|
|||
|
||||
int vasprintf(char **strp, const char *fmt, va_list ap);
|
||||
|
||||
int ios_vprintf(ios_t *s, const char *format, va_list args)
|
||||
int ios_vprintf(struct ios *s, const char *format, va_list args)
|
||||
{
|
||||
char *str = NULL;
|
||||
int c;
|
||||
|
@ -989,7 +991,7 @@ int ios_vprintf(ios_t *s, const char *format, va_list args)
|
|||
return c;
|
||||
}
|
||||
|
||||
int ios_printf(ios_t *s, const char *format, ...)
|
||||
int ios_printf(struct ios *s, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
int c;
|
||||
|
|
117
c/ios.h
117
c/ios.h
|
@ -11,7 +11,7 @@ typedef enum { bst_none, bst_rd, bst_wr } bufstate_t;
|
|||
#define IOS_INLSIZE 54
|
||||
#define IOS_BUFSIZE 131072
|
||||
|
||||
typedef struct {
|
||||
struct ios {
|
||||
bufmode_t bm;
|
||||
|
||||
// the state only indicates where the underlying file position is relative
|
||||
|
@ -54,82 +54,85 @@ typedef struct {
|
|||
|
||||
// todo: mutex
|
||||
char local[IOS_INLSIZE];
|
||||
} ios_t;
|
||||
};
|
||||
|
||||
/* low-level interface functions */
|
||||
size_t ios_read(ios_t *s, char *dest, size_t n);
|
||||
size_t ios_readall(ios_t *s, char *dest, size_t n);
|
||||
size_t ios_write(ios_t *s, char *data, size_t n);
|
||||
off_t ios_seek(ios_t *s, off_t pos); // absolute seek
|
||||
off_t ios_seek_end(ios_t *s);
|
||||
off_t ios_skip(ios_t *s, off_t offs); // relative seek
|
||||
off_t ios_pos(ios_t *s); // get current position
|
||||
size_t ios_trunc(ios_t *s, size_t size);
|
||||
int ios_eof(ios_t *s);
|
||||
int ios_flush(ios_t *s);
|
||||
void ios_close(ios_t *s);
|
||||
char *ios_takebuf(ios_t *s, size_t *psize); // release buffer to caller
|
||||
size_t ios_read(struct ios *s, char *dest, size_t n);
|
||||
size_t ios_readall(struct ios *s, char *dest, size_t n);
|
||||
size_t ios_write(struct ios *s, char *data, size_t n);
|
||||
off_t ios_seek(struct ios *s, off_t pos); // absolute seek
|
||||
off_t ios_seek_end(struct ios *s);
|
||||
off_t ios_skip(struct ios *s, off_t offs); // relative seek
|
||||
off_t ios_pos(struct ios *s); // get current position
|
||||
size_t ios_trunc(struct ios *s, size_t size);
|
||||
int ios_eof(struct ios *s);
|
||||
int ios_flush(struct ios *s);
|
||||
void ios_close(struct ios *s);
|
||||
char *ios_takebuf(struct ios *s,
|
||||
size_t *psize); // release buffer to caller
|
||||
// set buffer space to use
|
||||
int ios_setbuf(ios_t *s, char *buf, size_t size, int own);
|
||||
int ios_bufmode(ios_t *s, bufmode_t mode);
|
||||
void ios_set_readonly(ios_t *s);
|
||||
size_t ios_copy(ios_t *to, ios_t *from, size_t nbytes);
|
||||
size_t ios_copyall(ios_t *to, ios_t *from);
|
||||
size_t ios_copyuntil(ios_t *to, ios_t *from, char delim);
|
||||
int ios_setbuf(struct ios *s, char *buf, size_t size, int own);
|
||||
int ios_bufmode(struct ios *s, bufmode_t mode);
|
||||
void ios_set_readonly(struct ios *s);
|
||||
size_t ios_copy(struct ios *to, struct ios *from, size_t nbytes);
|
||||
size_t ios_copyall(struct ios *to, struct ios *from);
|
||||
size_t ios_copyuntil(struct ios *to, struct ios *from, char delim);
|
||||
// ensure at least n bytes are buffered if possible. returns # available.
|
||||
size_t ios_readprep(ios_t *from, size_t n);
|
||||
// void ios_lock(ios_t *s);
|
||||
// int ios_trylock(ios_t *s);
|
||||
// int ios_unlock(ios_t *s);
|
||||
size_t ios_readprep(struct ios *from, size_t n);
|
||||
// void ios_lock(struct ios *s);
|
||||
// int struct iosrylock(struct ios *s);
|
||||
// int ios_unlock(struct ios *s);
|
||||
|
||||
/* stream creation */
|
||||
ios_t *ios_file(ios_t *s, char *fname, int rd, int wr, int create, int trunc);
|
||||
ios_t *ios_mem(ios_t *s, size_t initsize);
|
||||
ios_t *ios_str(ios_t *s, char *str);
|
||||
ios_t *ios_static_buffer(ios_t *s, char *buf, size_t sz);
|
||||
ios_t *ios_fd(ios_t *s, long fd, int isfile, int own);
|
||||
struct ios *ios_file(struct ios *s, char *fname, int rd, int wr, int create,
|
||||
int trunc);
|
||||
struct ios *ios_mem(struct ios *s, size_t initsize);
|
||||
struct ios *ios_str(struct ios *s, char *str);
|
||||
struct ios *ios_static_buffer(struct ios *s, char *buf, size_t sz);
|
||||
struct ios *ios_fd(struct ios *s, long fd, int isfile, int own);
|
||||
// todo: ios_socket
|
||||
extern ios_t *ios_stdin;
|
||||
extern ios_t *ios_stdout;
|
||||
extern ios_t *ios_stderr;
|
||||
extern struct ios *ios_stdin;
|
||||
extern struct ios *ios_stdout;
|
||||
extern struct ios *ios_stderr;
|
||||
void ios_init_stdstreams();
|
||||
|
||||
/* high-level functions - output */
|
||||
int ios_putnum(ios_t *s, char *data, uint32_t type);
|
||||
int ios_putint(ios_t *s, int n);
|
||||
int ios_pututf8(ios_t *s, uint32_t wc);
|
||||
int ios_putstringz(ios_t *s, char *str, bool_t do_write_nulterm);
|
||||
int ios_printf(ios_t *s, const char *format, ...);
|
||||
int ios_vprintf(ios_t *s, const char *format, va_list args);
|
||||
int ios_putnum(struct ios *s, char *data, uint32_t type);
|
||||
int ios_putint(struct ios *s, int n);
|
||||
int ios_pututf8(struct ios *s, uint32_t wc);
|
||||
int ios_putstringz(struct ios *s, char *str, bool_t do_write_nulterm);
|
||||
int ios_printf(struct ios *s, const char *format, ...);
|
||||
int ios_vprintf(struct ios *s, const char *format, va_list args);
|
||||
|
||||
void hexdump(ios_t *dest, const char *buffer, size_t len, size_t startoffs);
|
||||
void hexdump(struct ios *dest, const char *buffer, size_t len,
|
||||
size_t startoffs);
|
||||
|
||||
/* high-level stream functions - input */
|
||||
int ios_getnum(ios_t *s, char *data, uint32_t type);
|
||||
int ios_getutf8(ios_t *s, uint32_t *pwc);
|
||||
int ios_peekutf8(ios_t *s, uint32_t *pwc);
|
||||
int ios_ungetutf8(ios_t *s, uint32_t wc);
|
||||
int ios_getstringz(ios_t *dest, ios_t *src);
|
||||
int ios_getstringn(ios_t *dest, ios_t *src, size_t nchars);
|
||||
int ios_getline(ios_t *s, char **pbuf, size_t *psz);
|
||||
char *ios_readline(ios_t *s);
|
||||
int ios_getnum(struct ios *s, char *data, uint32_t type);
|
||||
int ios_getutf8(struct ios *s, uint32_t *pwc);
|
||||
int ios_peekutf8(struct ios *s, uint32_t *pwc);
|
||||
int ios_ungetutf8(struct ios *s, uint32_t wc);
|
||||
int ios_getstringz(struct ios *dest, struct ios *src);
|
||||
int ios_getstringn(struct ios *dest, struct ios *src, size_t nchars);
|
||||
int ios_getline(struct ios *s, char **pbuf, size_t *psz);
|
||||
char *ios_readline(struct ios *s);
|
||||
|
||||
// discard data buffered for reading
|
||||
void ios_purge(ios_t *s);
|
||||
void ios_purge(struct ios *s);
|
||||
|
||||
// seek by utf8 sequence increments
|
||||
int ios_nextutf8(ios_t *s);
|
||||
int ios_prevutf8(ios_t *s);
|
||||
int ios_nextutf8(struct ios *s);
|
||||
int ios_prevutf8(struct ios *s);
|
||||
|
||||
/* stdio-style functions */
|
||||
#define IOS_EOF (-1)
|
||||
int ios_putc(int c, ios_t *s);
|
||||
// wint_t ios_putwc(ios_t *s, wchar_t wc);
|
||||
int ios_getc(ios_t *s);
|
||||
int ios_peekc(ios_t *s);
|
||||
// wint_t ios_getwc(ios_t *s);
|
||||
int ios_ungetc(int c, ios_t *s);
|
||||
// wint_t ios_ungetwc(ios_t *s, wint_t wc);
|
||||
int ios_putc(int c, struct ios *s);
|
||||
// wint_t ios_putwc(struct ios *s, wchar_t wc);
|
||||
int ios_getc(struct ios *s);
|
||||
int ios_peekc(struct ios *s);
|
||||
// wint_t ios_getwc(struct ios *s);
|
||||
int ios_ungetc(int c, struct ios *s);
|
||||
// wint_t ios_ungetwc(struct ios *s, wint_t wc);
|
||||
#define ios_puts(str, s) ios_write(s, str, strlen(str))
|
||||
|
||||
/*
|
||||
|
|
91
c/iostream.c
91
c/iostream.c
|
@ -27,7 +27,7 @@ static value_t iostreamsym, rdsym, wrsym, apsym, crsym, truncsym;
|
|||
static value_t instrsym, outstrsym;
|
||||
fltype_t *iostreamtype;
|
||||
|
||||
void print_iostream(value_t v, ios_t *f)
|
||||
void print_iostream(value_t v, struct ios *f)
|
||||
{
|
||||
(void)v;
|
||||
fl_print_str("#<io stream>", f);
|
||||
|
@ -35,14 +35,14 @@ void print_iostream(value_t v, ios_t *f)
|
|||
|
||||
void free_iostream(value_t self)
|
||||
{
|
||||
ios_t *s = value2c(ios_t *, self);
|
||||
struct ios *s = value2c(struct ios *, self);
|
||||
ios_close(s);
|
||||
}
|
||||
|
||||
void relocate_iostream(value_t oldv, value_t newv)
|
||||
{
|
||||
ios_t *olds = value2c(ios_t *, oldv);
|
||||
ios_t *news = value2c(ios_t *, newv);
|
||||
struct ios *olds = value2c(struct ios *, oldv);
|
||||
struct ios *news = value2c(struct ios *, newv);
|
||||
if (news->buf == &olds->local[0]) {
|
||||
news->buf = &news->local[0];
|
||||
}
|
||||
|
@ -75,14 +75,17 @@ value_t fl_eof_objectp(value_t *args, uint32_t nargs)
|
|||
return (FL_EOF == args[0]) ? FL_T : FL_F;
|
||||
}
|
||||
|
||||
static ios_t *toiostream(value_t v, char *fname)
|
||||
static struct ios *toiostream(value_t v, char *fname)
|
||||
{
|
||||
if (!fl_isiostream(v))
|
||||
type_error(fname, "iostream", v);
|
||||
return value2c(ios_t *, v);
|
||||
return value2c(struct ios *, v);
|
||||
}
|
||||
|
||||
ios_t *fl_toiostream(value_t v, char *fname) { return toiostream(v, fname); }
|
||||
struct ios *fl_toiostream(value_t v, char *fname)
|
||||
{
|
||||
return toiostream(v, fname);
|
||||
}
|
||||
|
||||
value_t fl_file(value_t *args, uint32_t nargs)
|
||||
{
|
||||
|
@ -106,9 +109,9 @@ value_t fl_file(value_t *args, uint32_t nargs)
|
|||
}
|
||||
if ((r | w | c | t | a) == 0)
|
||||
r = 1; // default to reading
|
||||
value_t f = cvalue(iostreamtype, sizeof(ios_t));
|
||||
value_t f = cvalue(iostreamtype, sizeof(struct ios));
|
||||
char *fname = tostring(args[0], "file");
|
||||
ios_t *s = value2c(ios_t *, f);
|
||||
struct ios *s = value2c(struct ios *, f);
|
||||
if (ios_file(s, fname, r, w, c, t) == NULL)
|
||||
lerrorf(IOError, "file: could not open \"%s\"", fname);
|
||||
if (a)
|
||||
|
@ -120,8 +123,8 @@ value_t fl_buffer(value_t *args, u_int32_t nargs)
|
|||
{
|
||||
argcount("buffer", nargs, 0);
|
||||
(void)args;
|
||||
value_t f = cvalue(iostreamtype, sizeof(ios_t));
|
||||
ios_t *s = value2c(ios_t *, f);
|
||||
value_t f = cvalue(iostreamtype, sizeof(struct ios));
|
||||
struct ios *s = value2c(struct ios *, f);
|
||||
if (ios_mem(s, 0) == NULL)
|
||||
lerror(MemoryError, "buffer: could not allocate stream");
|
||||
return f;
|
||||
|
@ -141,7 +144,7 @@ value_t fl_read(value_t *args, u_int32_t nargs)
|
|||
fl_gc_handle(&arg);
|
||||
value_t v = fl_read_sexpr(arg);
|
||||
fl_free_gc_handles(1);
|
||||
if (ios_eof(value2c(ios_t *, arg)))
|
||||
if (ios_eof(value2c(struct ios *, arg)))
|
||||
return FL_EOF;
|
||||
return v;
|
||||
}
|
||||
|
@ -149,7 +152,7 @@ value_t fl_read(value_t *args, u_int32_t nargs)
|
|||
value_t fl_iogetc(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.getc", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.getc");
|
||||
struct ios *s = toiostream(args[0], "io.getc");
|
||||
uint32_t wc;
|
||||
if (ios_getutf8(s, &wc) == IOS_EOF)
|
||||
// lerror(IOError, "io.getc: end of file reached");
|
||||
|
@ -160,7 +163,7 @@ value_t fl_iogetc(value_t *args, u_int32_t nargs)
|
|||
value_t fl_iopeekc(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.peekc", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.peekc");
|
||||
struct ios *s = toiostream(args[0], "io.peekc");
|
||||
uint32_t wc;
|
||||
if (ios_peekutf8(s, &wc) == IOS_EOF)
|
||||
return FL_EOF;
|
||||
|
@ -170,7 +173,7 @@ value_t fl_iopeekc(value_t *args, u_int32_t nargs)
|
|||
value_t fl_ioputc(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.putc", nargs, 2);
|
||||
ios_t *s = toiostream(args[0], "io.putc");
|
||||
struct ios *s = toiostream(args[0], "io.putc");
|
||||
if (!iscprim(args[1]) || ((cprim_t *)ptr(args[1]))->type != wchartype)
|
||||
type_error("io.putc", "wchar", args[1]);
|
||||
uint32_t wc = *(uint32_t *)cp_data((cprim_t *)ptr(args[1]));
|
||||
|
@ -180,7 +183,7 @@ value_t fl_ioputc(value_t *args, u_int32_t nargs)
|
|||
value_t fl_ioungetc(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.ungetc", nargs, 2);
|
||||
ios_t *s = toiostream(args[0], "io.ungetc");
|
||||
struct ios *s = toiostream(args[0], "io.ungetc");
|
||||
if (!iscprim(args[1]) || ((cprim_t *)ptr(args[1]))->type != wchartype)
|
||||
type_error("io.ungetc", "wchar", args[1]);
|
||||
uint32_t wc = *(uint32_t *)cp_data((cprim_t *)ptr(args[1]));
|
||||
|
@ -193,7 +196,7 @@ value_t fl_ioungetc(value_t *args, u_int32_t nargs)
|
|||
value_t fl_ioflush(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.flush", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.flush");
|
||||
struct ios *s = toiostream(args[0], "io.flush");
|
||||
if (ios_flush(s) != 0)
|
||||
return FL_F;
|
||||
return FL_T;
|
||||
|
@ -202,7 +205,7 @@ value_t fl_ioflush(value_t *args, u_int32_t nargs)
|
|||
value_t fl_ioclose(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.close", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.close");
|
||||
struct ios *s = toiostream(args[0], "io.close");
|
||||
ios_close(s);
|
||||
return FL_T;
|
||||
}
|
||||
|
@ -210,7 +213,7 @@ value_t fl_ioclose(value_t *args, u_int32_t nargs)
|
|||
value_t fl_iopurge(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.discardbuffer", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.discardbuffer");
|
||||
struct ios *s = toiostream(args[0], "io.discardbuffer");
|
||||
ios_purge(s);
|
||||
return FL_T;
|
||||
}
|
||||
|
@ -218,14 +221,14 @@ value_t fl_iopurge(value_t *args, u_int32_t nargs)
|
|||
value_t fl_ioeof(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.eof?", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.eof?");
|
||||
struct ios *s = toiostream(args[0], "io.eof?");
|
||||
return (ios_eof(s) ? FL_T : FL_F);
|
||||
}
|
||||
|
||||
value_t fl_ioseek(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.seek", nargs, 2);
|
||||
ios_t *s = toiostream(args[0], "io.seek");
|
||||
struct ios *s = toiostream(args[0], "io.seek");
|
||||
size_t pos = toulong(args[1], "io.seek");
|
||||
off_t res = ios_seek(s, (off_t)pos);
|
||||
if (res == -1)
|
||||
|
@ -236,7 +239,7 @@ value_t fl_ioseek(value_t *args, u_int32_t nargs)
|
|||
value_t fl_iopos(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.pos", nargs, 1);
|
||||
ios_t *s = toiostream(args[0], "io.pos");
|
||||
struct ios *s = toiostream(args[0], "io.pos");
|
||||
off_t res = ios_pos(s);
|
||||
if (res == -1)
|
||||
return FL_F;
|
||||
|
@ -247,7 +250,7 @@ value_t fl_write(value_t *args, u_int32_t nargs)
|
|||
{
|
||||
if (nargs < 1 || nargs > 2)
|
||||
argcount("write", nargs, 1);
|
||||
ios_t *s;
|
||||
struct ios *s;
|
||||
if (nargs == 2)
|
||||
s = toiostream(args[1], "write");
|
||||
else
|
||||
|
@ -279,7 +282,7 @@ value_t fl_ioread(value_t *args, u_int32_t nargs)
|
|||
data = cv_data((cvalue_t *)ptr(cv));
|
||||
else
|
||||
data = cp_data((cprim_t *)ptr(cv));
|
||||
size_t got = ios_read(value2c(ios_t *, args[0]), data, n);
|
||||
size_t got = ios_read(value2c(struct ios *, args[0]), data, n);
|
||||
if (got < n)
|
||||
// lerror(IOError, "io.read: end of input reached");
|
||||
return FL_EOF;
|
||||
|
@ -305,7 +308,7 @@ value_t fl_iowrite(value_t *args, u_int32_t nargs)
|
|||
{
|
||||
if (nargs < 2 || nargs > 4)
|
||||
argcount("io.write", nargs, 2);
|
||||
ios_t *s = toiostream(args[0], "io.write");
|
||||
struct ios *s = toiostream(args[0], "io.write");
|
||||
if (iscprim(args[1]) && ((cprim_t *)ptr(args[1]))->type == wchartype) {
|
||||
if (nargs > 2)
|
||||
lerror(ArgError,
|
||||
|
@ -328,7 +331,7 @@ value_t fl_dump(value_t *args, u_int32_t nargs)
|
|||
{
|
||||
if (nargs < 1 || nargs > 3)
|
||||
argcount("dump", nargs, 1);
|
||||
ios_t *s = toiostream(symbol_value(outstrsym), "dump");
|
||||
struct ios *s = toiostream(symbol_value(outstrsym), "dump");
|
||||
char *data;
|
||||
size_t sz, offs = 0;
|
||||
to_sized_ptr(args[0], "dump", &data, &sz);
|
||||
|
@ -359,11 +362,11 @@ value_t fl_ioreaduntil(value_t *args, u_int32_t nargs)
|
|||
value_t str = cvalue_string(80);
|
||||
cvalue_t *cv = (cvalue_t *)ptr(str);
|
||||
char *data = cv_data(cv);
|
||||
ios_t dest;
|
||||
struct ios dest;
|
||||
ios_mem(&dest, 0);
|
||||
ios_setbuf(&dest, data, 80, 0);
|
||||
char delim = get_delim_arg(args[1], "io.readuntil");
|
||||
ios_t *src = toiostream(args[0], "io.readuntil");
|
||||
struct ios *src = toiostream(args[0], "io.readuntil");
|
||||
size_t n = ios_copyuntil(&dest, src, delim);
|
||||
cv->len = n;
|
||||
if (dest.buf != data) {
|
||||
|
@ -382,8 +385,8 @@ value_t fl_ioreaduntil(value_t *args, u_int32_t nargs)
|
|||
value_t fl_iocopyuntil(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.copyuntil", nargs, 3);
|
||||
ios_t *dest = toiostream(args[0], "io.copyuntil");
|
||||
ios_t *src = toiostream(args[1], "io.copyuntil");
|
||||
struct ios *dest = toiostream(args[0], "io.copyuntil");
|
||||
struct ios *src = toiostream(args[1], "io.copyuntil");
|
||||
char delim = get_delim_arg(args[2], "io.copyuntil");
|
||||
return size_wrap(ios_copyuntil(dest, src, delim));
|
||||
}
|
||||
|
@ -392,8 +395,8 @@ value_t fl_iocopy(value_t *args, u_int32_t nargs)
|
|||
{
|
||||
if (nargs < 2 || nargs > 3)
|
||||
argcount("io.copy", nargs, 2);
|
||||
ios_t *dest = toiostream(args[0], "io.copy");
|
||||
ios_t *src = toiostream(args[1], "io.copy");
|
||||
struct ios *dest = toiostream(args[0], "io.copy");
|
||||
struct ios *src = toiostream(args[1], "io.copy");
|
||||
if (nargs == 3) {
|
||||
size_t n = toulong(args[2], "io.copy");
|
||||
return size_wrap(ios_copy(dest, src, n));
|
||||
|
@ -405,12 +408,12 @@ value_t stream_to_string(value_t *ps)
|
|||
{
|
||||
value_t str;
|
||||
size_t n;
|
||||
ios_t *st = value2c(ios_t *, *ps);
|
||||
struct ios *st = value2c(struct ios *, *ps);
|
||||
if (st->buf == &st->local[0]) {
|
||||
n = st->size;
|
||||
str = cvalue_string(n);
|
||||
memcpy(cvalue_data(str), value2c(ios_t *, *ps)->buf, n);
|
||||
ios_trunc(value2c(ios_t *, *ps), 0);
|
||||
memcpy(cvalue_data(str), value2c(struct ios *, *ps)->buf, n);
|
||||
ios_trunc(value2c(struct ios *, *ps), 0);
|
||||
} else {
|
||||
char *b = ios_takebuf(st, &n);
|
||||
n--;
|
||||
|
@ -426,7 +429,7 @@ value_t stream_to_string(value_t *ps)
|
|||
value_t fl_iotostring(value_t *args, u_int32_t nargs)
|
||||
{
|
||||
argcount("io.tostring!", nargs, 1);
|
||||
ios_t *src = toiostream(args[0], "io.tostring!");
|
||||
struct ios *src = toiostream(args[0], "io.tostring!");
|
||||
if (src->bm != bm_mem)
|
||||
lerror(ArgError, "io.tostring!: requires memory stream");
|
||||
return stream_to_string(&args[0]);
|
||||
|
@ -471,14 +474,14 @@ void iostream_init(void)
|
|||
truncsym = symbol(":truncate");
|
||||
instrsym = symbol("*input-stream*");
|
||||
outstrsym = symbol("*output-stream*");
|
||||
iostreamtype =
|
||||
define_opaque_type(iostreamsym, sizeof(ios_t), &iostream_vtable, NULL);
|
||||
iostreamtype = define_opaque_type(iostreamsym, sizeof(struct ios),
|
||||
&iostream_vtable, NULL);
|
||||
assign_global_builtins(iostreamfunc_info);
|
||||
|
||||
setc(symbol("*stdout*"),
|
||||
cvalue_from_ref(iostreamtype, ios_stdout, sizeof(ios_t), FL_NIL));
|
||||
setc(symbol("*stderr*"),
|
||||
cvalue_from_ref(iostreamtype, ios_stderr, sizeof(ios_t), FL_NIL));
|
||||
setc(symbol("*stdin*"),
|
||||
cvalue_from_ref(iostreamtype, ios_stdin, sizeof(ios_t), FL_NIL));
|
||||
setc(symbol("*stdout*"), cvalue_from_ref(iostreamtype, ios_stdout,
|
||||
sizeof(struct ios), FL_NIL));
|
||||
setc(symbol("*stderr*"), cvalue_from_ref(iostreamtype, ios_stderr,
|
||||
sizeof(struct ios), FL_NIL));
|
||||
setc(symbol("*stdin*"), cvalue_from_ref(iostreamtype, ios_stdin,
|
||||
sizeof(struct ios), FL_NIL));
|
||||
}
|
||||
|
|
32
c/print.h
32
c/print.h
|
@ -10,7 +10,7 @@ static fixnum_t P_LEVEL;
|
|||
static int SCR_WIDTH = 80;
|
||||
|
||||
static int HPOS = 0, VPOS;
|
||||
static void outc(char c, ios_t *f)
|
||||
static void outc(char c, struct ios *f)
|
||||
{
|
||||
ios_putc(c, f);
|
||||
if (c == '\n')
|
||||
|
@ -18,17 +18,17 @@ static void outc(char c, ios_t *f)
|
|||
else
|
||||
HPOS++;
|
||||
}
|
||||
static void outs(char *s, ios_t *f)
|
||||
static void outs(char *s, struct ios *f)
|
||||
{
|
||||
ios_puts(s, f);
|
||||
HPOS += u8_strwidth(s);
|
||||
}
|
||||
static void outsn(char *s, ios_t *f, size_t n)
|
||||
static void outsn(char *s, struct ios *f, size_t n)
|
||||
{
|
||||
ios_write(f, s, n);
|
||||
HPOS += u8_strwidth(s);
|
||||
}
|
||||
static int outindent(int n, ios_t *f)
|
||||
static int outindent(int n, struct ios *f)
|
||||
{
|
||||
// move back to left margin if we get too indented
|
||||
if (n > SCR_WIDTH - 12)
|
||||
|
@ -44,9 +44,9 @@ static int outindent(int n, ios_t *f)
|
|||
return n0;
|
||||
}
|
||||
|
||||
void fl_print_chr(char c, ios_t *f) { outc(c, f); }
|
||||
void fl_print_chr(char c, struct ios *f) { outc(c, f); }
|
||||
|
||||
void fl_print_str(char *s, ios_t *f) { outs(s, f); }
|
||||
void fl_print_str(char *s, struct ios *f) { outs(s, f); }
|
||||
|
||||
void print_traverse(value_t v)
|
||||
{
|
||||
|
@ -96,7 +96,7 @@ void print_traverse(value_t v)
|
|||
}
|
||||
}
|
||||
|
||||
static void print_symbol_name(ios_t *f, char *name)
|
||||
static void print_symbol_name(struct ios *f, char *name)
|
||||
{
|
||||
int i, escape = 0, charescape = 0;
|
||||
|
||||
|
@ -243,7 +243,7 @@ static int blockindent(value_t v)
|
|||
return (allsmallp(v) > 9);
|
||||
}
|
||||
|
||||
static void print_pair(ios_t *f, value_t v)
|
||||
static void print_pair(struct ios *f, value_t v)
|
||||
{
|
||||
value_t cd;
|
||||
char *op = NULL;
|
||||
|
@ -334,9 +334,9 @@ static void print_pair(ios_t *f, value_t v)
|
|||
}
|
||||
}
|
||||
|
||||
static void cvalue_print(ios_t *f, value_t v);
|
||||
static void cvalue_print(struct ios *f, value_t v);
|
||||
|
||||
static int print_circle_prefix(ios_t *f, value_t v)
|
||||
static int print_circle_prefix(struct ios *f, value_t v)
|
||||
{
|
||||
value_t label;
|
||||
if ((label = (value_t)ptrhash_get(&printconses, (void *)v)) !=
|
||||
|
@ -352,7 +352,7 @@ static int print_circle_prefix(ios_t *f, value_t v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void fl_print_child(ios_t *f, value_t v)
|
||||
void fl_print_child(struct ios *f, value_t v)
|
||||
{
|
||||
char *name;
|
||||
if (print_level >= 0 && P_LEVEL >= print_level &&
|
||||
|
@ -469,7 +469,7 @@ void fl_print_child(ios_t *f, value_t v)
|
|||
P_LEVEL--;
|
||||
}
|
||||
|
||||
static void print_string(ios_t *f, char *str, size_t sz)
|
||||
static void print_string(struct ios *f, char *str, size_t sz)
|
||||
{
|
||||
char buf[512];
|
||||
size_t i = 0;
|
||||
|
@ -593,8 +593,8 @@ static numerictype_t sym_to_numtype(value_t type);
|
|||
// for example #int32(0) can be printed as just 0. this is used
|
||||
// printing in a context where a type is already implied, e.g. inside
|
||||
// an array.
|
||||
static void cvalue_printdata(ios_t *f, void *data, size_t len, value_t type,
|
||||
int weak)
|
||||
static void cvalue_printdata(struct ios *f, void *data, size_t len,
|
||||
value_t type, int weak)
|
||||
{
|
||||
if (type == bytesym) {
|
||||
unsigned char ch = *(unsigned char *)data;
|
||||
|
@ -778,7 +778,7 @@ static void cvalue_printdata(ios_t *f, void *data, size_t len, value_t type,
|
|||
}
|
||||
}
|
||||
|
||||
static void cvalue_print(ios_t *f, value_t v)
|
||||
static void cvalue_print(struct ios *f, value_t v)
|
||||
{
|
||||
cvalue_t *cv = (cvalue_t *)ptr(v);
|
||||
void *data = cptr(v);
|
||||
|
@ -817,7 +817,7 @@ static void set_print_width(void)
|
|||
SCR_WIDTH = numval(pw);
|
||||
}
|
||||
|
||||
void fl_print(ios_t *f, value_t v)
|
||||
void fl_print(struct ios *f, value_t v)
|
||||
{
|
||||
print_pretty = (symbol_value(printprettysym) != FL_F);
|
||||
if (print_pretty)
|
||||
|
|
4
c/read.h
4
c/read.h
|
@ -22,7 +22,7 @@ enum {
|
|||
TOK_DOUBLEQUOTE
|
||||
};
|
||||
|
||||
#define F value2c(ios_t *, readstate->source)
|
||||
#define F value2c(struct ios *, readstate->source)
|
||||
|
||||
// defines which characters are ordinary symbol characters.
|
||||
// exceptions are '.', which is an ordinary symbol character
|
||||
|
@ -121,7 +121,7 @@ static char nextchar(void)
|
|||
{
|
||||
int ch;
|
||||
char c;
|
||||
ios_t *f = F;
|
||||
struct ios *f = F;
|
||||
|
||||
do {
|
||||
if (f->bpos < f->size) {
|
||||
|
|
|
@ -144,7 +144,7 @@ value_t fl_string(value_t *args, u_int32_t nargs)
|
|||
return args[0];
|
||||
value_t arg, buf = fl_buffer(NULL, 0);
|
||||
fl_gc_handle(&buf);
|
||||
ios_t *s = value2c(ios_t *, buf);
|
||||
struct ios *s = value2c(struct ios *, buf);
|
||||
uint32_t i;
|
||||
value_t oldpr = symbol_value(printreadablysym);
|
||||
value_t oldpp = symbol_value(printprettysym);
|
||||
|
|
Loading…
Reference in New Issue