#pragma once #include #include "../../core/Defines.h" #include "../../core/BitHelper.h" #include "../Material/Block.h" #include "../Material/MaterialLibraryPointer.h" namespace std { //template<> //struct hash> //{ // size_t operator()(const Block &value) const // { // size_t res = 0; // for (size_t i = 0; i < value.size(); i++) // res ^= BitHelper::CircularShiftLeft(hash()(value.Get(i)), i); // return res; // } //}; template struct hash> { size_t operator()(const Block &value) const { size_t res = 0; for (size_t i = 0; i < value.size(); i++) res ^= BitHelper::CircularShiftLeft(hash()(value.Get(i)), i); return res; } }; }