51 new (&doubleData_) std::vector<double>();
53 KernelData(
const std::vector<double>& doubleData)
55 new (&doubleData_) std::vector<double>(doubleData);
59 new (&intData_) std::vector<int>(intData);
63 new (&charData_) std::vector<char>(charData);
67 new (&charData_) std::vector<char>(other.charData_);
71 new (&charData_) std::vector<char>(std::move(other.charData_));
75 charData_ = other.charData_;
80 charData_ = std::move(other.charData_);
85 charData_.~vector<
char>();
87 const std::vector<double>* getDoubleData()
const {
88 if(charData_.size() == doubleData_.size() *
sizeof(
double))
92 const std::vector<int>* getIntData()
const {
93 if(charData_.size() == intData_.size() *
sizeof(
int))
97 const std::vector<char>* getCharData()
const {
109 std::vector<double> doubleData_;
110 std::vector<int> intData_;
111 std::vector<char> charData_;
120 using DataMap = std::unordered_map<std::string, KernelData>;
132 void setDoubleData(
StringView name,
const std::vector<double>& data);
137 void setIntData(
StringView name,
const std::vector<int>& data);
142 void setCharData(
StringView name,
const std::vector<char>& data);
153 const std::vector<double>* getDoubleData(
StringView name)
const;
158 const std::vector<int>* getIntData(
StringView name)
const;
163 const std::vector<char>* getCharData(
StringView name)
const;
165 DataMap::iterator begin() {
return dataMap_.begin(); }
166 DataMap::iterator end() {
return dataMap_.end(); }
167 DataMap::const_iterator begin()
const {
return dataMap_.begin(); }
168 DataMap::const_iterator end()
const {
return dataMap_.end(); }
169 size_t size()
const {
return dataMap_.size(); }