forked from qt-creator/qt-creator
introduce ProValueMap typedef for brevity's sake
Change-Id: I41b7202acb2889d217d1f437050443bea853ee87 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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('.')))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user