/* * Copyright © 2022 Michael Smith * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #ifndef INC_OS_H #define INC_OS_H /* * Here we declare an absolute ton of wrappers, macros, compatibility shims, * reimplementations and so on to try in vain to sweep the inconsistencies * between Windows and not-Windows under the rug. */ #include #include #ifdef _WIN32 #include #include #include // DUMB HACK: noreturn.h is alphabetically before os.h so including it after // looks weird and inconsistent. including it before breaks Windows.h though // because of __declspec(noreturn). Undef for now, and restore at the end of // this header. #undef noreturn #include #include #else #include #include #include #include #include #include #include #include #include #endif // Things were getting unwieldy so they're now split into these headers... #ifdef _WIN32 #include "os-win32.h" // DUMB HACK part 2: restore what the #including source file had asked for #ifdef INC_NORETURN_H #define noreturn _Noreturn void #endif #else #include "os-unix.h" #endif #endif // vi: sw=4 ts=4 noet tw=80 cc=80