13 #ifndef DD4HEPPROPERTYPARSERS_PARSERVALUETOSTREAM_H
14 #define DD4HEPPROPERTYPARSERS_PARSERVALUETOSTREAM_H 1
54 std::ostream&
toStream(
const TYPE& obj, std::ostream&
s);
67 template <
class ITERATOR>
68 inline std::ostream&
toStream(ITERATOR first,
71 const std::string& open,
72 const std::string& close,
73 const std::string& delim);
81 inline std::ostream&
toStream(
const std::string& obj, std::ostream&
s) {
82 if (std::string::npos == obj.find(
'\'')) {
83 s <<
"\'" << obj <<
"\'";
86 s <<
"\"" << obj <<
"\"";
94 inline std::ostream&
toStream(
const bool obj, std::ostream&
s) {
95 return s << (obj ?
"True" :
"False");
101 inline std::ostream&
toStream(
const float obj, std::ostream&
s,
const int prec = 6) {
102 const int p = s.precision();
103 return s << std::setprecision(prec) << obj << std::setprecision(p);
109 inline std::ostream&
toStream(
const double obj, std::ostream&
s,
const int prec = 8) {
110 const int p = s.precision();
111 return s << std::setprecision(prec) << obj << std::setprecision(p);
117 inline std::ostream&
toStream(
const long double obj, std::ostream&
s,
const int prec = 10) {
118 const int p = s.precision();
119 return s << std::setprecision(prec) << obj << std::setprecision(p);
129 template <
class KTYPE,
class VTYPE>
130 inline std::ostream&
toStream(
const std::pair<KTYPE, VTYPE>& obj, std::ostream&
s) {
144 template <
class TYPE,
class ALLOCATOR>
145 inline std::ostream&
toStream(
const std::vector<TYPE, ALLOCATOR>& obj, std::ostream&
s) {
146 return toStream(obj.begin(), obj.end(),
s,
"[ ",
" ]",
" , ");
155 template <
class TYPE,
class ALLOCATOR>
156 inline std::ostream&
toStream(
const std::list<TYPE, ALLOCATOR>& obj, std::ostream&
s) {
157 return toStream(obj.begin(), obj.end(),
s,
"[ ",
" ]",
" , ");
166 template <
class TYPE,
class ALLOCATOR>
167 inline std::ostream&
toStream(
const std::deque<TYPE, ALLOCATOR>& obj, std::ostream&
s) {
168 return toStream(obj.begin(), obj.end(),
s,
"[ ",
" ]",
" , ");
177 template <
class TYPE,
class CMP,
class ALLOCATOR>
178 inline std::ostream&
toStream(
const std::set<TYPE, CMP, ALLOCATOR>& obj, std::ostream&
s) {
179 return toStream(obj.begin(), obj.end(),
s,
"[ ",
" ]",
" , ");
189 template <
class KTYPE,
class VTYPE,
class CMP,
class ALLOCATOR>
190 inline std::ostream&
toStream(
const std::map<KTYPE, VTYPE, CMP, ALLOCATOR>& obj, std::ostream&
s) {
192 for (
typename std::map<KTYPE, VTYPE, CMP, ALLOCATOR>::const_iterator cur = obj.begin(); obj.end() != cur; ++cur) {
193 if (obj.begin() != cur) {
208 template <
class TYPE,
unsigned int N>
209 std::ostream&
toStream(TYPE (&obj)[N], std::ostream&
s) {
210 return toStream(obj, obj + N, s,
"( ",
" )",
" , ");
217 template <
class TYPE,
unsigned int N>
218 std::ostream&
toStream(
const TYPE (&obj)[N], std::ostream&
s) {
219 return toStream(obj, obj + N, s,
"( ",
" )",
" , ");
226 template <
unsigned int N>
227 std::ostream&
toStream(
char (&obj)[N], std::ostream&
s) {
228 return toStream(std::string(obj, obj + N), s);
235 template <
unsigned int N>
236 std::ostream&
toStream(
const char (&obj)[N], std::ostream&
s) {
237 return toStream(std::string(obj, obj + N), s);
244 inline std::ostream&
toStream(
const char* obj, std::ostream&
s) {
245 return toStream(std::string(obj), s);
253 template <
class TYPE>
254 inline std::ostream&
toStream(
const TYPE& obj, std::ostream&
s) {
269 template <
class ITERATOR>
273 const std::string& open,
274 const std::string& close,
275 const std::string& delim)
278 for (ITERATOR curr = first; curr != last; ++curr) {
296 template <
class TYPE>
298 std::ostringstream
s;
299 std::ios::fmtflags orig_flags = s.flags();
300 s.setf(std::ios::showpoint);
310 #ifndef DD4HEP_PARSERS_NO_ROOT
311 #include "Math/Point3D.h"
312 #include "Math/Vector3D.h"
313 #include "Math/Vector4D.h"
321 std::ostream&
toStream(
const ROOT::Math::XYZPoint& obj, std::ostream&
s);
323 std::ostream&
toStream(
const ROOT::Math::XYZVector& obj, std::ostream&
s);
325 std::ostream&
toStream(
const ROOT::Math::PxPyPzEVector& obj, std::ostream&
s);
std::string toString(const TYPE &obj)
std::ostream & toStream(const Property &result, std::ostream &os)