9 # include <sys/types.h>
11 # include <sys/mman.h>
32 bool open(const char *file_name, unsigned long file_size);
33 inline gchar *begin(void)
50 inline bool MapFile::open(const char *file_name, unsigned long file_size)
55 if ((mmap_fd = ::open(file_name, O_RDONLY)) < 0)
57 //g_print("Open file %s failed!\n",fullfilename);
60 data = (gchar *)mmap( NULL, file_size, PROT_READ, MAP_SHARED, mmap_fd, 0);
61 if ((void *)data == (void *)( -1))
63 //g_print("mmap file %s failed!\n",idxfilename);
67 #elif defined( _WIN32)
69 gunichar2 *fn = g_utf8_to_utf16(file_name, -1, NULL, NULL, NULL);
71 gchar *fn = file_name;
73 hFile = CreateFile(fn, GENERIC_READ, 0, NULL, OPEN_ALWAYS,
74 FILE_ATTRIBUTE_NORMAL, 0);
78 hFileMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0,
80 data = (gchar *)MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, file_size);
81 #else // defined( _WIN32)
84 if (!g_file_get_contents(file_name, &data, &read_len, NULL))
87 if (read_len != file_size)
94 inline MapFile::~MapFile()
105 UnmapViewOfFile(data);
106 CloseHandle(hFileMap);
115 #endif//!_MAPFILE_HPP_