introduce ProValueMap typedef for brevity's sake

Change-Id: I41b7202acb2889d217d1f437050443bea853ee87
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Oswald Buddenhagen
2012-05-04 21:16:56 +02:00
parent 55cad4a424
commit 5a6625245b
5 changed files with 30 additions and 31 deletions

View File

@@ -127,6 +127,8 @@ public:
void removeDuplicates();
};
typedef QHash<ProString, ProStringList> ProValueMap;
// These token definitions affect both ProFileEvaluator and ProWriter
enum ProToken {
TokTerminator = 0, // end of stream (possibly not included in length; must be zero)

View File

@@ -192,7 +192,7 @@ void QMakeEvaluator::runProcess(QProcess *proc, const QString &command,
void QMakeEvaluator::populateDeps(
const ProStringList &deps, const ProString &prefix,
QHash<ProString, QSet<ProString> > &dependencies, QHash<ProString, ProStringList> &dependees,
QHash<ProString, QSet<ProString> > &dependencies, ProValueMap &dependees,
ProStringList &rootSet) const
{
foreach (const ProString &item, deps)
@@ -413,7 +413,7 @@ ProStringList QMakeEvaluator::evaluateExpandFunction(
if (args.count() != 2) {
evalError(fL1S("fromfile(file, variable) requires two arguments."));
} else {
QHash<ProString, ProStringList> vars;
ProValueMap vars;
QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1)));
fn.detach();
if (evaluateFileInto(fn, QMakeHandler::EvalAuxFile, &vars, EvalProOnly))
@@ -607,7 +607,7 @@ ProStringList QMakeEvaluator::evaluateExpandFunction(
evalError(fL1S("%1(var, prefix) requires one or two arguments").arg(func.toQString(m_tmp1)));
} else {
QHash<ProString, QSet<ProString> > dependencies;
QHash<ProString, ProStringList> dependees;
ProValueMap dependees;
ProStringList rootSet;
ProStringList orgList = valuesDirect(args.at(0));
populateDeps(orgList, (args.count() < 2 ? ProString() : args.at(1)),
@@ -680,7 +680,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
}
const ProString &var = map(args.at(0));
for (int i = m_valuemapStack.size(); --i > 0; ) {
QHash<ProString, ProStringList>::Iterator it = m_valuemapStack[i].find(var);
ProValueMap::Iterator it = m_valuemapStack[i].find(var);
if (it != m_valuemapStack.at(i).end()) {
if (it->constBegin() == statics.fakeValue.constBegin()) {
// This is stupid, but qmake doesn't propagate deletions
@@ -700,7 +700,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
if (args.count() < 2 || args.count() > 3) {
evalError(fL1S("infile(file, var, [values]) requires two or three arguments."));
} else {
QHash<ProString, ProStringList> vars;
ProValueMap vars;
QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1)));
fn.detach();
if (!evaluateFileInto(fn, QMakeHandler::EvalAuxFile, &vars, EvalProOnly))
@@ -941,8 +941,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
.arg(function.toQString(m_tmp1)));
return ReturnFalse;
}
QHash<ProString, ProStringList> *hsh;
QHash<ProString, ProStringList>::Iterator it;
ProValueMap *hsh;
ProValueMap::Iterator it;
const ProString &var = map(args.at(0));
if (!(hsh = findValues(var, &it)))
return ReturnFalse;
@@ -960,8 +960,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
.arg(function.toQString(m_tmp1)));
return ReturnFalse;
}
QHash<ProString, ProStringList> *hsh;
QHash<ProString, ProStringList>::Iterator it;
ProValueMap *hsh;
ProValueMap::Iterator it;
const ProString &var = map(args.at(0));
if (!(hsh = findValues(var, &it)))
return ReturnFalse;
@@ -991,11 +991,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
if (parseInto.isEmpty()) {
ok = evaluateFile(fn, QMakeHandler::EvalIncludeFile, LoadProOnly);
} else {
QHash<ProString, ProStringList> symbols;
ProValueMap symbols;
if ((ok = evaluateFileInto(fn, QMakeHandler::EvalAuxFile,
&symbols, EvalWithSetup))) {
QHash<ProString, ProStringList> newMap;
for (QHash<ProString, ProStringList>::ConstIterator
ProValueMap newMap;
for (ProValueMap::ConstIterator
it = m_valuemapStack.top().constBegin(),
end = m_valuemapStack.top().constEnd();
it != end; ++it) {
@@ -1005,7 +1005,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
|| ky.at(parseInto.length()) == QLatin1Char('.'))))
newMap[it.key()] = it.value();
}
for (QHash<ProString, ProStringList>::ConstIterator it = symbols.constBegin();
for (ProValueMap::ConstIterator it = symbols.constBegin();
it != symbols.constEnd(); ++it) {
const QString &ky = it.key().toQString(m_tmp1);
if (!ky.startsWith(QLatin1Char('.')))

View File

@@ -164,7 +164,7 @@ QMakeEvaluator::QMakeEvaluator(QMakeGlobals *option,
m_skipLevel = 0;
m_loopLevel = 0;
m_listCount = 0;
m_valuemapStack.push(QHash<ProString, ProStringList>());
m_valuemapStack.push(ProValueMap());
}
QMakeEvaluator::~QMakeEvaluator()
@@ -880,7 +880,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
}
if (!qmake_cache.isEmpty()) {
qmake_cache = resolvePath(qmake_cache);
QHash<ProString, ProStringList> cache_valuemap;
ProValueMap cache_valuemap;
if (evaluateFileInto(qmake_cache, QMakeHandler::EvalConfigFile,
&cache_valuemap, EvalProOnly)) {
if (m_option->qmakespec.isEmpty()) {
@@ -1457,7 +1457,7 @@ bool QMakeEvaluator::modesForGenerator(const QString &gen,
void QMakeEvaluator::validateModes() const
{
if (m_option->target_mode == QMakeGlobals::TARG_UNKNOWN_MODE) {
const QHash<ProString, ProStringList> &vals =
const ProValueMap &vals =
m_option->base_valuemap.isEmpty() ? m_valuemapStack[0] : m_option->base_valuemap;
QMakeGlobals::TARG_MODE target_mode;
const ProStringList &gen = vals.value(ProString("MAKEFILE_GENERATOR"));
@@ -1597,7 +1597,7 @@ ProStringList QMakeEvaluator::evaluateFunction(
evalError(fL1S("ran into infinite recursion (depth > 100)."));
oki = false;
} else {
m_valuemapStack.push(QHash<ProString, ProStringList>());
m_valuemapStack.push(ProValueMap());
m_locationStack.push(m_current);
int loopLevel = m_loopLevel;
m_loopLevel = 0;
@@ -1699,11 +1699,10 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
return evaluateConditionalFunction(function, expandVariableReferences(tokPtr, 5, true));
}
QHash<ProString, ProStringList> *QMakeEvaluator::findValues(
const ProString &variableName, QHash<ProString, ProStringList>::Iterator *rit)
ProValueMap *QMakeEvaluator::findValues(const ProString &variableName, ProValueMap::Iterator *rit)
{
for (int i = m_valuemapStack.size(); --i >= 0; ) {
QHash<ProString, ProStringList>::Iterator it = m_valuemapStack[i].find(variableName);
ProValueMap::Iterator it = m_valuemapStack[i].find(variableName);
if (it != m_valuemapStack[i].end()) {
if (it->constBegin() == statics.fakeValue.constBegin())
return 0;
@@ -1716,14 +1715,14 @@ QHash<ProString, ProStringList> *QMakeEvaluator::findValues(
ProStringList &QMakeEvaluator::valuesRef(const ProString &variableName)
{
QHash<ProString, ProStringList>::Iterator it = m_valuemapStack.top().find(variableName);
ProValueMap::Iterator it = m_valuemapStack.top().find(variableName);
if (it != m_valuemapStack.top().end()) {
if (it->constBegin() == statics.fakeValue.constBegin())
it->clear();
return *it;
}
for (int i = m_valuemapStack.size() - 1; --i >= 0; ) {
QHash<ProString, ProStringList>::ConstIterator it = m_valuemapStack.at(i).constFind(variableName);
ProValueMap::ConstIterator it = m_valuemapStack.at(i).constFind(variableName);
if (it != m_valuemapStack.at(i).constEnd()) {
ProStringList &ret = m_valuemapStack.top()[variableName];
if (it->constBegin() != statics.fakeValue.constBegin())
@@ -1737,7 +1736,7 @@ ProStringList &QMakeEvaluator::valuesRef(const ProString &variableName)
ProStringList QMakeEvaluator::valuesDirect(const ProString &variableName) const
{
for (int i = m_valuemapStack.size(); --i >= 0; ) {
QHash<ProString, ProStringList>::ConstIterator it = m_valuemapStack.at(i).constFind(variableName);
ProValueMap::ConstIterator it = m_valuemapStack.at(i).constFind(variableName);
if (it != m_valuemapStack.at(i).constEnd()) {
if (it->constBegin() == statics.fakeValue.constBegin())
break;
@@ -1953,7 +1952,7 @@ bool QMakeEvaluator::evaluateFeatureFile(const QString &fileName)
bool QMakeEvaluator::evaluateFileInto(
const QString &fileName, QMakeHandler::EvalFileType type,
QHash<ProString, ProStringList> *values, EvalIntoMode mode)
ProValueMap *values, EvalIntoMode mode)
{
QMakeEvaluator visitor(m_option, m_parser, m_handler);
#ifdef PROEVALUATOR_CUMULATIVE

View File

@@ -112,8 +112,7 @@ public:
void visitProVariable(ushort tok, const ProStringList &curr, const ushort *&tokPtr);
static const ProString &map(const ProString &var);
QHash<ProString, ProStringList> *findValues(const ProString &variableName,
QHash<ProString, ProStringList>::Iterator *it);
ProValueMap *findValues(const ProString &variableName, ProValueMap::Iterator *it);
ProStringList valuesDirect(const ProString &variableName) const;
ProStringList split_value_list(const QString &vals, const ProFile *source = 0);
@@ -133,7 +132,7 @@ public:
bool evaluateFeatureFile(const QString &fileName);
enum EvalIntoMode { EvalProOnly, EvalWithSetup };
bool evaluateFileInto(const QString &fileName, QMakeHandler::EvalFileType type,
QHash<ProString, ProStringList> *values, // output-only
ProValueMap *values, // output-only
EvalIntoMode mode);
void evalError(const QString &msg) const;
@@ -162,8 +161,7 @@ public:
void populateDeps(
const ProStringList &deps, const ProString &prefix,
QHash<ProString, QSet<ProString> > &dependencies,
QHash<ProString, ProStringList> &dependees,
ProStringList &rootSet) const;
ProValueMap &dependees, ProStringList &rootSet) const;
QString fixPathToLocalOS(const QString &str) const;
@@ -195,7 +193,7 @@ public:
int m_listCount;
ProFunctionDefs m_functionDefs;
ProStringList m_returnValue;
QStack<QHash<ProString, ProStringList> > m_valuemapStack; // VariableName must be us-ascii, the content however can be non-us-ascii.
QStack<ProValueMap> m_valuemapStack; // VariableName must be us-ascii, the content however can be non-us-ascii.
QString m_tmp1, m_tmp2, m_tmp3, m_tmp[2]; // Temporaries for efficient toQString
QMakeGlobals *m_option;

View File

@@ -79,7 +79,7 @@ private:
QString getEnv(const QString &) const;
QStringList getPathListEnv(const QString &var) const;
QHash<ProString, ProStringList> base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf
ProValueMap base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf
ProFunctionDefs base_functions;
QStringList feature_roots;
QString qmakespec_name;