/// /// \file Defs.h /// \author kyle /// \created 10/11/23 /// \brief /// /// \section COPYRIGHT /// Copyright 2023 K. Isom /// /// 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 KEPP__DEFS_H_ #define KEPP__DEFS_H_ #include #include #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) typedef std::optional OptString; template T Min(T a, T b) { return a > b ? b : a; } template size_t Min(size_t a, size_t b); template T Max(T a, T b) { return a > b ? a : b; } template size_t Max(size_t a, size_t b); /// \todo Consider abstracting platforms to a separate subsystem. static const std::string PlatformLinux("Linux"); static const std::string PlatformApple("Darwin"); static const std::string PlatformWindows("Windows"); static const std::string PlatformCurrent(TOSTRING(KGE_PLATFORM)); #endif // KEPP__DEFS_H_