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 110 of file xml.hpp.

Constructor & Destructor Documentation

◆ OksXmlOutputStream()

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

Definition at line 115 of file xml.hpp.

115 : f(p)
116 {
117 ;
118 }

Member Function Documentation

◆ __throw_write_failed()

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

Definition at line 112 of file xml.cpp.

113{
114 throw std::runtime_error("write to file failed");
115}

◆ get_stream()

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

Definition at line 121 of file xml.hpp.

122 {
123 return f;
124 }

◆ 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 124 of file xml.cpp.

125{
128 else if(c == '&') put_raw(oks::xml::ampersand, sizeof(oks::xml::ampersand)-1);
129 else if(c == '\'') put_raw(oks::xml::single_quote, sizeof(oks::xml::single_quote)-1);
130 else if(c == '\"') put_raw(oks::xml::double_quote, sizeof(oks::xml::double_quote)-1);
131 else if(c == '\r') put_raw(oks::xml::carriage_return, sizeof(oks::xml::carriage_return)-1);
132 else if(c == '\n') put_raw(oks::xml::new_line, sizeof(oks::xml::new_line)-1);
133 else if(c == '\t') put_raw(oks::xml::tabulation, sizeof(oks::xml::tabulation)-1);
134 else put_raw(c);
135
136}
const char left_angle_bracket[]
Definition xml.cpp:26
const char new_line[]
Definition xml.cpp:30
const char tabulation[]
Definition xml.cpp:31
const char single_quote[]
Definition xml.cpp:32
const char ampersand[]
Definition xml.cpp:28
const char right_angle_bracket[]
Definition xml.cpp:27
const char carriage_return[]
Definition xml.cpp:29
const char double_quote[]
Definition xml.cpp:33

◆ 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 145 of file xml.cpp.

146{
147 while(*str) put(*str++);
148}

◆ put_attribute() [1/3]

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

Definition at line 220 of file xml.cpp.

221{
222 put_raw(' ');
223 put_raw(name, len);
224 put_raw('=');
225 put_raw('\"');
226 put(value);
227 put_raw('\"');
228}

◆ put_attribute() [2/3]

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

Definition at line 250 of file xml.cpp.

251{
252 put_raw(' ');
253 put_raw(name, len);
254 put_raw('=');
255 put_raw('\"');
256 value.WriteTo(*this);
257 put_raw('\"');
258}

◆ put_attribute() [3/3]

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

Definition at line 231 of file xml.cpp.

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

◆ put_end_tag()

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

Definition at line 185 of file xml.cpp.

186{
187 static const char __end_tag[] = "/>\n";
188 put_raw(__end_tag, sizeof(__end_tag)-1);
189}

◆ put_eol()

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

Definition at line 192 of file xml.cpp.

193{
194 static const char __eol_tag[] = ">\n";
195 put_raw(__eol_tag, sizeof(__eol_tag)-1);
196}

◆ put_last_tag()

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

Definition at line 204 of file xml.cpp.

205{
206 put_raw('<');
207 put_raw('/');
208 put_raw(name, len);
209 put_raw('>');
210 put_raw('\n');
211}

◆ put_quoted()

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

Definition at line 157 of file xml.cpp.

158{
159 put_raw('\"');
160 put(str);
161 put_raw('\"');
162}

◆ 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 145 of file xml.hpp.

146 {
147 if (__builtin_expect((f.rdbuf()->sputc(c) != c), 0))
149 }
static void __throw_write_failed()
Definition xml.cpp:112

◆ put_raw() [2/2]

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

Definition at line 152 of file xml.hpp.

153 {
154 if (__builtin_expect((f.rdbuf()->sputn(s, len) != len), 0))
156 }

◆ put_start_tag()

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

Definition at line 171 of file xml.cpp.

172{
173 put_raw('<');
174 put_raw(name, len);
175}

◆ put_value()

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

Definition at line 160 of file xml.hpp.

161 {
162 f << value;
163 }

Member Data Documentation

◆ f

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

Definition at line 191 of file xml.hpp.


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