[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdevplatform/language
From:       Nikolaus Sams <niko.sams () gmail ! com>
Date:       2008-10-18 17:14:47
Message-ID: 1224350087.291218.21282.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 873067 by nsams:

Add AbstractDeclarationNavigationContext, and move the html-method from
cpp language support there. Only special cpp features like templates are
handled in cpp langauge support.

Also move one TypeUtils function from cpp langauge support.


 M  +4 -0      CMakeLists.txt  
 A             duchain/navigation/abstractdeclarationnavigationcontext.cpp   \
[License: LGPL (v2)]  A             \
duchain/navigation/abstractdeclarationnavigationcontext.h   [License: LGPL (v2)]  M  \
+9 -48     duchain/navigation/abstractnavigationcontext.cpp    M  +2 -11     \
duchain/navigation/abstractnavigationcontext.h    M  +4 -2      \
duchain/navigation/abstractnavigationwidget.cpp    A             \
duchain/types/typeutils.cpp   [License: LGPL (v2)]  A             \
duchain/types/typeutils.h   [License: LGPL (v2)]


--- trunk/KDE/kdevplatform/language/CMakeLists.txt #873066:873067
@@ -65,12 +65,14 @@
     duchain/types/enumerationtype.cpp
     duchain/types/constantintegraltype.cpp
     duchain/types/enumeratortype.cpp
+    duchain/types/typeutils.cpp
 
     duchain/repositories/itemrepository.cpp
     duchain/repositories/typerepository.cpp
 
     duchain/navigation/abstractnavigationwidget.cpp
     duchain/navigation/abstractnavigationcontext.cpp
+    duchain/navigation/abstractdeclarationnavigationcontext.cpp
     duchain/navigation/useswidget.cpp
 
     interfaces/ilanguagesupport.cpp
@@ -205,6 +207,7 @@
     duchain/types/constantintegraltype.h
     duchain/types/enumeratortype.h
     duchain/types/alltypes.h
+    duchain/types/typeutils.h
     DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/language/duchain/types
 )
 
