28# define LIBXML_ATTR_ALLOC_SIZE(x)
30#include <libxml/encoding.h>
31#include <libxml/xmlwriter.h>
34#define MY_ENCODING "ISO-8859-1"
92 std::vector< Root::TGoodRunsList >::const_iterator litr =
m_grlvec.begin();
93 for (
int i=0; litr!=
m_grlvec.end(); ++litr, ++i) {
117 m_logger <<
kINFO <<
"Output filename not set. Will be generated automatically." <<
GEndl;
127 writer = xmlNewTextWriterDoc(&doc, 0);
140 rc = xmlTextWriterEndDocument(
writer);
146 xmlFreeTextWriter(
writer);
164const std::vector<TString>&
210 buf = xmlBufferCreate();
218 writer = xmlNewTextWriterMemory(buf, 0);
231 rc = xmlTextWriterEndDocument(
writer);
237 xmlFreeTextWriter(
writer);
262 rc = xmlTextWriterStartDocument(
writer, NULL, NULL, NULL);
281 rc = xmlTextWriterWriteComment(
writer, tmp);
286 if (tmp != NULL) xmlFree(tmp);
290 rc = xmlTextWriterStartElement(
writer, BAD_CAST
"LumiRangeCollection");
305 std::vector< Root::TGoodRunsList >::const_iterator litr =
m_grlvec.begin();
306 for (; litr!=
m_grlvec.end(); ++litr) {
317 rc = xmlTextWriterEndElement(
writer);
346 rc = xmlTextWriterStartElement(
writer, BAD_CAST
"NamedLumiRange");
357 if (
m_grl.GetVersion().Length()>0) {
361 if (!
m_grl.GetMetaData().empty()) {
362 std::map<TString,TString>::const_iterator mitr =
m_grl.GetMetaData().begin();
363 for (; mitr!=
m_grl.GetMetaData().end(); ++mitr)
367 std::map<Int_t,Root::TGoodRun>::const_iterator gitr =
m_grl.begin();
368 for (; gitr!=
m_grl.end(); ++gitr)
372 rc = xmlTextWriterEndElement(
writer);
397 rc = xmlTextWriterStartElement(
writer, BAD_CAST
"LumiBlockCollection");
407 std::vector<TLumiBlockRange>::const_iterator litr = goodrun.begin();
408 for (; litr!=goodrun.end(); ++litr)
409 if (!litr->IsEmpty()) {
410 if (litr->End()!=2147483647)
411 this->
WriteElement(
writer,
"LBRange",0,
"Start",Form(
"%d",litr->Begin()),
"End",Form(
"%d",litr->End()));
418 rc = xmlTextWriterEndElement(
writer);
437 const char* name,
const char* value,
438 const char* atr1,
const char* val1,
const char* atr2,
const char* val2)
444 rc = xmlTextWriterStartElement(
writer, BAD_CAST (name));
450 if ((atr1!=0) && (val1!=0)) {
451 rc = xmlTextWriterWriteAttribute(
writer, BAD_CAST (atr1), BAD_CAST (val1));
458 if ((atr2!=0) && (val2!=0)) {
459 rc = xmlTextWriterWriteAttribute(
writer, BAD_CAST (atr2), BAD_CAST (val2));
467 rc = xmlTextWriterWriteString(
writer, BAD_CAST (value));
474 rc = xmlTextWriterEndElement(
writer);
512 xmlCharEncodingHandlerPtr
handler;
517 handler = xmlFindCharEncodingHandler(encoding);
520 m_logger <<
kWARNING <<
"ConvertInput: no encoding handler found for " << (encoding ? encoding :
"") <<
GEndl;
524 size = (int) strlen(in) + 1;
525 out_size = size * 2 - 1;
526 out = (
unsigned char *) xmlMalloc((
size_t) out_size);
530 ret =
handler->input(out, &out_size, (
const xmlChar *) in, &temp);
531 if ((ret < 0) || (temp - size + 1)) {
535 m_logger <<
kWARNING <<
"ConvertInput: conversion wasn't successful. Converted: " << temp <<
" octets." <<
GEndl;
541 out = (
unsigned char *) xmlRealloc(out, out_size + 1);
std::shared_ptr< HepMC3::Writer > writer
ClassImp(Root::TGoodRunsListWriter) using namespace std
xmlTextWriter * xmlTextWriterPtr
Int_t GetRunNumber() const
xmlChar * ConvertInput(const char *in, const char *encoding)
ConvertInput: @in: string in a given encoding @encoding: the encoding used.
const TGoodRunsList GetMergedGoodRunsList(const Root::BoolOperation &operation=OR) const
Bool_t WriteNamedLumiRange(xmlTextWriterPtr writer)
Bool_t WriteLumiRangeCollection(xmlTextWriterPtr writer)
const TString & GetXMLString()
std::vector< TString > m_xmlstringVec
Bool_t WriteElement(xmlTextWriterPtr writer, const char *name, const char *value=0, const char *atr1=0, const char *val1=0, const char *atr2=0, const char *val2=0)
const std::vector< TString > & GetXMLStrings()
Bool_t WriteLumiBlockCollection(xmlTextWriterPtr writer, const TGoodRun &goodrun)
void handler(int sig)
signal handler