diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
commit | 26267c03445266233159b2f61bbc3a4d5864c01a (patch) | |
tree | 8b7536d8f41fea63adc180d56830a73aae1192ad /src/shared/cplusplus/Symbols.h | |
parent | a9b521f80af025ac11f9735fc070606952894b60 (diff) | |
download | qt-creator-26267c03445266233159b2f61bbc3a4d5864c01a.tar.gz |
Improved ObjC parsing, and added semantic checks.
Diffstat (limited to 'src/shared/cplusplus/Symbols.h')
-rw-r--r-- | src/shared/cplusplus/Symbols.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h index 03a66778d7..a35dbf30b5 100644 --- a/src/shared/cplusplus/Symbols.h +++ b/src/shared/cplusplus/Symbols.h @@ -463,6 +463,133 @@ private: Array<BaseClass *> _baseClasses; }; +class CPLUSPLUS_EXPORT ObjCForwardProtocolDeclaration: public Symbol, public Type +{ +public: + ObjCForwardProtocolDeclaration(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); + virtual ~ObjCForwardProtocolDeclaration(); + + // Symbol's interface + virtual FullySpecifiedType type() const; + + // Type's interface + virtual bool isEqualTo(const Type *other) const; + + virtual const ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclaration() const + { return this; } + + virtual ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclaration() + { return this; } + + virtual const ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() const + { return this; } + + virtual ObjCForwardProtocolDeclaration *asObjCForwardProtocolDeclarationType() + { return this; } + +protected: + virtual void visitSymbol0(SymbolVisitor *visitor); + virtual void accept0(TypeVisitor *visitor); + +private: +}; + +class CPLUSPLUS_EXPORT ObjCProtocol: public ScopedSymbol, public Type +{ +public: + ObjCProtocol(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); + virtual ~ObjCProtocol(); + + // Symbol's interface + virtual FullySpecifiedType type() const; + + // Type's interface + virtual bool isEqualTo(const Type *other) const; + + virtual const ObjCProtocol *asObjCProtocol() const + { return this; } + + virtual ObjCProtocol *asObjCProtocol() + { return this; } + + virtual const ObjCProtocol *asObjCProtocolType() const + { return this; } + + virtual ObjCProtocol *asObjCProtocolType() + { return this; } + +protected: + virtual void visitSymbol0(SymbolVisitor *visitor); + virtual void accept0(TypeVisitor *visitor); + +private: + Array<ObjCProtocol *> _protocols; +}; + +class CPLUSPLUS_EXPORT ObjCForwardClassDeclaration: public Symbol, public Type +{ +public: + ObjCForwardClassDeclaration(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); + virtual ~ObjCForwardClassDeclaration(); + + // Symbol's interface + virtual FullySpecifiedType type() const; + + // Type's interface + virtual bool isEqualTo(const Type *other) const; + + virtual const ObjCForwardClassDeclaration *asObjCForwardClassDeclaration() const + { return this; } + + virtual ObjCForwardClassDeclaration *asObjCForwardClassDeclaration() + { return this; } + + virtual const ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() const + { return this; } + + virtual ObjCForwardClassDeclaration *asObjCForwardClassDeclarationType() + { return this; } + +protected: + virtual void visitSymbol0(SymbolVisitor *visitor); + virtual void accept0(TypeVisitor *visitor); + +private: +}; + +class CPLUSPLUS_EXPORT ObjCClass: public ScopedSymbol, public Type +{ +public: + ObjCClass(TranslationUnit *translationUnit, unsigned sourceLocation, Name *name); + virtual ~ObjCClass(); + + // Symbol's interface + virtual FullySpecifiedType type() const; + + // Type's interface + virtual bool isEqualTo(const Type *other) const; + + virtual const ObjCClass *asObjCClass() const + { return this; } + + virtual ObjCClass *asObjCClass() + { return this; } + + virtual const ObjCClass *asObjCClassType() const + { return this; } + + virtual ObjCClass *asObjCClassType() + { return this; } + +protected: + virtual void visitSymbol0(SymbolVisitor *visitor); + virtual void accept0(TypeVisitor *visitor); + +private: + Array<ObjCClass *> _baseClasses; + Array<ObjCProtocol *> _protocols; +}; + CPLUSPLUS_END_NAMESPACE CPLUSPLUS_END_HEADER |