From 9c563c1cefaea2dc329eaf757c7906a44220fc68 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 09:16:06 +0200 Subject: [PATCH 1/7] [tree] implement missing classdefs --- tree/treeplayer/inc/TTreeReaderArray.h | 6 ++---- tree/treeplayer/inc/TTreeReaderValue.h | 8 +++----- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tree/treeplayer/inc/TTreeReaderArray.h b/tree/treeplayer/inc/TTreeReaderArray.h index a799134bad788..327909b164468 100644 --- a/tree/treeplayer/inc/TTreeReaderArray.h +++ b/tree/treeplayer/inc/TTreeReaderArray.h @@ -52,8 +52,7 @@ class TTreeReaderArrayBase : public TTreeReaderValueBase { std::unique_ptr fImpl; // Common interface to collections - // FIXME: re-introduce once we have ClassDefInline! - // ClassDefOverride(TTreeReaderArrayBase, 0);//Accessor to member of an object stored in a collection + ClassDefInlineOverride(TTreeReaderArrayBase, 0);//Accessor to member of an object stored in a collection }; class R__CLING_PTRCHECK(off) TTreeReaderUntypedArray final : public TTreeReaderArrayBase { @@ -241,8 +240,7 @@ class R__CLING_PTRCHECK(off) TTreeReaderArray final : public ROOT::Internal::TTr #define R__TTreeReaderArray_TypeString(T) #T const char *GetDerivedTypeName() const override { return R__TTreeReaderArray_TypeString(T); } #undef R__TTreeReaderArray_TypeString - // FIXME: re-introduce once we have ClassDefTInline! - // ClassDefT(TTreeReaderArray, 0);//Accessor to member of an object stored in a collection + ClassDefInline(TTreeReaderArray, 0);//Accessor to member of an object stored in a collection }; namespace cling { diff --git a/tree/treeplayer/inc/TTreeReaderValue.h b/tree/treeplayer/inc/TTreeReaderValue.h index 316672c771ef0..57c4ea54d2f01 100644 --- a/tree/treeplayer/inc/TTreeReaderValue.h +++ b/tree/treeplayer/inc/TTreeReaderValue.h @@ -150,8 +150,7 @@ class TTreeReaderValueBase { */ bool fOpaqueRead{false}; - // FIXME: re-introduce once we have ClassDefInline! - // ClassDefOverride(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader + ClassDefInlineOverride(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader friend class ::TTreeReader; }; @@ -238,7 +237,7 @@ class R__CLING_PTRCHECK(off) TTreeReaderValue final : public ROOT::Internal::TTr T &operator*() { return *Get(); } protected: - // FIXME: use IsA() instead once we have ClassDefTInline + // FIXME: use IsA() instead /// Get the template argument as a string. const char *GetDerivedTypeName() const override { @@ -246,8 +245,7 @@ class R__CLING_PTRCHECK(off) TTreeReaderValue final : public ROOT::Internal::TTr return sElementTypeName.data(); } - // FIXME: re-introduce once we have ClassDefTInline! - // ClassDefT(TTreeReaderValue, 0);//Accessor to data via TTreeReader + ClassDefInlineOverride(TTreeReaderValue, 0);//Accessor to data via TTreeReader }; namespace cling { From bb57385efdf0176ae8461922244208d5b54ea175 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 10:09:45 +0200 Subject: [PATCH 2/7] [tree] fix override kw --- tree/treeplayer/inc/TTreeReaderValue.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/TTreeReaderValue.h b/tree/treeplayer/inc/TTreeReaderValue.h index 57c4ea54d2f01..edd394cc69c6c 100644 --- a/tree/treeplayer/inc/TTreeReaderValue.h +++ b/tree/treeplayer/inc/TTreeReaderValue.h @@ -150,7 +150,7 @@ class TTreeReaderValueBase { */ bool fOpaqueRead{false}; - ClassDefInlineOverride(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader + ClassDefInline(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader friend class ::TTreeReader; }; From 5096c626dda0a45d994c6f693ea6518fd164b89b Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 10:11:18 +0200 Subject: [PATCH 3/7] [tree] fix override --- tree/treeplayer/inc/TTreeReaderArray.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/TTreeReaderArray.h b/tree/treeplayer/inc/TTreeReaderArray.h index 327909b164468..44d8469d55ae8 100644 --- a/tree/treeplayer/inc/TTreeReaderArray.h +++ b/tree/treeplayer/inc/TTreeReaderArray.h @@ -240,7 +240,7 @@ class R__CLING_PTRCHECK(off) TTreeReaderArray final : public ROOT::Internal::TTr #define R__TTreeReaderArray_TypeString(T) #T const char *GetDerivedTypeName() const override { return R__TTreeReaderArray_TypeString(T); } #undef R__TTreeReaderArray_TypeString - ClassDefInline(TTreeReaderArray, 0);//Accessor to member of an object stored in a collection + ClassDefInlineOverride(TTreeReaderArray, 0);//Accessor to member of an object stored in a collection }; namespace cling { From c795e030223f8fd3db8945bf760308744f615427 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 11:55:00 +0200 Subject: [PATCH 4/7] fixup! do not make class abstract to be able to use classdef --- tree/treeplayer/inc/TTreeReaderValue.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/TTreeReaderValue.h b/tree/treeplayer/inc/TTreeReaderValue.h index edd394cc69c6c..26b379c9e1468 100644 --- a/tree/treeplayer/inc/TTreeReaderValue.h +++ b/tree/treeplayer/inc/TTreeReaderValue.h @@ -103,6 +103,7 @@ class TTreeReaderValueBase { virtual ~TTreeReaderValueBase(); protected: + TTreeReaderValueBase() = default; TTreeReaderValueBase(TTreeReader *reader, const char *branchname, TDictionary *dict, bool opaqueRead = false); TTreeReaderValueBase(const TTreeReaderValueBase &); TTreeReaderValueBase &operator=(const TTreeReaderValueBase &); @@ -114,7 +115,7 @@ class TTreeReaderValueBase { virtual void CreateProxy(); static const char *GetBranchDataType(TBranch *branch, TDictionary *&dict, TDictionary const *curDict); - virtual const char *GetDerivedTypeName() const = 0; + virtual const char *GetDerivedTypeName() const { return nullptr; }; Detail::TBranchProxy *GetProxy() const { return fProxy; } From a11369622fab710af54aee41fe1eab769414a331 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 12:04:33 +0200 Subject: [PATCH 5/7] Update TTreeReaderValue.h --- tree/treeplayer/inc/TTreeReaderValue.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/TTreeReaderValue.h b/tree/treeplayer/inc/TTreeReaderValue.h index 26b379c9e1468..f3bd7e75bf392 100644 --- a/tree/treeplayer/inc/TTreeReaderValue.h +++ b/tree/treeplayer/inc/TTreeReaderValue.h @@ -152,7 +152,7 @@ class TTreeReaderValueBase { bool fOpaqueRead{false}; ClassDefInline(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader - + friend class ::ClassDefGenerateInitInstanceLocalInjector; friend class ::TTreeReader; }; From 72e12017112776e862b7dbd66353871dc06ca232 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 12:13:00 +0200 Subject: [PATCH 6/7] Update TTreeReaderValue.h --- tree/treeplayer/inc/TTreeReaderValue.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/TTreeReaderValue.h b/tree/treeplayer/inc/TTreeReaderValue.h index f3bd7e75bf392..a4a428c23fc02 100644 --- a/tree/treeplayer/inc/TTreeReaderValue.h +++ b/tree/treeplayer/inc/TTreeReaderValue.h @@ -152,7 +152,7 @@ class TTreeReaderValueBase { bool fOpaqueRead{false}; ClassDefInline(TTreeReaderValueBase, 0);//Base class for accessors to data via TTreeReader - friend class ::ClassDefGenerateInitInstanceLocalInjector; + friend class ClassDefGenerateInitInstanceLocalInjector; friend class ::TTreeReader; }; From f8ca2ca376245713005793c736a749c885bc79de Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 10 Sep 2025 12:26:02 +0200 Subject: [PATCH 7/7] Update TTreeReaderArray.h --- tree/treeplayer/inc/TTreeReaderArray.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tree/treeplayer/inc/TTreeReaderArray.h b/tree/treeplayer/inc/TTreeReaderArray.h index 44d8469d55ae8..9e6c9c21505a2 100644 --- a/tree/treeplayer/inc/TTreeReaderArray.h +++ b/tree/treeplayer/inc/TTreeReaderArray.h @@ -43,6 +43,7 @@ class TTreeReaderArrayBase : public TTreeReaderValueBase { std::size_t GetValueSize() const { return fImpl ? fImpl->GetValueSize(GetProxy()) : 0; } protected: + TTreeReaderArrayBase() = default; void *UntypedAt(std::size_t idx) const { return fImpl->At(GetProxy(), idx); } void CreateProxy() override; bool GetBranchAndLeaf(TBranch *&branch, TLeaf *&myLeaf, TDictionary *&branchActualType, @@ -53,6 +54,7 @@ class TTreeReaderArrayBase : public TTreeReaderValueBase { std::unique_ptr fImpl; // Common interface to collections ClassDefInlineOverride(TTreeReaderArrayBase, 0);//Accessor to member of an object stored in a collection + friend class ClassDefGenerateInitInstanceLocalInjector; }; class R__CLING_PTRCHECK(off) TTreeReaderUntypedArray final : public TTreeReaderArrayBase {