Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
d18b0195
Commit
d18b0195
authored
Jun 03, 2009
by
Roberto Raggi
Browse files
Introduced CPlusPlus::FastPreprocessor.
parent
5134206e
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/libs/cplusplus/FastPreprocessor.cpp
0 → 100644
View file @
d18b0195
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Qt Software Information (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** 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.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
**
**************************************************************************/
#include "FastPreprocessor.h"
using
namespace
CPlusPlus
;
FastPreprocessor
::
FastPreprocessor
(
const
Snapshot
&
snapshot
)
:
_snapshot
(
snapshot
),
_preproc
(
this
,
&
_env
)
{
}
QByteArray
FastPreprocessor
::
run
(
QString
fileName
,
const
QByteArray
&
source
)
{
const
QByteArray
preprocessed
=
_preproc
(
fileName
,
source
);
return
preprocessed
;
}
void
FastPreprocessor
::
mergeEnvironment
(
const
QString
&
fileName
)
{
if
(
!
_merged
.
contains
(
fileName
))
{
_merged
.
insert
(
fileName
);
if
(
Document
::
Ptr
doc
=
_snapshot
.
value
(
fileName
))
{
foreach
(
const
Document
::
Include
&
i
,
doc
->
includes
())
mergeEnvironment
(
i
.
fileName
());
_env
.
addMacros
(
doc
->
definedMacros
());
}
}
}
src/libs/cplusplus/FastPreprocessor.h
0 → 100644
View file @
d18b0195
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Qt Software Information (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** 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.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
**
**************************************************************************/
#ifndef FASTPREPROCESSOR_H
#define FASTPREPROCESSOR_H
#include "PreprocessorClient.h"
#include "CppDocument.h"
#include "pp.h"
#include <QtCore/QSet>
#include <QtCore/QString>
namespace
CPlusPlus
{
class
CPLUSPLUS_EXPORT
FastPreprocessor
:
public
Client
{
Environment
_env
;
Snapshot
_snapshot
;
Preprocessor
_preproc
;
QSet
<
QString
>
_merged
;
void
mergeEnvironment
(
const
QString
&
fileName
);
public:
FastPreprocessor
(
const
Snapshot
&
snapshot
);
QByteArray
run
(
QString
fileName
,
const
QByteArray
&
source
);
// CPlusPlus::Client
virtual
void
sourceNeeded
(
QString
&
fileName
,
IncludeType
,
unsigned
)
{
mergeEnvironment
(
fileName
);
}
virtual
void
macroAdded
(
const
Macro
&
)
{}
virtual
void
startExpandingMacro
(
unsigned
,
const
Macro
&
,
const
QByteArray
&
,
const
QVector
<
MacroArgumentReference
>
&
)
{}
virtual
void
stopExpandingMacro
(
unsigned
,
const
Macro
&
)
{}
virtual
void
startSkippingBlocks
(
unsigned
)
{}
virtual
void
stopSkippingBlocks
(
unsigned
)
{}
};
}
// end of namespace CPlusPlus
#endif // FASTPREPROCESSOR_H
src/libs/cplusplus/cplusplus-lib.pri
View file @
d18b0195
...
...
@@ -30,6 +30,7 @@ HEADERS += \
$$PWD/PreprocessorClient.h \
$$PWD/PreprocessorEnvironment.h \
$$PWD/Macro.h \
$$PWD/FastPreprocessor.h \
$$PWD/pp.h \
$$PWD/pp-cctype.h \
$$PWD/pp-engine.h \
...
...
@@ -48,6 +49,7 @@ SOURCES += \
$$PWD/CppBindings.cpp \
$$PWD/PreprocessorClient.cpp \
$$PWD/PreprocessorEnvironment.cpp \
$$PWD/FastPreprocessor.cpp \
$$PWD/Macro.cpp \
$$PWD/pp-engine.cpp \
$$PWD/pp-macro-expander.cpp \
...
...
src/plugins/cpptools/cppsemanticsearch.cpp
View file @
d18b0195
...
...
@@ -33,8 +33,7 @@
#include <AST.h>
#include <TranslationUnit.h>
#include <cplusplus/PreprocessorClient.h>
#include <cplusplus/pp.h>
#include <cplusplus/FastPreprocessor.h>
#include <QtCore/QDir>
#include <QtCore/QPointer>
...
...
@@ -47,57 +46,6 @@ using namespace CPlusPlus;
namespace
{
class
SimpleClient
:
public
Client
{
Environment
_env
;
QPointer
<
CppModelManager
>
_modelManager
;
Snapshot
_snapshot
;
Preprocessor
_preproc
;
QSet
<
QString
>
_merged
;
public:
SimpleClient
(
QPointer
<
CppModelManager
>
modelManager
)
:
_modelManager
(
modelManager
),
_snapshot
(
_modelManager
->
snapshot
()),
_preproc
(
this
,
&
_env
)
{
}
QByteArray
run
(
QString
fileName
,
const
QByteArray
&
source
)
{
const
QByteArray
preprocessed
=
_preproc
(
fileName
,
source
);
return
preprocessed
;
}
virtual
void
sourceNeeded
(
QString
&
fileName
,
IncludeType
,
unsigned
)
{
mergeEnvironment
(
fileName
);
}
virtual
void
macroAdded
(
const
Macro
&
)
{}
virtual
void
startExpandingMacro
(
unsigned
,
const
Macro
&
,
const
QByteArray
&
,
const
QVector
<
MacroArgumentReference
>
&
)
{}
virtual
void
stopExpandingMacro
(
unsigned
,
const
Macro
&
)
{}
virtual
void
startSkippingBlocks
(
unsigned
)
{}
virtual
void
stopSkippingBlocks
(
unsigned
)
{}
void
mergeEnvironment
(
const
QString
&
fileName
)
{
if
(
!
_merged
.
contains
(
fileName
))
{
_merged
.
insert
(
fileName
);
if
(
Document
::
Ptr
doc
=
_snapshot
.
value
(
fileName
))
{
foreach
(
const
Document
::
Include
&
i
,
doc
->
includes
())
mergeEnvironment
(
i
.
fileName
());
_env
.
addMacros
(
doc
->
definedMacros
());
}
}
}
};
class
FindClass
:
public
SemanticSearch
{
QString
_text
;
...
...
@@ -228,7 +176,7 @@ static void semanticSearch_helper(QFutureInterface<Core::Utils::FileSearchResult
const
QString
contents
=
QTextStream
(
&
file
).
readAll
();
// ### FIXME
SimpleClient
r
(
modelManager
);
FastPreprocessor
r
(
snapshot
);
const
QByteArray
source
=
r
.
run
(
fileName
,
contents
.
toUtf8
());
Document
::
Ptr
newDoc
=
Document
::
create
(
fileName
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment