37class Data :
public IData<Data<T>, ParentType> {
41 Data(
unsigned int n) {
43 throw std::runtime_error(
"Vector size cannot be zero.");
47 Data(
const Parameters& parameters) : Data(parameters.size) {}
49 static const std::string static_datatype() {
return "vector [" + get_type_string<T>() +
"]"; }
50 static const std::string static_dataname() {
return "data"; }
54 void setData(
const std::vector<T>& data) {
55 if (data.size() != data_.size()) {
56 throw std::runtime_error(
"Setting vector data from wrong size source vector");
61 void setData(
const T* data,
int len) {
62 if (len != data_.size()) {
63 throw std::runtime_error(
"Setting vector data from wrong size source data");
65 std::copy(data, data + len, data_.begin());
68 void setSample(
int index,
const T& data) { data_[index] = data; }
70 std::vector<T>& data() {
return data_; }
72 void SerializeBinary(std::ostream& stream, Serialization::Format format =
73 Serialization::Format::FULL)
const override {
74 BaseClass::SerializeBinary(stream, format);
75 if (format == Serialization::Format::FULL || format == Serialization::Format::COMPACT) {
76 stream.write(
reinterpret_cast<const char*
>(data_.data()), data_.size() *
sizeof(T));
80 void SerializeYAML(YAML::Node& node,
81 Serialization::Format format = Serialization::Format::FULL)
const override {
82 BaseClass::SerializeYAML(node, format);
83 if (format == Serialization::Format::FULL || format == Serialization::Format::COMPACT) {
88 void YAMLDescription(YAML::Node& node, Serialization::Format format =
89 Serialization::Format::FULL)
const override {
90 BaseClass::YAMLDescription(node, format);
91 if (format == Serialization::Format::FULL || format == Serialization::Format::COMPACT) {
92 node.push_back(
"data " + get_type_string<T>() +
" (" + std::to_string(data_.size()) +