/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrSurfaceContextPriv_DEFINED #define GrSurfaceContextPriv_DEFINED #include "GrSurfaceContext.h" /** Class that adds methods to GrSurfaceContext that are only intended for use internal to Skia. This class is purely a privileged window into GrSurfaceContext. It should never have additional data members or virtual methods. */ class GrSurfaceContextPriv { public: GrContext* getContext() { return fSurfaceContext->fContext; } private: explicit GrSurfaceContextPriv(GrSurfaceContext* surfaceContext) : fSurfaceContext(surfaceContext) { } GrSurfaceContextPriv(const GrSurfaceContextPriv&) {} // unimpl GrSurfaceContextPriv& operator=(const GrSurfaceContextPriv&); // unimpl // No taking addresses of this type. const GrSurfaceContextPriv* operator&() const; GrSurfaceContextPriv* operator&(); GrSurfaceContext* fSurfaceContext; friend class GrSurfaceContext; // to construct/copy this type. }; inline GrSurfaceContextPriv GrSurfaceContext::surfPriv() { return GrSurfaceContextPriv(this); } inline const GrSurfaceContextPriv GrSurfaceContext::surfPriv() const { return GrSurfaceContextPriv(const_cast<GrSurfaceContext*>(this)); } #endif