summaryrefslogtreecommitdiff
path: root/src/plugins/classview/classviewparser.cpp
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2011-07-06 17:40:54 +0200
committerhjk <qthjk@ovi.com>2011-07-14 17:43:03 +0200
commit51d83e4ce64ea9928189415a8a6e062aa5e7a1be (patch)
treeff579b5326db6c12d6e070e2c4f01b1d0afa2484 /src/plugins/classview/classviewparser.cpp
parent2bdc5c79c6b1193b6fb2e70a8ba24b7306c0121f (diff)
downloadqt-creator-51d83e4ce64ea9928189415a8a6e062aa5e7a1be.tar.gz
classview: adjust to d-pointer style rules
Change-Id: Ie413a7336ef4bde5dcf1b43b6832167742608a83 Reviewed-on: http://codereview.qt.nokia.com/1296 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/plugins/classview/classviewparser.cpp')
-rw-r--r--src/plugins/classview/classviewparser.cpp148
1 files changed, 75 insertions, 73 deletions
diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp
index 9ef18f19fd..8aa1978c5f 100644
--- a/src/plugins/classview/classviewparser.cpp
+++ b/src/plugins/classview/classviewparser.cpp
@@ -72,8 +72,9 @@ namespace Internal {
\brief Private class data for \a Parser
\sa Parser
*/
-struct ParserPrivate
+class ParserPrivate
{
+public:
//! Constructor
ParserPrivate() : flatMode(false) {}
@@ -136,21 +137,22 @@ CPlusPlus::Document::Ptr ParserPrivate::document(const QString &fileName) const
Parser::Parser(QObject *parent)
: QObject(parent),
- d_ptr(new ParserPrivate())
+ d(new ParserPrivate())
{
- d_ptr->timer = new QTimer(this);
- d_ptr->timer->setSingleShot(true);
+ d->timer = new QTimer(this);
+ d->timer->setSingleShot(true);
// connect signal/slots
// internal data reset
connect(this, SIGNAL(resetDataDone()), SLOT(onResetDataDone()), Qt::QueuedConnection);
// timer for emitting changes
- connect(d_ptr->timer, SIGNAL(timeout()), SLOT(requestCurrentState()), Qt::QueuedConnection);
+ connect(d->timer, SIGNAL(timeout()), SLOT(requestCurrentState()), Qt::QueuedConnection);
}
Parser::~Parser()
{
+ delete d;
}
bool Parser::canFetchMore(QStandardItem *item) const
@@ -171,11 +173,11 @@ void Parser::fetchMore(QStandardItem *item, bool skipRoot) const
void Parser::setFlatMode(bool flatMode)
{
- if (flatMode == d_ptr->flatMode)
+ if (flatMode == d->flatMode)
return;
// change internal
- d_ptr->flatMode = flatMode;
+ d->flatMode = flatMode;
// regenerate and resend current tree
emitCurrentTree();
@@ -197,10 +199,10 @@ ParserTreeItem::ConstPtr Parser::findItemByRoot(const QStandardItem *item, bool
if (skipRoot && uiList.count() > 0)
uiList.removeLast();
- QReadLocker locker(&d_ptr->rootItemLocker);
+ QReadLocker locker(&d->rootItemLocker);
// using internal root - search correct item
- ParserTreeItem::ConstPtr internal = d_ptr->rootItem;
+ ParserTreeItem::ConstPtr internal = d->rootItem;
while(uiList.count() > 0) {
cur = uiList.last();
@@ -229,7 +231,7 @@ ParserTreeItem::ConstPtr Parser::parse()
continue;
ParserTreeItem::Ptr item;
- if (!d_ptr->flatMode)
+ if (!d->flatMode)
item = ParserTreeItem::Ptr(new ParserTreeItem());
QString prjName(prj->displayName());
@@ -240,7 +242,7 @@ ParserTreeItem::ConstPtr Parser::parse()
QStringList projectList = addProjectNode(item, prj->rootProjectNode());
- if (d_ptr->flatMode) {
+ if (d->flatMode) {
// use prj path (prjType) as a project id
// addProject(item, prj->files(ProjectExplorer::Project::ExcludeGeneratedFiles), prjType);
//! \todo return back, works too long
@@ -301,8 +303,8 @@ void Parser::addSymbol(const ParserTreeItem::Ptr &item, const CPlusPlus::Symbol
if (symbolName && symbolName->isQualifiedNameId())
return;
- QString name = d_ptr->overview.prettyName(symbol->name()).trimmed();
- QString type = d_ptr->overview.prettyType(symbol->type()).trimmed();
+ QString name = d->overview.prettyName(symbol->name()).trimmed();
+ QString type = d->overview.prettyType(symbol->type()).trimmed();
int iconType = CPlusPlus::Icons::iconTypeForSymbol(symbol);
SymbolInformation information(name, type, iconType);
@@ -352,13 +354,13 @@ void Parser::addSymbol(const ParserTreeItem::Ptr &item, const CPlusPlus::Symbol
ParserTreeItem::Ptr Parser::createFlatTree(const QStringList &projectList)
{
- QReadLocker locker(&d_ptr->prjLocker);
+ QReadLocker locker(&d->prjLocker);
ParserTreeItem::Ptr item(new ParserTreeItem());
foreach(const QString &project, projectList) {
- if (!d_ptr->cachedPrjTrees.contains(project))
+ if (!d->cachedPrjTrees.contains(project))
continue;
- ParserTreeItem::ConstPtr list = d_ptr->cachedPrjTrees[project];
+ ParserTreeItem::ConstPtr list = d->cachedPrjTrees[project];
item->add(list);
}
return item;
@@ -373,7 +375,7 @@ ParserTreeItem::Ptr Parser::getParseProjectTree(const QStringList &fileList,
unsigned revision = 0;
foreach(const QString &file, fileList) {
// ? locker for document?..
- const CPlusPlus::Document::Ptr &doc = d_ptr->document(file);
+ const CPlusPlus::Document::Ptr &doc = d->document(file);
if (doc.isNull())
continue;
@@ -389,10 +391,10 @@ ParserTreeItem::Ptr Parser::getParseProjectTree(const QStringList &fileList,
// update the cache
if (!projectId.isEmpty()) {
- QWriteLocker locker(&d_ptr->prjLocker);
+ QWriteLocker locker(&d->prjLocker);
- d_ptr->cachedPrjTrees[projectId] = item;
- d_ptr->cachedPrjTreesRevision[projectId] = revision;
+ d->cachedPrjTrees[projectId] = item;
+ d->cachedPrjTreesRevision[projectId] = revision;
}
return item;
}
@@ -400,27 +402,27 @@ ParserTreeItem::Ptr Parser::getParseProjectTree(const QStringList &fileList,
ParserTreeItem::Ptr Parser::getCachedOrParseProjectTree(const QStringList &fileList,
const QString &projectId)
{
- d_ptr->prjLocker.lockForRead();
+ d->prjLocker.lockForRead();
// calculate current revision
- if (!projectId.isEmpty() && d_ptr->cachedPrjTrees.contains(projectId)) {
+ if (!projectId.isEmpty() && d->cachedPrjTrees.contains(projectId)) {
// calculate project's revision
unsigned revision = 0;
foreach(const QString &file, fileList) {
- const CPlusPlus::Document::Ptr &doc = d_ptr->document(file);
+ const CPlusPlus::Document::Ptr &doc = d->document(file);
if (doc.isNull())
continue;
revision += doc->revision();
}
// if even revision is the same, return cached project
- if (revision == d_ptr->cachedPrjTreesRevision[projectId]) {
- d_ptr->prjLocker.unlock();
- return d_ptr->cachedPrjTrees[projectId];
+ if (revision == d->cachedPrjTreesRevision[projectId]) {
+ d->prjLocker.unlock();
+ return d->cachedPrjTrees[projectId];
}
}
- d_ptr->prjLocker.unlock();
+ d->prjLocker.unlock();
return getParseProjectTree(fileList, projectId);
}
@@ -430,7 +432,7 @@ ParserTreeItem::ConstPtr Parser::getParseDocumentTree(const CPlusPlus::Document:
return ParserTreeItem::ConstPtr();
const QString &fileName = doc->fileName();
- if (!d_ptr->fileList.contains(fileName))
+ if (!d->fileList.contains(fileName))
return ParserTreeItem::ConstPtr();
ParserTreeItem::Ptr itemPtr(new ParserTreeItem());
@@ -439,11 +441,11 @@ ParserTreeItem::ConstPtr Parser::getParseDocumentTree(const CPlusPlus::Document:
for (unsigned i = 0; i < total; ++i)
addSymbol(itemPtr, doc->globalSymbolAt(i));
- QWriteLocker locker(&d_ptr->docLocker);
+ QWriteLocker locker(&d->docLocker);
- d_ptr->cachedDocTrees[fileName] = itemPtr;
- d_ptr->cachedDocTreesRevision[fileName] = doc->revision();
- d_ptr->documentList[fileName] = doc;
+ d->cachedDocTrees[fileName] = itemPtr;
+ d->cachedDocTreesRevision[fileName] = doc->revision();
+ d->documentList[fileName] = doc;
return itemPtr;
}
@@ -454,14 +456,14 @@ ParserTreeItem::ConstPtr Parser::getCachedOrParseDocumentTree(const CPlusPlus::D
return ParserTreeItem::ConstPtr();
const QString &fileName = doc->fileName();
- d_ptr->docLocker.lockForRead();
- if (d_ptr->cachedDocTrees.contains(fileName)
- && d_ptr->cachedDocTreesRevision.contains(fileName)
- && d_ptr->cachedDocTreesRevision[fileName] == doc->revision()) {
- d_ptr->docLocker.unlock();
- return d_ptr->cachedDocTrees[fileName];
+ d->docLocker.lockForRead();
+ if (d->cachedDocTrees.contains(fileName)
+ && d->cachedDocTreesRevision.contains(fileName)
+ && d->cachedDocTreesRevision[fileName] == doc->revision()) {
+ d->docLocker.unlock();
+ return d->cachedDocTrees[fileName];
} else {
- d_ptr->docLocker.unlock();
+ d->docLocker.unlock();
return getParseDocumentTree(doc);
}
}
@@ -474,48 +476,48 @@ void Parser::parseDocument(const CPlusPlus::Document::Ptr &doc)
const QString &name = doc->fileName();
// if it is external file (not in any of our projects)
- if (!d_ptr->fileList.contains(name))
+ if (!d->fileList.contains(name))
return;
getParseDocumentTree(doc);
- QTC_ASSERT(d_ptr->timer, return);
+ QTC_ASSERT(d->timer, return);
- if (!d_ptr->timer->isActive())
- d_ptr->timer->start(Constants::CLASSVIEW_EDITINGTREEUPDATE_DELAY);
+ if (!d->timer->isActive())
+ d->timer->start(400); //! Delay in msecs before an update
return;
}
void Parser::clearCacheAll()
{
- d_ptr->docLocker.lockForWrite();
+ d->docLocker.lockForWrite();
- d_ptr->cachedDocTrees.clear();
- d_ptr->cachedDocTreesRevision.clear();
- d_ptr->documentList.clear();
+ d->cachedDocTrees.clear();
+ d->cachedDocTreesRevision.clear();
+ d->documentList.clear();
- d_ptr->docLocker.unlock();
+ d->docLocker.unlock();
clearCache();
}
void Parser::clearCache()
{
- QWriteLocker locker(&d_ptr->prjLocker);
+ QWriteLocker locker(&d->prjLocker);
// remove cached trees
- d_ptr->cachedPrjFileLists.clear();
+ d->cachedPrjFileLists.clear();
//! \todo where better to clear project's trees?
//! When file is add/removed from a particular project?..
- d_ptr->cachedPrjTrees.clear();
- d_ptr->cachedPrjTreesRevision.clear();
+ d->cachedPrjTrees.clear();
+ d->cachedPrjTreesRevision.clear();
}
void Parser::setFileList(const QStringList &fileList)
{
- d_ptr->fileList.clear();
- d_ptr->fileList = QSet<QString>::fromList(fileList);
+ d->fileList.clear();
+ d->fileList = QSet<QString>::fromList(fileList);
}
void Parser::removeFiles(const QStringList &fileList)
@@ -523,15 +525,15 @@ void Parser::removeFiles(const QStringList &fileList)
if (fileList.count() == 0)
return;
- QWriteLocker lockerPrj(&d_ptr->prjLocker);
- QWriteLocker lockerDoc(&d_ptr->docLocker);
+ QWriteLocker lockerPrj(&d->prjLocker);
+ QWriteLocker lockerDoc(&d->docLocker);
foreach(const QString &name, fileList) {
- d_ptr->fileList.remove(name);
- d_ptr->cachedDocTrees.remove(name);
- d_ptr->cachedDocTreesRevision.remove(name);
- d_ptr->documentList.remove(name);
- d_ptr->cachedPrjTrees.remove(name);
- d_ptr->cachedPrjFileLists.clear();
+ d->fileList.remove(name);
+ d->cachedDocTrees.remove(name);
+ d->cachedDocTreesRevision.remove(name);
+ d->documentList.remove(name);
+ d->cachedPrjTrees.remove(name);
+ d->cachedPrjFileLists.clear();
}
emit filesAreRemoved();
@@ -542,15 +544,15 @@ void Parser::resetData(const CPlusPlus::Snapshot &snapshot)
// clear internal cache
clearCache();
- d_ptr->docLocker.lockForWrite();
+ d->docLocker.lockForWrite();
// copy snapshot's documents
CPlusPlus::Snapshot::const_iterator cur = snapshot.begin();
CPlusPlus::Snapshot::const_iterator end = snapshot.end();
for(; cur != end; cur++)
- d_ptr->documentList[cur.key()] = cur.value();
+ d->documentList[cur.key()] = cur.value();
- d_ptr->docLocker.unlock();
+ d->docLocker.unlock();
// recalculate file list
QStringList fileList;
@@ -588,16 +590,16 @@ void Parser::requestCurrentState()
void Parser::emitCurrentTree()
{
// stop timer if it is active right now
- d_ptr->timer->stop();
+ d->timer->stop();
- d_ptr->rootItemLocker.lockForWrite();
- d_ptr->rootItem = parse();
- d_ptr->rootItemLocker.unlock();
+ d->rootItemLocker.lockForWrite();
+ d->rootItem = parse();
+ d->rootItemLocker.unlock();
// convert
QSharedPointer<QStandardItem> std(new QStandardItem());
- d_ptr->rootItem->convertTo(std.data());
+ d->rootItem->convertTo(std.data());
emit treeDataUpdate(std);
}
@@ -640,11 +642,11 @@ QStringList Parser::addProjectNode(const ParserTreeItem::Ptr &item,
QStringList fileList;
// try to improve parsing speed by internal cache
- if (d_ptr->cachedPrjFileLists.contains(nodePath)) {
- fileList = d_ptr->cachedPrjFileLists[nodePath];
+ if (d->cachedPrjFileLists.contains(nodePath)) {
+ fileList = d->cachedPrjFileLists[nodePath];
} else {
fileList = projectNodeFileList(node);
- d_ptr->cachedPrjFileLists[nodePath] = fileList;
+ d->cachedPrjFileLists[nodePath] = fileList;
}
if (fileList.count() > 0) {
addProject(item, fileList, node->path());