9 # include <sys/types.h>
11 # include <sys/mman.h>
32 inline bool open(const char *file_name, unsigned long file_size);
34 inline gchar *begin(void) { return data; }
46 inline bool MapFile::open(const char *file_name, unsigned long file_size)
50 if ((mmap_fd = ::open(file_name, O_RDONLY)) < 0) {
51 //g_print("Open file %s failed!\n",fullfilename);
54 data = (gchar *)mmap( NULL, file_size, PROT_READ, MAP_SHARED, mmap_fd, 0);
55 if ((void *)data == (void *)(-1)) {
56 //g_print("mmap file %s failed!\n",idxfilename);
61 #elif defined( _WIN32)
62 hFile = CreateFile(file_name, GENERIC_READ, 0, NULL, OPEN_ALWAYS,
63 FILE_ATTRIBUTE_NORMAL, 0);
64 hFileMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0,
66 data = (gchar *)MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, file_size);
69 if (!g_file_get_contents(file_name, &data, &read_len, NULL))
72 if (read_len!=file_size)
79 inline void MapFile::close()
88 UnmapViewOfFile(data);
89 CloseHandle(hFileMap);
98 inline MapFile::~MapFile()
103 #endif//!_MAPFILE_HPP_