1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_SURFACES_SURFACE_ID_H_
6 #define CC_SURFACES_SURFACE_ID_H_
8 #include "base/compiler_specific.h"
9 #include "base/containers/hash_tables.h"
14 SurfaceId() : id(0) {}
15 explicit SurfaceId(uint64_t id
) : id(id
) {}
17 bool is_null() const { return id
== 0; }
22 inline bool operator==(const SurfaceId
& a
, const SurfaceId
& b
) {
26 inline bool operator!=(const SurfaceId
& a
, const SurfaceId
& b
) {
30 inline bool operator<(const SurfaceId
& a
, const SurfaceId
& b
) {
36 namespace BASE_HASH_NAMESPACE
{
37 #if defined(COMPILER_MSVC)
38 inline size_t hash_value(const cc::SurfaceId
& key
) {
39 return hash_value(key
.id
);
41 #elif defined(COMPILER_GCC)
43 struct hash
<cc::SurfaceId
> {
44 size_t operator()(cc::SurfaceId key
) const {
45 return hash
<uint64_t>()(key
.id
);
49 #error define a hash function for your compiler
51 } // namespace BASE_HASH_NAMESPACE
53 #endif // CC_SURFACES_SURFACE_ID_H_