#pragma once #include #include #if __APPLE__ #include "TargetConditionals.h" #if TARGET_OS_IPHONE #include #include #elif TARGET_IPHONE_SIMULATOR #include #include #elif TARGET_OS_MAC #include #include #include #else #error Unsupported Apple platform #endif #elif __ANDROID__ || MBGL_USE_GLES2 #define GL_GLEXT_PROTOTYPES #include #include #elif __QT__ && QT_VERSION >= 0x050000 #define GL_GLEXT_PROTOTYPES #include #else #define GL_GLEXT_PROTOTYPES #include #include #endif namespace mbgl { namespace gl { struct Error : std::runtime_error { using std::runtime_error::runtime_error; }; void checkError(const char *cmd, const char *file, int line); #ifndef NDEBUG #define MBGL_CHECK_ERROR(cmd) ([&]() { struct __MBGL_C_E { ~__MBGL_C_E() noexcept(false) { ::mbgl::gl::checkError(#cmd, __FILE__, __LINE__); } } __MBGL_C_E; return cmd; }()) #else #define MBGL_CHECK_ERROR(cmd) (cmd) #endif } // namespace gl } // namespace mbgl