Files
watrbx-game-engine/App/util/ProtectedGeneric.h
T
2025-10-28 14:05:46 -04:00

44 lines
691 B
C++

#pragma once
#include <memory>
#include <string>
#include <boost/functional/hash/hash.hpp>
namespace RBX {
template<class Type>
class ProtectedGeneric
{
private:
Type value;
std::size_t hash;
public:
const Type& peekValue() const
{
return value;
}
bool getValue(Type& _value) const
{
_value = this->value;
boost::hash<Type> hasher;
std::size_t newHash = hasher(_value);
return (hash == newHash);
}
void setValue(Type _value)
{
this->value = _value;
boost::hash<Type> hasher;
hash = hasher(_value);
}
ProtectedGeneric(Type _value)
{
setValue(_value);
}
private:
ProtectedGeneric(const ProtectedGeneric& other)
{}
};
}