#ifndef LIBANGLE_REFCOUNTOBJECT_H_
#define LIBANGLE_REFCOUNTOBJECT_H_
#include "angle_gl.h"
#include "common/PackedEnums.h"
#include "common/debug.h"
#include "libANGLE/Error.h"
#include "libANGLE/Observer.h"
#include "libANGLE/renderer/serial_utils.h"
#include <cstddef>
namespace angle
{
template <typename ContextT, typename ErrorT>
class RefCountObject : angle::NonCopyable
{ … };
template <typename ContextT, typename ErrorT>
class ThreadSafeRefCountObject : angle::NonCopyable
{ … };
template <class ObjectType, typename ContextT, typename ErrorT = angle::Result>
class RefCountObjectReleaser : angle::NonCopyable
{ … };
template <class ObjectType, typename ContextT, typename ErrorT = angle::Result>
class BindingPointer
{ … };
}
namespace gl
{
class Context;
template <class ObjectType>
class BindingPointer;
RefCountObjectNoID;
ThreadSafeRefCountObjectNoID;
template <typename IDType, typename RC = RefCountObjectNoID>
class RefCountObject : public RC
{ … };
ThreadSafeRefCountObject;
template <class ObjectType>
class BindingPointer : public angle::BindingPointer<ObjectType, Context>
{ … };
template <class ObjectType>
class OffsetBindingPointer : public BindingPointer<ObjectType>
{ … };
template <typename SubjectT>
class SubjectBindingPointer : protected BindingPointer<SubjectT>, public angle::ObserverBindingBase
{ … };
}
namespace egl
{
class Display;
RefCountObject;
ThreadSafeRefCountObject;
RefCountObjectReleaser;
BindingPointer;
}
#endif