Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
RNTupleUtils.cxx
Go to the documentation of this file.
1/// \file RNTupleUtils.cxx
2/// \author Jakob Blomer <jblomer@cern.ch> & Max Orok <maxwellorok@gmail.com>
3/// \date 2020-07-14
4/// \author Vincenzo Eduardo Padulano, CERN
5/// \date 2024-11-08
6
7/*************************************************************************
8 * Copyright (C) 1995-2025, Rene Brun and Fons Rademakers. *
9 * All rights reserved. *
10 * *
11 * For the licensing terms see $ROOTSYS/LICENSE. *
12 * For the list of contributors see $ROOTSYS/README/CREDITS. *
13 *************************************************************************/
14
15#include <ROOT/RLogger.hxx>
16#include <ROOT/RNTupleUtils.hxx>
17
18#include <algorithm>
19#include <array>
20#include <cctype>
21#include <string>
22#include <utility>
23
25{
26 static RLogChannel sLog("ROOT.NTuple");
27 return sLog;
28}
29
31{
32 using codeAndRepr = std::pair<const char *, const char *>;
33 constexpr static std::array<codeAndRepr, 4> forbiddenChars{codeAndRepr{"\u002E", "."}, codeAndRepr{"\u002F", "/"},
34 codeAndRepr{"\u0020", "space"},
35 codeAndRepr{"\u005C", "\\"}};
36
37 for (auto &&[code, repr] : forbiddenChars) {
38 if (name.find(code) != std::string_view::npos)
39 return R__FAIL(std::string(where) + " name '" + std::string(name) + "' cannot contain character '" + repr +
40 "'.");
41 }
42
43 if (std::count_if(name.begin(), name.end(), [](unsigned char c) { return std::iscntrl(c); }))
44 return R__FAIL(std::string(where) + " name '" + std::string(name) +
45 "' cannot contain character classified as control character. These notably include newline, tab, "
46 "carriage return.");
47
49}
#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:299
#define c(i)
Definition RSha256.hxx:101
char name[80]
Definition TGX11.cxx:148
A log configuration for a channel, e.g.
Definition RLogger.hxx:97
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:197
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.