#ifndef CC_SURFACES_SURFACE_ID_H_
#define CC_SURFACES_SURFACE_ID_H_
+#include "base/compiler_specific.h"
+#include "base/containers/hash_tables.h"
+
namespace cc {
struct SurfaceId {
SurfaceId() : id(0) {}
- explicit SurfaceId(int id) : id(id) {}
+ explicit SurfaceId(uint64_t id) : id(id) {}
bool is_null() const { return id == 0; }
- int id;
+ uint64_t id;
};
inline bool operator==(const SurfaceId& a, const SurfaceId& b) {
return !(a == b);
}
+inline bool operator<(const SurfaceId& a, const SurfaceId& b) {
+ return a.id < b.id;
+}
+
} // namespace cc
+namespace BASE_HASH_NAMESPACE {
+#if defined(COMPILER_MSVC)
+inline size_t hash_value(const cc::SurfaceId& key) {
+ return hash_value(key.id);
+}
+#elif defined(COMPILER_GCC)
+template <>
+struct hash<cc::SurfaceId> {
+ size_t operator()(cc::SurfaceId key) const {
+ return hash<uint64_t>()(key.id);
+ }
+};
+#else
+#error define a hash function for your compiler
+#endif // COMPILER
+} // namespace BASE_HASH_NAMESPACE
+
#endif // CC_SURFACES_SURFACE_ID_H_