summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Symbols.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Symbols.h')
-rw-r--r--src/shared/cplusplus/Symbols.h66
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);