[cfe-dev] Get full source of multiple macro definitions using libtooling
John Bartelme via cfe-dev
cfe-dev at lists.llvm.org
Fri May 6 06:56:26 PDT 2016
Hopefully this is an acceptable list to ask a question about libtooling on:
Ultimately I'm trying to pull out relevant structures from thousands of
existing c and c++ header files. I've been able to use libtooling to pull
out a structure and all of the structures/enums/typedefs etc it relies on
from various different headers. Unfortunately when I get the source range
backing the Decls it still references the macros defined there in. I'm
currently trying to find a way to access and print the source of these
macros but not having much luck when multiple macros are defined.
For example:
#define INT int
#define UNSIGNED unsigned
#define NAME name
typedef struct {
UNSIGNED long INT NAME;
} test;
When I get the FieldDecl corresponding to name and get the SourceRange I
see the spelling location pointing to "#define UNSIGNED unsigned". I'd like
to know how to get to the other macro definition's source locations. I know
that when I change "UNSIGNED long INT NAME;" to "unsigned long INT NAME;"
the spelling location will then point to "#define INT int". It seems as if
declaration names are treated differently though as changing to "unsigned
long int NAME;" leaves me with no spelling location.
Is there a way to get multiple spelling locations given a SourceRange? Do I
need to narrow down the source range some other way? I've tried lexing to
the next token but the doesn't leave me with a new spelling location. I'm
also going to have to account for macros in arrays such as "int
bob[MAX_WIDTH][MAX_HEIGHT]" but I'm hoping once I figure out my issues here
that will become clear. Thanks in advance for any help that can be
provided. john
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160506/19783f36/attachment.html>
More information about the cfe-dev
mailing list