clover: Delete copy constructors and assignment operators in all non-copiable objects.

Tested-by: Tom Stellard <thomas.stellard@amd.com>
This commit is contained in:
Francisco Jerez 2013-09-16 21:44:36 -07:00
parent 369419f761
commit 5226eacf8d
11 changed files with 44 additions and 22 deletions

View file

@ -36,6 +36,8 @@ namespace clover {
context(const property_list &props, const ref_vector<device> &devs);
context(const context &ctx) = delete;
context &
operator=(const context &ctx) = delete;
bool has_device(device &dev) const;

View file

@ -45,12 +45,6 @@ device::device(clover::platform &platform, pipe_loader_device *ldev) :
throw error(CL_INVALID_DEVICE);
}
device::device(device &&dev) :
platform(dev.platform), pipe(dev.pipe), ldev(dev.ldev) {
dev.pipe = NULL;
dev.ldev = NULL;
}
device::~device() {
if (pipe)
pipe->destroy(pipe);
@ -58,16 +52,6 @@ device::~device() {
pipe_loader_release(&ldev, 1);
}
device &
device::operator=(device dev) {
assert(&platform == &dev.platform);
std::swap(pipe, dev.pipe);
std::swap(ldev, dev.ldev);
return *this;
}
bool
device::operator==(const device &dev) const {
return this == &dev;

View file

@ -38,11 +38,11 @@ namespace clover {
class device : public ref_counter, public _cl_device_id {
public:
device(clover::platform &platform, pipe_loader_device *ldev);
device(device &&dev);
device(const device &dev) = delete;
~device();
device &operator=(device dev);
device(const device &dev) = delete;
device &
operator=(const device &dev) = delete;
bool
operator==(const device &dev) const;

View file

@ -57,6 +57,10 @@ namespace clover {
action action_ok, action action_fail);
virtual ~event();
event(const event &ev) = delete;
event &
operator=(const event &ev) = delete;
void trigger();
void abort(cl_int status);
bool signalled() const;

View file

@ -42,6 +42,10 @@ namespace clover {
exec_context(kernel &kern);
~exec_context();
exec_context(const exec_context &) = delete;
exec_context &
operator=(const exec_context &) = delete;
void *bind(command_queue *q);
void unbind();
@ -66,6 +70,10 @@ namespace clover {
public:
argument();
argument(const argument &arg) = delete;
argument &
operator=(const argument &arg) = delete;
/// \a true if the argument has been set.
bool set() const;
@ -91,6 +99,10 @@ namespace clover {
const std::string &name,
const std::vector<module::argument> &margs);
kernel(const kernel &kern) = delete;
kernel &
operator=(const kernel &kern) = delete;
void launch(command_queue &q,
const std::vector<size_t> &grid_offset,
const std::vector<size_t> &grid_size,

View file

@ -38,7 +38,10 @@ namespace clover {
protected:
memory_obj(context &ctx, cl_mem_flags flags,
size_t size, void *host_ptr);
memory_obj(const memory_obj &obj) = delete;
memory_obj &
operator=(const memory_obj &obj) = delete;
public:
virtual ~memory_obj();

View file

@ -36,6 +36,10 @@ namespace clover {
public:
platform();
platform(const platform &platform) = delete;
platform &
operator=(const platform &platform) = delete;
protected:
std::vector<ref_ptr<device>> devs;
};

View file

@ -38,6 +38,10 @@ namespace clover {
const ref_vector<device> &devs,
const std::vector<module> &binaries);
program(const program &prog) = delete;
program &
operator=(const program &prog) = delete;
void build(const ref_vector<device> &devs, const char *opts);
const std::string &source() const;

View file

@ -37,9 +37,12 @@ namespace clover {
public:
command_queue(context &ctx, device &dev,
cl_command_queue_properties props);
command_queue(const command_queue &q) = delete;
~command_queue();
command_queue(const command_queue &q) = delete;
command_queue &
operator=(const command_queue &q) = delete;
void flush();
cl_command_queue_properties props() const;

View file

@ -25,7 +25,6 @@
#include <list>
#include "core/object.hpp"
#include "core/memory.hpp"
#include "util/algebra.hpp"
#include "pipe/p_state.h"
@ -41,9 +40,12 @@ namespace clover {
public:
typedef std::array<size_t, 3> vector;
resource(const resource &r) = delete;
virtual ~resource();
resource(const resource &r) = delete;
resource &
operator=(const resource &r) = delete;
void copy(command_queue &q, const vector &origin, const vector &region,
resource &src_resource, const vector &src_origin);

View file

@ -33,6 +33,10 @@ namespace clover {
cl_addressing_mode addr_mode,
cl_filter_mode filter_mode);
sampler(const sampler &s) = delete;
sampler &
operator=(const sampler &s) = delete;
bool norm_mode();
cl_addressing_mode addr_mode();
cl_filter_mode filter_mode();