[llvm-dev] Clang API: any way to use a virtual filesystem ?

Jean-Michaël Celerier via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 5 12:32:01 PDT 2020


Thanks, those are very good starting points ! I'll try to make it work and
report if it does if that can be useful to someone else.

All the best,
Jean-Michaël


-------
Jean-Michaël Celerier
http://www.jcelerier.name


On Mon, Oct 5, 2020 at 6:01 PM Jacob Carlborg via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> On 2020-10-05 09:44, Jean-Michaël Celerier via llvm-dev wrote:
>
> > My question is: is it possible to hook something in clang to allow it to
> > go look for files inside a virtual file system à la
> > https://github.com/yevgeniy-logachev/vfspp for instance ? This way I
> > would only download the zip, not extract it, and it'd be just opened in
> > ram when needed.
> > Or does it necessarily go through fopen() for includes right now ?
>
> I have a tool where I use libclang (the C API). For the internal
> headers, I've embedded those inside the executable, to avoid the need to
> ship them separately or have the users to install them.
>
> What I do is for each header file I create a `CXUnsavedFile` [1].  Then
> I can pass that to `clang_parseTranslationUnit` when parsing the source
> files.
>
> `CXUnsavedFile` expects the filename and the content of the file. If you
> can get that, you should be able to use the same approach.
>
> If you're using the C++ API, you can have a look at the implementation
> of `clang_parseTranslationUnit` to see how to do the same using the C++
> API.
>
> [1] https://clang.llvm.org/doxygen/structCXUnsavedFile.html
> [2]
>
> https://clang.llvm.org/doxygen/group__CINDEX__TRANSLATION__UNIT.html#ga2baf83f8c3299788234c8bce55e4472e
>
> --
> /Jacob Carlborg
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201005/520acca2/attachment.html>


More information about the llvm-dev mailing list