[cfe-dev] Distinguishing system headers from user headers using libclang

Siedlarek, Mikołaj m.siedlarek at nctz.net
Fri Apr 5 04:20:25 PDT 2013


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:
>>
>> Hi,
>>
>> 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.

-- 
Mikołaj Siedlarek
m.siedlarek at nctz.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: file-characteristics-v2.diff
Type: application/octet-stream
Size: 2943 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130405/a9367e44/attachment.obj>


More information about the cfe-dev mailing list