summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/surface_id.h
blob: 070265a84955d3dee6b1ec29cea952268868e01c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CC_SURFACES_SURFACE_ID_H_
#define CC_SURFACES_SURFACE_ID_H_

#include "base/containers/hash_tables.h"

namespace cc {

struct SurfaceId {
  SurfaceId() : id(0) {}
  explicit SurfaceId(uint64_t id) : id(id) {}

  bool is_null() const { return id == 0; }

  uint64_t id;
};

inline bool operator==(const SurfaceId& a, const SurfaceId& b) {
  return a.id == b.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 {
template <>
struct hash<cc::SurfaceId> {
  size_t operator()(cc::SurfaceId key) const {
    return hash<uint64_t>()(key.id);
  }
};
}  // namespace BASE_HASH_NAMESPACE

#endif  // CC_SURFACES_SURFACE_ID_H_