// Copyright 1992 by Jon Dart.  All Rights Reserved.

#ifndef _BOARD_HASH_H
#define _BOARD_HASH_H

#include "board.h"
#include "emove.h"

class Board_Hash
{
	public:
		
	static void free();
	
	static hash_t HashCode(const Board &ABoard );
	
	static hash_t HashCode2(const Board & b);
	// another hash code, more or less uncorrelated with HashCode

	static void update_hash(const Board &board, 
		const ExtendedMove &emove, 
		hash_t &NewHash,
                hash_t &new_pawn_hash);

        static hash_t pawn_hash(const Board &b);

};

#endif

