Commit 8df43386 authored by Mark Olesen's avatar Mark Olesen
Browse files

STYLE: use string substr instead of string::operator()

- makes the purpose clearer.
  In some places, string::resize() is even simpler.

- use C++11 string::back() in preference to str[str.size()-1]
parent 72f24240
......@@ -221,6 +221,7 @@ redundantBlock {space}({comment}|{unknownPeriodicFace}|{periodicFace
endOfSection {space}")"{space}
/* balance "-quoted for editor */
/* ------------------------------------------------------------------------ *\
----- Exclusive start states -----
......@@ -693,7 +694,7 @@ endOfSection {space}")"{space}
{lbrac}{label} {
Warning
<< "Found unknown block of type: "
<< Foam::string(YYText())(1, YYLeng()-1) << nl
<< std::string(YYText()).substr(1, YYLeng()-1) << nl
<< " on line " << lineNo << endl;
yy_push_state(ignoreBlock);
......
......@@ -903,10 +903,10 @@ int main(int argc, char *argv[])
}
// Strip off anything after #
string::size_type i = rawLine.find_first_of("#");
string::size_type i = rawLine.find('#');
if (i != string::npos)
{
rawLine = rawLine(0, i);
rawLine.resize(i);
}
if (rawLine.empty())
......
......@@ -254,7 +254,7 @@ bool merge
if (key[0] == '~')
{
word eraseKey = key(1, key.size()-1);
const word eraseKey = key.substr(1);
if (thisDict.remove(eraseKey))
{
// Mark thisDict entry as having been match for wildcard
......@@ -325,7 +325,7 @@ bool merge
if (key[0] == '~')
{
word eraseKey = key(1, key.size()-1);
const word eraseKey = key.substr(1);
// List of indices into thisKeys
labelList matches
......
......@@ -88,7 +88,7 @@ static inline bool isBackupName(const Foam::fileName& name)
{
return false;
}
else if (name[name.size()-1] == '~')
else if (name.back() == '~')
{
return true;
}
......
......@@ -40,12 +40,11 @@ namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
string pOpen(const string &cmd, label line=0)
string pOpen(const string& cmd, label line=0)
{
string res = "\n";
string res;
FILE *cmdPipe = popen(cmd.c_str(), "r");
if (cmdPipe)
{
char *buf = nullptr;
......@@ -54,8 +53,7 @@ string pOpen(const string &cmd, label line=0)
for (label cnt = 0; cnt <= line; cnt++)
{
size_t linecap = 0;
ssize_t linelen;
linelen = ::getline(&buf, &linecap, cmdPipe);
ssize_t linelen = ::getline(&buf, &linecap, cmdPipe);
if (linelen < 0)
{
......@@ -65,6 +63,11 @@ string pOpen(const string &cmd, label line=0)
if (cnt == line)
{
res = string(buf);
// Trim trailing newline
if (res.size())
{
res.resize(res.size()-1);
}
break;
}
}
......@@ -77,7 +80,7 @@ string pOpen(const string &cmd, label line=0)
pclose(cmdPipe);
}
return res.substr(0, res.size() - 1);
return res;
}
......
......@@ -130,7 +130,7 @@ bool Foam::dictionary::read(Istream& is)
bool Foam::dictionary::substituteKeyword(const word& keyword, bool mergeEntry)
{
const word varName = keyword(1, keyword.size()-1);
const word varName = keyword.substr(1);
// Lookup the variable name in the given dictionary
const entry* ePtr = lookupEntryPtr(varName, true, true);
......
......@@ -210,7 +210,7 @@ bool Foam::functionObjectList::readFunctionObject
{
if (argLevel == 0)
{
funcName = funcNameArgs(start, i - start);
funcName = funcNameArgs.substr(start, i - start);
start = i+1;
}
++argLevel;
......@@ -226,7 +226,7 @@ bool Foam::functionObjectList::readFunctionObject
Tuple2<word, string>
(
argName,
funcNameArgs(start, i - start)
funcNameArgs.substr(start, i - start)
)
);
namedArg = false;
......@@ -235,7 +235,10 @@ bool Foam::functionObjectList::readFunctionObject
{
args.append
(
string::validate<word>(funcNameArgs(start, i - start))
string::validate<word>
(
funcNameArgs.substr(start, i - start)
)
);
}
start = i+1;
......@@ -252,7 +255,11 @@ bool Foam::functionObjectList::readFunctionObject
}
else if (c == '=')
{
argName = string::validate<word>(funcNameArgs(start, i - start));
argName = string::validate<word>
(
funcNameArgs.substr(start, i - start)
);
start = i+1;
namedArg = true;
}
......
......@@ -140,7 +140,7 @@ void Foam::dimensionSet::tokeniser::splitWord(const word& w)
{
if (i > start)
{
word subWord = w(start, i-start);
const word subWord = w.substr(start, i-start);
if (isdigit(subWord[0]) || subWord[0] == token::SUBTRACT)
{
push(token(readScalar(IStringStream(subWord)())));
......@@ -166,7 +166,7 @@ void Foam::dimensionSet::tokeniser::splitWord(const word& w)
}
if (start < w.size())
{
word subWord = w(start, w.size()-start);
const word subWord = w.substr(start);
if (isdigit(subWord[0]) || subWord[0] == token::SUBTRACT)
{
push(token(readScalar(IStringStream(subWord)())));
......@@ -524,9 +524,9 @@ Foam::Istream& Foam::dimensionSet::read
do
{
word symbolPow = nextToken.wordToken();
if (symbolPow[symbolPow.size()-1] == token::END_SQR)
if (symbolPow.back() == token::END_SQR)
{
symbolPow = symbolPow(0, symbolPow.size()-1);
symbolPow.resize(symbolPow.size()-1);
continueParsing = false;
}
......@@ -537,8 +537,8 @@ Foam::Istream& Foam::dimensionSet::read
size_t index = symbolPow.find('^');
if (index != string::npos)
{
word symbol = symbolPow(0, index);
word exp = symbolPow(index+1, symbolPow.size()-index+1);
const word symbol = symbolPow.substr(0, index);
const word exp = symbolPow.substr(index+1);
scalar exponent = readScalar(IStringStream(exp)());
dimensionedScalar s;
......@@ -580,9 +580,9 @@ Foam::Istream& Foam::dimensionSet::read
{
// Read first five dimensions
exponents_[dimensionSet::MASS] = nextToken.number();
for (int Dimension=1; Dimension<dimensionSet::CURRENT; Dimension++)
for (int d=1; d < dimensionSet::CURRENT; ++d)
{
is >> exponents_[Dimension];
is >> exponents_[d];
}
// Read next token
......
......@@ -76,16 +76,13 @@ void Foam::solution::read(const dictionary& dict)
const word& e = entryNames[i];
scalar value = readScalar(relaxDict.lookup(e));
if (e(0, 1) == "p")
if (e.startsWith("p"))
{
fieldRelaxDict_.add(e, value);
}
else if (e.length() >= 3)
else if (e.startsWith("rho"))
{
if (e(0, 3) == "rho")
{
fieldRelaxDict_.add(e, value);
}
fieldRelaxDict_.add(e, value);
}
}
......
......@@ -34,16 +34,15 @@ Foam::autoPtr<Foam::reactionRateFlameArea> Foam::reactionRateFlameArea::New
const combustionModel& combModel
)
{
word reactionRateFlameAreaType
const word modelType
(
dict.lookup("reactionRateFlameArea")
);
Info<< "Selecting reaction rate flame area correlation "
<< reactionRateFlameAreaType << endl;
<< modelType << endl;
auto cstrIter =
dictionaryConstructorTablePtr_->cfind(reactionRateFlameAreaType);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!cstrIter.found())
{
......@@ -51,15 +50,13 @@ Foam::autoPtr<Foam::reactionRateFlameArea> Foam::reactionRateFlameArea::New
(
dict
) << "Unknown reactionRateFlameArea type "
<< reactionRateFlameAreaType << nl << nl
<< modelType << nl << nl
<< "Valid reaction rate flame area types :" << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalIOError);
}
const label tempOpen = reactionRateFlameAreaType.find('<');
const word className = reactionRateFlameAreaType(0, tempOpen);
const word className = modelType.substr(0, modelType.find('<'));
return autoPtr<reactionRateFlameArea>
(cstrIter()(className, dict, mesh, combModel));
......
......@@ -35,7 +35,7 @@ Foam::combustionModels::psiCombustionModel::New
const word& phaseName
)
{
const word combModelName
const word modelType
(
IOdictionary
(
......@@ -51,21 +51,21 @@ Foam::combustionModels::psiCombustionModel::New
).lookup("combustionModel")
);
Info<< "Selecting combustion model " << combModelName << endl;
Info<< "Selecting combustion model " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(combModelName);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown psiCombustionModel type "
<< combModelName << endl << endl
<< "Valid combustionModel types :" << endl
<< modelType << nl << nl
<< "Valid combustionModel types :" << nl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
const word className = combModelName(0, combModelName.find('<'));
const word className = modelType.substr(0, modelType.find('<'));
return autoPtr<psiCombustionModel>
(
......
......@@ -35,7 +35,7 @@ Foam::combustionModels::rhoCombustionModel::New
const word& phaseName
)
{
const word combTypeName
const word modelType
(
IOdictionary
(
......@@ -51,23 +51,21 @@ Foam::combustionModels::rhoCombustionModel::New
).lookup("combustionModel")
);
Info<< "Selecting combustion model " << combTypeName << endl;
Info<< "Selecting combustion model " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(combTypeName);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown rhoCombustionModel type "
<< combTypeName << endl << endl
<< "Valid combustionModel types :" << endl
<< modelType << nl << nl
<< "Valid combustionModel types :" << nl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
const label tempOpen = combTypeName.find('<');
const word className = combTypeName(0, tempOpen);
const word className = modelType.substr(0, modelType.find('<'));
return autoPtr<rhoCombustionModel>
(
......
......@@ -74,7 +74,7 @@ bool Foam::fileFormats::NASedgeFormat::read
// Check if character 72 is continuation
if (line.size() > 72 && line[72] == '+')
{
line = line.substr(0, 72);
line.resize(72);
while (true)
{
......@@ -87,7 +87,7 @@ bool Foam::fileFormats::NASedgeFormat::read
}
else
{
line += buf.substr(8, buf.size()-8);
line += buf.substr(8);
break;
}
}
......
......@@ -117,9 +117,9 @@ bool Foam::fileFormats::OBJedgeFormat::read(const fileName& filename)
string line = this->getLineNoComment(is);
// handle continuations
if (line[line.size()-1] == '\\')
if (line.back() == '\\')
{
line.substr(0, line.size()-1);
line.resize(line.size()-1);
line += this->getLineNoComment(is);
}
......
......@@ -191,9 +191,8 @@ void thermalBaffleFvPatchScalarField::createPatchMesh()
dicts[bottomPatchID].add("inGroups", inGroups);
dicts[bottomPatchID].add("sampleMode", mpp.sampleModeNames_[mpp.mode()]);
const label sepPos = coupleGroup.find('_');
const word coupleGroupSlave = coupleGroup(0, sepPos) + "_slave";
const word coupleGroupSlave =
coupleGroup.substr(0, coupleGroup.find('_')) + "_slave";
inGroups[0] = coupleGroupSlave;
dicts[topPatchID].add("coupleGroup", coupleGroupSlave);
......
......@@ -186,7 +186,7 @@ void Foam::ensightSurfaceReader::readCase(IFstream& is)
// surfaceName.****.fieldName
// This is not parser friendly - simply take remainder of buffer
label iPos = iss.stdStream().tellg();
fieldFileName = buffer(iPos, buffer.size() - iPos);
fieldFileName = buffer.substr(iPos);
size_t p0 = fieldFileName.find_first_not_of(' ');
if (p0 == string::npos)
{
......
......@@ -89,12 +89,12 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
string line;
is.getLine(line);
// Ansa extension
if (line.substr(0, 10) == "$ANSA_NAME")
// ANSA extension
if (line.startsWith("$ANSA_NAME"))
{
string::size_type sem0 = line.find (';', 0);
string::size_type sem1 = line.find (';', sem0+1);
string::size_type sem2 = line.find (';', sem1+1);
string::size_type sem0 = line.find(';', 0);
string::size_type sem1 = line.find(';', sem0+1);
string::size_type sem2 = line.find(';', sem1+1);
if
(
......@@ -111,14 +111,11 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
string rawName;
is.getLine(rawName);
if (rawName[rawName.size()-1] == '\r')
if (rawName.back() == '\r')
{
rawName = rawName.substr(1, rawName.size()-2);
}
else
{
rawName = rawName.substr(1, rawName.size()-1);
rawName.resize(rawName.size()-1);
}
rawName = rawName.substr(1);
string::stripInvalid<word>(rawName);
ansaName = rawName;
......@@ -132,11 +129,7 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
// Hypermesh extension
// $HMNAME COMP 1"partName"
if
(
line.substr(0, 12) == "$HMNAME COMP"
&& line.find ('"') != string::npos
)
if (line.startsWith("$HMNAME COMP") && line.find('"') != string::npos)
{
label groupId = readLabel
(
......@@ -165,7 +158,7 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
// Check if character 72 is continuation
if (line.size() > 72 && line[72] == '+')
{
line = line.substr(0, 72);
line.resize(72);
while (true)
{
......@@ -178,7 +171,7 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
}
else
{
line += buf.substr(8, buf.size()-8);
line += buf.substr(8);
break;
}
}
......
......@@ -82,9 +82,9 @@ bool Foam::fileFormats::OBJsurfaceFormat<Face>::read
string line = this->getLineNoComment(is);
// handle continuations
if (line[line.size()-1] == '\\')
if (line.back() == '\\')
{
line.substr(0, line.size()-1);
line.resize(line.size()-1);
line += this->getLineNoComment(is);
}
......
......@@ -87,9 +87,9 @@ bool Foam::fileFormats::TRIsurfaceFormatCore::read
string line = this->getLineNoComment(is);
// handle continuations ?
// if (line[line.size()-1] == '\\')
// if (line.back() == '\\')
// {
// line.substr(0, line.size()-1);
// line.resize(line.size()-1);
// line += this->getLineNoComment(is);
// }
......@@ -128,14 +128,14 @@ bool Foam::fileFormats::TRIsurfaceFormatCore::read
// ie, instead of having 0xFF, skip 0 and leave xFF to
// get read as a word and name it "zoneFF"
char zero;
lineStream >> zero;
char zeroChar;
lineStream >> zeroChar;
word rawName(lineStream);
word name("zone" + rawName(1, rawName.size()-1));
const word rawName(lineStream);
const word name("zone" + rawName.substr(1));
HashTable<label>::const_iterator fnd = lookup.find(name);
if (fnd != lookup.end())
HashTable<label>::const_iterator fnd = lookup.cfind(name);
if (fnd.found())
{
if (zoneI != fnd())
{
......
......@@ -32,7 +32,6 @@ Description
GRID 28 10.20269-.030265-2.358-8
\endverbatim
\*---------------------------------------------------------------------------*/
#include "triSurface.H"
......@@ -78,11 +77,8 @@ static std::string readNASToken
size_t& index
)
{
size_t indexStart, indexEnd;
indexStart = index;
indexEnd = line.find(',', indexStart);
size_t indexStart = index;
size_t indexEnd = line.find(',', indexStart);
index = indexEnd + 1;
if (indexEnd == std::string::npos)
......@@ -134,12 +130,12 @@ bool triSurface::readNAS(const fileName& fName)
string line;
is.getLine(line);
// Ansa extension
if (line.substr(0, 10) == "$ANSA_NAME")
// ANSA extension
if (line.startsWith("$ANSA_NAME"))
{
string::size_type sem0 = line.find (';', 0);
string::size_type sem1 = line.find (';', sem0+1);
string::size_type sem2 = line.find (';', sem1+1);
string::size_type sem0 = line.find(';', 0);
string::size_type sem1 = line.find(';', sem0+1);
string::size_type sem2 = line.find(';', sem1+1);
if
(
......@@ -156,15 +152,11 @@ bool triSurface::readNAS(const fileName& fName)
string nameString;
is.getLine(ansaName);
if (ansaName[ansaName.size()-1] == '\r')
if (ansaName.back() == '\r')
{
ansaName = ansaName.substr(1, ansaName.size()-2);
ansaName.resize(ansaName.size()-1);
}
else
{
ansaName = ansaName.substr(1, ansaName.size()-1);
}
ansaName = ansaName.substr(1);
// Info<< "ANSA tag for NastranID:" << ansaId
// << " of type " << ansaType
// << " name " << ansaName << endl;
......@@ -174,11 +166,7 @@ bool triSurface::readNAS(const fileName& fName)
// Hypermesh extension
// $HMNAME COMP 1"partName"
if
(
line.substr(0, 12) == "$HMNAME COMP"
&& line.find ('"') != string::npos
)
if (line.startsWith("$HMNAME COMP") && line.find('"') != string::npos)
{
label groupId = readLabel
(
......@@ -204,20 +192,20 @@ bool triSurface::readNAS(const fileName& fName)