11bool startsWith(std::string_view str, std::string_view prefix)
13 return str.size() >= prefix.size() && 0 == str.compare(0, prefix.size(), prefix);
16bool endsWith(std::string_view str, std::string_view suffix)
18 return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix);
21std::string
removeSuffix(std::string_view str, std::string_view suffix)
25 out = out.substr(0, out.length() - suffix.length());
34 node[
"nbins"] << binning.
numBins();
38 auto &edges = node[
"edges"].
set_seq();
40 for (
int i = 0; i < binning.
numBins(); ++i) {
41 edges.append_child() << binning.
binHigh(i);
49 auto readNumber = [&](
int &out) {
50 const std::size_t begin = pos;
51 while (pos < version.size() && std::isdigit(
static_cast<unsigned char>(version[pos]))) {
55 if (pos == begin || pos - begin > 9) {
58 out = std::stoi(version.substr(begin, pos - begin));
61 if (!readNumber(major) || pos >= version.size() || version[pos] !=
'.') {
65 return readNumber(minor);
77 return std::make_pair(versionMajor, versionMinor) < std::make_pair(major, minor);
bool isHS3VersionBefore(std::string const &version, int major, int minor)
bool startsWith(std::string_view str, std::string_view prefix)
bool endsWith(std::string_view str, std::string_view suffix)
std::string removeSuffix(std::string_view str, std::string_view suffix)
void writeAxisBinning(JSONNode &node, const RooAbsBinning &binning)
bool parseHS3Version(std::string const &version, int &major, int &minor)
Abstract base class for RooRealVar binning definitions.
Int_t numBins() const
Return number of bins.
virtual double binLow(Int_t bin) const =0
virtual bool isUniform() const
virtual double highBound() const =0
virtual double lowBound() const =0
virtual double binHigh(Int_t bin) const =0
JSONNode & append_child()