mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-01-13 04:46:38 -05:00
36 lines
857 B
Go
36 lines
857 B
Go
package d2mpq
|
|
|
|
// HashEntryMap represents a hash entry map
|
|
type HashEntryMap struct {
|
|
entries map[uint64]HashTableEntry
|
|
}
|
|
|
|
// Insert inserts a hash entry into the table
|
|
func (hem *HashEntryMap) Insert(entry *HashTableEntry) {
|
|
if hem.entries == nil {
|
|
hem.entries = make(map[uint64]HashTableEntry)
|
|
}
|
|
|
|
hem.entries[uint64(entry.NamePartA)<<32|uint64(entry.NamePartB)] = *entry
|
|
}
|
|
|
|
// Find finds a hash entry
|
|
func (hem *HashEntryMap) Find(fileName string) (*HashTableEntry, bool) {
|
|
if hem.entries == nil {
|
|
return nil, false
|
|
}
|
|
|
|
hashA := hashString(fileName, 1)
|
|
hashB := hashString(fileName, 2)
|
|
|
|
entry, found := hem.entries[uint64(hashA)<<32|uint64(hashB)]
|
|
|
|
return &entry, found
|
|
}
|
|
|
|
// Contains returns true if the hash entry contains the values
|
|
func (hem *HashEntryMap) Contains(fileName string) bool {
|
|
_, found := hem.Find(fileName)
|
|
return found
|
|
}
|