Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / src / gpu / ganesh / GrTextureProxyCacheAccess.h
1 /*
2  * Copyright 2017 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #ifndef GrTextureProxyCacheAccess_DEFINED
9 #define GrTextureProxyCacheAccess_DEFINED
10
11 #include "src/gpu/ganesh/GrTextureProxy.h"
12
13 /**
14  * This class allows GrResourceCache increased privileged access to GrTextureProxy objects.
15  */
16 class GrTextureProxy::CacheAccess {
17 private:
18     void setUniqueKey(GrProxyProvider* proxyProvider, const skgpu::UniqueKey& key) {
19         fTextureProxy->setUniqueKey(proxyProvider, key);
20     }
21
22     void clearUniqueKey() {
23         fTextureProxy->clearUniqueKey();
24     }
25
26     explicit CacheAccess(GrTextureProxy* textureProxy) : fTextureProxy(textureProxy) {}
27     CacheAccess& operator=(const CacheAccess&) = delete;
28
29     // No taking addresses of this type.
30     const CacheAccess* operator&() const;
31     CacheAccess* operator&();
32
33     GrTextureProxy* fTextureProxy;
34
35     friend class GrTextureProxy;  // to construct/copy this type.
36     friend class GrProxyProvider; // to use this type
37 };
38
39 inline GrTextureProxy::CacheAccess GrTextureProxy::cacheAccess() { return CacheAccess(this); }
40
41 inline const GrTextureProxy::CacheAccess GrTextureProxy::cacheAccess() const {  // NOLINT(readability-const-return-type)
42     return CacheAccess(const_cast<GrTextureProxy*>(this));
43 }
44
45 #endif