Skip to content
Draft
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
36a7534
[TCling] Use string,vector instead of std.
Axel-Naumann Jul 22, 2022
9670fe8
[test] Remove legacy using namespace std/stdext.
Axel-Naumann May 9, 2023
38a0341
[proof] Remove unnecessary `using namespace std` in header.
Axel-Naumann May 9, 2023
1395866
[foundation] Add doc to some TClassEdit functions (NFC).
Axel-Naumann May 9, 2023
7c7a1d5
[dictgen] Make gOptNoGlobalUsingStd the default and only way.
Axel-Naumann May 9, 2023
6a2a6a7
[dictgen] Remove unused var; add using decls for std types.
Axel-Naumann May 10, 2023
d9edba9
[core] In generated dict code, always prefix std classes with "std":
Axel-Naumann May 10, 2023
859bfeb
[mathcore] Do not generate a dict for vector<double> iters:
Axel-Naumann May 10, 2023
f1065cb
[foundation] TClassEdit::InsertStd: add PRNG types to std type list.
Axel-Naumann May 11, 2023
c6ec900
Do not generate dicts for iterators:
Axel-Naumann May 11, 2023
542e382
[foundation] Fix spelling of std types; add missing ones, rm auto_ptr.
Axel-Naumann May 11, 2023
cdc2a31
[io] Diagnose missing stdlib I/O support:
Axel-Naumann May 15, 2023
4503bd0
[geo] Do not generate dictionaries for thread::id:
Axel-Naumann May 15, 2023
52e9f32
[fumili] no dict for TFumiliMinimizer: not persistent and not a TObje…
Axel-Naumann May 15, 2023
430660e
[clingutils] Fwd decls must use "std::" where needed:
Axel-Naumann May 15, 2023
a316141
[dictgen] Inject using decls for common stdlib names in ACLiC dicts:
Axel-Naumann May 16, 2023
32f08fa
[core] Do not InspectMembers() for stdlib types:
Axel-Naumann May 16, 2023
353faaa
[core] Centralize using decls injected into cling, add more.
Axel-Naumann May 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[io] Diagnose missing stdlib I/O support:
An example is `std::pair<std::thread::id, int>`: ROOT should not be asked to
serialize `std::thread::id` without explicit support (which currently does not
exist). This catches missing std:: using decls and makes the error message more
helpful than "this type is not known".
  • Loading branch information
Axel-Naumann committed May 15, 2023
commit cdc2a3147c8c41085ef04e27e8d90d9aaacd1560
10 changes: 9 additions & 1 deletion io/rootpcm/src/rootclingIO.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "TEnum.h"
#include "TError.h"
#include "TFile.h"
#include "TInterpreter.h"
#include "TProtoClass.h"
#include "TDataMember.h"
#include "TROOT.h"
Expand Down Expand Up @@ -151,7 +152,14 @@ bool CloseStreamerInfoROOTFile(bool writeEmptyRootPCM)
for (const auto & normName : gClassesToStore) {
TClass *cl = TClass::GetClass(normName.c_str(), kTRUE /*load*/);
if (!cl) {
Error("CloseStreamerInfoROOTFile", "Cannot find class %s.", normName.c_str());
static int uniqueIndex = 0;
const std::string checkStdNames_Code = "void RootCling_CheckStdNames_" + std::to_string(++uniqueIndex) +
"() { using namespace std; using type = " + normName.c_str() + ";}";
if (gInterpreter->Declare(checkStdNames_Code.c_str()))
Error("CloseStreamerInfoROOTFile",
"ROOT I/O on class %s is unsupported due to missing stdlib type support.", normName.c_str());
else
Error("CloseStreamerInfoROOTFile", "Cannot find class %s.", normName.c_str());
return false;
}

Expand Down