Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions cpp/test/generated/binary/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4139,6 +4139,10 @@ void EnumsWriter::WriteRecImpl(test_model::RecordWithEnums const& value) {
test_model::binary::WriteRecordWithEnums(stream_, value);
}

void EnumsWriter::WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) {
yardl::binary::WriteDynamicNDArray<test_model::RecordWithEnums, test_model::binary::WriteRecordWithEnums>(stream_, value);
}

void EnumsWriter::Flush() {
stream_.Flush();
}
Expand All @@ -4163,6 +4167,10 @@ void EnumsReader::ReadRecImpl(test_model::RecordWithEnums& value) {
test_model::binary::ReadRecordWithEnums(stream_, value);
}

void EnumsReader::ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) {
yardl::binary::ReadDynamicNDArray<test_model::RecordWithEnums, test_model::binary::ReadRecordWithEnums>(stream_, value);
}

void EnumsReader::CloseImpl() {
if (!skip_completed_check_) {
stream_.VerifyFinished();
Expand Down
2 changes: 2 additions & 0 deletions cpp/test/generated/binary/protocols.h
Original file line number Diff line number Diff line change
Expand Up @@ -1098,6 +1098,7 @@ class EnumsWriter : public test_model::EnumsWriterBase, yardl::binary::BinaryWri
void WriteVecImpl(std::vector<test_model::Fruits> const& value) override;
void WriteSizeImpl(test_model::SizeBasedEnum const& value) override;
void WriteRecImpl(test_model::RecordWithEnums const& value) override;
void WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) override;
void CloseImpl() override;

Version version_;
Expand All @@ -1119,6 +1120,7 @@ class EnumsReader : public test_model::EnumsReaderBase, yardl::binary::BinaryRea
void ReadVecImpl(std::vector<test_model::Fruits>& value) override;
void ReadSizeImpl(test_model::SizeBasedEnum& value) override;
void ReadRecImpl(test_model::RecordWithEnums& value) override;
void ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) override;
void CloseImpl() override;

Version version_;
Expand Down
8 changes: 8 additions & 0 deletions cpp/test/generated/hdf5/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3304,6 +3304,10 @@ void EnumsWriter::WriteRecImpl(test_model::RecordWithEnums const& value) {
yardl::hdf5::WriteScalarDataset<test_model::RecordWithEnums, test_model::RecordWithEnums>(group_, "rec", test_model::hdf5::GetRecordWithEnumsHdf5Ddl(), value);
}

void EnumsWriter::WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) {
yardl::hdf5::WriteScalarDataset<yardl::hdf5::InnerDynamicNdArray<test_model::RecordWithEnums, test_model::RecordWithEnums>, yardl::DynamicNDArray<test_model::RecordWithEnums>>(group_, "recArray", yardl::hdf5::DynamicNDArrayDdl<test_model::RecordWithEnums, test_model::RecordWithEnums>(test_model::hdf5::GetRecordWithEnumsHdf5Ddl()), value);
}

EnumsReader::EnumsReader(std::string path, bool skip_completed_check)
: test_model::EnumsReaderBase(skip_completed_check), yardl::hdf5::Hdf5Reader::Hdf5Reader(path, "Enums", schema_) {
}
Expand All @@ -3324,6 +3328,10 @@ void EnumsReader::ReadRecImpl(test_model::RecordWithEnums& value) {
yardl::hdf5::ReadScalarDataset<test_model::RecordWithEnums, test_model::RecordWithEnums>(group_, "rec", test_model::hdf5::GetRecordWithEnumsHdf5Ddl(), value);
}

void EnumsReader::ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) {
yardl::hdf5::ReadScalarDataset<yardl::hdf5::InnerDynamicNdArray<test_model::RecordWithEnums, test_model::RecordWithEnums>, yardl::DynamicNDArray<test_model::RecordWithEnums>>(group_, "recArray", yardl::hdf5::DynamicNDArrayDdl<test_model::RecordWithEnums, test_model::RecordWithEnums>(test_model::hdf5::GetRecordWithEnumsHdf5Ddl()), value);
}

