| /* | |
| * 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 |