DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::oks::OksXmlOutputStream Class Reference

#include <xml.hpp>

Public Member Functions

 OksXmlOutputStream (std::ostream &p)
std::ostream & get_stream () const
void put (char c)
void put (const char *s)
void put_raw (char c)
void put_raw (const char *s, long len)
template<class T>
void put_value (T value)
void put_quoted (const char *)
void put_start_tag (const char *, size_t len)
void put_end_tag ()
void put_last_tag (const char *, size_t len)
void put_attribute (const char *, size_t len, const char *)
void put_attribute (const char *, size_t len, uint32_t)
void put_attribute (const char *, size_t len, const OksData &)
void put_eol ()

Static Private Member Functions

static void __throw_write_failed ()

Private Attributes

std::ostream & f

Detailed Description

Definition at line 115 of file xml.hpp.

Constructor & Destructor Documentation

◆ OksXmlOutputStream()

dunedaq::oks::OksXmlOutputStream::OksXmlOutputStream ( std::ostream & p)
inline

Definition at line 120 of file xml.hpp.

120 : f(p)
121 {
122 ;
123 }

Member Function Documentation

◆ __throw_write_failed()

void dunedaq::oks::OksXmlOutputStream::__throw_write_failed ( )
staticprivate

Definition at line 117 of file xml.cpp.

118{
119 throw std::runtime_error("write to file failed");
120}

◆ get_stream()

std::ostream & dunedaq::oks::OksXmlOutputStream::get_stream ( ) const
inline

Definition at line 126 of file xml.hpp.

127 {
128 return f;
129 }

◆ put() [1/2]

void dunedaq::oks::OksXmlOutputStream::put ( char c)

Write char to xml output stream. Convert special symbols.

Exceptions
std::exceptionif failed

Definition at line 129 of file xml.cpp.

130{
133 else if(c == '&') put_raw(oks::xml::ampersand, sizeof(oks::xml::ampersand)-1);
134 else if(c == '\'') put_raw(oks::xml::single_quote, sizeof(oks::xml::single_quote)-1);
135 else if(c == '\"') put_raw(oks::xml::double_quote, sizeof(oks::xml::double_quote)-1);
136 else if(c == '\r') put_raw(oks::xml::carriage_return, sizeof(oks::xml::carriage_return)-1);
137 else if(c == '\n') put_raw(oks::xml::new_line, sizeof(oks::xml::new_line)-1);
138 else if(c == '\t') put_raw(oks::xml::tabulation, sizeof(oks::xml::tabulation)-1);
139 else put_raw(c);
140
141}
const char left_angle_bracket[]
Definition xml.cpp:31
const char new_line[]
Definition xml.cpp:35
const char tabulation[]
Definition xml.cpp:36
const char single_quote[]
Definition xml.cpp:37
const char ampersand[]
Definition xml.cpp:33
const char right_angle_bracket[]
Definition xml.cpp:32
const char carriage_return[]
Definition xml.cpp:34
const char double_quote[]
Definition xml.cpp:38

◆ put() [2/2]

void dunedaq::oks::OksXmlOutputStream::put ( const char * s)

Write string to xml output stream. Convert special symbols.

Exceptions
std::exceptionif failed

Definition at line 150 of file xml.cpp.

151{
152 while(*str) put(*str++);
153}

◆ put_attribute() [1/3]

void dunedaq::oks::OksXmlOutputStream::put_attribute ( const char * name,
size_t len,
const char * value )

Definition at line 225 of file xml.cpp.

226{
227 put_raw(' ');
228 put_raw(name, len);
229 put_raw('=');
230 put_raw('\"');
231 put(value);
232 put_raw('\"');
233}

◆ put_attribute() [2/3]

void dunedaq::oks::OksXmlOutputStream::put_attribute ( const char * name,
size_t len,
const OksData & value )

Definition at line 255 of file xml.cpp.

256{
257 put_raw(' ');
258 put_raw(name, len);
259 put_raw('=');
260 put_raw('\"');
261 value.WriteTo(*this);
262 put_raw('\"');
263}

◆ put_attribute() [3/3]

void dunedaq::oks::OksXmlOutputStream::put_attribute ( const char * name,
size_t len,
uint32_t value )

Definition at line 236 of file xml.cpp.

237{
238 put_raw(' ');
239 put_raw(name, len);
240 put_raw('=');
241 put_raw('\"');
242 if(value == 0) {
243 put_raw('0');
244 }
245 else {
246 char buf[12];
247 char * ptr = buf;
248 boost::spirit::karma::generate(ptr, boost::spirit::uint_, (unsigned int)value);
249 put_raw(buf, ptr - buf);
250 }
251 put_raw('\"');
252}

◆ put_end_tag()

void dunedaq::oks::OksXmlOutputStream::put_end_tag ( )

Definition at line 190 of file xml.cpp.

191{
192 static const char __end_tag[] = "/>\n";
193 put_raw(__end_tag, sizeof(__end_tag)-1);
194}

◆ put_eol()

void dunedaq::oks::OksXmlOutputStream::put_eol ( )

Definition at line 197 of file xml.cpp.

198{
199 static const char __eol_tag[] = ">\n";
200 put_raw(__eol_tag, sizeof(__eol_tag)-1);
201}

◆ put_last_tag()

void dunedaq::oks::OksXmlOutputStream::put_last_tag ( const char * name,
size_t len )

Definition at line 209 of file xml.cpp.

210{
211 put_raw('<');
212 put_raw('/');
213 put_raw(name, len);
214 put_raw('>');
215 put_raw('\n');
216}

◆ put_quoted()

void dunedaq::oks::OksXmlOutputStream::put_quoted ( const char * str)

Definition at line 162 of file xml.cpp.

163{
164 put_raw('\"');
165 put(str);
166 put_raw('\"');
167}

◆ put_raw() [1/2]

void dunedaq::oks::OksXmlOutputStream::put_raw ( char c)
inline

Write char to xml output stream without check for special symbols.

Exceptions
std::exceptionif failed

Definition at line 150 of file xml.hpp.

151 {
152 if (__builtin_expect((f.rdbuf()->sputc(c) != c), 0))
154 }
static void __throw_write_failed()
Definition xml.cpp:117

◆ put_raw() [2/2]

void dunedaq::oks::OksXmlOutputStream::put_raw ( const char * s,
long len )
inline

Definition at line 157 of file xml.hpp.

158 {
159 if (__builtin_expect((f.rdbuf()->sputn(s, len) != len), 0))
161 }

◆ put_start_tag()

void dunedaq::oks::OksXmlOutputStream::put_start_tag ( const char * name,
size_t len )

Definition at line 176 of file xml.cpp.

177{
178 put_raw('<');
179 put_raw(name, len);
180}

◆ put_value()

template<class T>
void dunedaq::oks::OksXmlOutputStream::put_value ( T value)
inline

Definition at line 165 of file xml.hpp.

166 {
167 f << value;
168 }

Member Data Documentation

◆ f

std::ostream& dunedaq::oks::OksXmlOutputStream::f
private

Definition at line 196 of file xml.hpp.


The documentation for this class was generated from the following files: