Namespaces | Classes | Functions
lar::dump Namespace Reference

Namespace for LArSoft dumping utilities. More...

Namespaces

 details
 

Classes

struct  ArrayDumper
 Dumps the first N elements of an array. More...
 
struct  ArrayDumper< T * >
 
struct  VectorDumper
 Manipulator managing the dump of the vector content into a stream. More...
 
struct  VectorDumper< std::array< T, 3U > >
 
struct  VectorDumper< T * >
 
struct  VectorDumper< T[3]>
 

Functions

template<size_t N, typename Array >
auto array (Array const &a)
 Returns a manipulator which will print the specified array. More...
 
template<typename Vector >
auto vector (Vector const &v)
 Returns a manipulator which will print the specified array. More...
 
template<typename Vector3D >
auto vector3D (Vector3D const &v)
 Returns a manipulator which will print the specified vector. More...
 
template<typename Stream , typename Array >
Stream & operator<< (Stream &&out, ArrayDumper< Array > &&manip)
 Dumps the array contained in the manipulator into a stream. More...
 
template<typename Stream , typename Vector >
Stream & operator<< (Stream &&out, VectorDumper< Vector > &&manip)
 Dumps the vector contained in the manipulator into a stream. More...
 
template<typename String , typename Vector >
String operator+ (String const &s, VectorDumper< Vector > const &manip)
 Concatenates a vector to the specified string. More...
 
template<typename Vector >
std::string operator+ (const char *s, VectorDumper< Vector > const &manip)
 Creates a string with s concatenated to the rendered vector. More...
 
template<typename String , typename Vector >
String operator+ (VectorDumper< Vector > const &manip, String const &s)
 
template<typename Vector >
std::string operator+ (VectorDumper< Vector > const &manip, const char *s)
 Creates a string with the rendered vector concatenated to s. More...
 
template<typename String , typename Vector >
Stringoperator+= (String &s, VectorDumper< Vector > const &manip)
 Appends a string rendering of a vector to the specified string. More...
 

Detailed Description

Namespace for LArSoft dumping utilities.

Function Documentation

template<size_t N, typename Array >
auto lar::dump::array ( Array const &  a)

Returns a manipulator which will print the specified array.

Template Parameters
Nthe number of entries to be printed
Arraythe type of array to be printed
Parameters
athe array to be printed
Returns
a manipulator

Example of usage:

double const data[5] = { 1., 2., 3., 4., 6. };
std::cout << "Data: " << lar::dump::array<5>(data) << std::endl;

will produce an output like:

Data: { 1; 2; 3; 4; 6 }

Addition of specific classes can be achieved via specialization of the class ArrayDumper.

Requirements

  • the type Array is required to respond to a global function cbegin() (like std::cbegin()) with a forward iterator
  • the value type of the iterator returned by the aforementioned Array method must have its insertion operator into a stream defined
  • the array a must not fall out of scope until the insertion into the stream happens

Definition at line 228 of file DumpUtils.h.

228 { return ArrayDumper<Array>(a, N); }
const double a
template<typename String , typename Vector >
String lar::dump::operator+ ( String const &  s,
VectorDumper< Vector > const &  manip 
)

Concatenates a vector to the specified string.

Template Parameters
Stringa string type that can handle "addition" to std::string
Vector3Dthe type of 3D vector to be printed
Parameters
sthe string
manipthe manipulator containing the vector to be printed
Returns
a new string with s concatenated to a rendering of the vector
See also
VectorDumper

Example of usage:

TVector3 pos;
std::runtime_error e("Position: " + lar::dump::vector3D(pos));
std::cout << e.what() << std::endl;

will produce an output like:

Position: { 0; 0; 0 }

Requirements

  • the type Vector3D is required to provide constant accessor methods returning the vector components, called X(), Y() and Z()
  • the values returned by the aforementioned Vector3D methods must have their insertion operator into Stream defined

Definition at line 404 of file DumpUtils.h.

405  { return s + std::string(manip);}
std::string string
Definition: nybbler.cc:12
static QCString * s
Definition: config.cpp:1042
template<typename Vector >
std::string lar::dump::operator+ ( const char *  s,
VectorDumper< Vector > const &  manip 
)

Creates a string with s concatenated to the rendered vector.

Definition at line 409 of file DumpUtils.h.

410  { return std::string(s) + manip;}
std::string string
Definition: nybbler.cc:12
static QCString * s
Definition: config.cpp:1042
template<typename String , typename Vector >
String lar::dump::operator+ ( VectorDumper< Vector > const &  manip,
String const &  s 
)
See also
documentation of function with arguments swapped.

Definition at line 414 of file DumpUtils.h.

415  { return std::string(manip) + s;}
std::string string
Definition: nybbler.cc:12
static QCString * s
Definition: config.cpp:1042
template<typename Vector >
std::string lar::dump::operator+ ( VectorDumper< Vector > const &  manip,
const char *  s 
)

Creates a string with the rendered vector concatenated to s.

Definition at line 419 of file DumpUtils.h.

420  { return manip + std::string(s);}
std::string string
Definition: nybbler.cc:12
static QCString * s
Definition: config.cpp:1042
template<typename String , typename Vector >
String& lar::dump::operator+= ( String s,
VectorDumper< Vector > const &  manip 
)

Appends a string rendering of a vector to the specified string.

Definition at line 424 of file DumpUtils.h.

425  { return s += std::string(manip); }
std::string string
Definition: nybbler.cc:12
template<typename Stream , typename Array >
Stream& lar::dump::operator<< ( Stream &&  out,
ArrayDumper< Array > &&  manip 
)

Dumps the array contained in the manipulator into a stream.

Template Parameters
Streamthe type of output stream
Arraythe type of array to be printed
NPrintthe number of element of the array to be printed
Parameters
outthe output stream
manipthe manipulator containing the array to be printed
Returns
a reference to the output stream
See also
ArrayDumper

Example of usage:

double const data[5] = { 1., 2., 3., 4., 6. };
std::cout << "Position: " << lar::dump::array<5>(data) << std::endl;

will produce an output like:

Position: { 1, 2, 3, 4, 5 }

Requirements

  • the type Vector3D is required to provide constant accessor methods returning the vector components, called X(), Y() and Z()
  • the values returned by the aforementioned Vector3D methods must have their insertion operator into Stream defined

Definition at line 336 of file DumpUtils.h.

337  { manip(std::forward<Stream>(out)); return out; }
template<typename Stream , typename Vector >
Stream& lar::dump::operator<< ( Stream &&  out,
VectorDumper< Vector > &&  manip 
)

Dumps the vector contained in the manipulator into a stream.

Template Parameters
Streamthe type of output stream
Vector3Dthe type of 3D vector to be printed
Parameters
outthe output stream
manipthe manipulator containing the vector to be printed
Returns
a reference to the output stream
See also
VectorDumper

Example of usage:

TVector3 pos;
std::cout << "Position: " << lar::dump::vector3D(pos) << std::endl;

will produce an output like:

Position: { 0; 0; 0 }

Requirements

  • the type Vector3D is required to provide constant accessor methods returning the vector components, called X(), Y() and Z()
  • the values returned by the aforementioned Vector3D methods must have their insertion operator into Stream defined

Definition at line 370 of file DumpUtils.h.

371  { manip(std::forward<Stream>(out)); return out; }
template<typename Vector >
auto lar::dump::vector ( Vector const &  v)

Returns a manipulator which will print the specified array.

Template Parameters
Vectortype of vector to be printed
Parameters
vthe vector to be printed
Returns
a manipulator

Example of usage:

std::vector<double> data = { 1., 2., 3., 4., 6. };
std::cout << "Data: " << lar::dump::vector(data) << std::endl;

will produce an output like:

Data: { 1; 2; 3; 4; 6 }

Addition of specific classes can be achieved via specialization of the class ArrayDumper.

Requirements

  • a method Vector::size() const must be available returning the number of elements in the vector
  • the type Vector is required to respond to a global function cbegin() (like std::cbegin()) with a forward iterator
  • the value type returned by the aforementioned Vector method must have its insertion operator into a stream defined
  • the vector v must not fall out of scope until the insertion into the stream happens

Definition at line 265 of file DumpUtils.h.

265 { return ArrayDumper<Vector>(v, v.size()); }
template<typename Vector3D >
auto lar::dump::vector3D ( Vector3D const &  v)

Returns a manipulator which will print the specified vector.

Template Parameters
Vector3Dthe type of 3D vector to be printed
Parameters
vthe vector to be printed
Returns
a manipulator

Example of usage:

TVector3 pos;
std::cout << "Position: " << lar::dump::vector3D(pos) << std::endl;

will produce an output like:

Position: { 0; 0; 0 }

Addition of specific classes can be achieved via specialization of the class VectorDumper.

Requirements

  • the type Vector3D is required to provide constant accessor methods returning the vector components, called X(), Y() and Z()
  • the values returned by the aforementioned Vector3D methods must have their insertion operator into a stream defined
  • the vector v must not fall out of scope until the insertion into the stream happens

Definition at line 301 of file DumpUtils.h.

301 { return VectorDumper<Vector3D>(v); }