Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RNTupleUtil.cxx
Go to the documentation of this file.
1/// \file RNTupleUtil.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-2020, 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/RNTupleUtil.hxx"
17
18#include "ROOT/RLogger.hxx"
19#include "ROOT/RMiniFile.hxx"
20
21#include <algorithm>
22#include <cctype>
23#include <cstring>
24#include <iostream>
25
27{
28 static RLogChannel sLog("ROOT.NTuple");
29 return sLog;
30}
31
33{
34 using codeAndRepr = std::pair<const char *, const char *>;
35 constexpr static std::array<codeAndRepr, 4> forbiddenChars{codeAndRepr{"\u002E", "."}, codeAndRepr{"\u002F", "/"},
36 codeAndRepr{"\u0020", "space"},
37 codeAndRepr{"\u005C", "\\"}};
38
39 for (auto &&[code, repr] : forbiddenChars) {
40 if (name.find(code) != std::string_view::npos)
41 return R__FAIL(std::string(where) + " name '" + std::string(name) + "' cannot contain character '" + repr +
42 "'.");
43 }
44
45 if (std::count_if(name.begin(), name.end(), [](unsigned char c) { return std::iscntrl(c); }))
46 return R__FAIL(std::string(where) + " name '" + std::string(name) +
47 "' cannot contain character classified as control character. These notably include newline, tab, "
48 "carriage return.");
49
51}
#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
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: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.