Skip to content
Merged
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
15 changes: 13 additions & 2 deletions cpp/test/generated/binary/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,9 @@ struct IsTriviallySerializable<test_model::RecordWithMaps> {
std::is_standard_layout_v<__T__> &&
IsTriviallySerializable<decltype(__T__::set_1)>::value &&
IsTriviallySerializable<decltype(__T__::set_2)>::value &&
(sizeof(__T__) == (sizeof(__T__::set_1) + sizeof(__T__::set_2))) &&
offsetof(__T__, set_1) < offsetof(__T__, set_2);
IsTriviallySerializable<decltype(__T__::set_3)>::value &&
(sizeof(__T__) == (sizeof(__T__::set_1) + sizeof(__T__::set_2) + sizeof(__T__::set_3))) &&
offsetof(__T__, set_1) < offsetof(__T__, set_2) && offsetof(__T__, set_2) < offsetof(__T__, set_3);
};

template <>
Expand Down Expand Up @@ -1775,6 +1776,7 @@ namespace {

yardl::binary::WriteMap<uint32_t, uint32_t, yardl::binary::WriteInteger, yardl::binary::WriteInteger>(stream, value.set_1);
yardl::binary::WriteMap<int32_t, bool, yardl::binary::WriteInteger, yardl::binary::WriteInteger>(stream, value.set_2);
yardl::binary::WriteMap<std::string, std::variant<std::string, int32_t>, yardl::binary::WriteString, WriteUnion<std::string, yardl::binary::WriteString, int32_t, yardl::binary::WriteInteger>>(stream, value.set_3);
}

[[maybe_unused]] void ReadRecordWithMaps(yardl::binary::CodedInputStream& stream, test_model::RecordWithMaps& value) {
Expand All @@ -1785,6 +1787,7 @@ namespace {

yardl::binary::ReadMap<uint32_t, uint32_t, yardl::binary::ReadInteger, yardl::binary::ReadInteger>(stream, value.set_1);
yardl::binary::ReadMap<int32_t, bool, yardl::binary::ReadInteger, yardl::binary::ReadInteger>(stream, value.set_2);
yardl::binary::ReadMap<std::string, std::variant<std::string, int32_t>, yardl::binary::ReadString, ReadUnion<std::string, yardl::binary::ReadString, int32_t, yardl::binary::ReadInteger>>(stream, value.set_3);
}

[[maybe_unused]] void WriteFruits(yardl::binary::CodedOutputStream& stream, test_model::Fruits const& value) {
Expand Down Expand Up @@ -3989,6 +3992,10 @@ void UnionsWriter::WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::mono
WriteUnion<std::monostate, yardl::binary::WriteMonostate, int32_t, yardl::binary::WriteInteger, test_model::SimpleRecord, test_model::binary::WriteSimpleRecord>(stream_, value);
}

void UnionsWriter::WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) {
yardl::binary::WriteVector<std::variant<std::string, int32_t>, WriteUnion<std::string, yardl::binary::WriteString, int32_t, yardl::binary::WriteInteger>>(stream_, value);
}

void UnionsWriter::WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) {
basic_types::binary::WriteRecordWithUnions(stream_, value);
}
Expand All @@ -4013,6 +4020,10 @@ void UnionsReader::ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monos
ReadUnion<std::monostate, yardl::binary::ReadMonostate, int32_t, yardl::binary::ReadInteger, test_model::SimpleRecord, test_model::binary::ReadSimpleRecord>(stream_, value);
}

void UnionsReader::ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) {
yardl::binary::ReadVector<std::variant<std::string, int32_t>, ReadUnion<std::string, yardl::binary::ReadString, int32_t, yardl::binary::ReadInteger>>(stream_, value);
}

void UnionsReader::ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& value) {
basic_types::binary::ReadRecordWithUnions(stream_, value);
}
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 @@ -1001,6 +1001,7 @@ class UnionsWriter : public test_model::UnionsWriterBase, yardl::binary::BinaryW
void WriteIntOrSimpleRecordImpl(std::variant<int32_t, test_model::SimpleRecord> const& value) override;
void WriteIntOrRecordWithVlensImpl(std::variant<int32_t, test_model::RecordWithVlens> const& value) override;
void WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord> const& value) override;
void WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) override;
void WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) override;
void CloseImpl() override;

Expand All @@ -1022,6 +1023,7 @@ class UnionsReader : public test_model::UnionsReaderBase, yardl::binary::BinaryR
void ReadIntOrSimpleRecordImpl(std::variant<int32_t, test_model::SimpleRecord>& value) override;
void ReadIntOrRecordWithVlensImpl(std::variant<int32_t, test_model::RecordWithVlens>& value) override;
void ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord>& value) override;
void ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) override;
void ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& value) override;
void CloseImpl() override;

