/****************************************************************************+ −
**+ −
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).+ −
** All rights reserved.+ −
** Contact: Nokia Corporation (qt-info@nokia.com)+ −
**+ −
** This file is part of the qmake application of the Qt Toolkit.+ −
**+ −
** $QT_BEGIN_LICENSE:LGPL$+ −
** No Commercial Usage+ −
** This file contains pre-release code and may not be distributed.+ −
** You may use this file in accordance with the terms and conditions+ −
** contained in the Technology Preview License Agreement accompanying+ −
** this package.+ −
**+ −
** GNU Lesser General Public License Usage+ −
** Alternatively, this file may be used under the terms of the GNU Lesser+ −
** General Public License version 2.1 as published by the Free Software+ −
** Foundation and appearing in the file LICENSE.LGPL included in the+ −
** packaging of this file. Please review the following information to+ −
** ensure the GNU Lesser General Public License version 2.1 requirements+ −
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.+ −
**+ −
** In addition, as a special exception, Nokia gives you certain additional+ −
** rights. These rights are described in the Nokia Qt LGPL Exception+ −
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.+ −
**+ −
** If you have questions regarding the use of this file, please contact+ −
** Nokia at qt-info@nokia.com.+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
** $QT_END_LICENSE$+ −
**+ −
****************************************************************************/+ −
+ −
#ifndef MAKEFILEDEPS_H+ −
#define MAKEFILEDEPS_H+ −
+ −
#include <qstringlist.h>+ −
#include <qfileinfo.h>+ −
+ −
QT_BEGIN_NAMESPACE+ −
+ −
struct SourceFile;+ −
struct SourceDependChildren;+ −
class SourceFiles;+ −
+ −
class QMakeLocalFileName {+ −
uint is_null : 1;+ −
mutable QString real_name, local_name;+ −
public:+ −
QMakeLocalFileName() : is_null(1) { }+ −
QMakeLocalFileName(const QString &);+ −
bool isNull() const { return is_null; }+ −
inline const QString &real() const { return real_name; }+ −
const QString &local() const;+ −
+ −
bool operator==(const QMakeLocalFileName &other) {+ −
return (this->real_name == other.real_name);+ −
}+ −
bool operator!=(const QMakeLocalFileName &other) {+ −
return !(*this == other);+ −
}+ −
};+ −
+ −
class QMakeSourceFileInfo+ −
{+ −
private:+ −
//quick project lookups+ −
SourceFiles *files, *includes;+ −
bool files_changed;+ −
QList<QMakeLocalFileName> depdirs;+ −
+ −
//sleezy buffer code+ −
char *spare_buffer;+ −
int spare_buffer_size;+ −
char *getBuffer(int s);+ −
+ −
//actual guts+ −
bool findMocs(SourceFile *);+ −
bool findDeps(SourceFile *);+ −
void dependTreeWalker(SourceFile *, SourceDependChildren *);+ −
+ −
//cache+ −
QString cachefile;+ −
+ −
protected:+ −
virtual QMakeLocalFileName fixPathForFile(const QMakeLocalFileName &, bool forOpen=false);+ −
virtual QMakeLocalFileName findFileForDep(const QMakeLocalFileName &, const QMakeLocalFileName &);+ −
virtual QFileInfo findFileInfo(const QMakeLocalFileName &);+ −
+ −
public:+ −
QMakeSourceFileInfo(const QString &cachefile="");+ −
virtual ~QMakeSourceFileInfo();+ −
+ −
QList<QMakeLocalFileName> dependencyPaths() const { return depdirs; }+ −
void setDependencyPaths(const QList<QMakeLocalFileName> &);+ −
+ −
enum DependencyMode { Recursive, NonRecursive };+ −
inline void setDependencyMode(DependencyMode mode) { dep_mode = mode; }+ −
inline DependencyMode dependencyMode() const { return dep_mode; }+ −
+ −
enum SourceFileType { TYPE_UNKNOWN, TYPE_C, TYPE_UI, TYPE_QRC };+ −
enum SourceFileSeek { SEEK_DEPS=0x01, SEEK_MOCS=0x02 };+ −
void addSourceFiles(const QStringList &, uchar seek, SourceFileType type=TYPE_C);+ −
void addSourceFile(const QString &, uchar seek, SourceFileType type=TYPE_C);+ −
bool containsSourceFile(const QString &, SourceFileType type=TYPE_C);+ −
+ −
int included(const QString &file);+ −
QStringList dependencies(const QString &file);+ −
+ −
bool mocable(const QString &file);+ −
+ −
virtual QMap<QString, QStringList> getCacheVerification();+ −
virtual bool verifyCache(const QMap<QString, QStringList> &);+ −
void setCacheFile(const QString &cachefile); //auto caching+ −
void loadCache(const QString &cf);+ −
void saveCache(const QString &cf);+ −
+ −
private:+ −
DependencyMode dep_mode;+ −
};+ −
+ −
QT_END_NAMESPACE+ −
+ −
#endif // MAKEFILEDEPS_H+ −