// 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 #include #include namespace cc { struct SurfaceId { SurfaceId() : id(0) {} explicit SurfaceId(uint64_t id) : id(id) {} bool is_null() const { return id == 0; } // See SurfaceIdAllocator::GenerateId. uint32_t id_namespace() const { return id >> 32; } 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; } struct SurfaceIdHash { size_t operator()(const SurfaceId& key) const { return std::hash()(key.id); } }; } // namespace cc #endif // CC_SURFACES_SURFACE_ID_H_