mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Add adapter class to let VC++ hash_map use GCC's hash struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20637 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
02432d26a2
commit
1467e7ae92
@ -108,4 +108,30 @@ using HASH_NAMESPACE::hash;
|
||||
|
||||
#include "llvm/ADT/HashExtras.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
// GCC and VC++ have differing ways of implementing hash_maps. As it's not
|
||||
// standardized, that's to be expected. This adapter class allows VC++
|
||||
// hash_map to use GCC's hash classes.
|
||||
namespace stdext {
|
||||
template<class Key> struct hash {
|
||||
inline size_t operator()(const Key &) const {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
template<class Key> class hash_compare<Key, std::less<Key> > {
|
||||
std::less<Key> comp;
|
||||
public:
|
||||
enum { bucket_size = 4 };
|
||||
enum { min_buckets = 8 };
|
||||
hash_compare() {}
|
||||
hash_compare(std::less<Key> pred) : comp(pred) {}
|
||||
size_t operator()(const Key& key) const { return hash<Key>()(key); }
|
||||
bool operator()(const Key& k1, const Key& k2) const { return comp(k1, k2); }
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user