1#ifndef __JROOT__JROOTPRINTER__
2#define __JROOT__JROOTPRINTER__
7#pragma GCC diagnostic push
8#pragma GCC diagnostic ignored "-Wall"
12#pragma GCC diagnostic pop
28namespace JPP {
using namespace JROOT; }
90 static inline void print(std::ostream& out,
92 const std::string& key,
101 for (string::size_type il = 0, ir = 0; ir != string::npos && cls.
is_valid(); il = ir + 1) {
103 cls = cls.
find(trim(key.substr(il, ir - il)).c_str());
128 static inline void print(std::ostream& out,
149 static inline void print(std::ostream& out,
151 const std::string& key,
166 static inline void print(std::ostream& out,
199 const TRegexp DOUBLE(
"[0-9.][eE][+-0-9]");
201 string buffer = (
const char*)
text;
203 for (string::size_type pos = 0; pos != buffer.size(); ) {
205 if (isalpha(buffer[pos]) || buffer[pos] ==
'_') {
207 string::size_type len = 1;
209 while (pos + len != buffer.size() && (isalnum(buffer[pos+len]) || buffer[pos+len] ==
'_' || buffer[pos+len] ==
'.')) {
213 if (len != 1 || pos == 0 || TString(buffer.substr(pos-1).c_str()).Index(DOUBLE) != 0) {
222 buffer.replace(pos, len, os.str());
224 pos += os.str().size();
233 return TFormula(
"/tmp", buffer.c_str()).Eval(0.0);
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
ASCII I/O of objects with ROOT dictionary.
Simple data structure to support I/O of equations (see class JLANG::JEquation).
const char getDefaultDivision() const
Get default division character.
Exception for parsing value.
Implementation for ASCII output of objects with ROOT dictionary.
const JRootDictionary_t & getDictionary() const
Get dictictionary.
JRootWriter & putObject(const T &object)
Write object.
JRootWriter & put(const T &object)
Write object according equation format.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for ROOT I/O.
Double_t getResult(const TString &text, const T &object, const JRootDictionary_t &dictionary=JRootDictionary::getInstance())
Get result of given textual formula.
static data_type & getInstance()
Get unique instance of template class.
bool is_valid() const
Check validity of this addressable class.
JRootAddressableClass find(const char *const name) const
Find addressable base class or data member with given name within current class.
const char * getTypename() const
Get type name.
Type definition of ROOT based dictionary for ASCII I/O.
Auxiliary class for printing objects in ASCII format using JRootWriter.
static void print(std::ostream &out, const T &object, const JEquationParameters ¶meters, const JRootDictionary_t &dictionary=JRootDictionary::getInstance())
Write object to output using ROOT dictionary.
static void print(JRootWriter &writer, const JRootWritableClass &cls)
Write class contents to output.
static void print(std::ostream &out, const T &object, const std::string &key, const JEquationParameters ¶meters, const JRootDictionary_t &dictionary=JRootDictionary::getInstance())
Write part of object to output using ROOT dictionary.
static void print(std::ostream &out, const T &object, const JRootDictionary_t &dictionary=JRootDictionary::getInstance())
Write object to output using ROOT dictionary.
static void print(std::ostream &out, const T &object, const std::string &key, const JRootDictionary_t &dictionary=JRootDictionary::getInstance())
Write part of object to output using ROOT dictionary.
static JEquationParameters & getEquationParameters()
Get equation parameters.
static void setEquationParameters(const JEquationParameters &equation)
Set equation parameters.
ROOT class for writing from object.