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