… | |
… | |
77 | # include <netinet/tcp.h> |
77 | # include <netinet/tcp.h> |
78 | # include <inttypes.h> |
78 | # include <inttypes.h> |
79 | #endif |
79 | #endif |
80 | |
80 | |
81 | #include "ecb.h" |
81 | #include "ecb.h" |
|
|
82 | #include "salloc.h" |
82 | |
83 | |
83 | #define OBJ_STR "\xef\xbf\xbc" /* U+FFFC, object replacement character */ |
84 | #define OBJ_STR "\xef\xbf\xbc" /* U+FFFC, object replacement character */ |
84 | |
85 | |
85 | /* this is used as fow flag as well, so has to have a different value */ |
86 | /* this is used as fow flag as well, so has to have a different value */ |
86 | /* then anything that is computed by incoming darkness */ |
87 | /* then anything that is computed by incoming darkness */ |
… | |
… | |
454 | { |
455 | { |
455 | return tile == o.tile && x == o.x && y == o.y && level == o.level; |
456 | return tile == o.tile && x == o.x && y == o.y && level == o.level; |
456 | } |
457 | } |
457 | }; |
458 | }; |
458 | |
459 | |
459 | typedef ska::flat_hash_map<smooth_key, IV> smooth_hash; |
460 | typedef ska::flat_hash_map<smooth_key, IV, std::hash<smooth_key>, std::equal_to<smooth_key>, slice_allocator<smooth_key>> smooth_hash; |
460 | |
461 | |
461 | namespace std { |
462 | namespace std { |
462 | template <> |
463 | template <> |
463 | struct hash<smooth_key> |
464 | struct hash<smooth_key> |
464 | { |
465 | { |