@@ -241,6 +244,7 @@
 
 install(FILES
     duchain/navigation/abstractnavigationcontext.h
+    duchain/navigation/abstractdeclarationnavigationcontext.h
     duchain/navigation/abstractnavigationwidget.h
     duchain/navigation/navigationaction.h
     duchain/navigation/useswidget.h
--- trunk/KDE/kdevplatform/language/duchain/navigation/abstractnavigationcontext.cpp \
#873066:873067 @@ -21,6 +21,7 @@
 #include <QtGui/QTextDocument>
 #include <klocale.h>
 
+#include "abstractdeclarationnavigationcontext.h"
 #include "../../../interfaces/icore.h"
 #include "../../../interfaces/idocumentcontroller.h"
 #include "../functiondeclaration.h"
@@ -39,14 +40,10 @@
 
 namespace KDevelop {
 
-AbstractNavigationContext::AbstractNavigationContext( DeclarationPointer decl, \
                KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* \
                previousContext)
-  : m_declaration(decl), m_selectedLink(0), m_linkCount(-1),
+AbstractNavigationContext::AbstractNavigationContext( KDevelop::TopDUContextPointer \
topContext, AbstractNavigationContext* previousContext) +  : m_selectedLink(0), \
m_linkCount(-1),  m_previousContext(previousContext), m_topContext(topContext)
 {
-  //Jump from definition to declaration if possible
-  FunctionDefinition* definition = \
                dynamic_cast<FunctionDefinition*>(m_declaration.data());
-  if(definition && definition->declaration())
-    m_declaration = DeclarationPointer(definition->declaration());
 }
 
 void AbstractNavigationContext::addExternalHtml( const QString& text )
@@ -116,7 +113,8 @@
       break;
     case NavigationAction::NavigateDeclaration:
     {
-      if( m_previousContext && m_previousContext->m_declaration == action.decl )
+      AbstractDeclarationNavigationContext* ctx = \
dynamic_cast<AbstractDeclarationNavigationContext*>(m_previousContext); +      if( \
ctx && ctx->declaration() == action.decl )  return NavigationContextPointer( \
m_previousContext );  return registerChild(action.decl);
     } break;
@@ -201,26 +199,24 @@
   return m_selectedLinkAction;
 }
 
-QString AbstractNavigationContext::declarationKind(Declaration* decl)
+
+QString AbstractNavigationContext::declarationKind(DeclarationPointer decl)
 {
-  const AbstractFunctionDeclaration* function = dynamic_cast<const \
AbstractFunctionDeclaration*>(decl); +  const AbstractFunctionDeclaration* function = \
dynamic_cast<const AbstractFunctionDeclaration*>(decl.data());  
   QString kind;
 
   if( decl->isTypeAlias() )
     kind = i18n("Typedef");
   else if( decl->kind() == Declaration::Type ) {
-    //if( decl->type<CppClassType>() )
     if( decl->type<StructureType>() )
       kind = i18n("Class");
-    else
-      i18n("Class");
   }
 
   if( decl->kind() == Declaration::Instance )
     kind = i18n("Variable");
 
-  if( NamespaceAliasDeclaration* alias = \
dynamic_cast<NamespaceAliasDeclaration*>(decl) ) { +  if( NamespaceAliasDeclaration* \
alias = dynamic_cast<NamespaceAliasDeclaration*>(decl.data()) ) {  if( \
alias->identifier().isEmpty() )  kind = i18n("Namespace import");
     else
@@ -236,41 +232,6 @@
   return kind;
 }
 
-
-DeclarationPointer AbstractNavigationContext::declaration() const
-{
-  return m_declaration;
-}
-
-QString AbstractNavigationContext::stringFromAccess(Declaration::AccessPolicy \
                access)
-{
-  switch(access) {
-    case Declaration::Private:
-      return "private";
-    case Declaration::Protected:
-      return "protected";
-    case Declaration::Public:
-      return "public";
-  }
-  return "";
-}
-
-QString AbstractNavigationContext::declarationName( Declaration* decl )
-{
-  if( NamespaceAliasDeclaration* alias = \
                dynamic_cast<NamespaceAliasDeclaration*>(decl) ) {
-    if( alias->identifier().isEmpty() )
-      return "using namespace " + alias->importIdentifier().toString();
-    else
-      return "namespace " + alias->identifier().toString() + " = " + \
                alias->importIdentifier().toString();
-  }
-
-  if( !decl )
-    return i18nc("An unknown declaration that is unknown", "Unknown");
-  else
-    return decl->identifier().toString();
-}
-
-
 const Colorizer AbstractNavigationContext::errorHighlight("990000");
 const Colorizer AbstractNavigationContext::labelHighlight("000035");
 const Colorizer AbstractNavigationContext::codeHighlight("005000");
--- trunk/KDE/kdevplatform/language/duchain/navigation/abstractnavigationcontext.h \
#873066:873067 @@ -30,8 +30,6 @@
 
 namespace KDevelop {
 
-class FunctionDefinition;
-class NamespaceAliasDeclaration;
 /** A helper-class for elegant colorization of html-strings .
  *
  * Initialize it with a html-color like "990000". and colorize strings
@@ -63,7 +61,7 @@
 class KDEVPLATFORMLANGUAGE_EXPORT AbstractNavigationContext : public KShared
 {
   public:
-    AbstractNavigationContext( DeclarationPointer decl, \
KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* previousContext \
= 0 ); +    AbstractNavigationContext( KDevelop::TopDUContextPointer topContext, \
AbstractNavigationContext* previousContext = 0 );  
     virtual ~AbstractNavigationContext() {
     }
@@ -78,14 +76,8 @@
     virtual QString name() const = 0;
     virtual QString html(bool shorten = false) = 0;
 
-    DeclarationPointer declaration() const;
-
-    static QString declarationKind(Declaration* decl);
-
   protected:
 
-    DeclarationPointer m_declaration;
-
     NavigationContextPointer execute(NavigationAction& action);
 
     void addExternalHtml( const QString& text );
@@ -112,8 +104,7 @@
     QString m_prefix, m_suffix;
     KDevelop::TopDUContextPointer m_topContext;
 
-    static QString stringFromAccess(Declaration::AccessPolicy access);
-    static QString declarationName( Declaration* decl );
+    static QString declarationKind(DeclarationPointer decl);
 
     static const Colorizer errorHighlight;
     static const Colorizer labelHighlight;
--- trunk/KDE/kdevplatform/language/duchain/navigation/abstractnavigationwidget.cpp \
#873066:873067 @@ -38,6 +38,7 @@
 #include "../classmemberdeclaration.h"
 #include "../topducontext.h"
 #include "abstractnavigationcontext.h"
+#include "abstractdeclarationnavigationcontext.h"
 #include "navigationaction.h"
 #include "useswidget.h"
 #include "../../../interfaces/icore.h"
@@ -84,8 +85,9 @@
   delete m_usesWidget;
   m_usesWidget = 0;
 
-  if (m_context->declaration()) {
-    m_usesWidget = new KDevelop::UsesWidget(m_context->declaration().data());
+  AbstractDeclarationNavigationContext* declContext = \
dynamic_cast<AbstractDeclarationNavigationContext*>(m_context.data()); +  if \
(declContext && declContext->declaration()) { +    m_usesWidget = new \
KDevelop::UsesWidget(declContext->declaration().data());  \
layout()->addWidget(m_usesWidget);  }
   m_browser->verticalScrollBar()->setValue(scrollPos);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic