Tser can now output wstring and already saves wstring, so now need to use it.

main
Zed A. Shaw 4 weeks ago
parent b113b90257
commit babc190525
  1. 6
      tests/config.cpp
  2. 4
      tser.hpp

@ -82,13 +82,14 @@ struct Pixel {
struct Robot {
Pixel point;
std::wstring name;
std::optional<Item> item;
DEFINE_SERIALIZABLE(Robot, point, item);
DEFINE_SERIALIZABLE(Robot, point, name, item);
};
TEST_CASE("test using tser for serialization", "[config]") {
auto robot = Robot{ Pixel{3,4}, Item::RADAR};
auto robot = Robot{ Pixel{3,4}, L"BIG NAME", Item::RADAR};
std::cout << robot << '\n';
tser::BinaryArchive archive;
@ -101,5 +102,6 @@ TEST_CASE("test using tser for serialization", "[config]") {
REQUIRE(loadedRobot.point.x == robot.point.x);
REQUIRE(loadedRobot.point.y == robot.point.y);
REQUIRE(loadedRobot.name == robot.name);
REQUIRE(loadedRobot.item == robot.item);
}

@ -8,6 +8,7 @@
#include <string_view>
#include <type_traits>
#include <tuple>
#include <codecvt>
namespace tser{
//implementation details for C++20 is_detected
@ -89,6 +90,9 @@ namespace tser{
using V = std::decay_t<T>;
if constexpr (std::is_constructible_v<std::string, T> || std::is_same_v<V, char>) {
os << "\"" << val << "\"";
} else if constexpr (std::is_constructible_v<std::wstring, T> || std::is_same_v<V, char>) {
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
os << "\"" << converter.to_bytes(val) << "\"";
} else if constexpr (is_container_v<V>) {
size_t i = 0;
os << "\n[";

Loading…
Cancel
Save