Expand Down
14 changes: 13 additions & 1 deletion cpp/test/generated/hdf5/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -903,16 +903,19 @@ struct _Inner_RecordWithMaps {
_Inner_RecordWithMaps() {}
_Inner_RecordWithMaps(test_model::RecordWithMaps const& o)
: set_1(o.set_1),
set_2(o.set_2) {
set_2(o.set_2),
set_3(o.set_3) {
}

void ToOuter (test_model::RecordWithMaps& o) const {
yardl::hdf5::ToOuter(set_1, o.set_1);
yardl::hdf5::ToOuter(set_2, o.set_2);
yardl::hdf5::ToOuter(set_3, o.set_3);
}

yardl::hdf5::InnerMap<uint32_t, uint32_t, uint32_t, uint32_t> set_1;
yardl::hdf5::InnerMap<int32_t, int32_t, bool, bool> set_2;
yardl::hdf5::InnerMap<yardl::hdf5::InnerVlenString, std::string, ::InnerUnion2<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>, std::variant<std::string, int32_t>> set_3;
};

template <typename _T1_Inner, typename T1, typename _T2_Inner, typename T2>
Expand Down Expand Up @@ -1581,6 +1584,7 @@ struct _Inner_RecordWithOptionalDate {
H5::CompType t(sizeof(RecordType));
t.insertMember("set1", HOFFSET(RecordType, set_1), yardl::hdf5::InnerMapDdl<uint32_t, uint32_t>(H5::PredType::NATIVE_UINT32, H5::PredType::NATIVE_UINT32));
t.insertMember("set2", HOFFSET(RecordType, set_2), yardl::hdf5::InnerMapDdl<int32_t, bool>(H5::PredType::NATIVE_INT32, H5::PredType::NATIVE_HBOOL));
t.insertMember("set3", HOFFSET(RecordType, set_3), yardl::hdf5::InnerMapDdl<yardl::hdf5::InnerVlenString, ::InnerUnion2<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>>(yardl::hdf5::InnerVlenStringDdl(), ::InnerUnion2Ddl<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>(false, yardl::hdf5::InnerVlenStringDdl(), "string", H5::PredType::NATIVE_INT32, "int32")));
return t;
}

Expand Down Expand Up @@ -3040,6 +3044,10 @@ void UnionsWriter::WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::mono
yardl::hdf5::WriteScalarDataset<::InnerUnion2<int32_t, int32_t, test_model::SimpleRecord, test_model::SimpleRecord>, std::variant<std::monostate, int32_t, test_model::SimpleRecord>>(group_, "monosotateOrIntOrSimpleRecord", ::InnerUnion2Ddl<int32_t, int32_t, test_model::SimpleRecord, test_model::SimpleRecord>(true, H5::PredType::NATIVE_INT32, "int32", test_model::hdf5::GetSimpleRecordHdf5Ddl(), "SimpleRecord"), value);
}

void UnionsWriter::WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) {
yardl::hdf5::WriteScalarDataset<yardl::hdf5::InnerVlen<::InnerUnion2<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>, std::variant<std::string, int32_t>>, std::vector<std::variant<std::string, int32_t>>>(group_, "vectorOfUnions", yardl::hdf5::InnerVlenDdl(::InnerUnion2Ddl<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>(false, yardl::hdf5::InnerVlenStringDdl(), "string", H5::PredType::NATIVE_INT32, "int32")), value);
}

void UnionsWriter::WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) {
yardl::hdf5::WriteScalarDataset<basic_types::hdf5::_Inner_RecordWithUnions, basic_types::RecordWithUnions>(group_, "recordWithUnions", basic_types::hdf5::GetRecordWithUnionsHdf5Ddl(), value);
}
Expand All @@ -3060,6 +3068,10 @@ void UnionsReader::ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monos
yardl::hdf5::ReadScalarDataset<::InnerUnion2<int32_t, int32_t, test_model::SimpleRecord, test_model::SimpleRecord>, std::variant<std::monostate, int32_t, test_model::SimpleRecord>>(group_, "monosotateOrIntOrSimpleRecord", ::InnerUnion2Ddl<int32_t, int32_t, test_model::SimpleRecord, test_model::SimpleRecord>(true, H5::PredType::NATIVE_INT32, "int32", test_model::hdf5::GetSimpleRecordHdf5Ddl(), "SimpleRecord"), value);
}

