// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Go definitions of internal structures. Master is hashmap.[c,h]

package runtime

type hash_hash uintptr

type hash_entry struct {
	hash hash_hash
	key  byte // dwarf.c substitutes the real type
	val  byte // for key and val
}

type hash_subtable struct {
	power       uint8
	used        uint8
	datasize    uint8
	max_probes  uint8
	limit_bytes int16
	end         *hash_entry
	entry       hash_entry // TODO: [0]hash_entry
}

type hash struct {
	count       uint32
	datasize    uint8
	max_power   uint8
	max_probes  uint8
	indirectval uint8
	changes     int32
	data_hash   func(uint32, uintptr) hash_hash
	data_eq     func(uint32, uintptr, uintptr) uint32
	data_del    func(uint32, uintptr, uintptr)
	st          *hash_subtable
	keysize     uint32
	valsize     uint32
	datavo      uint32
	ko0         uint32
	vo0         uint32
	ko1         uint32
	vo1         uint32
	po1         uint32
	ko2         uint32
	vo2         uint32
	po2         uint32
	keyalg      *alg
	valalg      *alg
}