#ifndef UUID_HPP
#define UUID_HPP

#include <cstdint>

namespace OpenEngine {

    class UUID
    {
        public:
            UUID();
            UUID(uint64_t uuid);
            UUID(const UUID&) = default;

            operator uint64_t() const { return uuid; };

        private:
            uint64_t uuid;
    };

}

namespace std {

    template<>
        struct hash<OpenEngine::UUID>
        {
            std::size_t operator()(const OpenEngine::UUID& uuid) const
            {
                return hash<uint64_t>()((uint64_t)uuid);
            }
        };

}

#endif // UUID_HPP
