<div dir="ltr">Hopefully this is an acceptable list to ask a question about libtooling on:<br><div class="">
        <span itemprop="upvoteCount" class=""></span><br></div>

            
            
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.<br><br>For example:<br><br>#define INT int<br>#define UNSIGNED unsigned<br>#define NAME name<br><br>typedef struct {<br>   UNSIGNED long INT NAME;<br>} test;<br><br>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.  <br><br>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<br></div>