# Map file for the include-what-you-use tool on OS X. For some reason
# the version installed by HomeBrew doesn't have useful mappings for the
# system provided headers. This also has mappings for FreeBSD.
[
    { include: ["<__functional_base>", private, "<functional>", public ] },
    { include: ["<__mutex_base>", private, "<mutex>", public ] },
    { include: ["@<__algorithm/.*>", "private", "<algorithm>", "public"] },
    { include: ["@<__iterator/.*>", "private", "<iterator>", "public"] },
    { include: ["@<__functional/.*>", "private", "<functional>", "public"] },
    { include: ["@<__memory/.*>", "private", "<memory>", "public"] },
    { include: ["@<__utility/.*>", "private", "<utility>", "public"] },
    { include: ["@<__chrono/.*>", "private", "<chrono>", "public"] },
    { include: ["@<__numeric/.*>", "private", "<numeric>", "public"] },
    { include: ["@<__random/.*>", "private", "<random>", "public"] },
    { include: ["@<__locale/.*>", "private", "<locale>", "public"] },
    { include: ["@<xlocale/.*>", "private", "<xlocale.h>", "public"] },
# ratio false positive. See https://groups.google.com/g/include-what-you-use/c/OKVkkWUlx44
    { include: ["<ratio>", "public", "<chrono>", "public"] },
    { include: ["<__locale>", "private", "<locale>", "public"] },
    { include: ["<_ctype.h>", "private", "<ctype.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_once_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_mutex_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_rwlock_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_mutexattr_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_attr_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_cond_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthread/_pthread_key_t.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_pthreadtypes.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_types/_posix_vdisable.h>", "private", "<pthread.h>", "public"] },
    { include: ["<sys/_types/_time_t.h>", "private", "<time.h>", "public"] },
    { include: ["<sys/_types/_suseconds_t.h>", "private", "<time.h>", "public"] },
    { include: ["<sys/_types/_suseconds_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/errno.h>", "private", "<errno.h>", "public"] },
    { include: ["<sys/unistd.h>", "private", "<unistd.h>", "public"] },
    { include: ["<_wctype.h>", "private", "<wctype.h>", "public"] },
    { include: ["<sys/fcntl.h>", "private", "<fcntl.h>", "public"] },
    { include: ["<sys/_types/_seek_set.h>", "private", "<fcntl.h>", "public"] },
    { include: ["<sys/_types/_mbstate_t.h>", "private", "<wchar.h>", "public"] },
    { include: ["<iosfwd>", "public", "<string>", "public"] },
    { include: ["<sys/_stdint.h>", "private", "<stdint.h>", "public"] },
    { include: ["<sys/_types/_s_ifmt.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_size_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_size_t.h>", "private", "<stdlib.h>", "public"] },
    { include: ["<sys/_types/_mode_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_pid_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_fd_def.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_fd_isset.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_fd_set.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_fd_zero.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_timeval.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_uid_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<_types/_intmax_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<_types/_uintmax_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<_types/_uint8_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_int32_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<_types/_uint64_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_uintptr_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_dev_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_ino_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_va_list.h>", "private", "<stdio.h>", "public"] },
    { include: ["<__functional_base>", "private", "<memory>", "public"] },
    { include: ["<__functional_base>", "private", "<vector>", "public"] },
    { include: ["<__functional_base>", "private", "<string>", "public"] },
    { include: ["<__tree>", "private", "<map>", "public"] },
    { include: ["<__tree>", "private", "<set>", "public"] },
    { include: ["<_types/_uint32_t.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_va_list.h>", "private", "<sys/types.h>", "public"] },
    { include: ["<sys/_types/_sigset_t.h>", "private", "<signal.h>", "public"] },
    { include: ["<sys/signal.h>", "private", "<signal.h>", "public"] },
    { include: ["<sys/termios.h>", "private", "<termios.h>", "public"] },
    { include: ["<sys/_termios.h>", "private", "<termios.h>", "public"] },
    { include: ["<sys/ttycom.h>", "private", "<termios.h>", "public"] },
    { include: ["<sys/syslimits.h>", "private", "<limits.h>", "public"] },
    { include: ["<i386/limits.h>", "private", "<limits.h>", "public"] },
    { include: ["<sys/limits.h>", "private", "<limits.h>", "public"] },
    { include: ["<sys/_types/_wint_t.h>", "private", "<stddef.h>", "public"] },
    { include: ["<sys/_select.h>", "private", "<select.h>", "public"] },
    { include: ["<sys/cdefs.h>", "private", "<unistd.h>", "public"] },
    { include: ["<istream>", "public", "<iostream>", "public"] },
    { include: ["<sys/_endian.h>", "private", "<netinet/in.h>", "public"] },
    { include: ["<sys/_types/_timespec.h>", "private", "<time.h>", "public"] },
    { include: ["<sys/_timespec.h>", "private", "<time.h>", "public"] },
    { include: ["<sys/spawn.h>", "private", "<spawn.h>", "public"] },
    { include: ["<sys/dirent.h>", "private", "<dirent.h>", "public"] },
    { include: ["<__mutex_base>", "private", "<mutex>", "public"] },
    { include: ["<__hash_table>", "private", "<unordered_map>", "public"] },
    { include: ["<__hash_table>", "private", "<unordered_set>", "public"] },
    { include: ['"../common.h"', "public", '"common.h"', "public"] },
    # We provide our own assert. including assert.h/cassert spoils it and redefines the macro
    { symbol: ["assert", "private", '"common.h"', "public"] },
    { symbol: ["assert", "private", '"../common.h"', "public"] },
    { symbol: ["wcstring", "private", '"common.h"', "public"] },
    { symbol: ["wcstring", "private", '"../common.h"', "public"] },
    { symbol: ["wcstring", "private", '"flog.h"', "public"] },
    { symbol: ["size_t", "private", "<cstddef>", "public"] },
    { symbol: ["mutex", "private", "<mutex>", "public"] },
    { symbol: ["sig_atomic_t", "private", "<csignal>", "public"] },
    { symbol: ["va_end", "private", "<stdarg.h>", "public"] },
    { symbol: ["va_list", "private", "<stdarg.h>", "public"] },
    { symbol: ["va_start", "private", "<stdarg.h>", "public"] },
    { symbol: ["NULL", "private", "<cstddef>", "public"] },
    { symbol: ["NULL", "private", "<stdlib.h>", "public"] },
    { symbol: ["NULL", "private", "<stdio.h>", "public"] },
    { symbol: ["NULL", "private", "<unistd.h>", "public"] },
    { symbol: ["off_t", "private", "<unistd.h>", "public"] },
    { symbol: ["off_t", "private", "<sys/types.h>", "public"] },
    { symbol: ["size_t", "private", "<cstddef>", "public"] },
    { symbol: ["ssize_t", "private", "<cstddef>", "public"] },
    { symbol: ["intptr_t", "private", "<unistd.h>", "public"] },
    { symbol: ["gid_t", "private", "<unistd.h>", "public"] },
    { symbol: ["uid_t", "private", "<unistd.h>", "public"] },
    { symbol: ["pid_t", "private", "<unistd.h>", "public"] },
    { symbol: ["pid_t", "private", "<sys/types.h>", "public"] },
    { symbol: ["uid_t", "private", "<sys/types.h>", "public"] },
    { symbol: ["gid_t", "private", "<sys/types.h>", "public"] },
    { symbol: ["timeval", "private", "<sys/time.h>", "public"] },
    { symbol: ["__uint32_t", "private", "<cstdint>", "public"] },
    { symbol: ["uint32_t", "private", "<cstdint>", "public"] },
    { symbol: ["intptr_t", "private", "<cstdint>", "public"] },
    { symbol: ["select", "private", "<sys/select.h>", "public"] },
    { symbol: ["_LIBCPP_VERSION", "private", "<cstddef>", "public"] },
    { symbol: ["_LIBCPP_VERSION", "private", "<unistd.h>", "public"] },
    { symbol: ["MB_CUR_MAX", "private", "<cstdlib>", "public"] },
    { symbol: ["MB_LEN_MAX", "private", "<cstdlib>", "public"] },
    { symbol: ["WEOF", "private", "<cwctype>", "public"] },
    { symbol: [ "std::declval", private, "<utility>", public ] },
    { symbol: [ "std::forward", private, "<utility>", public ] },
    { symbol: [ "std::move", private, "<utility>", public ] },
    { symbol: [ "std::nullptr_t", private, "<cstddef>", public ] },
    { symbol: [ "std::string", private, "<string>", public ] },
    { symbol: [ "std::isalnum", private, "<locale>", public ] },
    { symbol: [ "std::toupper", private, "<locale>", public ] },
    { symbol: [ "sem_t", private, "<semaphore.h>", public ] },
    { symbol: [ "sem_post", private, "<semaphore.h>", public ] },
    { symbol: [ "sem_wait", private, "<semaphore.h>", public ] },
    { symbol: [ "sem_init", private, "<semaphore.h>", public ] },
    { symbol: [ "sem_destroy", private, "<semaphore.h>", public ] },
    { symbol: [ "FD_SETSIZE", private, "<sys/select.h>", public ] },
    { symbol: [ "locale_t", private, "<locale>", public ] },
    { include: [ "<assert.h>", public, "<cassert>", public ] },
    { include: [ "<complex.h>", public, "<ccomplex>", public ] },
    { include: [ "<ctype.h>", public, "<cctype>", public ] },
    { include: [ "<errno.h>", public, "<cerrno>", public ] },
    { include: [ "<fenv.h>", public, "<cfenv>", public ] },
    { include: [ "<float.h>", public, "<cfloat>", public ] },
    { include: [ "<inttypes.h>", public, "<cinttypes>", public ] },
    { include: [ "<iso646.h>", public, "<ciso646>", public ] },
    { include: [ "<limits.h>", public, "<climits>", public ] },
    { include: [ "<locale.h>", public, "<clocale>", public ] },
    { include: [ "<math.h>", public, "<cmath>", public ] },
    { include: [ "<setjmp.h>", public, "<csetjmp>", public ] },
    { include: [ "<signal.h>", public, "<csignal>", public ] },
    { include: [ "<stdalign.h>", public, "<cstdalign>", public ] },
    { include: [ "<stdarg.h>", public, "<cstdarg>", public ] },
    { include: [ "<stdbool.h>", public, "<cstdbool>", public ] },
    { include: [ "<stddef.h>", public, "<cstddef>", public ] },
    { include: [ "<stdlib.h>", public, "<cstdlib>", public ] },
    { include: [ "<string.h>", public, "<cstring>", public ] },
    { include: [ "<tgmath.h>", public, "<ctgmath>", public ] },
    { include: [ "<time.h>", public, "<ctime>", public ] },
    { include: [ "<uchar.h>", public, "<cuchar>", public ] },
    { include: [ "<wchar.h>", public, "<cwchar>", public ] },
    { include: [ "<wctype.h>", public, "<cwctype>", public ] },
    { include: [ "<_xlocale.h>", private, "<xlocale.h>", public ] },

]
