| /* |
| * Copyright 2018 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrResourceProviderPriv_DEFINED |
| #define GrResourceProviderPriv_DEFINED |
| |
| #include "src/gpu/ganesh/GrResourceProvider.h" |
| |
| /** Class that adds methods to GrResourceProvider that are only intended for use internal to Skia. |
| This class is purely a privileged window into GrResourceProvider. It should never have |
| additional data members or virtual methods. */ |
| class GrResourceProviderPriv { |
| public: |
| GrGpu* gpu() { return fResourceProvider->gpu(); } |
| |
| private: |
| explicit GrResourceProviderPriv(GrResourceProvider* provider) : fResourceProvider(provider) {} |
| GrResourceProviderPriv& operator=(const GrResourceProviderPriv&) = delete; |
| |
| // No taking addresses of this type. |
| const GrResourceProviderPriv* operator&() const; |
| GrResourceProviderPriv* operator&(); |
| |
| GrResourceProvider* fResourceProvider; |
| friend class GrResourceProvider; // to construct/copy this type |
| }; |
| |
| inline GrResourceProviderPriv GrResourceProvider::priv() { return GrResourceProviderPriv(this); } |
| |
| inline const GrResourceProviderPriv GrResourceProvider::priv() const { // NOLINT(readability-const-return-type) |
| return GrResourceProviderPriv(const_cast<GrResourceProvider*>(this)); |
| } |
| |
| #endif |