Skip to content

Commit e93e580

Browse files
committed
[ntuple] remove RNTupleDescriptorBuilder::BuildStreamerInfos()
1 parent c231ed6 commit e93e580

File tree

3 files changed

+0
-128
lines changed

3 files changed

+0
-128
lines changed

tree/ntuple/inc/ROOT/RNTupleDescriptor.hxx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,9 +1762,6 @@ public:
17621762
/// - Logical columns of piece two
17631763
/// - ...
17641764
void ShiftAliasColumns(std::uint32_t offset);
1765-
1766-
/// Get the streamer info records for custom classes. Currently requires the corresponding dictionaries to be loaded.
1767-
ROOT::Internal::RNTupleSerializer::StreamerInfoMap_t BuildStreamerInfos() const;
17681765
};
17691766

17701767
inline RNTupleDescriptor CloneDescriptorSchema(const RNTupleDescriptor &desc)

tree/ntuple/src/RNTupleDescriptor.cxx

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
#include <RZip.h>
2626
#include <TError.h>
27-
#include <TVirtualStreamerInfo.h>
2827

2928
#include <algorithm>
3029
#include <cstdint>
@@ -1412,48 +1411,6 @@ ROOT::Internal::RNTupleDescriptorBuilder::AddAttributeSet(Experimental::RNTupleA
14121411
return RResult<void>::Success();
14131412
}
14141413

1415-
RNTupleSerializer::StreamerInfoMap_t ROOT::Internal::RNTupleDescriptorBuilder::BuildStreamerInfos() const
1416-
{
1417-
RNTupleSerializer::StreamerInfoMap_t streamerInfoMap;
1418-
const auto &desc = GetDescriptor();
1419-
1420-
std::function<void(const RFieldDescriptor &)> fnWalkFieldTree;
1421-
fnWalkFieldTree = [&desc, &streamerInfoMap, &fnWalkFieldTree](const RFieldDescriptor &fieldDesc) {
1422-
if (fieldDesc.IsCustomClass()) {
1423-
// Add streamer info for this class to streamerInfoMap
1424-
auto cl = TClass::GetClass(fieldDesc.GetTypeName().c_str());
1425-
if (!cl) {
1426-
throw RException(R__FAIL(std::string("cannot get TClass for ") + fieldDesc.GetTypeName()));
1427-
}
1428-
auto streamerInfo = cl->GetStreamerInfo(fieldDesc.GetTypeVersion());
1429-
if (!streamerInfo) {
1430-
throw RException(R__FAIL(std::string("cannot get streamerInfo for ") + fieldDesc.GetTypeName()));
1431-
}
1432-
streamerInfoMap[streamerInfo->GetNumber()] = streamerInfo;
1433-
}
1434-
1435-
// Recursively traverse sub fields
1436-
for (const auto &subFieldDesc : desc.GetFieldIterable(fieldDesc)) {
1437-
fnWalkFieldTree(subFieldDesc);
1438-
}
1439-
};
1440-
1441-
fnWalkFieldTree(desc.GetFieldZero());
1442-
1443-
// Add the streamer info records from streamer fields: because of runtime polymorphism we may need to add additional
1444-
// types not covered by the type names stored in the field headers
1445-
for (const auto &extraTypeInfo : desc.GetExtraTypeInfoIterable()) {
1446-
if (extraTypeInfo.GetContentId() != EExtraTypeInfoIds::kStreamerInfo)
1447-
continue;
1448-
// Ideally, we would avoid deserializing the streamer info records of the streamer fields that we just serialized.
1449-
// However, this happens only once at the end of writing and only when streamer fields are used, so the
1450-
// preference here is for code simplicity.
1451-
streamerInfoMap.merge(RNTupleSerializer::DeserializeStreamerInfos(extraTypeInfo.GetContent()).Unwrap());
1452-
}
1453-
1454-
return streamerInfoMap;
1455-
}
1456-
14571414
ROOT::RClusterDescriptor::RColumnRangeIterable ROOT::RClusterDescriptor::GetColumnRangeIterable() const
14581415
{
14591416
return RColumnRangeIterable(*this);

tree/ntuple/test/ntuple_descriptor.cxx

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -609,88 +609,6 @@ TEST(RNTupleDescriptor, Clone)
609609
EXPECT_EQ(desc, clone);
610610
}
611611

