@@ -445,67 +445,35 @@ ROOT::RFieldBase::Create(const std::string &fieldName, const std::string &typeNa
445
445
if (innerTypes.size () != 2 ) {
446
446
return R__FORWARD_RESULT (fnFail (" the type list for std::map must have exactly two elements" ));
447
447
}
448
-
449
448
auto itemField =
450
449
Create (" _0" , " std::pair<" + innerTypes[0 ] + " ," + innerTypes[1 ] + " >" , options, desc, maybeGetChildId (0 ))
451
450
.Unwrap ();
452
-
453
- // We use the type names of subfields of the newly created item fields to create the map's type name to
454
- // ensure the inner type names are properly normalized.
455
- auto keyTypeName = itemField->GetConstSubfields ()[0 ]->GetTypeName ();
456
- auto valueTypeName = itemField->GetConstSubfields ()[1 ]->GetTypeName ();
457
-
458
- result = std::make_unique<RMapField>(fieldName, " std::map<" + keyTypeName + " ," + valueTypeName + " >" ,
459
- std::move (itemField));
451
+ result = std::make_unique<RMapField>(fieldName, RMapField::EMapType::kMap , std::move (itemField));
460
452
} else if (resolvedType.substr (0 , 19 ) == " std::unordered_map<" ) {
461
453
auto innerTypes = TokenizeTypeList (resolvedType.substr (19 , resolvedType.length () - 20 ));
462
454
if (innerTypes.size () != 2 )
463
455
return R__FORWARD_RESULT (fnFail (" the type list for std::unordered_map must have exactly two elements" ));
464
-
465
456
auto itemField =
466
457
Create (" _0" , " std::pair<" + innerTypes[0 ] + " ," + innerTypes[1 ] + " >" , options, desc, maybeGetChildId (0 ))
467
458
.Unwrap ();
468
-
469
- // We use the type names of subfields of the newly created item fields to create the map's type name to
470
- // ensure the inner type names are properly normalized.
471
- auto keyTypeName = itemField->GetConstSubfields ()[0 ]->GetTypeName ();
472
- auto valueTypeName = itemField->GetConstSubfields ()[1 ]->GetTypeName ();
473
-
474
- result = std::make_unique<RMapField>(
475
- fieldName, " std::unordered_map<" + keyTypeName + " ," + valueTypeName + " >" , std::move (itemField));
459
+ result = std::make_unique<RMapField>(fieldName, RMapField::EMapType::kUnorderedMap , std::move (itemField));
476
460
} else if (resolvedType.substr (0 , 14 ) == " std::multimap<" ) {
477
461
auto innerTypes = TokenizeTypeList (resolvedType.substr (14 , resolvedType.length () - 15 ));
478
462
if (innerTypes.size () != 2 )
479
463
return R__FORWARD_RESULT (fnFail (" the type list for std::multimap must have exactly two elements" ));
480
-
481
464
auto itemField =
482
465
Create (" _0" , " std::pair<" + innerTypes[0 ] + " ," + innerTypes[1 ] + " >" , options, desc, maybeGetChildId (0 ))
483
466
.Unwrap ();
484
-
485
- // We use the type names of subfields of the newly created item fields to create the map's type name to
486
- // ensure the inner type names are properly normalized.
487
- auto keyTypeName = itemField->GetConstSubfields ()[0 ]->GetTypeName ();
488
- auto valueTypeName = itemField->GetConstSubfields ()[1 ]->GetTypeName ();
489
-
490
- result = std::make_unique<RMapField>(fieldName, " std::multimap<" + keyTypeName + " ," + valueTypeName + " >" ,
491
- std::move (itemField));
467
+ result = std::make_unique<RMapField>(fieldName, RMapField::EMapType::kMultiMap , std::move (itemField));
492
468
} else if (resolvedType.substr (0 , 24 ) == " std::unordered_multimap<" ) {
493
469
auto innerTypes = TokenizeTypeList (resolvedType.substr (24 , resolvedType.length () - 25 ));
494
470
if (innerTypes.size () != 2 )
495
471
return R__FORWARD_RESULT (
496
472
fnFail (" the type list for std::unordered_multimap must have exactly two elements" ));
497
-
498
473
auto itemField =
499
474
Create (" _0" , " std::pair<" + innerTypes[0 ] + " ," + innerTypes[1 ] + " >" , options, desc, maybeGetChildId (0 ))
500
475
.Unwrap ();
501
-
502
- // We use the type names of subfields of the newly created item fields to create the map's type name to
503
- // ensure the inner type names are properly normalized.
504
- auto keyTypeName = itemField->GetConstSubfields ()[0 ]->GetTypeName ();
505
- auto valueTypeName = itemField->GetConstSubfields ()[1 ]->GetTypeName ();
506
-
507
- result = std::make_unique<RMapField>(
508
- fieldName, " std::unordered_multimap<" + keyTypeName + " ," + valueTypeName + " >" , std::move (itemField));
476
+ result = std::make_unique<RMapField>(fieldName, RMapField::EMapType::kUnorderedMultiMap , std::move (itemField));
509
477
} else if (resolvedType.substr (0 , 12 ) == " std::atomic<" ) {
510
478
std::string itemTypeName = resolvedType.substr (12 , resolvedType.length () - 13 );
511
479
auto itemField = Create (" _0" , itemTypeName, options, desc, maybeGetChildId (0 )).Unwrap ();
0 commit comments