language/duchain
functiondeclaration.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FUNCTIONDECLARATION_H
00023 #define FUNCTIONDECLARATION_H
00024
00025 #include "declaration.h"
00026 #include "abstractfunctiondeclaration.h"
00027 #include "declarationdata.h"
00028
00029 namespace KDevelop
00030 {
00031 KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(FunctionDeclarationData, m_defaultParameters, IndexedString)
00032
00033 class KDEVPLATFORMLANGUAGE_EXPORT FunctionDeclarationData : public DeclarationData, public AbstractFunctionDeclarationData
00034 {
00035 public:
00036 FunctionDeclarationData()
00037 {
00038 initializeAppendedLists();
00039 }
00040 FunctionDeclarationData( const FunctionDeclarationData& rhs )
00041 :DeclarationData( rhs ), AbstractFunctionDeclarationData(rhs)
00042 {
00043 initializeAppendedLists();
00044 copyListsFrom(rhs);
00045 }
00046 ~FunctionDeclarationData()
00047 {
00048 freeAppendedLists();
00049 }
00050
00051 START_APPENDED_LISTS_BASE(FunctionDeclarationData, DeclarationData);
00052 APPENDED_LIST_FIRST(FunctionDeclarationData, IndexedString, m_defaultParameters);
00053 END_APPENDED_LISTS(FunctionDeclarationData, m_defaultParameters);
00054 };
00058 typedef MergeAbstractFunctionDeclaration<Declaration, FunctionDeclarationData> FunctionDeclarationBase;
00059 class KDEVPLATFORMLANGUAGE_EXPORT FunctionDeclaration : public FunctionDeclarationBase
00060 {
00061 public:
00062 FunctionDeclaration(const FunctionDeclaration& rhs);
00063 FunctionDeclaration(const SimpleRange& range, DUContext* context);
00064 FunctionDeclaration(FunctionDeclarationData& data);
00065 FunctionDeclaration(FunctionDeclarationData& data, const KDevelop::SimpleRange&);
00066 virtual ~FunctionDeclaration();
00067
00068 virtual void setAbstractType(AbstractType::Ptr type);
00069
00070 virtual QString toString() const;
00071
00072 virtual bool isFunctionDeclaration() const;
00073
00074 virtual uint additionalIdentity() const;
00075
00076 virtual const IndexedString* defaultParameters() const;
00077 virtual unsigned int defaultParametersSize() const;
00078 virtual void addDefaultParameter(const IndexedString& str);
00079 virtual void clearDefaultParameters();
00080
00081 enum {
00082 Identity = 12
00083 };
00084
00085 typedef Declaration Base;
00086
00087 private:
00088 virtual Declaration* clonePrivate() const;
00089 DUCHAIN_DECLARE_DATA(FunctionDeclaration)
00090 };
00091 }
00092
00093 #endif // FUNCTIONDECLARATION_H
00094
00095