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