Skip to content

Add a way to explicitly request the registering a (non-typedef) type alias without requesting the dictionary. #23375

Description

@pcanal

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions