@@ -170,27 +170,12 @@ bool ROOT::RFieldDescriptor::IsCustomClass() const
170170
171171bool ROOT::RFieldDescriptor::IsCustomEnum (const RNTupleDescriptor &desc) const
172172{
173- if (fStructure != ROOT::ENTupleStructure::kPlain )
174- return false ;
175- if (fTypeName .rfind (" std::" , 0 ) == 0 )
176- return false ;
177-
178- auto subFieldId = desc.FindFieldId (" _0" , fFieldId );
179- if (subFieldId == kInvalidDescriptorId )
180- return false ;
181-
182- static const std::string gIntTypeNames [] = {" bool" , " char" , " std::int8_t" , " std::uint8_t" ,
183- " std::int16_t" , " std::uint16_t" , " std::int32_t" , " std::uint32_t" ,
184- " std::int64_t" , " std::uint64_t" };
185- return std::find (std::begin (gIntTypeNames ), std::end (gIntTypeNames ),
186- desc.GetFieldDescriptor (subFieldId).GetTypeName ()) != std::end (gIntTypeNames );
173+ return Internal::IsCustomEnumFieldDesc (desc, *this );
187174}
188175
189176bool ROOT::RFieldDescriptor::IsStdAtomic () const
190177{
191- if (fStructure != ROOT::ENTupleStructure::kPlain )
192- return false ;
193- return (fTypeName .rfind (" std::atomic<" , 0 ) == 0 );
178+ return Internal::IsStdAtomicFieldDesc (*this );
194179}
195180
196181// //////////////////////////////////////////////////////////////////////////////
@@ -1507,3 +1492,28 @@ ROOT::Experimental::RNTupleAttrSetDescriptor ROOT::Experimental::RNTupleAttrSetD
15071492 desc.fName = fName ;
15081493 return desc;
15091494}
1495+
1496+ bool ROOT::Internal::IsCustomEnumFieldDesc (const RNTupleDescriptor &desc, const RFieldDescriptor &fieldDesc)
1497+ {
1498+ if (fieldDesc.GetStructure () != ROOT::ENTupleStructure::kPlain )
1499+ return false ;
1500+ if (fieldDesc.GetTypeName ().rfind (" std::" , 0 ) == 0 )
1501+ return false ;
1502+
1503+ auto subFieldId = desc.FindFieldId (" _0" , fieldDesc.GetId ());
1504+ if (subFieldId == kInvalidDescriptorId )
1505+ return false ;
1506+
1507+ static const std::string gIntTypeNames [] = {" bool" , " char" , " std::int8_t" , " std::uint8_t" ,
1508+ " std::int16_t" , " std::uint16_t" , " std::int32_t" , " std::uint32_t" ,
1509+ " std::int64_t" , " std::uint64_t" };
1510+ return std::find (std::begin (gIntTypeNames ), std::end (gIntTypeNames ),
1511+ desc.GetFieldDescriptor (subFieldId).GetTypeName ()) != std::end (gIntTypeNames );
1512+ }
1513+
1514+ bool ROOT::Internal::IsStdAtomicFieldDesc (const RFieldDescriptor &fieldDesc)
1515+ {
1516+ if (fieldDesc.GetStructure () != ROOT::ENTupleStructure::kPlain )
1517+ return false ;
1518+ return (fieldDesc.GetTypeName ().rfind (" std::atomic<" , 0 ) == 0 );
1519+ }
0 commit comments