-rw-r--r-- | qmake/project.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/qmake/project.h b/qmake/project.h new file mode 100644 index 0000000..201e63c --- a/dev/null +++ b/qmake/project.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** $Id$ +** +** Definition of ________ class. +** +** Created : 970521 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the network module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef __QMAKE_H__ +#define __QMAKE_H__ + +#include <qstringlist.h> +#include <qstring.h> +#include <qmap.h> + +class QMakeProject +{ + enum TestStatus { TestNone, TestFound, TestSeek } test_status; + int scope_block, scope_flag; + + QString pfile, cfile; + QMap<QString, QStringList> vars, base_vars, cache; + bool parse(QString text, QMap<QString, QStringList> &place); + bool doProjectTest(QString func, const QString ¶ms, QMap<QString, QStringList> &place); + bool doProjectTest(QString func, QStringList args, QMap<QString, QStringList> &place); + bool doProjectCheckReqs(const QStringList &deps, QMap<QString, QStringList> &place); + QString doVariableReplace(QString &str, const QMap<QString, QStringList> &place); + +public: + QMakeProject(); + + bool read(QString project, QString pwd); + QString projectFile(); + QString configFile(); + + bool isEmpty(const QString &v); + QStringList &values(const QString &v); + QString first(const QString &v); + QMap<QString, QStringList> &variables(); + bool isActiveConfig(const QString &x); + +protected: + friend class MakefileGenerator; + bool read(QString file, QMap<QString, QStringList> &place); + +}; + +inline QString QMakeProject::projectFile() +{ +#if defined(Q_CC_SUN) && (__SUNPRO_CC == 0x500) || defined(Q_CC_HP) + // workaround for Sun WorkShop 5.0 bug fixed in Forte 6 + if (pfile == "-") + return QString("(stdin)"); + else + return pfile; +#else + return pfile == "-" ? QString("(stdin)") : pfile; +#endif +} + +inline QString QMakeProject::configFile() +{ return cfile; } + +inline bool QMakeProject::isEmpty(const QString &v) +{ return !vars.contains(v) || vars[v].isEmpty(); } + +inline QStringList &QMakeProject::values(const QString &v) +{ return vars[v]; } + +inline QString QMakeProject::first(const QString &v) +{ +#if defined(Q_CC_SUN) && (__SUNPRO_CC == 0x500) || defined(Q_CC_HP) + // workaround for Sun WorkShop 5.0 bug fixed in Forte 6 + if (isEmpty(v)) + return QString(""); + else + return vars[v].first(); +#else + return isEmpty(v) ? QString("") : vars[v].first(); +#endif +} + +inline QMap<QString, QStringList> &QMakeProject::variables() +{ return vars; } + +#endif /* __QMAKE_H__ */ |