Skip to content

Commit 8b82a3e

Browse files
committed
[ntuple] minor improvement in RFieldBase::CompareOnDiskField()
1 parent 98cee74 commit 8b82a3e

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

tree/ntuple/inc/ROOT/RFieldBase.hxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ protected:
518518

519519
/// Returns a combination of kDiff... flags, indicating peroperties that are different between the field at hand
520520
/// and the given on-disk field
521-
std::uint32_t CompareOnDiskField(const RFieldDescriptor &fieldDesc) const;
521+
std::uint32_t CompareOnDiskField(const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const;
522522
/// Compares the field to the provieded on-disk field descriptor. Throws an exception if the fields don't match.
523523
/// Optionally, a set of bits can be provided that should be ignored in the comparison.
524524
void EnsureMatchingOnDiskField(const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits = 0) const;

tree/ntuple/src/RFieldBase.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ void ROOT::RFieldBase::ReconcileOnDiskField(const RNTupleDescriptor &desc)
10471047

10481048
void ROOT::RFieldBase::EnsureMatchingOnDiskField(const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const
10491049
{
1050-
const std::uint32_t diffBits = CompareOnDiskField(fieldDesc) & ~ignoreBits;
1050+
const std::uint32_t diffBits = CompareOnDiskField(fieldDesc, ignoreBits);
10511051
if (diffBits == 0)
10521052
return;
10531053

@@ -1082,18 +1082,18 @@ void ROOT::RFieldBase::EnsureMatchingTypePrefix(const RFieldDescriptor &fieldDes
10821082
throw RException(R__FAIL("incompatible type " + fieldDesc.GetTypeName() + " for field " + GetQualifiedFieldName()));
10831083
}
10841084

1085-
std::uint32_t ROOT::RFieldBase::CompareOnDiskField(const RFieldDescriptor &fieldDesc) const
1085+
std::uint32_t ROOT::RFieldBase::CompareOnDiskField(const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const
10861086
{
10871087
std::uint32_t diffBits = 0;
1088-
if (GetFieldVersion() != fieldDesc.GetFieldVersion())
1088+
if ((~ignoreBits & kDiffFieldVersion) && (GetFieldVersion() != fieldDesc.GetFieldVersion()))
10891089
diffBits |= kDiffFieldVersion;
1090-
if (GetTypeVersion() != fieldDesc.GetTypeVersion())
1090+
if ((~ignoreBits & kDiffTypeVersion) && (GetTypeVersion() != fieldDesc.GetTypeVersion()))
10911091
diffBits |= kDiffTypeVersion;
1092-
if (GetStructure() != fieldDesc.GetStructure())
1092+
if ((~ignoreBits & kDiffStructure) && (GetStructure() != fieldDesc.GetStructure()))
10931093
diffBits |= kDiffStructure;
1094-
if (GetTypeName() != fieldDesc.GetTypeName())
1094+
if ((~ignoreBits & kDiffTypeName) && (GetTypeName() != fieldDesc.GetTypeName()))
10951095
diffBits |= kDiffTypeName;
1096-
if (GetNRepetitions() != fieldDesc.GetNRepetitions())
1096+
if ((~ignoreBits & kDiffNRepetitions) && (GetNRepetitions() != fieldDesc.GetNRepetitions()))
10971097
diffBits |= kDiffNRepetitions;
10981098

10991099
return diffBits;

0 commit comments

Comments
 (0)