// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef HASHABLE_HPP_INCLUDED #define HASHABLE_HPP_INCLUDED #include #include class NzAbstractHash; class NzHashDigest; class NAZARA_CORE_API NzHashable { friend class NzHash; public: NzHashable() = default; NzHashable(const NzHashable&) = default; NzHashable(NzHashable&&) = default; virtual ~NzHashable(); NzHashDigest GetHash(nzHash hash) const; NzHashDigest GetHash(NzAbstractHash* impl) const; NzHashable& operator=(const NzHashable&) = default; NzHashable& operator=(NzHashable&&) = default; private: virtual bool FillHash(NzAbstractHash* impl) const = 0; }; #endif // HASHABLE_HPP_INCLUDED