refactor(3p/nix/libexpr): Use std::string as qualified type

Replaces most uses of `string` with `std::string`.

This came up because I removed the "types.hh" import from
"symbol-table.hh", which percolated through a bunch of files where
`string` was suddenly no longer defined ... *sigh*
This commit is contained in:
Vincent Ambo 2020-05-21 05:43:22 +01:00
parent b97307056d
commit a162f4e825
26 changed files with 196 additions and 184 deletions

View file

@ -32,7 +32,7 @@ namespace nix {
/* Decode a context string !<name>!<path> into a pair <path,
name>. */
std::pair<string, string> decodeContext(const string& s) {
std::pair<string, string> decodeContext(const std::string& s) {
if (s.at(0) == '!') {
size_t index = s.find('!', 1);
return std::pair<string, string>(string(s, index + 1),
@ -180,7 +180,7 @@ void prim_importNative(EvalState& state, const Pos& pos, Value** args,
path = state.checkSourcePath(path);
string sym = state.forceStringNoCtx(*args[1], pos);
std::string sym = state.forceStringNoCtx(*args[1], pos);
void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_LOCAL);
if (handle == nullptr) {
@ -252,7 +252,7 @@ void prim_exec(EvalState& state, const Pos& pos, Value** args, Value& v) {
static void prim_typeOf(EvalState& state, const Pos& pos, Value** args,
Value& v) {
state.forceValue(*args[0]);
string t;
std::string t;
switch (args[0]->type) {
case tInt:
t = "int";
@ -461,7 +461,7 @@ static void prim_genericClosure(EvalState& state, const Pos& pos, Value** args,
static void prim_abort(EvalState& state, const Pos& pos, Value** args,
Value& v) {
PathSet context;
string s = state.coerceToString(pos, *args[0], context);
std::string s = state.coerceToString(pos, *args[0], context);
throw Abort(
format("evaluation aborted with the following error message: '%1%'") % s);
}
@ -469,7 +469,7 @@ static void prim_abort(EvalState& state, const Pos& pos, Value** args,
static void prim_throw(EvalState& state, const Pos& pos, Value** args,
Value& v) {
PathSet context;
string s = state.coerceToString(pos, *args[0], context);
std::string s = state.coerceToString(pos, *args[0], context);
throw ThrownError(s);
}
@ -504,7 +504,7 @@ static void prim_tryEval(EvalState& state, const Pos& pos, Value** args,
/* Return an environment variable. Use with care. */
static void prim_getEnv(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string name = state.forceStringNoCtx(*args[0], pos);
std::string name = state.forceStringNoCtx(*args[0], pos);
mkString(v, evalSettings.restrictEval || evalSettings.pureEval
? ""
: getEnv(name));
@ -565,7 +565,7 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
if (attr == args[0]->attrs->end()) {
throw EvalError(format("required attribute 'name' missing, at %1%") % pos);
}
string drvName;
std::string drvName;
Pos& posDrvName(*attr->pos);
try {
drvName = state.forceStringNoCtx(*attr->value, pos);
@ -607,7 +607,7 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
if (i->name == state.sIgnoreNulls) {
continue;
}
const string& key = i->name;
const std::string& key = i->name;
auto handleHashMode = [&](const std::string& s) {
if (s == "recursive") {
@ -660,8 +660,8 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
if (i->name == state.sArgs) {
state.forceList(*i->value, pos);
for (unsigned int n = 0; n < i->value->listSize(); ++n) {
string s = state.coerceToString(posDrvName, *i->value->listElems()[n],
context, true);
std::string s = state.coerceToString(
posDrvName, *i->value->listElems()[n], context, true);
drv.args.push_back(s);
}
}
@ -965,7 +965,8 @@ static void prim_readFile(EvalState& state, const Pos& pos, Value** args,
format("cannot read '%1%', since path '%2%' is not valid, at %3%") %
path % e.path % pos);
}
string s = readFile(state.checkSourcePath(state.toRealPath(path, context)));
std::string s =
readFile(state.checkSourcePath(state.toRealPath(path, context)));
if (s.find((char)0) != string::npos) {
throw Error(format("the contents of the file '%1%' cannot be represented "
"as a Nix string") %
@ -986,7 +987,7 @@ static void prim_findFile(EvalState& state, const Pos& pos, Value** args,
Value& v2(*args[0]->listElems()[n]);
state.forceAttrs(v2, pos);
string prefix;
std::string prefix;
Bindings::iterator i = v2.attrs->find(state.symbols.Create("prefix"));
if (i != v2.attrs->end()) {
prefix = state.forceStringNoCtx(*i->value, pos);
@ -998,7 +999,8 @@ static void prim_findFile(EvalState& state, const Pos& pos, Value** args,
}
PathSet context;
string path = state.coerceToString(pos, *i->value, context, false, false);
std::string path =
state.coerceToString(pos, *i->value, context, false, false);
try {
state.realiseContext(context);
@ -1011,7 +1013,7 @@ static void prim_findFile(EvalState& state, const Pos& pos, Value** args,
searchPath.emplace_back(prefix, path);
}
string path = state.forceStringNoCtx(*args[1], pos);
std::string path = state.forceStringNoCtx(*args[1], pos);
mkPath(v,
state.checkSourcePath(state.findFile(searchPath, path, pos)).c_str());
@ -1020,7 +1022,7 @@ static void prim_findFile(EvalState& state, const Pos& pos, Value** args,
/* Return the cryptographic hash of a file in base-16. */
static void prim_hashFile(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string type = state.forceStringNoCtx(*args[0], pos);
std::string type = state.forceStringNoCtx(*args[0], pos);
HashType ht = parseHashType(type);
if (ht == htUnknown) {
throw Error(format("unknown hash type '%1%', at %2%") % type % pos);
@ -1094,7 +1096,7 @@ static void prim_toJSON(EvalState& state, const Pos& pos, Value** args,
/* Parse a JSON string to a value. */
static void prim_fromJSON(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string s = state.forceStringNoCtx(*args[0], pos);
std::string s = state.forceStringNoCtx(*args[0], pos);
parseJSON(state, s, v);
}
@ -1103,8 +1105,8 @@ static void prim_fromJSON(EvalState& state, const Pos& pos, Value** args,
static void prim_toFile(EvalState& state, const Pos& pos, Value** args,
Value& v) {
PathSet context;
string name = state.forceStringNoCtx(*args[0], pos);
string contents = state.forceString(*args[1], context, pos);
std::string name = state.forceStringNoCtx(*args[0], pos);
std::string contents = state.forceString(*args[1], context, pos);
PathSet refs;
@ -1129,7 +1131,7 @@ static void prim_toFile(EvalState& state, const Pos& pos, Value** args,
mkString(v, storePath, {storePath});
}
static void addPath(EvalState& state, const Pos& pos, const string& name,
static void addPath(EvalState& state, const Pos& pos, const std::string& name,
const Path& path_, Value* filterFun, bool recursive,
const Hash& expectedHash, Value& v) {
const auto path = evalSettings.pureEval && expectedHash
@ -1211,13 +1213,13 @@ static void prim_path(EvalState& state, const Pos& pos, Value** args,
Value& v) {
state.forceAttrs(*args[0], pos);
Path path;
string name;
std::string name;
Value* filterFun = nullptr;
auto recursive = true;
Hash expectedHash;
for (auto& attr : *args[0]->attrs) {
const string& n(attr.name);
const std::string& n(attr.name);
if (n == "path") {
PathSet context;
path = state.coerceToPath(*attr.pos, *attr.value, context);
@ -1298,7 +1300,7 @@ static void prim_attrValues(EvalState& state, const Pos& pos, Value** args,
/* Dynamic version of the `.' operator. */
void prim_getAttr(EvalState& state, const Pos& pos, Value** args, Value& v) {
string attr = state.forceStringNoCtx(*args[0], pos);
std::string attr = state.forceStringNoCtx(*args[0], pos);
state.forceAttrs(*args[1], pos);
// !!! Should we create a symbol here or just do a lookup?
Bindings::iterator i = args[1]->attrs->find(state.symbols.Create(attr));
@ -1316,7 +1318,7 @@ void prim_getAttr(EvalState& state, const Pos& pos, Value** args, Value& v) {
/* Return position information of the specified attribute. */
void prim_unsafeGetAttrPos(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string attr = state.forceStringNoCtx(*args[0], pos);
std::string attr = state.forceStringNoCtx(*args[0], pos);
state.forceAttrs(*args[1], pos);
Bindings::iterator i = args[1]->attrs->find(state.symbols.Create(attr));
if (i == args[1]->attrs->end()) {
@ -1329,7 +1331,7 @@ void prim_unsafeGetAttrPos(EvalState& state, const Pos& pos, Value** args,
/* Dynamic version of the `?' operator. */
static void prim_hasAttr(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string attr = state.forceStringNoCtx(*args[0], pos);
std::string attr = state.forceStringNoCtx(*args[0], pos);
state.forceAttrs(*args[1], pos);
mkBool(v, args[1]->attrs->find(state.symbols.Create(attr)) !=
args[1]->attrs->end());
@ -1389,7 +1391,7 @@ static void prim_listToAttrs(EvalState& state, const Pos& pos, Value** args,
"'name' attribute missing in a call to 'listToAttrs', at %1%") %
pos);
}
string name = state.forceStringNoCtx(*j->value, pos);
std::string name = state.forceStringNoCtx(*j->value, pos);
Symbol sym = state.symbols.Create(name);
if (seen.find(sym) == seen.end()) {
@ -1896,7 +1898,7 @@ static void prim_lessThan(EvalState& state, const Pos& pos, Value** args,
static void prim_toString(EvalState& state, const Pos& pos, Value** args,
Value& v) {
PathSet context;
string s = state.coerceToString(pos, *args[0], context, true, false);
std::string s = state.coerceToString(pos, *args[0], context, true, false);
mkString(v, s, context);
}
@ -1909,7 +1911,7 @@ static void prim_substring(EvalState& state, const Pos& pos, Value** args,
int start = state.forceInt(*args[0], pos);
int len = state.forceInt(*args[1], pos);
PathSet context;
string s = state.coerceToString(pos, *args[2], context);
std::string s = state.coerceToString(pos, *args[2], context);
if (start < 0) {
throw EvalError(format("negative start position in 'substring', at %1%") %
@ -1923,21 +1925,21 @@ static void prim_substring(EvalState& state, const Pos& pos, Value** args,
static void prim_stringLength(EvalState& state, const Pos& pos, Value** args,
Value& v) {
PathSet context;
string s = state.coerceToString(pos, *args[0], context);
std::string s = state.coerceToString(pos, *args[0], context);
mkInt(v, s.size());
}
/* Return the cryptographic hash of a string in base-16. */
static void prim_hashString(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string type = state.forceStringNoCtx(*args[0], pos);
std::string type = state.forceStringNoCtx(*args[0], pos);
HashType ht = parseHashType(type);
if (ht == htUnknown) {
throw Error(format("unknown hash type '%1%', at %2%") % type % pos);
}
PathSet context; // discarded
string s = state.forceString(*args[1], context, pos);
std::string s = state.forceString(*args[1], context, pos);
mkString(v, hashString(ht, s).to_string(Base16, false), context);
}
@ -1982,7 +1984,7 @@ static void prim_match(EvalState& state, const Pos& pos, Value** args,
}
}
/* Split a string with a regular expression, and return a list of the
/* Split a std::string with a regular expression, and return a list of the
non-matching parts interleaved by the lists of the matching groups. */
static void prim_split(EvalState& state, const Pos& pos, Value** args,
Value& v) {
@ -2056,7 +2058,7 @@ static void prim_concatStringSep(EvalState& state, const Pos& pos, Value** args,
auto sep = state.forceString(*args[0], context, pos);
state.forceList(*args[1], pos);
string res;
std::string res;
res.reserve((args[1]->listSize() + 32) * sep.size());
bool first = true;
@ -2100,7 +2102,7 @@ static void prim_replaceStrings(EvalState& state, const Pos& pos, Value** args,
PathSet context;
auto s = state.forceString(*args[2], context, pos);
string res;
std::string res;
// Loops one past last character to handle the case where 'from' contains an
// empty string.
for (size_t p = 0; p <= s.size();) {
@ -2143,7 +2145,7 @@ static void prim_replaceStrings(EvalState& state, const Pos& pos, Value** args,
static void prim_parseDrvName(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string name = state.forceStringNoCtx(*args[0], pos);
std::string name = state.forceStringNoCtx(*args[0], pos);
DrvName parsed(name);
state.mkAttrs(v, 2);
mkString(*state.allocAttr(v, state.sName), parsed.name);
@ -2154,14 +2156,14 @@ static void prim_parseDrvName(EvalState& state, const Pos& pos, Value** args,
static void prim_compareVersions(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string version1 = state.forceStringNoCtx(*args[0], pos);
string version2 = state.forceStringNoCtx(*args[1], pos);
std::string version1 = state.forceStringNoCtx(*args[0], pos);
std::string version2 = state.forceStringNoCtx(*args[1], pos);
mkInt(v, compareVersions(version1, version2));
}
static void prim_splitVersion(EvalState& state, const Pos& pos, Value** args,
Value& v) {
string version = state.forceStringNoCtx(*args[0], pos);
std::string version = state.forceStringNoCtx(*args[0], pos);
auto iter = version.cbegin();
Strings components;
while (iter != version.cend()) {
@ -2184,7 +2186,8 @@ static void prim_splitVersion(EvalState& state, const Pos& pos, Value** args,
*************************************************************/
void fetch(EvalState& state, const Pos& pos, Value** args, Value& v,
const string& who, bool unpack, const std::string& defaultName) {
const std::string& who, bool unpack,
const std::string& defaultName) {
CachedDownloadRequest request("");
request.unpack = unpack;
request.name = defaultName;
@ -2195,7 +2198,7 @@ void fetch(EvalState& state, const Pos& pos, Value** args, Value& v,
state.forceAttrs(*args[0], pos);
for (auto& attr : *args[0]->attrs) {
string n(attr.name);
std::string n(attr.name);
if (n == "url") {
request.uri = state.forceStringNoCtx(*attr.value, *attr.pos);
} else if (n == "sha256") {
@ -2431,7 +2434,7 @@ void EvalState::createBaseEnv() {
/* Add a wrapper around the derivation primop that computes the
`drvPath' and `outPath' attributes lazily. */
string path =
std::string path =
canonPath(settings.nixDataDir + "/nix/corepkgs/derivation.nix", true);
sDerivationNix = symbols.Create(path);
evalFile(path, v);