[cfe-dev] Distinguishing system headers from user headers using libclang
akyrtzi at gmail.com
Thu Apr 11 10:22:09 PDT 2013
On Apr 5, 2013, at 4:20 AM, "Siedlarek, Mikołaj" <m.siedlarek at nctz.net> wrote:
> On Fri, Apr 5, 2013 at 12:37 PM, Siedlarek, Mikołaj
> <m.siedlarek at nctz.net> wrote:
>> On Fri, Apr 5, 2013 at 12:22 AM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>>> On Apr 2, 2013, at 1:33 AM, Mikołaj Siedlarek <m.siedlarek at nctz.net> wrote:
>>> I'm writing a simple code dependency analysis tool using libclang and I'm missing some way of distinguishing system headers from user headers. I see clang::DirectoryLookup::getDirCharacteristic() provides such interface, but is there any way I could obtain this information using just libclang? My tool is rather simple and I'd like to keep it that way - libclang seems to be sufficient for the rest of my needs.
>>> There is no way currently, but it should relatively easy, are you interested in providing such a patch ?
>>> The clang function you may need to look into using is "SourceManager::isInSystemHeader(SourceLocation Loc)"
>>> The libclang function would accept a CXTranslationUnit and a CXSourceLocation.
>> How about this? That's the best and most elastic approach I could think of.
> There was unnecessary CINDEX_LINKAGE in the first version of my patch.
> Here's corrected one.
+ * \brief System code which is implicitly 'extern "C"' in C++ mode
This is very "legacy-hacky-compiler-specific"; I can't think of a reason that a libclang client would need to know this.
I suggest just adding a
int clang_SourceLocation_isInSystemHeader(CXSourceLocation location)
> Mikołaj Siedlarek
> m.siedlarek at nctz.net
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev