From 2186e7e552926f62fe0deeb3e922b36006e25245 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 18 Mar 2014 13:57:50 -0400 Subject: Output: Add pure_virtual="" to Function-like elements --- src/Output.cxx | 13 +++++++++++++ test/expect/gccxml.Class-abstract-xml.txt | 23 ++++++++++++++--------- test/input/Class-abstract.cxx | 2 ++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/Output.cxx b/src/Output.cxx index 8067f51..4e95752 100644 --- a/src/Output.cxx +++ b/src/Output.cxx @@ -265,6 +265,7 @@ class ASTVisitor: public ASTVisitorBase FH_Explicit = (1<<2), FH_Const = (1<<3), FH_Virtual = (1<<4), + FH_Pure = (1<<5), FH__Last }; @@ -958,6 +959,9 @@ void ASTVisitor::OutputFunctionHelper(clang::FunctionDecl const* d, if(flags & FH_Virtual) { this->OS << " virtual=\"1\""; } + if(flags & FH_Pure) { + this->OS << " pure_virtual=\"1\""; + } if(d->isInlined()) { this->OS << " inline=\"1\""; } @@ -1250,6 +1254,9 @@ void ASTVisitor::OutputCXXMethodDecl(clang::CXXMethodDecl const* d, if(d->isVirtual()) { flags |= FH_Virtual; } + if(d->isPure()) { + flags |= FH_Pure; + } if(d->isOverloadedOperator()) { this->OutputFunctionHelper(d, dn, "OperatorMethod", clang::getOperatorSpelling(d->getOverloadedOperator()), flags); @@ -1269,6 +1276,9 @@ void ASTVisitor::OutputCXXConversionDecl(clang::CXXConversionDecl const* d, if(d->isVirtual()) { flags |= FH_Virtual; } + if(d->isPure()) { + flags |= FH_Pure; + } this->OutputFunctionHelper(d, dn, "Converter", "", flags); } @@ -1292,6 +1302,9 @@ void ASTVisitor::OutputCXXDestructorDecl(clang::CXXDestructorDecl const* d, if(d->isVirtual()) { flags |= FH_Virtual; } + if(d->isPure()) { + flags |= FH_Pure; + } this->OutputFunctionHelper(d, dn, "Destructor", this->GetContextName(d), flags); } diff --git a/test/expect/gccxml.Class-abstract-xml.txt b/test/expect/gccxml.Class-abstract-xml.txt index 8737efc..3ffcd9d 100644 --- a/test/expect/gccxml.Class-abstract-xml.txt +++ b/test/expect/gccxml.Class-abstract-xml.txt @@ -1,16 +1,21 @@ ^<\?xml version="1.0"\?> ]*> - - - - + + + + + + + + - - - + + + - - + + + diff --git a/test/input/Class-abstract.cxx b/test/input/Class-abstract.cxx index 7615532..419c6ec 100644 --- a/test/input/Class-abstract.cxx +++ b/test/input/Class-abstract.cxx @@ -1,3 +1,5 @@ class start { + virtual int method(int) = 0; + virtual operator int() = 0; virtual ~start() = 0; }; -- cgit v0.12