Roll src/third_party/skia 57a48a7:de7665a
[chromium-blink-merge.git] / cc / surfaces / surface_id.h
blob070265a84955d3dee6b1ec29cea952268868e01c
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/containers/hash_tables.h"
10 namespace cc {
12 struct SurfaceId {
13 SurfaceId() : id(0) {}
14 explicit SurfaceId(uint64_t id) : id(id) {}
16 bool is_null() const { return id == 0; }
18 uint64_t id;
21 inline bool operator==(const SurfaceId& a, const SurfaceId& b) {
22 return a.id == b.id;
25 inline bool operator!=(const SurfaceId& a, const SurfaceId& b) {
26 return !(a == b);
29 inline bool operator<(const SurfaceId& a, const SurfaceId& b) {
30 return a.id < b.id;
33 } // namespace cc
35 namespace BASE_HASH_NAMESPACE {
36 template <>
37 struct hash<cc::SurfaceId> {
38 size_t operator()(cc::SurfaceId key) const {
39 return hash<uint64_t>()(key.id);
42 } // namespace BASE_HASH_NAMESPACE
44 #endif // CC_SURFACES_SURFACE_ID_H_