Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / cc / surfaces / surface_id.h
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.
4
5 #ifndef CC_SURFACES_SURFACE_ID_H_
6 #define CC_SURFACES_SURFACE_ID_H_
7
8 #include "base/containers/hash_tables.h"
9
10 namespace cc {
11
12 struct SurfaceId {
13   SurfaceId() : id(0) {}
14   explicit SurfaceId(uint64_t id) : id(id) {}
15
16   bool is_null() const { return id == 0; }
17
18   uint64_t id;
19 };
20
21 inline bool operator==(const SurfaceId& a, const SurfaceId& b) {
22   return a.id == b.id;
23 }
24
25 inline bool operator!=(const SurfaceId& a, const SurfaceId& b) {
26   return !(a == b);
27 }
28
29 inline bool operator<(const SurfaceId& a, const SurfaceId& b) {
30   return a.id < b.id;
31 }
32
33 }  // namespace cc
34
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);
40   }
41 };
42 }  // namespace BASE_HASH_NAMESPACE
43
44 #endif  // CC_SURFACES_SURFACE_ID_H_