#include "../properties/resources.hpp"
#include <xtd/xtd>
auto write_binary_file(auto file_name, auto items) {
auto writer = binary_writer {file_name};
writer.write(std::get<0>(items));
writer.write(std::get<1>(items));
writer.write(std::get<2>(items));
writer.write(std::get<3>(items));
}
auto read_binary_file(auto file_name) {
if (!file::exists(file_name)) return std::make_tuple(.0f, ""_s, 0, false);
auto reader = binary_reader {file_name};
return std::make_tuple(reader.read_single(), reader.read_string(), reader.read_int32(), reader.read_boolean());
}
auto main() -> int {
constexpr auto file_name = "file_xtd.dat";
console::write_line("Write binary file");
write_binary_file(file_name, std::make_tuple(1.25f, "This is a string", 42, true));
console::write_line("\nRead binary file");
auto items = read_binary_file(file_name);
console::write_line(" {}", std::get<0>(items));
console::write_line(" {}", std::get<1>(items));
console::write_line(" {}", std::get<2>(items));
console::write_line(" {}", std::get<3>(items));
using namespace binary_reader_and_binary_writer::properties;
console::write_line("\nPrint binary files from xtd and dotnet");
console::write_line(" file_dotnet -> {}", resources::file_dotnet());
console::write_line(" file_xtd -> {}", resources::file_xtd());
console::write_line("\nSame code in c#");
console::write_line("```csharp");
console::write(string {resources::csharp_source().begin(), resources::csharp_source().end()});
console::write_line("```");
}