206 void DoDump(
const T&
object, YAML::Emitter& ss, std::optional<YAML::EMITTER_MANIP> formatEntries = {})
212 if constexpr (std::is_same_v<T, i8> || std::is_same_v<T, u8>)
221 ss << YAML::BeginSeq;
225 if constexpr (std::is_same_v<T, std::vector<bool>>) {
226 for (
bool element :
object) {
227 if (formatEntries.has_value()) {
228 ss << formatEntries.value();
234 for (
const auto& element :
object) {
235 if (formatEntries.has_value()) {
236 ss << formatEntries.value();
244 ss << YAML::BeginMap;
245 for (
const auto& [key, value] :
object) {
246 if (formatEntries.has_value()) {
247 ss << formatEntries.value();
249 ss << YAML::Key << key;
256 constexpr auto nProperties = std::tuple_size<
decltype(T::Properties)>::value;
258 ss << fmtTag.value();
262 auto&
property = std::get<0>(T::Properties);
263 auto& value =
property.Get(
object);
264 auto format =
property.Format();
265 if (format.has_value()) {
266 ss << format.value();
268 DoDump(value, ss, property.FormatEntries());
271 ss << YAML::BeginMap;
272 ForEach(std::make_integer_sequence<std::size_t, nProperties>{}, [&](
auto index) {
273 auto&
property = std::get<index>(T::Properties);
274 auto& value =
property.Get(
object);
275 auto format =
property.Format();
276 ss << YAML::Key << std::string{
property.Key()};
277 if (format.has_value()) {
278 ss << format.value();
281 DoDump(value, ss, property.FormatEntries());