From c04274bdd35aeeefa2a6d5e09436c6cb2d8d6c7b Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 24 Nov 2014 23:01:52 -0500 Subject: [PATCH] Debugger: Add skeleton C/C++ syntax highlighter classes. --- src/apps/debugger/Jamfile | 5 +++ .../source_language/CLanguageFamily.cpp | 4 +-- .../CLanguageFamilySyntaxHighlightInfo.cpp | 34 ++++++++++++++++++ .../CLanguageFamilySyntaxHighlightInfo.h | 28 +++++++++++++++ .../CLanguageFamilySyntaxHighlighter.cpp | 35 +++++++++++++++++++ .../CLanguageFamilySyntaxHighlighter.h | 23 ++++++++++++ 6 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.cpp create mode 100644 src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.h create mode 100644 src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.cpp create mode 100644 src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.h diff --git a/src/apps/debugger/Jamfile b/src/apps/debugger/Jamfile index f750787c84..bf46073069 100644 --- a/src/apps/debugger/Jamfile +++ b/src/apps/debugger/Jamfile @@ -28,6 +28,7 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) settings ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) settings generic ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) source_language ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) source_language expression_evaluators ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) source_language syntax_highlighters ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) types ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface cli ] ; @@ -221,6 +222,10 @@ Application Debugger : # source_language/expression_evaluators CLanguageExpressionEvaluator.cpp + # source_language/syntax_highlighters + CLanguageFamilySyntaxHighlighter.cpp + CLanguageFamilySyntaxHighlightInfo.cpp + # types ArrayIndexPath.cpp TargetAddressRangeList.cpp diff --git a/src/apps/debugger/source_language/CLanguageFamily.cpp b/src/apps/debugger/source_language/CLanguageFamily.cpp index 96f793751a..cb75333de5 100644 --- a/src/apps/debugger/source_language/CLanguageFamily.cpp +++ b/src/apps/debugger/source_language/CLanguageFamily.cpp @@ -11,6 +11,7 @@ #include #include "CLanguageExpressionEvaluator.h" +#include "CLanguageFamilySyntaxHighlighter.h" #include "ExpressionInfo.h" #include "TeamTypeInformation.h" #include "StringValue.h" @@ -32,8 +33,7 @@ CLanguageFamily::~CLanguageFamily() SyntaxHighlighter* CLanguageFamily::GetSyntaxHighlighter() const { - // TODO:... - return NULL; + return new(std::nothrow) CLanguageFamilySyntaxHighlighter(); } diff --git a/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.cpp b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.cpp new file mode 100644 index 0000000000..d5aedd8fb1 --- /dev/null +++ b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.cpp @@ -0,0 +1,34 @@ +/* + * Copyright 2014, Rene Gollent, rene@gollent.com. + * Distributed under the terms of the MIT License. + */ + + +#include "CLanguageFamilySyntaxHighlightInfo.h" + +#include "LineDataSource.h" + + +CLanguageFamilySyntaxHighlightInfo::CLanguageFamilySyntaxHighlightInfo( + LineDataSource* source) + : + SyntaxHighlightInfo(), + fHighlightSource(source) +{ + fHighlightSource->AcquireReference(); +} + + +CLanguageFamilySyntaxHighlightInfo::~CLanguageFamilySyntaxHighlightInfo() +{ + fHighlightSource->ReleaseReference(); +} + + +int32 +CLanguageFamilySyntaxHighlightInfo::GetLineHighlightRanges(int32 line, + int32* _columns, syntax_highlight_type* _types, int32 maxCount) +{ + // TODO: implement + return 0; +} diff --git a/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.h b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.h new file mode 100644 index 0000000000..2ef75ef3ce --- /dev/null +++ b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlightInfo.h @@ -0,0 +1,28 @@ +/* + * Copyright 2014, Rene Gollent, rene@gollent.com. + * Distributed under the terms of the MIT License. + */ +#ifndef C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHT_INFO_H +#define C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHT_INFO_H + + +#include "SyntaxHighlighter.h" + + +class CLanguageFamilySyntaxHighlightInfo : public SyntaxHighlightInfo { +public: + CLanguageFamilySyntaxHighlightInfo( + LineDataSource* source); + virtual ~CLanguageFamilySyntaxHighlightInfo(); + + virtual int32 GetLineHighlightRanges(int32 line, + int32* _columns, + syntax_highlight_type* _types, + int32 maxCount); + +private: + LineDataSource* fHighlightSource; +}; + + +#endif // C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHT_INFO_H diff --git a/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.cpp b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.cpp new file mode 100644 index 0000000000..38337de5c4 --- /dev/null +++ b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.cpp @@ -0,0 +1,35 @@ +/* + * Copyright 2014, Rene Gollent, rene@gollent.com. + * Distributed under the terms of the MIT License. + */ + + +#include "CLanguageFamilySyntaxHighlighter.h" + +#include + +#include "CLanguageFamilySyntaxHighlightInfo.h" + + +CLanguageFamilySyntaxHighlighter::CLanguageFamilySyntaxHighlighter() + : + SyntaxHighlighter() +{ +} + + +CLanguageFamilySyntaxHighlighter::~CLanguageFamilySyntaxHighlighter() +{ +} + + +status_t +CLanguageFamilySyntaxHighlighter::ParseText(LineDataSource* source, + SyntaxHighlightInfo*& _info) +{ + _info = new(std::nothrow) CLanguageFamilySyntaxHighlightInfo(source); + if (_info == NULL) + return B_NO_MEMORY; + + return B_OK; +} diff --git a/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.h b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.h new file mode 100644 index 0000000000..25a5736593 --- /dev/null +++ b/src/apps/debugger/source_language/syntax_highlighters/CLanguageFamilySyntaxHighlighter.h @@ -0,0 +1,23 @@ +/* + * Copyright 2014, Rene Gollent, rene@gollent.com. + * Distributed under the terms of the MIT License. + */ +#ifndef C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHTER_H +#define C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHTER_H + + +#include "SyntaxHighlighter.h" + + +class CLanguageFamilySyntaxHighlighter : public SyntaxHighlighter { +public: + CLanguageFamilySyntaxHighlighter(); + virtual ~CLanguageFamilySyntaxHighlighter(); + + virtual status_t ParseText(LineDataSource* source, + SyntaxHighlightInfo*& _info); + // caller owns the returned info +}; + + +#endif // C_LANGUAGE_FAMILY_SYNTAX_HIGHLIGHTER_H