File indexing completed on 2024-04-14 04:30:16

0001 /*
0002     SPDX-FileCopyrightText: 2010 Milian Wolff
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "phphighlighting.h"
0008 #include <language/duchain/declaration.h>
0009 
0010 #include "duchain/declarations/variabledeclaration.h"
0011 
0012 using namespace KDevelop;
0013 using namespace Php;
0014 
0015 //BEGIN HighlightingInstance
0016 
0017 class HighlightingInstance : public CodeHighlightingInstance {
0018 public:
0019     HighlightingInstance(const CodeHighlighting* highlighting);
0020     CodeHighlightingType typeForDeclaration(KDevelop::Declaration* decl, KDevelop::DUContext* context) const override;
0021     bool useRainbowColor( Declaration* dec ) const override;
0022 };
0023 
0024 HighlightingInstance::HighlightingInstance(const CodeHighlighting* highlighting)
0025     : CodeHighlightingInstance(highlighting)
0026 {
0027 }
0028 
0029 CodeHighlightingType HighlightingInstance::typeForDeclaration(Declaration* decl, DUContext* context) const
0030 {
0031     if (decl && !decl->isFunctionDeclaration() && decl->abstractType()
0032         && decl->abstractType()->modifiers() & AbstractType::ConstModifier
0033         && !dynamic_cast<VariableDeclaration*>(decl) )
0034     {
0035         return CodeHighlightingType::Enum;
0036     } else {
0037         return CodeHighlightingInstance::typeForDeclaration(decl, context);
0038     }
0039 }
0040 
0041 bool HighlightingInstance::useRainbowColor( Declaration* dec ) const
0042 {
0043     return dynamic_cast<VariableDeclaration*>(dec);
0044 }
0045 
0046 //BEGIN Highlighting
0047 
0048 Highlighting::Highlighting(QObject* parent)
0049     : CodeHighlighting(parent)
0050 {
0051 
0052 }
0053 
0054 CodeHighlightingInstance* Highlighting::createInstance() const
0055 {
0056     return new HighlightingInstance(this);
0057 }