MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / decode

Method decode

rpcs3/util/Config.cpp:423–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

421}
422
423void cfg::decode(const YAML::Node& data, cfg::_base& rhs, bool dynamic)
424{
425 if (dynamic && !rhs.get_is_dynamic())
426 {
427 return;
428 }
429
430 switch (rhs.get_type())
431 {
432 case type::node:
433 {
434 if (data.IsScalar() || data.IsSequence())
435 {
436 return; // ???
437 }
438
439 for (const auto& pair : data)
440 {
441 if (!pair.first.IsScalar())
442 continue;
443
444 // Find the key among existing nodes
445 for (const auto& node : static_cast<node&>(rhs).get_nodes())
446 {
447 if (node->get_name() == pair.first.Scalar())
448 {
449 decode(pair.second, *node, dynamic);
450 }
451 }
452 }
453
454 break;
455 }
456 case type::set:
457 {
458 std::vector<std::string> values;
459
460 if (YAML::convert<decltype(values)>::decode(data, values))
461 {
462 rhs.from_list(std::move(values));
463 }
464
465 break;
466 }
467 case type::map:
468 case type::node_map:
469 {
470 if (!data.IsMap())
471 {
472 return;
473 }
474
475 map_of_type<std::string> values;
476
477 for (const auto& pair : data)
478 {
479 if (!pair.first.IsScalar() || !pair.second.IsScalar())
480 continue;

Callers 2

set_decode_commandMethod · 0.45

Calls 7

get_is_dynamicMethod · 0.80
set_mapMethod · 0.80
get_typeMethod · 0.45
get_nameMethod · 0.45
from_listMethod · 0.45
emplaceMethod · 0.45
from_stringMethod · 0.45

Tested by

no test coverage detected