FlagsWriter::FlagsWriter(std::string path)
: yardl::hdf5::Hdf5Writer::Hdf5Writer(path, "Flags", schema_) {
}
Expand Down
4 changes: 4 additions & 0 deletions cpp/test/generated/hdf5/protocols.h
Original file line number Diff line number Diff line change
Expand Up @@ -856,6 +856,8 @@ class EnumsWriter : public test_model::EnumsWriterBase, public yardl::hdf5::Hdf5

void WriteRecImpl(test_model::RecordWithEnums const& value) override;

void WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) override;

private:
};

Expand All @@ -872,6 +874,8 @@ class EnumsReader : public test_model::EnumsReaderBase, public yardl::hdf5::Hdf5

void ReadRecImpl(test_model::RecordWithEnums& value) override;

void ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) override;

private:
};

Expand Down
24 changes: 24 additions & 0 deletions cpp/test/generated/mocks.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3085,6 +3085,22 @@ class MockEnumsWriter : public EnumsWriterBase {
WriteRecImpl_expected_values_.push(value);
}

void WriteRecArrayImpl (yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) override {
if (WriteRecArrayImpl_expected_values_.empty()) {
throw std::runtime_error("Unexpected call to WriteRecArrayImpl");
}
if (WriteRecArrayImpl_expected_values_.front() != value) {
throw std::runtime_error("Unexpected argument value for call to WriteRecArrayImpl");
}
WriteRecArrayImpl_expected_values_.pop();
}

std::queue<yardl::DynamicNDArray<test_model::RecordWithEnums>> WriteRecArrayImpl_expected_values_;

void ExpectWriteRecArrayImpl (yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) {
WriteRecArrayImpl_expected_values_.push(value);
}

void Verify() {
if (!WriteSingleImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteSingleImpl was not received");
Expand All @@ -3098,6 +3114,9 @@ class MockEnumsWriter : public EnumsWriterBase {
if (!WriteRecImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteRecImpl was not received");
}
if (!WriteRecArrayImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteRecArrayImpl was not received");
}
}
};

Expand Down Expand Up @@ -3133,6 +3152,11 @@ class TestEnumsWriterBase : public EnumsWriterBase {
mock_writer_.ExpectWriteRecImpl(value);
}

void WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) override {
writer_->WriteRecArray(value);
mock_writer_.ExpectWriteRecArrayImpl(value);
}

void CloseImpl() override {
close_called_ = true;
writer_->Close();
Expand Down
8 changes: 8 additions & 0 deletions cpp/test/generated/model.json
Original file line number Diff line number Diff line change
Expand Up @@ -5229,6 +5229,14 @@
{
"name": "rec",
"type": "TestModel.RecordWithEnums"
},
{
"name": "recArray",
"type": {
"array": {
"items": "TestModel.RecordWithEnums"
}
}
}
]
},
Expand Down
8 changes: 8 additions & 0 deletions cpp/test/generated/ndjson/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3745,6 +3745,10 @@ void EnumsWriter::WriteRecImpl(test_model::RecordWithEnums const& value) {
ordered_json json_value = value;
yardl::ndjson::WriteProtocolValue(stream_, "rec", json_value);}

void EnumsWriter::WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) {
ordered_json json_value = value;
yardl::ndjson::WriteProtocolValue(stream_, "recArray", json_value);}

void EnumsWriter::Flush() {
stream_.flush();
}
Expand All @@ -3769,6 +3773,10 @@ void EnumsReader::ReadRecImpl(test_model::RecordWithEnums& value) {
yardl::ndjson::ReadProtocolValue(stream_, line_, "rec", true, unused_step_, value);
}

void EnumsReader::ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) {
yardl::ndjson::ReadProtocolValue(stream_, line_, "recArray", true, unused_step_, value);
}

void EnumsReader::CloseImpl() {
if (!skip_completed_check_) {
VerifyFinished();
Expand Down
2 changes: 2 additions & 0 deletions cpp/test/generated/ndjson/protocols.h
Original file line number Diff line number Diff line change
Expand Up @@ -993,6 +993,7 @@ class EnumsWriter : public test_model::EnumsWriterBase, yardl::ndjson::NDJsonWri
void WriteVecImpl(std::vector<test_model::Fruits> const& value) override;
void WriteSizeImpl(test_model::SizeBasedEnum const& value) override;
void WriteRecImpl(test_model::RecordWithEnums const& value) override;
void WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) override;
void CloseImpl() override;
};

Expand All @@ -1012,6 +1013,7 @@ class EnumsReader : public test_model::EnumsReaderBase, yardl::ndjson::NDJsonRea
void ReadVecImpl(std::vector<test_model::Fruits>& value) override;
void ReadSizeImpl(test_model::SizeBasedEnum& value) override;
void ReadRecImpl(test_model::RecordWithEnums& value) override;
void ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) override;
void CloseImpl() override;
};

Expand Down
38 changes: 32 additions & 6 deletions cpp/test/generated/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4780,14 +4780,16 @@ void EnumsWriterBaseInvalidState(uint8_t attempted, [[maybe_unused]] bool end, u
case 1: expected_method = "WriteVec()"; break;
case 2: expected_method = "WriteSize()"; break;
case 3: expected_method = "WriteRec()"; break;
case 4: expected_method = "WriteRecArray()"; break;
}
std::string attempted_method;
switch (attempted) {
case 0: attempted_method = "WriteSingle()"; break;
case 1: attempted_method = "WriteVec()"; break;
case 2: attempted_method = "WriteSize()"; break;
case 3: attempted_method = "WriteRec()"; break;
case 4: attempted_method = "Close()"; break;
case 4: attempted_method = "WriteRecArray()"; break;
case 5: attempted_method = "Close()"; break;
}
throw std::runtime_error("Expected call to " + expected_method + " but received call to " + attempted_method + " instead.");
}
Expand All @@ -4799,7 +4801,8 @@ void EnumsReaderBaseInvalidState(uint8_t attempted, uint8_t current) {
case 1: return "ReadVec()";
case 2: return "ReadSize()";
case 3: return "ReadRec()";
case 4: return "Close()";
case 4: return "ReadRecArray()";
case 5: return "Close()";
default: return "<unknown>";
}
};
Expand All @@ -4808,7 +4811,7 @@ void EnumsReaderBaseInvalidState(uint8_t attempted, uint8_t current) {

} // namespace

std::string EnumsWriterBase::schema_ = R"({"protocol":{"name":"Enums","sequence":[{"name":"single","type":"TestModel.Fruits"},{"name":"vec","type":{"vector":{"items":"TestModel.Fruits"}}},{"name":"size","type":"TestModel.SizeBasedEnum"},{"name":"rec","type":"TestModel.RecordWithEnums"}]},"types":[{"name":"DaysOfWeek","values":[{"symbol":"monday","value":1},{"symbol":"tuesday","value":2},{"symbol":"wednesday","value":4},{"symbol":"thursday","value":8},{"symbol":"friday","value":16},{"symbol":"saturday","value":32},{"symbol":"sunday","value":64}]},{"name":"Fruits","values":[{"symbol":"apple","value":1},{"symbol":"banana","value":2},{"symbol":"pear","value":3}]},{"name":"TextFormat","base":"uint64","values":[{"symbol":"regular","value":0},{"symbol":"bold","value":1},{"symbol":"italic","value":2},{"symbol":"underline","value":4},{"symbol":"strikethrough","value":8}]},{"name":"DaysOfWeek","type":"BasicTypes.DaysOfWeek"},{"name":"Fruits","type":"BasicTypes.Fruits"},{"name":"RecordWithEnums","fields":[{"name":"enum","type":"TestModel.Fruits"},{"name":"flags","type":"TestModel.DaysOfWeek"},{"name":"flags2","type":"TestModel.TextFormat"},{"name":"rec","type":"TestModel.RecordWithNoDefaultEnum"}]},{"name":"RecordWithNoDefaultEnum","fields":[{"name":"enum","type":"TestModel.Fruits"}]},{"name":"SizeBasedEnum","base":"size","values":[{"symbol":"a","value":0},{"symbol":"b","value":1},{"symbol":"c","value":2}]},{"name":"TextFormat","type":"BasicTypes.TextFormat"}]})";
std::string EnumsWriterBase::schema_ = R"({"protocol":{"name":"Enums","sequence":[{"name":"single","type":"TestModel.Fruits"},{"name":"vec","type":{"vector":{"items":"TestModel.Fruits"}}},{"name":"size","type":"TestModel.SizeBasedEnum"},{"name":"rec","type":"TestModel.RecordWithEnums"},{"name":"recArray","type":{"array":{"items":"TestModel.RecordWithEnums"}}}]},"types":[{"name":"DaysOfWeek","values":[{"symbol":"monday","value":1},{"symbol":"tuesday","value":2},{"symbol":"wednesday","value":4},{"symbol":"thursday","value":8},{"symbol":"friday","value":16},{"symbol":"saturday","value":32},{"symbol":"sunday","value":64}]},{"name":"Fruits","values":[{"symbol":"apple","value":1},{"symbol":"banana","value":2},{"symbol":"pear","value":3}]},{"name":"TextFormat","base":"uint64","values":[{"symbol":"regular","value":0},{"symbol":"bold","value":1},{"symbol":"italic","value":2},{"symbol":"underline","value":4},{"symbol":"strikethrough","value":8}]},{"name":"DaysOfWeek","type":"BasicTypes.DaysOfWeek"},{"name":"Fruits","type":"BasicTypes.Fruits"},{"name":"RecordWithEnums","fields":[{"name":"enum","type":"TestModel.Fruits"},{"name":"flags","type":"TestModel.DaysOfWeek"},{"name":"flags2","type":"TestModel.TextFormat"},{"name":"rec","type":"TestModel.RecordWithNoDefaultEnum"}]},{"name":"RecordWithNoDefaultEnum","fields":[{"name":"enum","type":"TestModel.Fruits"}]},{"name":"SizeBasedEnum","base":"size","values":[{"symbol":"a","value":0},{"symbol":"b","value":1},{"symbol":"c","value":2}]},{"name":"TextFormat","type":"BasicTypes.TextFormat"}]})";

