cosmetic changes

This commit is contained in:
Yuichi Nishiwaki 2016-02-19 14:50:12 +09:00
parent fe54b1315b
commit f0386657be
5 changed files with 74 additions and 131 deletions

View File

@ -1,5 +1,9 @@
#include "picrin.h" #include "picrin.h"
#ifndef EOF
# define EOF (-1)
#endif
xFILE *xfunopen(pic_state *pic, void *cookie, int (*read)(pic_state *, void *, char *, int), int (*write)(pic_state *, void *, const char *, int), long (*seek)(pic_state *, void *, long, int), int (*close)(pic_state *, void *)) { xFILE *xfunopen(pic_state *pic, void *cookie, int (*read)(pic_state *, void *, char *, int), int (*write)(pic_state *, void *, const char *, int), long (*seek)(pic_state *, void *, long, int), int (*close)(pic_state *, void *)) {
xFILE *fp; xFILE *fp;
@ -137,6 +141,15 @@ int xfflush(pic_state *pic, xFILE *f) {
return retval; return retval;
} }
#define xgetc(pic, p) \
((--(p)->cnt >= 0) \
? (unsigned char) *(p)->ptr++ \
: x_fillbuf((pic), p))
#define xputc(pic, x, p) \
((--(p)->cnt >= 0 && !(((p)->flag & X_LNBUF) && (x) == '\n')) \
? *(p)->ptr++ = (x) \
: x_flushbuf((pic), (x), (p)))
int xfputc(pic_state *pic, int x, xFILE *fp) { int xfputc(pic_state *pic, int x, xFILE *fp) {
return xputc(pic, x, fp); return xputc(pic, x, fp);
} }
@ -174,35 +187,6 @@ char *xfgets(pic_state *pic, char *s, int size, xFILE *stream) {
return (c == EOF && buf == s) ? NULL : s; return (c == EOF && buf == s) ? NULL : s;
} }
int xputs(pic_state *pic, const char *s) {
int i = 1;
while(*s != '\0') {
if (xputchar(pic, *s++) == EOF)
return EOF;
i++;
}
if (xputchar(pic, '\n') == EOF) {
return EOF;
}
return i;
}
char *xgets(pic_state *pic, char *s) {
int c;
char *buf;
xfflush(pic, NULL);
buf = s;
while ((c = xgetchar(pic)) != EOF && c != '\n') {
*buf++ = c;
}
*buf = '\0';
return (c == EOF && buf == s) ? NULL : s;
}
int xungetc(int c, xFILE *fp) { int xungetc(int c, xFILE *fp) {
unsigned char uc = c; unsigned char uc = c;
@ -270,25 +254,6 @@ long xfseek(pic_state *pic, xFILE *fp, long offset, int whence) {
return 0; return 0;
} }
long xftell(pic_state *pic, xFILE *fp) {
return xfseek(pic, fp, 0, XSEEK_CUR);
}
void xrewind(pic_state *pic, xFILE *fp) {
xfseek(pic, fp, 0, XSEEK_SET);
xclearerr(fp);
}
int xprintf(pic_state *pic, const char *fmt, ...) {
va_list ap;
int n;
va_start(ap, fmt);
n = xvfprintf(pic, xstdout, fmt, ap);
va_end(ap);
return n;
}
int xfprintf(pic_state *pic, xFILE *stream, const char *fmt, ...) { int xfprintf(pic_state *pic, xFILE *stream, const char *fmt, ...) {
va_list ap; va_list ap;
int n; int n;
@ -435,12 +400,13 @@ file_close(pic_state PIC_UNUSED(*pic), void *cookie) {
} }
xFILE *xfopen_file(pic_state *pic, FILE *fp, const char *mode) { xFILE *xfopen_file(pic_state *pic, FILE *fp, const char *mode) {
switch (*mode) { xFILE *f;
case 'r': if (*mode == 'r') {
return xfunopen(pic, fp, file_read, 0, file_seek, file_close); f = xfunopen(pic, fp, file_read, 0, file_seek, file_close);
default: } else {
return xfunopen(pic, fp, 0, file_write, file_seek, file_close); f = xfunopen(pic, fp, 0, file_write, file_seek, file_close);
} }
return f;
} }
#endif #endif

View File

@ -149,33 +149,35 @@ struct pic_string *pic_vstrf_value(pic_state *, const char *fmt, va_list ap);
struct pic_blob *pic_blob_value(pic_state *, const unsigned char *buf, int len); struct pic_blob *pic_blob_value(pic_state *, const unsigned char *buf, int len);
struct pic_data *pic_data_value(pic_state *, void *ptr, const pic_data_type *type); struct pic_data *pic_data_value(pic_state *, void *ptr, const pic_data_type *type);
#define PIC_TYPE_INVALID 1 enum {
#define PIC_TYPE_FLOAT 2 PIC_TYPE_INVALID = 1,
#define PIC_TYPE_INT 3 PIC_TYPE_FLOAT = 2,
#define PIC_TYPE_CHAR 4 PIC_TYPE_INT = 3,
#define PIC_TYPE_EOF 5 PIC_TYPE_CHAR = 4,
#define PIC_TYPE_UNDEF 6 PIC_TYPE_EOF = 5,
#define PIC_TYPE_TRUE 8 PIC_TYPE_UNDEF = 6,
#define PIC_TYPE_NIL 7 PIC_TYPE_TRUE = 8,
#define PIC_TYPE_FALSE 9 PIC_TYPE_NIL = 7,
#define PIC_IVAL_END 10 PIC_TYPE_FALSE = 9,
/* --------------------- */ PIC_IVAL_END = 10,
#define PIC_TYPE_STRING 16 /* -------------------- */
#define PIC_TYPE_VECTOR 17 PIC_TYPE_STRING = 16,
#define PIC_TYPE_BLOB 18 PIC_TYPE_VECTOR = 17,
#define PIC_TYPE_PROC 19 PIC_TYPE_BLOB = 18,
#define PIC_TYPE_PORT 20 PIC_TYPE_PROC = 19,
#define PIC_TYPE_ERROR 21 PIC_TYPE_PORT = 20,
#define PIC_TYPE_ID 22 PIC_TYPE_ERROR = 21,
#define PIC_TYPE_ENV 23 PIC_TYPE_ID = 22,
#define PIC_TYPE_DATA 24 PIC_TYPE_ENV = 23,
#define PIC_TYPE_DICT 25 PIC_TYPE_DATA = 24,
#define PIC_TYPE_WEAK 26 PIC_TYPE_DICT = 25,
#define PIC_TYPE_RECORD 27 PIC_TYPE_WEAK = 26,
#define PIC_TYPE_SYMBOL 28 PIC_TYPE_RECORD = 27,
#define PIC_TYPE_PAIR 29 PIC_TYPE_SYMBOL = 28,
#define PIC_TYPE_CXT 30 PIC_TYPE_PAIR = 29,
#define PIC_TYPE_CP 31 PIC_TYPE_CXT = 30,
PIC_TYPE_CP = 31
};
#define pic_undef_p(pic,v) (pic_type(pic,v) == PIC_TYPE_UNDEF) #define pic_undef_p(pic,v) (pic_type(pic,v) == PIC_TYPE_UNDEF)
#define pic_int_p(pic,v) (pic_type(pic,v) == PIC_TYPE_INT) #define pic_int_p(pic,v) (pic_type(pic,v) == PIC_TYPE_INT)

View File

@ -5,10 +5,6 @@
extern "C" { extern "C" {
#endif #endif
#ifndef EOF
# define EOF (-1)
#endif
#define XBUFSIZ 1024 #define XBUFSIZ 1024
#define XOPEN_MAX 1024 #define XOPEN_MAX 1024
@ -33,7 +29,7 @@ typedef struct {
#define xstdout (&pic->files[1]) #define xstdout (&pic->files[1])
#define xstderr (&pic->files[2]) #define xstderr (&pic->files[2])
enum _flags { enum {
X_READ = 01, X_READ = 01,
X_WRITE = 02, X_WRITE = 02,
X_UNBUF = 04, X_UNBUF = 04,
@ -45,23 +41,29 @@ enum _flags {
#define xclearerr(p) ((p)->flag &= ~(X_EOF | X_ERR)) #define xclearerr(p) ((p)->flag &= ~(X_EOF | X_ERR))
#define xfeof(p) (((p)->flag & X_EOF) != 0) #define xfeof(p) (((p)->flag & X_EOF) != 0)
#define xferror(p) (((p)->flag & X_ERR) != 0) #define xferror(p) (((p)->flag & X_ERR) != 0)
#define xfileno(p) ((p)->fd)
#define xgetc(pic, p) \
((--(p)->cnt >= 0) \
? (unsigned char) *(p)->ptr++ \
: x_fillbuf((pic), p))
#define xputc(pic, x, p) \
((--(p)->cnt >= 0 && !(((p)->flag & X_LNBUF) && (x) == '\n')) \
? *(p)->ptr++ = (x) \
: x_flushbuf((pic), (x), (p)))
#define xgetchar(pic) xgetc((pic), xstdin)
#define xputchar(pic, x) xputc((pic), (x), xstdout)
/* resource aquisition */
xFILE *xfunopen(pic_state *, void *cookie, int (*read)(pic_state *, void *, char *, int), int (*write)(pic_state *, void *, const char *, int), long (*seek)(pic_state *, void *, long, int), int (*close)(pic_state *, void *)); xFILE *xfunopen(pic_state *, void *cookie, int (*read)(pic_state *, void *, char *, int), int (*write)(pic_state *, void *, const char *, int), long (*seek)(pic_state *, void *, long, int), int (*close)(pic_state *, void *));
enum {
XSEEK_CUR,
XSEEK_END,
XSEEK_SET
};
size_t xfread(pic_state *, void *, size_t, size_t, xFILE *);
size_t xfwrite(pic_state *, const void *, size_t, size_t, xFILE *);
long xfseek(pic_state *, xFILE *, long, int);
int xfflush(pic_state *, xFILE *);
int xfclose(pic_state *, xFILE *); int xfclose(pic_state *, xFILE *);
int xfputc(pic_state *, int, xFILE *);
int xfgetc(pic_state *, xFILE *);
int xfputs(pic_state *, const char *, xFILE *);
char *xfgets(pic_state *, char *, int, xFILE *);
int xungetc(int, xFILE *);
int xfprintf(pic_state *, xFILE *, const char *, ...);
int xvfprintf(pic_state *, xFILE *, const char *, va_list);
#if PIC_ENABLE_STDIO #if PIC_ENABLE_STDIO
xFILE *xfopen_file(pic_state *, FILE *, const char *mode); xFILE *xfopen_file(pic_state *, FILE *, const char *mode);
#endif #endif
@ -69,39 +71,6 @@ xFILE *xfopen_buf(pic_state *, const char *buf, int len, const char *mode);
int xfget_buf(pic_state *, xFILE *file, const char **buf, int *len); int xfget_buf(pic_state *, xFILE *file, const char **buf, int *len);
xFILE *xfopen_null(pic_state *, const char *mode); xFILE *xfopen_null(pic_state *, const char *mode);
/* buffer management */
int x_fillbuf(pic_state *, xFILE *);
int x_flushbuf(pic_state *, int, xFILE *);
int xfflush(pic_state *, xFILE *);
/* direct IO */
size_t xfread(pic_state *, void *, size_t, size_t, xFILE *);
size_t xfwrite(pic_state *, const void *, size_t, size_t, xFILE *);
enum {
XSEEK_CUR,
XSEEK_END,
XSEEK_SET
};
/* indicator positioning */
long xfseek(pic_state *, xFILE *, long, int);
long xftell(pic_state *, xFILE *);
void xrewind(pic_state *, xFILE *);
/* character IO */
int xfputc(pic_state *, int, xFILE *);
int xfgetc(pic_state *, xFILE *);
int xfputs(pic_state *, const char *, xFILE *);
char *xfgets(pic_state *, char *, int, xFILE *);
int xputs(pic_state *, const char *);
int xungetc(int, xFILE *);
/* formatted I/O */
int xprintf(pic_state *, const char *, ...);
int xfprintf(pic_state *, xFILE *, const char *, ...);
int xvfprintf(pic_state *, xFILE *, const char *, va_list);
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif #endif

View File

@ -5,6 +5,9 @@
#include "picrin.h" #include "picrin.h"
#include "picrin/object.h" #include "picrin/object.h"
#undef EOF
#define EOF (-1)
struct pic_port * struct pic_port *
pic_make_port(pic_state *pic, xFILE *file) pic_make_port(pic_state *pic, xFILE *file)
{ {

View File

@ -5,6 +5,9 @@
#include "picrin.h" #include "picrin.h"
#include "picrin/object.h" #include "picrin/object.h"
#undef EOF
#define EOF (-1)
KHASH_DEFINE(read, int, pic_value, kh_int_hash_func, kh_int_hash_equal) KHASH_DEFINE(read, int, pic_value, kh_int_hash_func, kh_int_hash_equal)
static pic_value read(pic_state *pic, struct pic_port *port, int c); static pic_value read(pic_state *pic, struct pic_port *port, int c);