#ifndef MAPFILE_H #define MAPFILE_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_MMAP # include # include # include # include # include #elif defined(WIN32) # include #else # include # include #endif class MapFile { public: char *cur; MapFile(void) : data(NULL), end_of_file(NULL), size(0) {} ~MapFile(); bool open(const char *file_name, long file_size=-1); char *begin(void) { return data; } char *end(void) { return end_of_file; } char *find_str(char *beg, const char *str, char *end=NULL); operator bool () { return cur data_buffer; #endif void close(void); }; inline void MapFile::close(void) { if (!data) return; #ifdef HAVE_MMAP munmap(data, size); ::close(mmap_fd); #elif defined(WIN32) UnmapViewOfFile(data); CloseHandle(hFileMap); CloseHandle(hFile); #endif data=NULL; } inline bool MapFile::open(const char *file_name, long file_size) { close(); size=file_size; #ifdef HAVE_MMAP if ((mmap_fd = ::open(file_name, O_RDONLY)) < 0) { std::cerr<<"Can not open: "<