build: fixed to compile for mac and linux again

* removed direct usage of MessageListener from lib parser
This commit is contained in:
malte_langkabel
2016-09-08 12:54:13 +02:00
parent f55d8a73f1
commit 8f6a7a1cca
5 changed files with 68 additions and 13 deletions
+2
View File
@@ -298,6 +298,8 @@ add_files(
utility/messaging/Message.h
utility/messaging/MessageBase.h
utility/messaging/MessageInterruptTasksCounter.cpp
utility/messaging/MessageInterruptTasksCounter.h
utility/messaging/MessageListener.h
utility/messaging/MessageListenerBase.cpp
utility/messaging/MessageListenerBase.h
@@ -0,0 +1,40 @@
#include "utility/messaging/MessageInterruptTasksCounter.h"
#include "utility/messaging/type/MessageInterruptTasks.h"
#include "utility/messaging/MessageListener.h"
MessageInterruptTasksCounter::MessageInterruptTasksCounter()
: m_count(0)
{
class InterruptListener: public MessageListener<MessageInterruptTasks>
{
public:
InterruptListener(size_t& counter)
: m_counter(counter)
{}
private:
virtual void handleMessage(MessageInterruptTasks* message)
{
m_counter++;
}
size_t& m_counter;
};
m_listener = std::make_shared<InterruptListener>(m_count);
}
MessageInterruptTasksCounter::~MessageInterruptTasksCounter()
{
}
void MessageInterruptTasksCounter::reset()
{
m_count = 0;
}
size_t MessageInterruptTasksCounter::getCount() const
{
return m_count;
}
@@ -0,0 +1,23 @@
#ifndef MESSAGE_INTERRUPT_TASKS_COUNTER_H
#define MESSAGE_INTERRUPT_TASKS_COUNTER_H
#include <memory>
class MessageListenerBase;
class MessageInterruptTasksCounter
{
public:
MessageInterruptTasksCounter();
virtual ~MessageInterruptTasksCounter();
void reset();
size_t getCount() const;
private:
std::shared_ptr<MessageListenerBase> m_listener;
size_t m_count;
};
#endif // MESSAGE_INTERRUPT_TASKS_COUNTER_H
@@ -37,7 +37,6 @@ ASTVisitor::ASTVisitor(clang::ASTContext* context, clang::Preprocessor* preproce
, m_childContext(0)
, m_typeContext(RT_Reference)
, m_contextAccess(ACCESS_NONE)
, m_continue(true)
{
m_declNameCache = std::make_shared<DeclNameCache>([](const clang::NamedDecl* decl) -> NameHierarchy
{
@@ -912,7 +911,7 @@ bool ASTVisitor::VisitDecl(clang::Decl *d)
}
}
return m_continue;
return (m_interruptCounter.getCount() == 0);
}
//#include "data/parser/ParseFunction.h"
@@ -1687,8 +1686,3 @@ NameHierarchy ASTVisitor::getContextName() const
}
return NameHierarchy("global");
}
void ASTVisitor::handleMessage(MessageInterruptTasks* message)
{
m_continue = false;
}
+2 -6
View File
@@ -11,13 +11,11 @@
#include "data/parser/ParserClient.h"
#include "data/parser/SymbolKind.h"
#include "utility/file/FileRegister.h"
#include "utility/messaging/MessageInterruptTasksCounter.h"
#include "utility/Cache.h"
#include "utility/messaging/type/MessageInterruptTasks.h"
#include "utility/messaging/MessageListener.h"
class ASTVisitor
: clang::RecursiveASTVisitor<ASTVisitor>
, MessageListener<MessageInterruptTasks>
{
public:
typedef Cache<const clang::NamedDecl*, NameHierarchy> DeclNameCache;
@@ -228,8 +226,6 @@ private:
NameHierarchy getContextName() const;
virtual void handleMessage(MessageInterruptTasks* message);
struct FileIdHash {
size_t operator()(clang::FileID fileID) const {
return fileID.getHashValue();
@@ -246,7 +242,7 @@ private:
std::shared_ptr<TypeNameCache> m_typeNameCache;
AccessKind m_contextAccess;
bool m_continue;
MessageInterruptTasksCounter m_interruptCounter;
};
#endif // AST_VISITOR_H