1/*
2** Copyright 2004, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef LINE_BUFFER_H
6#define LINE_BUFFER_H
7
8
9#include <OS.h>
10
11
12struct line_buffer {
13	int32	first;
14	size_t	in;
15	size_t	size;
16	char	*buffer;
17};
18
19status_t init_line_buffer(struct line_buffer &buffer, size_t size);
20status_t uninit_line_buffer(struct line_buffer &buffer);
21status_t clear_line_buffer(struct line_buffer &buffer);
22int32 line_buffer_readable(struct line_buffer &buffer);
23int32 line_buffer_readable_line(struct line_buffer &buffer, char eol, char eof);
24int32 line_buffer_writable(struct line_buffer &buffer);
25ssize_t line_buffer_user_read(struct line_buffer &buffer, char *data,
26			size_t length, char eof = 0, bool* hitEOF = NULL);
27status_t line_buffer_getc(struct line_buffer &buffer, char *_c);
28status_t line_buffer_putc(struct line_buffer &buffer, char c);
29status_t line_buffer_ungetc(struct line_buffer &buffer, char *c);
30bool line_buffer_tail_getc(struct line_buffer &buffer, char *c);
31
32#endif	/* LINE_BUFFER_H */
33