[cfe-dev] RecursiveASTVisitor: How to traverse all FieldDecl in a CXXRecordDecl?

Adam McLaughlin via cfe-dev cfe-dev at lists.llvm.org
Tue Dec 1 06:58:22 PST 2020


Depending on the context of your program you can either try to 1) traverse
the fields within VisitCXXRecordDecl() or 2) use the FieldDecl::getParent()
method within VisitFieldDecl() to figure out which CXXRecordDecl the
FieldDecl belongs to (if any).

-Adam

On Mon, Nov 30, 2020 at 5:18 PM Robinson, Paul via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

>
>
> > -----Original Message-----
> > From: cfe-dev <cfe-dev-bounces at lists.llvm.org> On Behalf Of Marcel
> > Schaible via cfe-dev
> > Sent: Monday, November 30, 2020 11:49 AM
> > To: cfe-dev at lists.llvm.org
> > Subject: [cfe-dev] RecursiveASTVisitor: How to traverse all FieldDecl in
> a
> > CXXRecordDecl?
> >
> > Hi,
> >
> > I have  simple RecursiveASTVisitor, which should handle definition of
> > structs and their fields.
> >
> >
> > How can I traverse over all FieldDecl in a given CXXRecordDecl?
> >
> > Because of the sequence the AST is traversed, I don't know in a
> > VisitFieldDecl approach to which CXXRecordDecl it belongs to.
>
> I don't know anything about RecursiveASTVisitor so there might be
> a way to do what you want there.  If you need to traverse the AST
> "manually" there's code in clang/lib/CodeGen/CGDebugInfo.cpp (look
> for CGDebugInfo::CollectRecordFields) that could be instructive.
> Note that a VarDecl describes a static data member, while a
> FieldDecl describes a normal data member.
>
> --paulr
>
> >
> > I hope I have stated my problem understandable..-
> >
> >
> > Thanks
> >
> > Marcel
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at lists.llvm.org
> > https://urldefense.com/v3/__https://lists.llvm.org/cgi-
> > bin/mailman/listinfo/cfe-dev__;!!JmoZiZGBv3RvKRSx!sAghJD5ak8TBfwxlN3-
> > clB7IHmStNEf-qYGycEskAWJCHsfocgsXmtBh2CP25GHZAA$
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20201201/d65a5471/attachment.html>


More information about the cfe-dev mailing list