Prefer istringstream and ostringstream over stringstream.

Use istringsream for parsing, ostringstream for generation.
This commit is contained in:
Daniel Pfeifer 2016-06-14 22:37:36 +02:00
parent ab8b77dd33
commit 24ab29b882
17 changed files with 55 additions and 55 deletions

View File

@ -567,7 +567,7 @@ cmCPackIFWRepository* cmCPackIFWGenerator::GetRepository(
void cmCPackIFWGenerator::WriteGeneratedByToStrim(cmXMLWriter& xout)
{
std::stringstream comment;
std::ostringstream comment;
comment << "Generated by CPack " << CMake_VERSION << " IFW generator "
<< "for QtIFW ";
if (IsVersionLess("2.0")) {

View File

@ -422,7 +422,7 @@ void cmCPackIFWPackage::GeneratePackageFile()
}
// Write dependencies
if (!compDepSet.empty()) {
std::stringstream dependencies;
std::ostringstream dependencies;
std::set<DependenceStruct>::iterator it = compDepSet.begin();
dependencies << it->NameWithCompare();
++it;

View File

@ -90,7 +90,7 @@ bool cmCPackWIXGenerator::RunCandleCommand(std::string const& sourceFile,
return false;
}
std::stringstream command;
std::ostringstream command;
command << QuotePath(executable);
command << " -nologo";
command << " -arch " << GetArchitecture();
@ -115,7 +115,7 @@ bool cmCPackWIXGenerator::RunLightCommand(std::string const& objectFiles)
return false;
}
std::stringstream command;
std::ostringstream command;
command << QuotePath(executable);
command << " -nologo";
command << " -out " << QuotePath(packageFileNames.at(0));
@ -254,7 +254,7 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
std::set<std::string> usedBaseNames;
std::stringstream objectFiles;
std::ostringstream objectFiles;
for (size_t i = 0; i < this->WixSources.size(); ++i) {
std::string const& sourceFilename = this->WixSources[i];
@ -265,7 +265,7 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
std::string uniqueBaseName = baseName;
while (usedBaseNames.find(uniqueBaseName) != usedBaseNames.end()) {
std::stringstream tmp;
std::ostringstream tmp;
tmp << baseName << ++counter;
uniqueBaseName = tmp.str();
}
@ -403,7 +403,7 @@ void cmCPackWIXGenerator::AddDefinition(cmWIXSourceWriter& source,
std::string const& name,
std::string const& value)
{
std::stringstream tmp;
std::ostringstream tmp;
tmp << name << "=\"" << value << '"';
source.AddProcessingInstruction(
@ -1019,7 +1019,7 @@ std::string cmCPackWIXGenerator::CreateNewIdForPath(std::string const& path)
idPrefix = "H";
}
std::stringstream result;
std::ostringstream result;
result << idPrefix << "_" << identifier;
size_t ambiguityCount = ++IdAmbiguityCounter[identifier];

View File

@ -127,7 +127,7 @@ void cmWIXAccessControlList::EmitBooleanAttribute(std::string const& entry,
std::string const& name)
{
if (!this->IsBooleanAttribute(name)) {
std::stringstream message;
std::ostringstream message;
message << "Unknown boolean attribute '" << name << "'";
this->ReportError(entry, message.str());
}

View File

@ -69,7 +69,7 @@ size_t cmWIXDirectoriesSourceWriter::BeginInstallationPrefixDirectory(
if (i == installRoot.size() - 1) {
AddAttribute("Id", "INSTALL_ROOT");
} else {
std::stringstream tmp;
std::ostringstream tmp;
tmp << "INSTALL_PREFIX_" << i;
AddAttribute("Id", tmp.str());
}

View File

@ -31,7 +31,7 @@ void cmWIXFilesSourceWriter::EmitShortcut(std::string const& id,
std::string const& shortcutPrefix,
size_t shortcutIndex)
{
std::stringstream shortcutId;
std::ostringstream shortcutId;
shortcutId << shortcutPrefix << id;
if (shortcutIndex > 0) {

View File

@ -88,7 +88,7 @@ void cmWIXPatchParser::StartFragment(const char** attributes)
if (key == "Id") {
if (Fragments.find(value) != Fragments.end()) {
std::stringstream tmp;
std::ostringstream tmp;
tmp << "Invalid reuse of 'CPackWixFragment' 'Id': " << value;
ReportValidationError(tmp.str());
}

View File

@ -1677,7 +1677,7 @@ void cmCTestTestHandler::GenerateRegressionImages(cmXMLWriter& xml,
xml.Attribute(measurementfile.match(3).c_str(),
measurementfile.match(4));
xml.Attribute("encoding", "base64");
std::stringstream ostr;
std::ostringstream ostr;
for (size_t cc = 0; cc < rlen; cc++) {
ostr << encoded_buffer[cc];
if (cc % 60 == 0 && cc) {

View File

@ -45,7 +45,7 @@ void cmCLocaleEnvironmentScope::SetEnv(std::string const& key,
if (value.empty()) {
cmSystemTools::UnsetEnv(key.c_str());
} else {
std::stringstream tmp;
std::ostringstream tmp;
tmp << key << "=" << value;
cmSystemTools::PutEnv(tmp.str());
}
@ -55,7 +55,7 @@ cmCLocaleEnvironmentScope::~cmCLocaleEnvironmentScope()
{
for (backup_map_t::const_iterator i = this->EnvironmentBackup.begin();
i != this->EnvironmentBackup.end(); ++i) {
std::stringstream tmp;
std::ostringstream tmp;
tmp << i->first << "=" << i->second;
cmSystemTools::PutEnv(tmp.str());
}

View File

@ -84,7 +84,7 @@ bool cmCMakeHostSystemInformationCommand::GetValue(
std::string cmCMakeHostSystemInformationCommand::ValueToString(
size_t value) const
{
std::stringstream tmp;
std::ostringstream tmp;
tmp << value;
return tmp.str();
}

View File

@ -311,7 +311,7 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
"false");
// set project specific environment
std::stringstream environment;
std::ostringstream environment;
environment << "VERBOSE=1|CMAKE_NO_VERBOSE=1|"; // verbose Makefile output
// set vsvars32.bat environment available at CMake time,
// but not necessarily when eclipse is open
@ -341,7 +341,7 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
AppendDictionary(xml, "org.eclipse.cdt.make.core.autoBuildTarget", "all");
// set error parsers
std::stringstream errorOutputParser;
std::ostringstream errorOutputParser;
if (compilerId == "MSVC") {
errorOutputParser << "org.eclipse.cdt.core.VCErrorParser;";

View File

@ -1527,7 +1527,7 @@ public:
if (item.find("::") != std::string::npos) {
bool noMessage = false;
cmake::MessageType messageType = cmake::FATAL_ERROR;
std::stringstream e;
std::ostringstream e;
switch (this->Target->GetLocalGenerator()->GetPolicyStatus(
cmPolicies::CMP0028)) {
case cmPolicies::WARN: {
@ -1628,7 +1628,7 @@ public:
if (this->Preferred.empty()) {
return "";
} else if (this->Preferred.size() > 1) {
std::stringstream e;
std::ostringstream e;
e << "Target " << this->Target->GetName()
<< " contains multiple languages with the highest linker preference"
<< " (" << this->Preference << "):\n";

View File

@ -623,7 +623,7 @@ void cmInstallTargetGenerator::AddChrpathPatchRule(
std::string darwin_major_version_s =
mf->GetSafeDefinition("DARWIN_MAJOR_VERSION");
std::stringstream ss(darwin_major_version_s);
std::istringstream ss(darwin_major_version_s);
int darwin_major_version;
ss >> darwin_major_version;
if (!ss.fail() && darwin_major_version <= 9 &&

View File

@ -464,7 +464,7 @@ static std::string cmQtAutoGeneratorsStripCR(std::string const& line)
static std::string ReadAll(const std::string& filename)
{
cmsys::ifstream file(filename.c_str());
std::stringstream stream;
std::ostringstream stream;
stream << file.rdbuf();
file.close();
return stream.str();
@ -508,7 +508,7 @@ static std::string ListQt5RccInputs(cmSourceFile* sf,
bool result = cmSystemTools::RunSingleCommand(
command, &rccStdOut, &rccStdErr, &retVal, 0, cmSystemTools::OUTPUT_NONE);
if (!result || retVal) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: Rcc list process for " << sf->GetFullPath()
<< " failed:\n"
<< rccStdOut << "\n"
@ -538,7 +538,7 @@ static std::string ListQt5RccInputs(cmSourceFile* sf,
std::string::size_type pos = eline.find(searchString);
if (pos == std::string::npos) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: Rcc lists unparsable output " << eline
<< std::endl;
std::cerr << err.str();

View File

@ -432,7 +432,7 @@ void cmQtAutoGenerators::Init()
static std::string ReadAll(const std::string& filename)
{
cmsys::ifstream file(filename.c_str());
std::stringstream stream;
std::ostringstream stream;
stream << file.rdbuf();
file.close();
return stream.str();
@ -477,7 +477,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
skipUic ? skippedUis : includedUis;
const std::string& absFilename = *it;
if (this->Verbose) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: Checking " << absFilename << std::endl;
this->LogInfo(err.str());
}
@ -499,7 +499,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
uicSkipped.end()) {
const std::string& absFilename = *it;
if (this->Verbose) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: Checking " << absFilename << std::endl;
this->LogInfo(err.str());
}
@ -527,19 +527,19 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
}
if (this->RunMocFailed) {
std::stringstream err;
std::ostringstream err;
err << "moc failed..." << std::endl;
this->LogError(err.str());
return false;
}
if (this->RunUicFailed) {
std::stringstream err;
std::ostringstream err;
err << "uic failed..." << std::endl;
this->LogError(err.str());
return false;
}
if (this->RunRccFailed) {
std::stringstream err;
std::ostringstream err;
err << "rcc failed..." << std::endl;
this->LogError(err.str());
return false;
@ -560,7 +560,7 @@ void cmQtAutoGenerators::ParseCppFile(
const std::string contentsString = ReadAll(absFilename);
if (contentsString.empty()) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
<< std::endl;
this->LogError(err.str());
@ -620,7 +620,7 @@ void cmQtAutoGenerators::ParseCppFile(
ownMocHeaderFile = headerToMoc;
}
} else {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename << ": The file "
<< "includes the moc file \"" << currentMoc << "\", "
<< "but could not find header \"" << basename << '{'
@ -644,7 +644,7 @@ void cmQtAutoGenerators::ParseCppFile(
// this is for KDE4 compatibility:
fileToMoc = headerToMoc;
if (!requiresMoc && basename == scannedFileBasename) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename
<< ": The file "
"includes the moc file \""
@ -656,7 +656,7 @@ void cmQtAutoGenerators::ParseCppFile(
<< std::endl;
this->LogError(err.str());
} else {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename
<< ": The file "
"includes the moc file \""
@ -670,7 +670,7 @@ void cmQtAutoGenerators::ParseCppFile(
this->LogError(err.str());
}
} else {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename
<< ": The file "
"includes the moc file \""
@ -699,7 +699,7 @@ void cmQtAutoGenerators::ParseCppFile(
if (!dotMocIncluded && requiresMoc) {
if (mocUnderscoreIncluded) {
// this is for KDE4 compatibility:
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not "
"include "
@ -717,7 +717,7 @@ void cmQtAutoGenerators::ParseCppFile(
includedMocs.erase(ownMocHeaderFile);
} else {
// otherwise always error out since it will not compile:
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not "
"include "
@ -742,7 +742,7 @@ void cmQtAutoGenerators::StrictParseCppFile(
const std::string contentsString = ReadAll(absFilename);
if (contentsString.empty()) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
<< std::endl;
this->LogError(err.str());
@ -791,7 +791,7 @@ void cmQtAutoGenerators::StrictParseCppFile(
if (!headerToMoc.empty()) {
includedMocs[headerToMoc] = currentMoc;
} else {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename << " The file "
<< "includes the moc file \"" << currentMoc << "\", "
<< "but could not find header \"" << basename << '{'
@ -807,7 +807,7 @@ void cmQtAutoGenerators::StrictParseCppFile(
}
} else {
if (basename != scannedFileBasename) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename
<< ": The file "
"includes the moc file \""
@ -835,7 +835,7 @@ void cmQtAutoGenerators::StrictParseCppFile(
std::string macroName;
if (!dotMocIncluded && requiresMocing(contentsString, macroName)) {
// otherwise always error out since it will not compile:
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not include "
<< "\"" << scannedFileBasename << ".moc\" !\n"
@ -854,7 +854,7 @@ void cmQtAutoGenerators::ParseForUic(
}
const std::string contentsString = ReadAll(absFilename);
if (contentsString.empty()) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
<< std::endl;
this->LogError(err.str());
@ -942,7 +942,7 @@ void cmQtAutoGenerators::ParseHeaders(
if (!this->MocExecutable.empty() &&
includedMocs.find(headerName) == includedMocs.end()) {
if (this->Verbose) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: Checking " << headerName << std::endl;
this->LogInfo(err.str());
}
@ -972,7 +972,7 @@ bool cmQtAutoGenerators::GenerateMocFiles(
std::map<std::string, std::string> mergedMocs(includedMocs);
mergedMocs.insert(notIncludedMocs.begin(), notIncludedMocs.end());
if (this->NameCollisionTest(mergedMocs, collisions)) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: "
"The same moc file will be generated "
"from different sources."
@ -1013,7 +1013,7 @@ bool cmQtAutoGenerators::GenerateMocFiles(
// compose _automoc.cpp content
std::string automocSource;
{
std::stringstream outStream;
std::ostringstream outStream;
outStream << "/* This file is autogenerated, do not edit*/\n";
if (notIncludedMocs.empty()) {
outStream << "enum some_compilers { need_more_than_nothing };\n";
@ -1035,7 +1035,7 @@ bool cmQtAutoGenerators::GenerateMocFiles(
if (oldContents == automocSource) {
// nothing changed: don't touch the _automoc.cpp file
if (this->Verbose) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: " << this->OutMocCppFilenameRel << " still up to date"
<< std::endl;
this->LogInfo(err.str());
@ -1106,7 +1106,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
bool result =
cmSystemTools::RunSingleCommand(command, &output, &output, &retVal);
if (!result || retVal) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: process for " << mocFilePath << " failed:\n"
<< output << std::endl;
this->LogError(err.str());
@ -1147,7 +1147,7 @@ bool cmQtAutoGenerators::GenerateUiFiles(
{
std::multimap<std::string, std::string> collisions;
if (this->NameCollisionTest(testMap, collisions)) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: The same ui_NAME.h file will be generated "
"from different sources."
<< std::endl
@ -1223,7 +1223,7 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& realName,
bool result =
cmSystemTools::RunSingleCommand(command, &output, &output, &retVal);
if (!result || retVal) {
std::stringstream err;
std::ostringstream err;
err << "AUTOUIC: error: process for " << uiOutputFile
<< " needed by\n \"" << realName << "\"\nfailed:\n"
<< output << std::endl;
@ -1275,7 +1275,7 @@ bool cmQtAutoGenerators::GenerateQrcFiles()
{
std::multimap<std::string, std::string> collisions;
if (this->NameCollisionTest(qrcGenMap, collisions)) {
std::stringstream err;
std::ostringstream err;
err << "AUTOGEN: error: The same qrc_NAME.cpp file"
" will be generated from different sources."
<< std::endl
@ -1344,7 +1344,7 @@ bool cmQtAutoGenerators::GenerateQrc(const std::string& qrcInputFile,
bool result =
cmSystemTools::RunSingleCommand(command, &output, &output, &retVal);
if (!result || retVal) {
std::stringstream err;
std::ostringstream err;
err << "AUTORCC: error: process for " << qrcOutputFile << " failed:\n"
<< output << std::endl;
this->LogError(err.str());
@ -1435,7 +1435,7 @@ void cmQtAutoGenerators::NameCollisionLog(
{
typedef std::multimap<std::string, std::string>::const_iterator Iter;
std::stringstream err;
std::ostringstream err;
// Add message
err << message;
// Append collision list
@ -1457,7 +1457,7 @@ void cmQtAutoGenerators::LogError(const std::string& message)
void cmQtAutoGenerators::LogCommand(const std::vector<std::string>& command)
{
std::stringstream sbuf;
std::ostringstream sbuf;
for (std::vector<std::string>::const_iterator cmdIt = command.begin();
cmdIt != command.end(); ++cmdIt) {
if (cmdIt != command.begin()) {

View File

@ -152,7 +152,7 @@ std::string cmTimestamp::AddTimestampComponent(char flag,
return std::string();
}
std::stringstream ss;
std::ostringstream ss;
ss << static_cast<long int>(difftime(timeT, unixEpoch));
return ss.str();
}

View File

@ -213,7 +213,7 @@ static int process(const std::string& srcfilename, const std::string& dfile,
dir.c_str(), cmSystemTools::OUTPUT_NONE);
// process the include directives and output everything else
std::stringstream ss(output);
std::istringstream ss(output);
std::string line;
std::vector<std::string> includes;
bool isFirstLine = true; // cl prints always first the source filename