#include <stdexcept>
#include <algorithm>
#include <boost/bind.hpp>
#include "Fireworks/Core/interface/FWConfiguration.h"
Go to the source code of this file.
Functions | |
std::string | attrEscape (std::string value) |
void | streamTo (std::ostream &oTo, const FWConfiguration &iConfig, const std::string &name) |
std::string attrEscape | ( | std::string | value | ) |
Helper function to make sure we escape correctly xml entities embedded in the string value.
Definition at line 161 of file FWConfiguration.cc.
References getHLTprescales::index, and relativeConstraints::value.
Referenced by streamTo().
{ std::string::size_type index=0; index = 0; while (std::string::npos != (index=value.find('&',index))){ value.replace(index, 1,"&", 5); // Do not check """ for quotes. index += 5; } while (std::string::npos != (index=value.find('"',index))){ value.replace(index, 1,""", 6); // Do not check """ for quotes. index += 6; } index = 0; while (std::string::npos != (index=value.find('<',index))){ value.replace(index, 1,"<", 4); // Do not check """ for quotes. index += 4; } index = 0; while (std::string::npos != (index=value.find('>',index))){ value.replace(index, 1,">", 4); // Do not check """ for quotes. index += 4; } return value; }
void streamTo | ( | std::ostream & | oTo, |
const FWConfiguration & | iConfig, | ||
const std::string & | name | ||
) |
Streaming FWConfiguration objects to xml.
Example of dump is:
<config name="top" version="1"> <string value="S1"> <string value="S2"> ... <string value="SN"> <config name="c1"> ... </configuration> <config name="c2"> ... </config> ... </config>
Streaming the top level configuration item will stream all its children.
Definition at line 215 of file FWConfiguration.cc.
References attrEscape(), FWConfiguration::keyValues(), streamTo(), FWConfiguration::stringValues(), and FWConfiguration::version().
Referenced by streamTo(), and FWConfigurationManager::writeToFile().
{ static int recursionLevel = -1; recursionLevel += 1; std::string indentation(recursionLevel, ' '); oTo << indentation << "<config name=\"" << name << "\" version=\"" << iConfig.version() << "\">\n"; if(iConfig.stringValues()) { for(FWConfiguration::StringValues::const_iterator it = iConfig.stringValues()->begin(); it != iConfig.stringValues()->end(); ++it) { oTo << indentation << " <string>" << attrEscape(*it) << "</string>\n"; } } if(iConfig.keyValues()) { for(FWConfiguration::KeyValues::const_iterator it = iConfig.keyValues()->begin(); it != iConfig.keyValues()->end(); ++it) { streamTo(oTo, it->second, attrEscape(it->first)); } } oTo << indentation << "</config>" << std::endl; recursionLevel -= 1; }