00001 #include "probing_hash_utils.hh"
00002
00003 namespace Moses
00004 {
00005
00006
00007 char * readTable(const char * filename, size_t size)
00008 {
00009
00010 int fd;
00011 char * map;
00012
00013 fd = open(filename, O_RDONLY);
00014 if (fd == -1) {
00015 perror("Error opening file for reading");
00016 exit(EXIT_FAILURE);
00017 }
00018
00019 map = (char *) mmap(0, size, PROT_READ, MAP_SHARED, fd, 0);
00020
00021 if (map == MAP_FAILED) {
00022 close(fd);
00023 perror("Error mmapping the file");
00024 exit(EXIT_FAILURE);
00025 }
00026
00027 return map;
00028 }
00029
00030 void serialize_table(char *mem, size_t size, const std::string &filename)
00031 {
00032 std::ofstream os(filename.c_str(), std::ios::binary);
00033 os.write((const char*) &mem[0], size);
00034 os.close();
00035
00036 }
00037
00038 uint64_t getKey(const uint64_t source_phrase[], size_t size)
00039 {
00040
00041
00042 uint64_t key = 0;
00043 for (size_t i = 0; i < size; i++) {
00044 key += (source_phrase[i] << i);
00045 }
00046 return key;
00047 }
00048
00049 }
00050