1 /* (C) 2006-2010 by folkert@vanheusden.com GPLv2 applies */
2 
3 #include <sys/types.h>
4 
5 /* code taken from linux kernel */
6 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96
7 #define __builtin_expect(x, expected_value) (x)
8 #endif
9 #ifndef __builtin_expect
10 #define __builtin_expect(x, expected_value) (x)
11 #endif
12 #define likely(x)       __builtin_expect((x),1)
13 #define unlikely(x)     __builtin_expect((x),0)
14 
15 class buffered_reader
16 {
17 private:
18         int fd, block_size;
19         char *buffer;
20         long long int buffer_length, buffer_pointer;
21 	char *mmap_addr, *cur_offset;
22 	off_t size_of_file;
23 
24         int number_of_bytes_in_buffer(void);
25         int read_into_buffer(void);
26 
27 public:
28         buffered_reader(int fd, int block_size=4096);
29         ~buffered_reader();
30 
31         int garbage_collect(char shrink_buffer=0);
32 
33         char * read_line(void);
34 
35 	off_t file_offset(void);
36 };
37