summaryrefslogtreecommitdiffstats
path: root/languages/cpp/includepathresolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'languages/cpp/includepathresolver.cpp')
-rw-r--r--languages/cpp/includepathresolver.cpp120
1 files changed, 60 insertions, 60 deletions
diff --git a/languages/cpp/includepathresolver.cpp b/languages/cpp/includepathresolver.cpp
index 117c7732..ebd536ec 100644
--- a/languages/cpp/includepathresolver.cpp
+++ b/languages/cpp/includepathresolver.cpp
@@ -28,8 +28,8 @@
#include <unistd.h>
#include <memory>
#include "kurl.h" /* defines KURL */
-#include "qdir.h" /* defines QDir */
-#include "qregexp.h" /* defines QRegExp */
+#include "tqdir.h" /* defines TQDir */
+#include "tqregexp.h" /* defines TQRegExp */
#include "klocale.h" /* defines [function] i18n */
#include "blockingkprocess.h" /* defines BlockingKProcess */
#include "includepathresolver.h"
@@ -62,8 +62,8 @@ namespace CppTools {
class FileModificationTimeWrapper {
public:
///@param files list of files that should be fake-modified(modtime will be set to current time)
- FileModificationTimeWrapper( const QStringList& files = QStringList() ) : m_newTime( time(0) ) {
- for( QStringList::const_iterator it = files.begin(); it != files.end(); ++it ) {
+ FileModificationTimeWrapper( const TQStringList& files = TQStringList() ) : m_newTime( time(0) ) {
+ for( TQStringList::const_iterator it = files.begin(); it != files.end(); ++it ) {
ifTest( cout << "touching " << (*it).ascii() << endl );
struct stat s;
if( stat( (*it).local8Bit().data(), &s ) == 0 ) {
@@ -85,8 +85,8 @@ namespace CppTools {
}
//Not used yet, might be used to return LD_PRELOAD=.. FAKE_MODIFIED=.. etc. later
- QString commandPrefix() const {
- return QString();
+ TQString commandPrefix() const {
+ return TQString();
}
///Undo changed modification-times
@@ -120,14 +120,14 @@ namespace CppTools {
}
private:
- typedef QMap<QString, struct stat> StatMap;
+ typedef TQMap<TQString, struct stat> StatMap;
StatMap m_stat;
time_t m_newTime;
};
class SourcePathInformation {
public:
- SourcePathInformation( const QString& path ) : m_path( path ), m_isUnsermake(false), m_shouldTouchFiles(false) {
+ SourcePathInformation( const TQString& path ) : m_path( path ), m_isUnsermake(false), m_shouldTouchFiles(false) {
m_isUnsermake = isUnsermakePrivate( path );
ifTest( if( m_isUnsermake ) cout << "unsermake detected" << endl );
@@ -142,7 +142,7 @@ namespace CppTools {
m_shouldTouchFiles = b;
}
- QString getCommand( const QString& sourceFile, const QString& makeParameters ) const {
+ TQString getCommand( const TQString& sourceFile, const TQString& makeParameters ) const {
if( isUnsermake() )
return "unsermake -k --no-real-compare -n " + makeParameters;
else
@@ -150,7 +150,7 @@ namespace CppTools {
}
bool hasMakefile() const {
- QFileInfo makeFile( m_path, "Makefile" );
+ TQFileInfo makeFile( m_path, "Makefile" );
return makeFile.exists();
}
@@ -158,8 +158,8 @@ namespace CppTools {
return isUnsermake() || m_shouldTouchFiles;
}
- QStringList possibleTargets( const QString& targetBaseName ) const {
- QStringList ret;
+ TQStringList possibleTargets( const TQString& targetBaseName ) const {
+ TQStringList ret;
if( isUnsermake() ) {
//unsermake breaks if the first given target does not exist, so in worst-case 2 calls are necessary
ret << targetBaseName + ".lo";
@@ -174,12 +174,12 @@ namespace CppTools {
}
private:
- bool isUnsermakePrivate( const QString& path ) {
+ bool isUnsermakePrivate( const TQString& path ) {
bool ret = false;
- QFileInfo makeFile( path, "Makefile" );
- QFile f( makeFile.absFilePath() );
+ TQFileInfo makeFile( path, "Makefile" );
+ TQFile f( makeFile.absFilePath() );
if( f.open( IO_ReadOnly ) ) {
- QString firstLine;
+ TQString firstLine;
f.readLine( firstLine, 1000 );
if( firstLine.find( "generated by unsermake" ) != -1 ) {
ret = true;
@@ -189,14 +189,14 @@ namespace CppTools {
return ret;
}
- QString m_path;
+ TQString m_path;
bool m_isUnsermake;
bool m_shouldTouchFiles;
};
};
-bool IncludePathResolver::executeCommandPopen ( const QString& command, const QString& workingDirectory, QString& result ) const
+bool IncludePathResolver::executeCommandPopen ( const TQString& command, const TQString& workingDirectory, TQString& result ) const
{
ifTest( cout << "executing " << command.ascii() << endl );
@@ -207,12 +207,12 @@ bool IncludePathResolver::executeCommandPopen ( const QString& command, const QS
const int BUFSIZE = 2048;
char buf [BUFSIZE];
- result = QString();
+ result = TQString();
int status = 1;
if ((fp = popen(command.local8Bit(), "r")) != NULL) {
while (fgets(buf, sizeof (buf), fp))
- result += QString(buf);
+ result += TQString(buf);
status = pclose(fp);
}
@@ -230,12 +230,12 @@ IncludePathResolver::IncludePathResolver( bool continueEventLoop ) : m_isResolvi
}
///More efficient solution: Only do exactly one call for each directory. During that call, mark all source-files as changed, and make all targets for those files.
-PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& file ) {
- QFileInfo fi( file );
+PathResolutionResult IncludePathResolver::resolveIncludePath( const TQString& file ) {
+ TQFileInfo fi( file );
return resolveIncludePath( fi.fileName(), fi.dirPath(true) );
}
-PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& file, const QString& workingDirectory ) {
+PathResolutionResult IncludePathResolver::resolveIncludePath( const TQString& file, const TQString& workingDirectory ) {
struct Enabler {
bool& b;
@@ -253,14 +253,14 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
Enabler e( m_isResolving );
///STEP 1: CACHING
- QDir dir( workingDirectory );
- dir = QDir( dir.absPath() );
- QFileInfo makeFile( dir, "Makefile" );
+ TQDir dir( workingDirectory );
+ dir = TQDir( dir.absPath() );
+ TQFileInfo makeFile( dir, "Makefile" );
if( !makeFile.exists() )
return PathResolutionResult(false, i18n("Makefile is missing in folder \"%1\"").arg(dir.absPath()), i18n("problem while trying to resolve include-paths for %1").arg(file) );
- QStringList cachedPath; //If the call doesn't succeed, use the cached not up-to-date version
- QDateTime makeFileModification = makeFile.lastModified();
+ TQStringList cachedPath; //If the call doesn't succeed, use the cached not up-to-date version
+ TQDateTime makeFileModification = makeFile.lastModified();
Cache::iterator it = m_cache.find( dir.path() );
if( it != m_cache.end() ) {
cachedPath = (*it).path;
@@ -272,7 +272,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
return ret;
} else {
//We have a cached failed result. We should use that for some time but then try again. Return the failed result if: ( there were too many tries within this folder OR this file was already tried ) AND The last tries have not expired yet
- if( /*((*it).failedFiles.size() > 3 || (*it).failedFiles.find( file ) != (*it).failedFiles.end()) &&*/ (*it).failTime.secsTo( QDateTime::currentDateTime() ) < CACHE_FAIL_FOR_SECONDS ) {
+ if( /*((*it).failedFiles.size() > 3 || (*it).failedFiles.find( file ) != (*it).failedFiles.end()) &&*/ (*it).failTime.secsTo( TQDateTime::currentDateTime() ) < CACHE_FAIL_FOR_SECONDS ) {
PathResolutionResult ret(false); //Fake that the result is ok
ret.errorMessage = i18n("Cached: ") + (*it).errorMessage;
ret.longErrorMessage = (*it).longErrorMessage;
@@ -286,10 +286,10 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
}
///STEP 1: Prepare paths
- QString targetName;
- QFileInfo fi( file );
+ TQString targetName;
+ TQFileInfo fi( file );
- QString absoluteFile = file;
+ TQString absoluteFile = file;
if( !file.startsWith("/") )
absoluteFile = dir.path() + "/" + file;
KURL u( absoluteFile );
@@ -302,9 +302,9 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
targetName = file.left( dot );
- QString wd = dir.path();
+ TQString wd = dir.path();
if( !wd.startsWith("/") ) {
- wd = QDir::currentDirPath() + "/" + wd;
+ wd = TQDir::currentDirPath() + "/" + wd;
KURL u( wd );
u.cleanPath();
wd = u.path();
@@ -320,7 +320,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
}
SourcePathInformation source( wd );
- QStringList possibleTargets = source.possibleTargets( targetName );
+ TQStringList possibleTargets = source.possibleTargets( targetName );
source.setShouldTouchFiles(true); //Think about whether this should be always enabled. I've enabled it for now so there's an even bigger chance that everything works.
@@ -329,7 +329,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
///STEP 3.1: Try resolution using the absolute path
PathResolutionResult res;
//Try for each possible target
- for( QStringList::const_iterator it = possibleTargets.begin(); it != possibleTargets.end(); ++it ) {
+ for( TQStringList::const_iterator it = possibleTargets.begin(); it != possibleTargets.end(); ++it ) {
res = resolveIncludePathInternal( absoluteFile, wd, *it, source );
if( res ) break;
}
@@ -346,8 +346,8 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
///STEP 3.2: Try resolution using the relative path
- QString relativeFile = KURL::relativePath(wd, absoluteFile);
- for( QStringList::const_iterator it = possibleTargets.begin(); it != possibleTargets.end(); ++it ) {
+ TQString relativeFile = KURL::relativePath(wd, absoluteFile);
+ for( TQStringList::const_iterator it = possibleTargets.begin(); it != possibleTargets.end(); ++it ) {
res = resolveIncludePathInternal( relativeFile, wd, *it, source );
if( res ) break;
}
@@ -365,7 +365,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
ce.failed = true;
ce.errorMessage = res.errorMessage;
ce.longErrorMessage = res.longErrorMessage;
- ce.failTime = QDateTime::currentDateTime();
+ ce.failTime = TQDateTime::currentDateTime();
ce.failedFiles[file] = true;
} else {
ce.failed = false;
@@ -375,7 +375,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePath( const QString& fil
return res;
}
-PathResolutionResult IncludePathResolver::getFullOutput( const QString& command, const QString& workingDirectory, QString& output ) const{
+PathResolutionResult IncludePathResolver::getFullOutput( const TQString& command, const TQString& workingDirectory, TQString& output ) const{
if( m_continueEventLoop ) {
BlockingKProcess proc;
proc.setWorkingDirectory( workingDirectory );
@@ -397,25 +397,25 @@ PathResolutionResult IncludePathResolver::getFullOutput( const QString& command,
return PathResolutionResult(true);
}
-PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QString& file, const QString& workingDirectory, const QString& makeParameters, const SourcePathInformation& source ) {
+PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const TQString& file, const TQString& workingDirectory, const TQString& makeParameters, const SourcePathInformation& source ) {
- QString processStdout;
+ TQString processStdout;
- QStringList touchFiles;
+ TQStringList touchFiles;
if( source.shouldTouchFiles() )
touchFiles << file;
FileModificationTimeWrapper touch( touchFiles );
- QString fullOutput;
+ TQString fullOutput;
PathResolutionResult res = getFullOutput( source.getCommand( file, makeParameters ), workingDirectory, fullOutput );
if( !res )
return res;
- QRegExp newLineRx("\\\\\\n");
+ TQRegExp newLineRx("\\\\\\n");
fullOutput.replace( newLineRx, "" );
///@todo collect multiple outputs at the same time for performance-reasons
- QString firstLine = fullOutput;
+ TQString firstLine = fullOutput;
int lineEnd;
if( (lineEnd = fullOutput.find('\n')) != -1 )
firstLine.truncate( lineEnd ); //Only look at the first line of output
@@ -428,14 +428,14 @@ PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QStr
///STEP 1: Test if it is a recursive make-call
- QRegExp makeRx( "\\bmake\\s" );
+ TQRegExp makeRx( "\\bmake\\s" );
int offset = 0;
while( (offset = makeRx.search( firstLine, offset )) != -1 )
{
- QString prefix = firstLine.left( offset ).stripWhiteSpace();
+ TQString prefix = firstLine.left( offset ).stripWhiteSpace();
if( prefix.endsWith( "&&") || prefix.endsWith( ";" ) || prefix.isEmpty() )
{
- QString newWorkingDirectory = workingDirectory;
+ TQString newWorkingDirectory = workingDirectory;
///Extract the new working-directory
if( !prefix.isEmpty() ) {
if( prefix.endsWith( "&&" ) )
@@ -452,14 +452,14 @@ PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QStr
newWorkingDirectory = u.path();
}
}
- QFileInfo d( newWorkingDirectory );
+ TQFileInfo d( newWorkingDirectory );
if( d.exists() ) {
///The recursive working-directory exists.
- QString makeParams = firstLine.mid( offset+5 );
+ TQString makeParams = firstLine.mid( offset+5 );
if( !makeParams.contains( ";" ) && !makeParams.contains( "&&" ) ) {
///Looks like valid parameters
///Make the file-name absolute, so it can be referenced from any directory
- QString absoluteFile = file;
+ TQString absoluteFile = file;
if( !absoluteFile.startsWith("/") )
absoluteFile = workingDirectory + "/" + file;
KURL u( absoluteFile );
@@ -486,18 +486,18 @@ PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QStr
}
///STEP 2: Search the output for include-paths
- QRegExp validRx( "\\b([cg]\\+\\+|gcc)" );
+ TQRegExp validRx( "\\b([cg]\\+\\+|gcc)" );
if( validRx.search( fullOutput ) == -1 )
return PathResolutionResult( false, i18n("Output seems not to be a valid gcc or g++ call"), i18n("Folder: \"%1\" Command: \"%2\" Output: \"%3\"").arg(workingDirectory).arg( source.getCommand(file, makeParameters) ).arg(fullOutput) );
PathResolutionResult ret( true );
ret.longErrorMessage = fullOutput;
- QString includeParameterRx( "\\s(-I|--include-dir=|-I\\s)" );
- QString quotedRx( "(\\').*(\\')|(\\\").*(\\\")" ); //Matches "hello", 'hello', 'hello"hallo"', etc.
- QString escapedPathRx( "(([^)(\"'\\s]*)(\\\\\\s)?)*" ); //Matches /usr/I\ am \ a\ strange\ path/include
+ TQString includeParameterRx( "\\s(-I|--include-dir=|-I\\s)" );
+ TQString quotedRx( "(\\').*(\\')|(\\\").*(\\\")" ); //Matches "hello", 'hello', 'hello"hallo"', etc.
+ TQString escapedPathRx( "(([^)(\"'\\s]*)(\\\\\\s)?)*" ); //Matches /usr/I\ am \ a\ strange\ path/include
- QRegExp includeRx( QString( "%1(%2|%3)(?=\\s)" ).arg( includeParameterRx ).arg( quotedRx ).arg( escapedPathRx ) );
+ TQRegExp includeRx( TQString( "%1(%2|%3)(?=\\s)" ).arg( includeParameterRx ).arg( quotedRx ).arg( escapedPathRx ) );
includeRx.setMinimal( true );
includeRx.setCaseSensitive( true );
offset = 0;
@@ -519,7 +519,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QStr
int start = offset + pathOffset;
int end = offset + includeRx.matchedLength();
- QString path = fullOutput.mid( start, end-start ).stripWhiteSpace();
+ TQString path = fullOutput.mid( start, end-start ).stripWhiteSpace();
if( path.startsWith( "\"") || path.startsWith( "\'") && path.length() > 2 ) {
//probable a quoted path
if( path.endsWith(path.left(1)) ) {
@@ -542,7 +542,7 @@ PathResolutionResult IncludePathResolver::resolveIncludePathInternal( const QStr
return ret;
}
-void IncludePathResolver::setOutOfSourceBuildSystem( const QString& source, const QString& build ) {
+void IncludePathResolver::setOutOfSourceBuildSystem( const TQString& source, const TQString& build ) {
m_outOfSource = true;
m_source = source;
m_build = build;
@@ -554,7 +554,7 @@ void IncludePathResolver::setOutOfSourceBuildSystem( const QString& source, cons
* */
int main(int argc, char **argv) {
- QApplication app(argc,argv);
+ TQApplication app(argc,argv);
IncludePathResolver resolver;
if( argc < 3 ) {
cout << "params: 1. file-name, 2. working-directory [3. source-directory 4. build-directory]" << endl;