Files
Sourcetrail/src/lib/component/controller/CodeController.h
T
malte_langkabel 054b8fab17 logic: reduce access to filesystem while indexing
* use canonical filepath cache in cxx indexer
* made constructors of FilePath explicit
* use FilePath at more places instead of string
* forward declares FilePath wherever possible
2017-05-04 10:55:16 +02:00

110 lines
4.3 KiB
C++

#ifndef CODE_CONTROLLER_H
#define CODE_CONTROLLER_H
#include <map>
#include <string>
#include "utility/file/FilePath.h"
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageActivateAll.h"
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageChangeFileView.h"
#include "utility/messaging/type/MessageClearErrorCount.h"
#include "utility/messaging/type/MessageCodeViewExpandedInitialFiles.h"
#include "utility/messaging/type/MessageDeactivateEdge.h"
#include "utility/messaging/type/MessageFlushUpdates.h"
#include "utility/messaging/type/MessageFocusIn.h"
#include "utility/messaging/type/MessageFocusOut.h"
#include "utility/messaging/type/MessageScrollCode.h"
#include "utility/messaging/type/MessageScrollToLine.h"
#include "utility/messaging/type/MessageSearchFullText.h"
#include "utility/messaging/type/MessageShowErrors.h"
#include "utility/messaging/type/MessageShowScope.h"
#include "utility/types.h"
#include "component/controller/helper/SnippetMerger.h"
#include "component/controller/Controller.h"
#include "component/view/CodeView.h"
class StorageAccess;
class SourceLocation;
class SourceLocationCollection;
class SourceLocationFile;
class CodeController
: public Controller
, public MessageListener<MessageActivateAll>
, public MessageListener<MessageActivateLocalSymbols>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageChangeFileView>
, public MessageListener<MessageClearErrorCount>
, public MessageListener<MessageCodeViewExpandedInitialFiles>
, public MessageListener<MessageDeactivateEdge>
, public MessageListener<MessageFlushUpdates>
, public MessageListener<MessageFocusIn>
, public MessageListener<MessageFocusOut>
, public MessageListener<MessageScrollCode>
, public MessageListener<MessageScrollToLine>
, public MessageListener<MessageSearchFullText>
, public MessageListener<MessageShowErrors>
, public MessageListener<MessageShowScope>
{
public:
CodeController(StorageAccess* storageAccess);
~CodeController();
private:
static const uint s_lineRadius;
virtual void handleMessage(MessageActivateAll* message);
virtual void handleMessage(MessageActivateLocalSymbols* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageChangeFileView* message);
virtual void handleMessage(MessageClearErrorCount* message);
virtual void handleMessage(MessageCodeViewExpandedInitialFiles* message);
virtual void handleMessage(MessageDeactivateEdge* message);
virtual void handleMessage(MessageFlushUpdates* message);
virtual void handleMessage(MessageFocusIn* message);
virtual void handleMessage(MessageFocusOut* message);
virtual void handleMessage(MessageScrollCode* message);
virtual void handleMessage(MessageScrollToLine* message);
virtual void handleMessage(MessageSearchFullText* message);
virtual void handleMessage(MessageShowErrors* message);
virtual void handleMessage(MessageShowScope* message);
CodeView* getView();
virtual void clear();
void showContents(MessageBase* message);
std::vector<CodeSnippetParams> getSnippetsForActiveSourceLocations(
const SourceLocationCollection* collection, Id declarationId) const;
std::vector<CodeSnippetParams> getSnippetsForCollection(
std::shared_ptr<SourceLocationCollection> collection, bool addSourceLocations = false) const;
std::vector<CodeSnippetParams> getSnippetsForFile(
std::shared_ptr<SourceLocationFile> file, bool addSourceLocations = false) const;
std::shared_ptr<SnippetMerger> buildMergerHierarchy(
SourceLocation* location, std::shared_ptr<SourceLocationFile> context, SnippetMerger& fileScopedMerger,
std::map<int, std::shared_ptr<SnippetMerger>>& mergers) const;
std::shared_ptr<SourceLocationFile> getSourceLocationOfParentScope(
const SourceLocation* location, std::shared_ptr<SourceLocationFile> context) const;
std::vector<std::string> getProjectDescription(SourceLocationFile* locationFile) const;
void addModificationTimes(std::vector<CodeSnippetParams>& snippets) const;
StorageAccess* m_storageAccess;
mutable std::shared_ptr<SourceLocationCollection> m_collection;
bool m_scrollToDefinition;
int m_scrollToValue;
bool m_scrollInListMode;
FilePath m_scrollToFilePath;
size_t m_scrollToLine;
};
#endif // CODE_CONTROLLER_H