76 QStack<FunctionBlock *> function_blocks; |
76 QStack<FunctionBlock *> function_blocks; |
77 IteratorBlock *iterator; |
77 IteratorBlock *iterator; |
78 FunctionBlock *function; |
78 FunctionBlock *function; |
79 QMap<QString, FunctionBlock*> testFunctions, replaceFunctions; |
79 QMap<QString, FunctionBlock*> testFunctions, replaceFunctions; |
80 |
80 |
|
81 bool recursive; |
81 bool own_prop; |
82 bool own_prop; |
82 QString pfile, cfile; |
83 QString pfile, cfile; |
83 QMakeProperty *prop; |
84 QMakeProperty *prop; |
84 void reset(); |
85 void reset(); |
85 QMap<QString, QStringList> vars, base_vars, cache; |
86 QMap<QString, QStringList> vars, base_vars, cache; |
103 bool doProjectCheckReqs(const QStringList &deps, QMap<QString, QStringList> &place); |
104 bool doProjectCheckReqs(const QStringList &deps, QMap<QString, QStringList> &place); |
104 bool doVariableReplace(QString &str, QMap<QString, QStringList> &place); |
105 bool doVariableReplace(QString &str, QMap<QString, QStringList> &place); |
105 QStringList doVariableReplaceExpand(const QString &str, QMap<QString, QStringList> &place, bool *ok=0); |
106 QStringList doVariableReplaceExpand(const QString &str, QMap<QString, QStringList> &place, bool *ok=0); |
106 void init(QMakeProperty *, const QMap<QString, QStringList> *); |
107 void init(QMakeProperty *, const QMap<QString, QStringList> *); |
107 QStringList &values(const QString &v, QMap<QString, QStringList> &place); |
108 QStringList &values(const QString &v, QMap<QString, QStringList> &place); |
|
109 void validateModes(); |
108 |
110 |
109 public: |
111 public: |
110 QMakeProject() { init(0, 0); } |
112 QMakeProject() { init(0, 0); } |
111 QMakeProject(QMakeProperty *p) { init(p, 0); } |
113 QMakeProject(QMakeProperty *p) { init(p, 0); } |
112 QMakeProject(QMakeProject *p, const QMap<QString, QStringList> *nvars=0); |
114 QMakeProject(QMakeProject *p, const QMap<QString, QStringList> *nvars=0); |
146 bool test(const QString &v); |
148 bool test(const QString &v); |
147 bool test(const QString &func, const QList<QStringList> &args); |
149 bool test(const QString &func, const QList<QStringList> &args); |
148 bool isActiveConfig(const QString &x, bool regex=false, |
150 bool isActiveConfig(const QString &x, bool regex=false, |
149 QMap<QString, QStringList> *place=NULL); |
151 QMap<QString, QStringList> *place=NULL); |
150 |
152 |
151 bool isSet(const QString &v); |
153 bool isSet(const QString &v); // No compat mapping, no magic variables |
152 bool isEmpty(const QString &v); |
154 bool isEmpty(const QString &v); // With compat mapping, but no magic variables |
153 QStringList &values(const QString &v); |
155 QStringList &values(const QString &v); // With compat mapping and magic variables |
154 QString first(const QString &v); |
156 QString first(const QString &v); // ditto |
155 QMap<QString, QStringList> &variables(); |
157 QMap<QString, QStringList> &variables(); // No compat mapping and magic, obviously |
|
158 |
|
159 bool isRecursive() const { return recursive; } |
156 |
160 |
157 protected: |
161 protected: |
158 friend class MakefileGenerator; |
162 friend class MakefileGenerator; |
159 bool read(const QString &file, QMap<QString, QStringList> &place); |
163 bool read(const QString &file, QMap<QString, QStringList> &place); |
160 bool read(QTextStream &file, QMap<QString, QStringList> &place); |
164 bool read(QTextStream &file, QMap<QString, QStringList> &place); |
173 { return cfile; } |
177 { return cfile; } |
174 |
178 |
175 inline QStringList &QMakeProject::values(const QString &v) |
179 inline QStringList &QMakeProject::values(const QString &v) |
176 { return values(v, vars); } |
180 { return values(v, vars); } |
177 |
181 |
178 inline bool QMakeProject::isEmpty(const QString &v) |
|
179 { return !isSet(v) || values(v).isEmpty(); } |
|
180 |
|
181 inline bool QMakeProject::isSet(const QString &v) |
182 inline bool QMakeProject::isSet(const QString &v) |
182 { return vars.contains(v); } |
183 { return vars.contains(v); } |
183 |
184 |
184 inline QString QMakeProject::first(const QString &v) |
185 inline QString QMakeProject::first(const QString &v) |
185 { |
186 { |