-
Notifications
You must be signed in to change notification settings - Fork 52
/
CLFloatWrapperConst.h
52 lines (47 loc) · 1.58 KB
/
CLFloatWrapperConst.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright Hugh Perkins 2014 hughperkins at gmail
//
// This Source Code Form is subject to the terms of the Mozilla Public License,
// v. 2.0. If a copy of the MPL was not distributed with this file, You can
// obtain one at http://mozilla.org/MPL/2.0/.
#pragma once
#include <stdexcept>
#include "EasyCL.h"
#include "CLWrapper.h"
namespace easycl {
// this wraps an existing array, which we wont free, rather than creating a new array
// probably more efficient....
class CLFloatWrapperConst : public CLWrapper {
protected:
float const*hostarray; // NOT owned by this object, do NOT free :-)
public:
CLFloatWrapperConst(int N, float const *_hostarray, EasyCL *easycl) :
CLWrapper(N, easycl),
hostarray(_hostarray)
{
}
CLFloatWrapperConst(const CLFloatWrapperConst &source) :
CLWrapper(0, 0), hostarray(0) { // copy constructor
throw std::runtime_error("can't assign these...");
}
CLFloatWrapperConst &operator=(const CLFloatWrapperConst &two) { // assignment operator
if(this == &two) { // self-assignment
return *this;
}
throw std::runtime_error("can't assign these...");
}
virtual ~CLFloatWrapperConst() {
}
virtual int getElementSize() {
return sizeof(hostarray[0]);
}
inline float get(int index) {
return hostarray[index];
}
virtual void *getHostArray() {
throw std::runtime_error("gethostarray() not implemented for clfloatwrapperconst");
}
virtual void const *getHostArrayConst() {
return hostarray;
}
};
}