Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RNTupleUtils.cxx
Go to the documentation of this file.
1/// \file RNTupleUtils.cxx
2/// \ingroup NTuple
3/// \author Jakob Blomer <jblomer@cern.ch> & Max Orok <maxwellorok@gmail.com>
4/// \date 2020-07-14
5/// \author Vincenzo Eduardo Padulano, CERN
6/// \date 2024-11-08
7
8/*************************************************************************
9 * Copyright (C) 1995-2025, Rene Brun and Fons Rademakers. *
10 * All rights reserved. *
11 * *
12 * For the licensing terms see $ROOTSYS/LICENSE. *
13 * For the list of contributors see $ROOTSYS/README/CREDITS. *
14 *************************************************************************/
15
16#include <ROOT/RLogger.hxx>
17#include <ROOT/RNTupleUtils.hxx>
18
19#include <algorithm>
20#include <array>
21#include <cctype>
22#include <string>
23#include <utility>
24
26{
27 static RLogChannel sLog("ROOT.NTuple");
28 return sLog;
29}
30
32{
33 using codeAndRepr = std::pair<const char *, const char *>;
34 constexpr static std::array<codeAndRepr, 4> forbiddenChars{codeAndRepr{"\u002E", "."}, codeAndRepr{"\u002F", "/"},
35 codeAndRepr{"\u0020", "space"},
36 codeAndRepr{"\u005C", "\\"}};
37
38 for (auto &&[code, repr] : forbiddenChars) {
39 if (name.find(code) != std::string_view::npos)
40 return R__FAIL(std::string(where) + " name '" + std::string(name) + "' cannot contain character '" + repr +
41 "'.");
42 }
43
44 if (std::count_if(name.begin(), name.end(), [](unsigned char c) { return std::iscntrl(c); }))
45 return R__FAIL(std::string(where) + " name '" + std::string(name) +
46 "' cannot contain character classified as control character. These notably include newline, tab, "
47 "carriage return.");
48
50}
#define R__FAIL(msg)
Short-hand to return an RResult<T> in an error state; the RError is implicitly converted into RResult...
Definition RError.hxx:300
#define c(i)
Definition RSha256.hxx:101
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
char name[80]
Definition TGX11.cxx:110
A log configuration for a channel, e.g.
Definition RLogger.hxx:98
The class is used as a return type for operations that can fail; wraps a value of type T or an RError...
Definition RError.hxx:198
RResult< void > EnsureValidNameForRNTuple(std::string_view name, std::string_view where)
Check whether a given string is a valid name according to the RNTuple specification.
ROOT::RLogChannel & NTupleLog()
Log channel for RNTuple diagnostics.