612-
TEST(RNTupleDescriptor, BuildStreamerInfos)
613-
{
614-
auto fnBuildStreamerInfosOf = [](const RFieldBase &field) -> RNTupleSerializer::StreamerInfoMap_t {
615-
RNTupleDescriptorBuilder descBuilder;
616-
descBuilder.SetNTuple("test", "");
617-
descBuilder.AddField(
618-
RFieldDescriptorBuilder().FieldId(0).Structure(ROOT::ENTupleStructure::kRecord).MakeDescriptor().Unwrap());
619-
auto fieldBuilder = RFieldDescriptorBuilder::FromField(field);
620-
descBuilder.AddField(fieldBuilder.FieldId(1).MakeDescriptor().Unwrap());
621-
descBuilder.AddFieldLink(0, 1);
622-
int i = 2;
623-
// In this test, we only support field hierarchies up to 2 levels
624-
for (const auto &child : field.GetConstSubfields()) {
625-
fieldBuilder = RFieldDescriptorBuilder::FromField(*child);
626-
descBuilder.AddField(fieldBuilder.FieldId(i).MakeDescriptor().Unwrap());
627-
descBuilder.AddFieldLink(1, i);
628-
const auto childId = i;
629-
i++;
630-
for (const auto &grandChild : child->GetConstSubfields()) {
631-
fieldBuilder = RFieldDescriptorBuilder::FromField(*grandChild);
632-
descBuilder.AddField(fieldBuilder.FieldId(i).MakeDescriptor().Unwrap());
633-
descBuilder.AddFieldLink(childId, i);
634-
i++;
635-
}
636-
}
637-
return descBuilder.BuildStreamerInfos();
638-
};
639-
640-
RNTupleSerializer::StreamerInfoMap_t streamerInfoMap;
641-
642-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "float").Unwrap());
643-
EXPECT_TRUE(streamerInfoMap.empty());
644-
645-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::vector<float>").Unwrap());
646-
EXPECT_TRUE(streamerInfoMap.empty());
647-
648-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::pair<float, float>").Unwrap());
649-
EXPECT_TRUE(streamerInfoMap.empty());
650-
651-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::map<int, float>").Unwrap());
652-
EXPECT_TRUE(streamerInfoMap.empty());
653-
654-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::unordered_map<int, float>").Unwrap());
655-
EXPECT_TRUE(streamerInfoMap.empty());
656-
657-
std::vector<std::unique_ptr<RFieldBase>> itemFields;
658-
streamerInfoMap = fnBuildStreamerInfosOf(ROOT::RRecordField("f", std::move(itemFields)));
659-
EXPECT_TRUE(streamerInfoMap.empty());
660-
661-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "CustomStruct").Unwrap());
662-
EXPECT_EQ(1u, streamerInfoMap.size());
663-
EXPECT_STREQ("CustomStruct", streamerInfoMap.begin()->second->GetName());
664-
665-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::vector<CustomStruct>").Unwrap());
666-
EXPECT_EQ(1u, streamerInfoMap.size());
667-
EXPECT_STREQ("CustomStruct", streamerInfoMap.begin()->second->GetName());
668-
669-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::map<int, CustomStruct>").Unwrap());
670-
EXPECT_EQ(1u, streamerInfoMap.size());
671-
EXPECT_STREQ("CustomStruct", streamerInfoMap.begin()->second->GetName());
672-
673-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "DerivedA").Unwrap());
674-
EXPECT_EQ(2u, streamerInfoMap.size());
675-
std::vector<std::string> typeNames;
676-
for (const auto &[_, si] : streamerInfoMap) {
677-
typeNames.emplace_back(si->GetName());
678-
}
679-
std::sort(typeNames.begin(), typeNames.end());
680-
EXPECT_STREQ("CustomStruct", typeNames[0].c_str());
681-
EXPECT_STREQ("DerivedA", typeNames[1].c_str());
682-
683-
streamerInfoMap = fnBuildStreamerInfosOf(*RFieldBase::Create("f", "std::pair<CustomStruct, DerivedA>").Unwrap());
684-
EXPECT_EQ(2u, streamerInfoMap.size());
685-
typeNames.clear();
686-
for (const auto &[_, si] : streamerInfoMap) {
687-
typeNames.emplace_back(si->GetName());
688-
}
689-
std::sort(typeNames.begin(), typeNames.end());
690-
EXPECT_STREQ("CustomStruct", typeNames[0].c_str());
691-
EXPECT_STREQ("DerivedA", typeNames[1].c_str());
692-
}
693-
694612
TEST(RNTupleDescriptor, CloneSchema)
695613
{
696614
FileRaii fileGuard("test_ntuple_desc_cloneschema.root");

0 commit comments

Comments
 (0)