diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:58 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:58 +0000 | 
| commit | a16e9ac1f192503038f49e0c52edd7dcb2ce023a (patch) | |
| tree | 56c1dd85a159948815817b5a90bedb39cf9ad105 /lib/Frontend/DeclXML.cpp | |
| parent | dd5132ce2569a1ef901c92772eb8581aa1705f25 (diff) | |
Notes
Diffstat (limited to 'lib/Frontend/DeclXML.cpp')
| -rw-r--r-- | lib/Frontend/DeclXML.cpp | 26 | 
1 files changed, 19 insertions, 7 deletions
diff --git a/lib/Frontend/DeclXML.cpp b/lib/Frontend/DeclXML.cpp index d7470d92a946..8750b1efcab5 100644 --- a/lib/Frontend/DeclXML.cpp +++ b/lib/Frontend/DeclXML.cpp @@ -29,6 +29,14 @@ class DocumentXML::DeclPrinter : public DeclVisitor<DocumentXML::DeclPrinter> {      }    } +  void addFunctionBody(FunctionDecl* FD) { +    if (FD->isThisDeclarationADefinition()) { +      Doc.addSubNode("Body"); +      Doc.PrintStmt(FD->getBody()); +      Doc.toParent(); +    } +  } +    void addSubNodes(RecordDecl* RD) {      for (RecordDecl::field_iterator i = RD->field_begin(),                                      e = RD->field_end(); i != e; ++i) { @@ -37,6 +45,15 @@ class DocumentXML::DeclPrinter : public DeclVisitor<DocumentXML::DeclPrinter> {      }    } +  void addSubNodes(CXXRecordDecl* RD) { +    addSubNodes(cast<RecordDecl>(RD)); +    for (CXXRecordDecl::method_iterator i = RD->method_begin(), +                                        e = RD->method_end(); i != e; ++i) { +      Visit(*i); +      Doc.toParent(); +    } +  } +    void addSubNodes(EnumDecl* ED) {      for (EnumDecl::enumerator_iterator i = ED->enumerator_begin(),                                         e = ED->enumerator_end(); i != e; ++i) { @@ -115,6 +132,8 @@ public:  #define SUB_NODE_SEQUENCE_XML( CLASS )  addSubNodes(T);  #define SUB_NODE_OPT_XML( CLASS )       addSubNodes(T); +#define SUB_NODE_FN_BODY_XML            addFunctionBody(T); +  #include "clang/Frontend/DeclXML.def"  }; @@ -122,13 +141,6 @@ public:  //---------------------------------------------------------  void DocumentXML::writeDeclToXML(Decl *D) {    DeclPrinter(*this).Visit(D); -  if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { -    if (Stmt *Body = FD->getBody()) { -      addSubNode("Body"); -      PrintStmt(Body); -      toParent(); -    } -  }    toParent();  }  | 
