diff options
Diffstat (limited to 'src/shared/cplusplus/Symbols.h')
-rw-r--r-- | src/shared/cplusplus/Symbols.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h index c69483a251..c7b3e924b4 100644 --- a/src/shared/cplusplus/Symbols.h +++ b/src/shared/cplusplus/Symbols.h @@ -71,6 +71,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const UsingNamespaceDirective *asUsingNamespaceDirective() const + { return this; } + + virtual UsingNamespaceDirective *asUsingNamespaceDirective() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); }; @@ -84,6 +90,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const UsingDeclaration *asUsingDeclaration() const + { return this; } + + virtual UsingDeclaration *asUsingDeclaration() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); }; @@ -105,6 +117,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const Declaration *asDeclaration() const + { return this; } + + virtual Declaration *asDeclaration() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); @@ -127,6 +145,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const Argument *asArgument() const + { return this; } + + virtual Argument *asArgument() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); @@ -146,6 +170,12 @@ public: Scope *members() const; void addMember(Symbol *member); + virtual const ScopedSymbol *asScopedSymbol() const + { return this; } + + virtual ScopedSymbol *asScopedSymbol() + { return this; } + private: Scope *_members; }; @@ -159,6 +189,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const Block *asBlock() const + { return this; } + + virtual Block *asBlock() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); }; @@ -175,6 +211,12 @@ public: // Type's interface virtual bool isEqualTo(const Type *other) const; + virtual const Enum *asEnum() const + { return this; } + + virtual Enum *asEnum() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); virtual void accept0(TypeVisitor *visitor); @@ -230,6 +272,12 @@ public: // Type's interface virtual bool isEqualTo(const Type *other) const; + virtual const Function *asFunction() const + { return this; } + + virtual Function *asFunction() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); virtual void accept0(TypeVisitor *visitor); @@ -264,6 +312,12 @@ public: // Type's interface virtual bool isEqualTo(const Type *other) const; + virtual const Namespace *asNamespace() const + { return this; } + + virtual Namespace *asNamespace() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); virtual void accept0(TypeVisitor *visitor); @@ -281,6 +335,12 @@ public: // Symbol's interface virtual FullySpecifiedType type() const; + virtual const BaseClass *asBaseClass() const + { return this; } + + virtual BaseClass *asBaseClass() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); @@ -322,6 +382,12 @@ public: // Type's interface virtual bool isEqualTo(const Type *other) const; + virtual const Class *asClass() const + { return this; } + + virtual Class *asClass() + { return this; } + protected: virtual void visitSymbol0(SymbolVisitor *visitor); virtual void accept0(TypeVisitor *visitor); |