std::vector<std::string> EnumsWriterBase::previous_schemas_ = {
};
Expand Down Expand Up @@ -4856,11 +4859,20 @@ void EnumsWriterBase::WriteRec(test_model::RecordWithEnums const& value) {
state_ = 4;
}

void EnumsWriterBase::Close() {
void EnumsWriterBase::WriteRecArray(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) {
if (unlikely(state_ != 4)) {
EnumsWriterBaseInvalidState(4, false, state_);
}

WriteRecArrayImpl(value);
state_ = 5;
}

void EnumsWriterBase::Close() {
if (unlikely(state_ != 5)) {
EnumsWriterBaseInvalidState(5, false, state_);
}

CloseImpl();
}

Expand Down Expand Up @@ -4910,11 +4922,20 @@ void EnumsReaderBase::ReadRec(test_model::RecordWithEnums& value) {
state_ = 8;
}

void EnumsReaderBase::Close() {
if (!skip_completed_check_ && unlikely(state_ != 8)) {
void EnumsReaderBase::ReadRecArray(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) {
if (unlikely(state_ != 8)) {
EnumsReaderBaseInvalidState(8, state_);
}

ReadRecArrayImpl(value);
state_ = 10;
}

void EnumsReaderBase::Close() {
if (!skip_completed_check_ && unlikely(state_ != 10)) {
EnumsReaderBaseInvalidState(10, state_);
}

CloseImpl();
}
void EnumsReaderBase::CopyTo(EnumsWriterBase& writer) {
Expand All @@ -4938,6 +4959,11 @@ void EnumsReaderBase::CopyTo(EnumsWriterBase& writer) {
ReadRec(value);
writer.WriteRec(value);
}
{
yardl::DynamicNDArray<test_model::RecordWithEnums> value;
ReadRecArray(value);
writer.WriteRecArray(value);
}
}

namespace {
Expand Down
8 changes: 8 additions & 0 deletions cpp/test/generated/protocols.h
Original file line number Diff line number Diff line change
Expand Up @@ -2124,6 +2124,9 @@ class EnumsWriterBase {
// Ordinal 3.
void WriteRec(test_model::RecordWithEnums const& value);

// Ordinal 4.
void WriteRecArray(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value);

// Optionaly close this writer before destructing. Validates that all steps were completed.
void Close();

Expand All @@ -2137,6 +2140,7 @@ class EnumsWriterBase {
virtual void WriteVecImpl(std::vector<test_model::Fruits> const& value) = 0;
virtual void WriteSizeImpl(test_model::SizeBasedEnum const& value) = 0;
virtual void WriteRecImpl(test_model::RecordWithEnums const& value) = 0;
virtual void WriteRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums> const& value) = 0;
virtual void CloseImpl() {}

static std::string schema_;
Expand Down Expand Up @@ -2168,6 +2172,9 @@ class EnumsReaderBase {
// Ordinal 3.
void ReadRec(test_model::RecordWithEnums& value);

// Ordinal 4.
void ReadRecArray(yardl::DynamicNDArray<test_model::RecordWithEnums>& value);

// Optionaly close this writer before destructing. Validates that all steps were completely read.
void Close();

Expand All @@ -2180,6 +2187,7 @@ class EnumsReaderBase {
virtual void ReadVecImpl(std::vector<test_model::Fruits>& value) = 0;
virtual void ReadSizeImpl(test_model::SizeBasedEnum& value) = 0;
virtual void ReadRecImpl(test_model::RecordWithEnums& value) = 0;
virtual void ReadRecArrayImpl(yardl::DynamicNDArray<test_model::RecordWithEnums>& value) = 0;
virtual void CloseImpl() {}
static std::string schema_;

Expand Down
5 changes: 5 additions & 0 deletions cpp/test/roundtrip_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,11 @@ TEST_P(RoundTripTests, Enums) {
tw->WriteSize(SizeBasedEnum::kC);
tw->WriteRec(RecordWithEnums{Fruits::kBanana, DaysOfWeek::kMonday, TextFormat::kBold, RecordWithNoDefaultEnum{Fruits::kPear}});

tw->WriteRecArray({
RecordWithEnums{Fruits::kPear, DaysOfWeek::kMonday, TextFormat::kBold, RecordWithNoDefaultEnum{Fruits::kBanana}},
RecordWithEnums{Fruits::kApple, DaysOfWeek(), TextFormat::kRegular, RecordWithNoDefaultEnum{Fruits::kApple}},
});

tw->Close();
}

Expand Down
6 changes: 6 additions & 0 deletions matlab/generated/+test_model/+binary/EnumsReader.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
vec_serializer
size_serializer
rec_serializer
rec_array_serializer
end

methods
Expand All @@ -21,6 +22,7 @@
self.vec_serializer = yardl.binary.VectorSerializer(yardl.binary.EnumSerializer('basic_types.Fruits', @basic_types.Fruits, yardl.binary.Int32Serializer));
self.size_serializer = yardl.binary.EnumSerializer('test_model.SizeBasedEnum', @test_model.SizeBasedEnum, yardl.binary.SizeSerializer);
self.rec_serializer = test_model.binary.RecordWithEnumsSerializer();
self.rec_array_serializer = yardl.binary.DynamicNDArraySerializer(test_model.binary.RecordWithEnumsSerializer());
end
end

Expand All @@ -40,5 +42,9 @@
function value = read_rec_(self)
value = self.rec_serializer.read(self.stream_);
end

function value = read_rec_array_(self)
value = self.rec_array_serializer.read(self.stream_);
end
end
end
6 changes: 6 additions & 0 deletions matlab/generated/+test_model/+binary/EnumsWriter.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
vec_serializer
size_serializer
rec_serializer
rec_array_serializer
end

methods
Expand All @@ -17,6 +18,7 @@
self.vec_serializer = yardl.binary.VectorSerializer(yardl.binary.EnumSerializer('basic_types.Fruits', @basic_types.Fruits, yardl.binary.Int32Serializer));
self.size_serializer = yardl.binary.EnumSerializer('test_model.SizeBasedEnum', @test_model.SizeBasedEnum, yardl.binary.SizeSerializer);
self.rec_serializer = test_model.binary.RecordWithEnumsSerializer();
self.rec_array_serializer = yardl.binary.DynamicNDArraySerializer(test_model.binary.RecordWithEnumsSerializer());
end
end

Expand All @@ -36,5 +38,9 @@ function write_size_(self, value)
function write_rec_(self, value)
self.rec_serializer.write(self.stream_, value);
end

function write_rec_array_(self, value)
self.rec_array_serializer.write(self.stream_, value);
end
end
end
Loading
Loading