Telodendria/src/include/Io.h
Jordan Bancino ab4755240a Add IoCopy() and StreamCopy()
Both do buffered reads and writes, but IoCopy() uses IoRead() and
IoWrite() directly, whereas StreamCopy() relies on StreamGetc() and
StreamPutc(), which manipulate the stream buffers.
2023-03-15 17:14:16 +00:00

49 lines
844 B
C

#ifndef TELODENDRIA_IO_H
#define TELODENDRIA_IO_H
#include <unistd.h>
#include <stdarg.h>
typedef struct Io Io;
typedef ssize_t (IoReadFunc) (void *, void *, size_t);
typedef ssize_t (IoWriteFunc) (void *, void *, size_t);
typedef off_t (IoSeekFunc) (void *, off_t, int);
typedef int (IoCloseFunc) (void *);
typedef struct IoFunctions
{
IoReadFunc *read;
IoWriteFunc *write;
IoSeekFunc *seek;
IoCloseFunc *close;
} IoFunctions;
extern Io *
IoCreate(void *, IoFunctions);
extern ssize_t
IoRead(Io *, void *, size_t);
extern ssize_t
IoWrite(Io *, void *, size_t);
extern off_t
IoSeek(Io *, off_t, int);
extern int
IoClose(Io *);
extern Io *
IoOpen(int);
extern int
IoVprintf(Io *, const char *, va_list);
extern int
IoPrintf(Io *, const char *, ...);
extern ssize_t
IoCopy(Io *, Io *);
#endif /* TELODENDRIA_IO_H */