# GCC STL headers [ # Note: make sure to sync this setting with iwyu_include_picker.cc # Headers explicitly annotated with `@headername` # ( cd /usr/include/c++/10 && grep -r headername | perl -nle 'm/^([^:]+).*@headername\{([^,]*)\}/ && print qq@ { include: ["<$1>", private, "<$2>", public ] },@' | sort -u ) { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # ( cd /usr/include/x86_64-linux-gnu/c++/10 && grep -r headername | perl -nle 'm/^([^:]+).*@headername\{([^,]*)\}/ && print qq@ { include: ["<$1>", private, "<$2>", public ] },@' | sort -u ) { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # ( cd /usr/crosstool/v12/gcc-4.3.1-glibc-2.3.6-grte/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include/c++/4.3.1 && grep '^ *# *include' {ext/,tr1/,}* | perl -nle 'm/^([^:]+).*<([^>]+)>/ && print qq@ { include: ["<$2>", private, "<$1>", public ] },@' | grep -e bits/ -e tr1_impl/ | sort -u) # I removed a lot of 'meaningless' dependencies -- for instance, # //includes , but if someone is # using strings, isn't enough to satisfy iwyu. # We may need to add other dirs in future versions of gcc. { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # Hash and hashtable-based containers. { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # All .tcc files are gcc internal-include files. We get them from # ( cd /usr/crosstool/v12/gcc-4.3.1-glibc-2.3.6-grte/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include/c++/4.3.1 && grep -R '^ *# *include.*tcc' * | perl -nle 'm/^([^:]+).*[<"]([^>"]+)[>"]/ && print qq@ { include: ["<$2>", private, "<$1>", public ] },@' | sort ) # I had to manually edit some of the entries to say the map-to is private. { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", private ] }, # Some bits->bits //includes: A few files in bits re-export # symbols from other files in bits. # ( cd /usr/crosstool/v12/gcc-4.3.1-glibc-2.3.6-grte/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include/c++/4.3.1 && grep '^ *# *include.*bits/' bits/* | perl -nle 'm/^([^:]+).*<([^>]+)>/ && print qq@ { include: ["<$2>", private, "<$1>", private ] },@' | grep bits/ | sort -u) # and carefully picked reasonable-looking results (algorithm # *uses* pair but doesn't *re-export* pair, for instance). { include: ["", private, "", private ] }, { include: ["", private, "", private ] }, { include: ["", private, "", private ] }, { include: ["", private, "", private ] }, { include: ["", private, "", private ] }, # I don't think we want to be having people move to 'backward/' # yet. (These hold deprecated STL classes that we still use # actively.) These are the ones that turned up in an analysis of { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # We have backward as part of the -I search path now, so have the # non-backwards-prefix version as well. { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, # (This one should perhaps be found automatically somehow.) { include: ["", private, "", public ] }, # The iostream .h files are confusing. Lots of private headers, # which are handled above, but we also have public headers # #including each other (eg //includes ). We # are pretty forgiving: if a user specifies any public header, we # generally don't require the others. # ( cd /usr/crosstool/v12/gcc-4.3.1-glibc-2.3.6-grte/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include/c++/4.3.1 && egrep '^ *# *include <(istream|ostream|iostream|fstream|sstream|streambuf|ios|iosfwd)>' *stream* ios | perl -nle 'm/^([^:]+).*[<"]([^>"]+)[>"]/ and print qq@ { include: ["<$2>", public, "<$1>", public ] },@' | sort -u ) { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, { include: ["", public, "", public ] }, # The location of exception_defines.h varies by GCC version. It should # never be included directly. { include: ["", private, "", public ] }, # post libstdc++-10 stuff which is not automatically caught by commands above { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, { include: ["", private, "", public ] }, ]