void UnionsReader::ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) {
yardl::hdf5::ReadScalarDataset<yardl::hdf5::InnerVlen<::InnerUnion2<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>, std::variant<std::string, int32_t>>, std::vector<std::variant<std::string, int32_t>>>(group_, "vectorOfUnions", yardl::hdf5::InnerVlenDdl(::InnerUnion2Ddl<yardl::hdf5::InnerVlenString, std::string, int32_t, int32_t>(false, yardl::hdf5::InnerVlenStringDdl(), "string", H5::PredType::NATIVE_INT32, "int32")), value);
}

void UnionsReader::ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& value) {
yardl::hdf5::ReadScalarDataset<basic_types::hdf5::_Inner_RecordWithUnions, basic_types::RecordWithUnions>(group_, "recordWithUnions", basic_types::hdf5::GetRecordWithUnionsHdf5Ddl(), value);
}
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 @@ -773,6 +773,8 @@ class UnionsWriter : public test_model::UnionsWriterBase, public yardl::hdf5::Hd

void WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord> const& value) override;

void WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) override;

void WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) override;

private:
Expand All @@ -789,6 +791,8 @@ class UnionsReader : public test_model::UnionsReaderBase, public yardl::hdf5::Hd

void ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord>& value) override;

void ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) override;

void ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& 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 @@ -2730,6 +2730,22 @@ class MockUnionsWriter : public UnionsWriterBase {
WriteMonosotateOrIntOrSimpleRecordImpl_expected_values_.push(value);
}

void WriteVectorOfUnionsImpl (std::vector<std::variant<std::string, int32_t>> const& value) override {
if (WriteVectorOfUnionsImpl_expected_values_.empty()) {
throw std::runtime_error("Unexpected call to WriteVectorOfUnionsImpl");
}
if (WriteVectorOfUnionsImpl_expected_values_.front() != value) {
throw std::runtime_error("Unexpected argument value for call to WriteVectorOfUnionsImpl");
}
WriteVectorOfUnionsImpl_expected_values_.pop();
}

std::queue<std::vector<std::variant<std::string, int32_t>>> WriteVectorOfUnionsImpl_expected_values_;

void ExpectWriteVectorOfUnionsImpl (std::vector<std::variant<std::string, int32_t>> const& value) {
WriteVectorOfUnionsImpl_expected_values_.push(value);
}

void WriteRecordWithUnionsImpl (basic_types::RecordWithUnions const& value) override {
if (WriteRecordWithUnionsImpl_expected_values_.empty()) {
throw std::runtime_error("Unexpected call to WriteRecordWithUnionsImpl");
Expand All @@ -2756,6 +2772,9 @@ class MockUnionsWriter : public UnionsWriterBase {
if (!WriteMonosotateOrIntOrSimpleRecordImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteMonosotateOrIntOrSimpleRecordImpl was not received");
}
if (!WriteVectorOfUnionsImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteVectorOfUnionsImpl was not received");
}
if (!WriteRecordWithUnionsImpl_expected_values_.empty()) {
throw std::runtime_error("Expected call to WriteRecordWithUnionsImpl was not received");
}
Expand Down Expand Up @@ -2789,6 +2808,11 @@ class TestUnionsWriterBase : public UnionsWriterBase {
mock_writer_.ExpectWriteMonosotateOrIntOrSimpleRecordImpl(value);
}

void WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) override {
writer_->WriteVectorOfUnions(value);
mock_writer_.ExpectWriteVectorOfUnionsImpl(value);
}

void WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) override {
writer_->WriteRecordWithUnions(value);
mock_writer_.ExpectWriteRecordWithUnionsImpl(value);
Expand Down
35 changes: 35 additions & 0 deletions cpp/test/generated/model.json
Original file line number Diff line number Diff line change
Expand Up @@ -1458,6 +1458,24 @@
"values": "bool"
}
}
},
{
"name": "set3",
"type": {
"map": {
"keys": "string",
"values": [
{
"tag": "string",
"type": "string"
},
{
"tag": "int32",
"type": "int32"
}
]
}
}
}
]
}
Expand Down Expand Up @@ -5097,6 +5115,23 @@
}
]
},
{
"name": "vectorOfUnions",
"type": {
"vector": {
"items": [
{
"tag": "string",
"type": "string"
},
{
"tag": "int32",
"type": "int32"
}
]
}
}
},
{
"name": "recordWithUnions",
"type": "BasicTypes.RecordWithUnions"
Expand Down
52 changes: 33 additions & 19 deletions cpp/test/generated/ndjson/protocols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,25 @@ struct adl_serializer<std::variant<yardl::DynamicNDArray<int32_t>, int32_t>> {
}
};

template <>
struct adl_serializer<std::variant<std::string, int32_t>> {
static void to_json(ordered_json& j, std::variant<std::string, int32_t> const& value) {
std::visit([&j](auto const& v) {j = v;}, value);
}

static void from_json(ordered_json const& j, std::variant<std::string, int32_t>& value) {
if ((j.is_string())) {
value = j.get<std::string>();
return;
}
if ((j.is_number())) {
value = j.get<int32_t>();
return;
}
throw std::runtime_error("Invalid union value");
}
};

template <>
struct adl_serializer<std::variant<std::monostate, std::string, int32_t>> {
static void to_json(ordered_json& j, std::variant<std::monostate, std::string, int32_t> const& value) {
Expand Down Expand Up @@ -769,25 +788,6 @@ struct adl_serializer<std::variant<test_model::SimpleAcquisition, yardl::NDArray
}
};

template <>
struct adl_serializer<std::variant<std::string, int32_t>> {
static void to_json(ordered_json& j, std::variant<std::string, int32_t> const& value) {
std::visit([&j](auto const& v) {j = v;}, value);
}

static void from_json(ordered_json const& j, std::variant<std::string, int32_t>& value) {
if ((j.is_string())) {
value = j.get<std::string>();
return;
}
if ((j.is_number())) {
value = j.get<int32_t>();
return;
}
throw std::runtime_error("Invalid union value");
}
};

template <>
struct adl_serializer<std::variant<int32_t, test_model::RecordWithVlens>> {
static void to_json(ordered_json& j, std::variant<int32_t, test_model::RecordWithVlens> const& value) {
Expand Down Expand Up @@ -1983,6 +1983,9 @@ void to_json(ordered_json& j, test_model::RecordWithMaps const& value) {
if (yardl::ndjson::ShouldSerializeFieldValue(value.set_2)) {
j.push_back({"set2", value.set_2});
}
if (yardl::ndjson::ShouldSerializeFieldValue(value.set_3)) {
j.push_back({"set3", value.set_3});
}
}

void from_json(ordered_json const& j, test_model::RecordWithMaps& value) {
Expand All @@ -1992,6 +1995,9 @@ void from_json(ordered_json const& j, test_model::RecordWithMaps& value) {
if (auto it = j.find("set2"); it != j.end()) {
it->get_to(value.set_2);
}
if (auto it = j.find("set3"); it != j.end()) {
it->get_to(value.set_3);
}
}

namespace {
Expand Down Expand Up @@ -3643,6 +3649,10 @@ void UnionsWriter::WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::mono
ordered_json json_value = value;
yardl::ndjson::WriteProtocolValue(stream_, "monosotateOrIntOrSimpleRecord", json_value);}

void UnionsWriter::WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) {
ordered_json json_value = value;
yardl::ndjson::WriteProtocolValue(stream_, "vectorOfUnions", json_value);}

void UnionsWriter::WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) {
ordered_json json_value = value;
yardl::ndjson::WriteProtocolValue(stream_, "recordWithUnions", json_value);}
Expand All @@ -3667,6 +3677,10 @@ void UnionsReader::ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monos
yardl::ndjson::ReadProtocolValue(stream_, line_, "monosotateOrIntOrSimpleRecord", true, unused_step_, value);
}

void UnionsReader::ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) {
yardl::ndjson::ReadProtocolValue(stream_, line_, "vectorOfUnions", true, unused_step_, value);
}

void UnionsReader::ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& value) {
yardl::ndjson::ReadProtocolValue(stream_, line_, "recordWithUnions", true, unused_step_, value);
}
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 @@ -909,6 +909,7 @@ class UnionsWriter : public test_model::UnionsWriterBase, yardl::ndjson::NDJsonW
void WriteIntOrSimpleRecordImpl(std::variant<int32_t, test_model::SimpleRecord> const& value) override;
void WriteIntOrRecordWithVlensImpl(std::variant<int32_t, test_model::RecordWithVlens> const& value) override;
void WriteMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord> const& value) override;
void WriteVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>> const& value) override;
void WriteRecordWithUnionsImpl(basic_types::RecordWithUnions const& value) override;
void CloseImpl() override;
};
Expand All @@ -928,6 +929,7 @@ class UnionsReader : public test_model::UnionsReaderBase, yardl::ndjson::NDJsonR
void ReadIntOrSimpleRecordImpl(std::variant<int32_t, test_model::SimpleRecord>& value) override;
void ReadIntOrRecordWithVlensImpl(std::variant<int32_t, test_model::RecordWithVlens>& value) override;
void ReadMonosotateOrIntOrSimpleRecordImpl(std::variant<std::monostate, int32_t, test_model::SimpleRecord>& value) override;
void ReadVectorOfUnionsImpl(std::vector<std::variant<std::string, int32_t>>& value) override;
void ReadRecordWithUnionsImpl(basic_types::RecordWithUnions& value) override;
void CloseImpl() override;
};
Expand Down
Loading
Loading