comparison ploki/IO.h @ 4215:7a6bc310b732

<shachaf> tar xjf ploki-0.6.5.1.tar.bz2
author HackBot
date Fri, 20 Dec 2013 22:04:38 +0000
parents
children
comparison
equal deleted inserted replaced
4214:59a88d73e848 4215:7a6bc310b732
1 #ifndef IO_H_
2 #define IO_H_
3
4 #include "config.h"
5 #include "Str.h"
6
7 #include <stdio.h>
8
9 typedef struct IO IO;
10
11 enum io_flags {
12 IO_BINARY = 1,
13 IO_READ = 2 * IO_BINARY,
14 IO_WRITE = 2 * IO_READ,
15 IO_APPEND = 2 * IO_WRITE,
16 IO_TRUNCATE = 2 * IO_APPEND,
17 IO_BUFFERED = 2 * IO_TRUNCATE,
18 IO_AUTOFLUSH = 2 * IO_BUFFERED
19 };
20
21 enum io_whence {
22 IOS_START = SEEK_SET,
23 IOS_CUR = SEEK_CUR,
24 IOS_END = SEEK_END
25 };
26
27 void io_init(void);
28 void io_end(void);
29 const char *io_name(const IO *, String *);
30 IO *io_enter(const char *, FILE *, enum io_flags);
31 IO *io_open(const char *, enum io_flags);
32 IO *io_incr(IO *);
33 void io_decr(IO *);
34 int io_close(IO *);
35
36 ATTR_PURE
37 int io_bufred(const IO *);
38 void io_unbuffer(IO *);
39 const char *io_bufptr(IO *);
40
41 ATTR_PURE
42 FILE *io_fp(const IO *);
43
44 int io_flush(IO *);
45 ATTR_PURE
46 int io_err(const IO *);
47 ATTR_PURE
48 int io_eof(const IO *);
49 int io_peek(IO *, size_t);
50 int io_cmppeek(IO *, size_t, const void *, size_t);
51 int io_xcmp(IO *, size_t, size_t, size_t);
52
53 size_t io_read(IO *, String *, size_t);
54 int io_getc(IO *);
55 size_t io_getline(IO *, String *);
56 size_t io_write(IO *, const String *);
57 size_t io_write_m(IO *, const void *, size_t);
58 size_t io_write_s(IO *, const char *);
59 int io_putc(IO *, int);
60
61 long io_tell(IO *);
62 int io_seek(IO *, long, enum io_whence);
63 void io_clearerr(IO *);
64
65 #endif /* IO_H_ */