As seen at cms-sw/cmssw#51761
We can have the situation where we have, the TClass::GetClass for the various spelling (myclass, Wrapper<myclass>, ShortCut) work without AutoParsing but the spelling Wrapper<OtherName> does not.
// Header in Library 1
#pragma once
struct myclass {};
template <typename T>
struct Wrapper {
T value;
};
// Library 1
<class name="myclass" />
<class name="Wrapper<myclass>" />
// Header in Library2
typedef OtherName myclass;
using ShortCut = Wrapper<myclass>;
// Library 2
<typedef name="OtherName" />
<typedef name="ShortCut" />
What does not work is:
<typedef name="Wrapper<OtherName>" />
which makes sense since there is no such 'typedef' but there isn't yet a syntax to express it, eg:
<alias name="Wrapper<OtherName>" />
This issue would be solved by introducing the tag alias in the selection xml grammar and #pragma link C++ alias in the linkdef grammar that would register the name (indirectly) via the ::ROOT::AddClassAlternate interface and add the proper documentation and test for this new tag.
As seen at cms-sw/cmssw#51761
We can have the situation where we have, the
TClass::GetClassfor the various spelling (myclass,Wrapper<myclass>,ShortCut) work without AutoParsing but the spellingWrapper<OtherName>does not.What does not work is:
which makes sense since there is no such 'typedef' but there isn't yet a syntax to express it, eg:
This issue would be solved by introducing the tag
aliasin the selection xml grammar and#pragma link C++ aliasin the linkdef grammar that would register the name (indirectly) via the::ROOT::AddClassAlternateinterface and add the proper documentation and test for this new tag.