jcpp icon indicating copy to clipboard operation
jcpp copied to clipboard

Support for include_next

Open ochafik opened this issue 10 years ago • 2 comments

Although jcpp parses #include_next, it doesn't seem to skip the current file's directory.

See http://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html

Here's a fix from JNAerator's fork:

https://github.com/ochafik/jcpp/commit/823a020fb5d1b531d897bb27216096829a6f6ac1

ochafik avatar Nov 05 '13 23:11 ochafik

That's because I lashed this all up in the mid '90s and didn't read the documentation! I did pretty well, considering! :-)

shevek avatar Dec 28 '13 13:12 shevek

I've written enough virtual filesystem handling code in my life to be cautious and nervous about implementing this properly. As I see it, the linked patch prevents reincluding a file which was relative to the parent, but does not correctly implement include_next if both the first and the next header are in the system include directories, nor can it handle a chain of more than one 'next' inclusion.

I'll have to think about this somewhat more, but I'm reluctant to take the patch into trunk with those weaknesses. Fundamentally, the weakness is in the vfs code, because it doesn't really allow one to identify a file; following which one would have to walk the Source stack and ensure that the proposed source (VirtualFile) was not on the stack already, which would require a change to Source ("Are you this VF?") as well.

I'll let that settle into our brains for a bit before I come back to it.

shevek avatar Dec 28 '13 13:12 shevek