| 111 | } // namespace base_class |
| 112 | |
| 113 | void base_class_example(void) { |
| 114 | using namespace base_class; |
| 115 | std::vector<std::unique_ptr<base>> data; |
| 116 | data.emplace_back(std::make_unique<obj2>()); |
| 117 | data.emplace_back(std::make_unique<obj1>()); |
| 118 | data.emplace_back(std::make_unique<obj3>()); |
| 119 | data.emplace_back(std::make_unique<base>()); |
| 120 | auto ret = struct_pack::serialize(data); |
| 121 | auto checker = std::vector{"obj2", "obj1", "obj3", "base"}; |
| 122 | auto result = |
| 123 | struct_pack::deserialize<std::vector<std::unique_ptr<base>>>(ret); |
| 124 | assert(result.has_value()); |
| 125 | assert(result->size() == 4); // check vector size |
| 126 | for (size_t i = 0; i < result->size(); ++i) { |
| 127 | assert(checker[i] == result.value()[i]->hello()); // check type |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | void deserialize_derived_class_example() { |
| 132 | using namespace base_class; |