Tweaks to OpenCLContext/OpenCLHandle defs
This commit is contained in:
parent
e07691f71d
commit
b794cace6e
2 changed files with 34 additions and 31 deletions
|
@ -1,12 +1,12 @@
|
|||
#include "opencl_handle.h"
|
||||
|
||||
std::unique_ptr<OpenCLContext> OpenCLContext::instance_ = {};
|
||||
OpenCLContext::Ptr OpenCLContext::instance_ = {};
|
||||
|
||||
OpenCLHandle::OpenCLHandle() {
|
||||
OpenCLContext::OpenCLHandle::OpenCLHandle() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
OpenCLHandle::~OpenCLHandle() { OpenCLContext::CheckRefCount(); }
|
||||
OpenCLContext::OpenCLHandle::~OpenCLHandle() { OpenCLContext::CheckRefCount(); }
|
||||
|
||||
OpenCLContext::OpenCLContext() {
|
||||
// TODO
|
||||
|
@ -16,7 +16,7 @@ OpenCLContext::~OpenCLContext() {
|
|||
// TODO
|
||||
}
|
||||
|
||||
OpenCLHandle::Ptr OpenCLContext::GetHandle() {
|
||||
OpenCLContext::OpenCLHandle::Ptr OpenCLContext::GetHandle() {
|
||||
if (!instance_) {
|
||||
// cannot use make_unique due to private constructor
|
||||
instance_ = std::unique_ptr<OpenCLContext>(new OpenCLContext());
|
||||
|
|
|
@ -3,32 +3,37 @@
|
|||
|
||||
#include <memory>
|
||||
|
||||
class OpenCLHandle {
|
||||
public:
|
||||
typedef std::shared_ptr<OpenCLHandle> Ptr;
|
||||
typedef std::weak_ptr<OpenCLHandle> WeakPtr;
|
||||
|
||||
~OpenCLHandle();
|
||||
|
||||
// no copy
|
||||
OpenCLHandle(const OpenCLHandle &other) = delete;
|
||||
OpenCLHandle &operator=(const OpenCLHandle &other) = delete;
|
||||
|
||||
// allow move
|
||||
OpenCLHandle(OpenCLHandle &&other) = default;
|
||||
OpenCLHandle &operator=(OpenCLHandle &&other) = default;
|
||||
|
||||
// TODO add functions here that allow creating/deleting/using kernel function
|
||||
// programs
|
||||
|
||||
private:
|
||||
friend class OpenCLContext;
|
||||
|
||||
OpenCLHandle();
|
||||
};
|
||||
|
||||
class OpenCLContext {
|
||||
public:
|
||||
typedef std::shared_ptr<OpenCLContext> Ptr;
|
||||
typedef std::weak_ptr<OpenCLContext> WeakPtr;
|
||||
|
||||
class OpenCLHandle {
|
||||
public:
|
||||
typedef std::shared_ptr<OpenCLHandle> Ptr;
|
||||
typedef std::weak_ptr<OpenCLHandle> WeakPtr;
|
||||
|
||||
~OpenCLHandle();
|
||||
|
||||
// no copy
|
||||
OpenCLHandle(const OpenCLHandle &other) = delete;
|
||||
OpenCLHandle &operator=(const OpenCLHandle &other) = delete;
|
||||
|
||||
// allow move
|
||||
OpenCLHandle(OpenCLHandle &&other) = default;
|
||||
OpenCLHandle &operator=(OpenCLHandle &&other) = default;
|
||||
|
||||
// TODO add functions here that allow creating/deleting/using kernel
|
||||
// function programs
|
||||
|
||||
private:
|
||||
friend class OpenCLContext;
|
||||
|
||||
OpenCLHandle();
|
||||
|
||||
OpenCLContext::WeakPtr opencl_ptr_;
|
||||
};
|
||||
|
||||
~OpenCLContext();
|
||||
|
||||
// no copy
|
||||
|
@ -42,11 +47,9 @@ class OpenCLContext {
|
|||
OpenCLHandle::Ptr GetHandle();
|
||||
|
||||
private:
|
||||
friend class OpenCLHandle;
|
||||
|
||||
OpenCLContext();
|
||||
|
||||
static std::unique_ptr<OpenCLContext> instance_;
|
||||
static Ptr instance_;
|
||||
OpenCLHandle::WeakPtr weak_handle_;
|
||||
|
||||
static void CheckRefCount();
|
||||
|
|
Loading…
Reference in a new issue