Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:37

0001 #pragma once
0002 /**
0003 SGLFW_check.h
0004 ================
0005 
0006 **/
0007 
0008 #include "ssys.h"
0009 
0010 struct SGLFW_check
0011 {
0012     static constexpr const char* _level = "SGLFW_check__level" ;
0013     static int level ;
0014 };
0015 
0016 int SGLFW_check::level = ssys::getenvint(_level,0);
0017 
0018 
0019 inline void SGLFW__check(const char* path, int line, const char* ctx=nullptr, int id=-99, const char* act=nullptr ) // static
0020 {
0021     GLenum err = glGetError() ;
0022     bool ok = err == GL_NO_ERROR ;
0023     const char* s = NULL ;
0024     switch(err)
0025     {
0026         case GL_INVALID_ENUM:      s = "GL_INVALID_ENUM" ; break ;
0027         case GL_INVALID_VALUE:     s = "GL_INVALID_VALUE" ; break ;
0028         case GL_INVALID_OPERATION: s = "GL_INVALID_OPERATION" ; break ;
0029         case GL_STACK_OVERFLOW:    s = "GL_STACK_OVERFLOW" ; break ;
0030         case GL_STACK_UNDERFLOW:   s = "GL_STACK_UNDERFLOW" ; break ;
0031         case GL_OUT_OF_MEMORY:     s = "GL_OUT_OF_MEMORY" ; break ;
0032 #ifdef GL_VERSION_4_5
0033         case GL_CONTEXT_LOST:      s = "GL_CONTEXT_LOST" ; break ;
0034 #endif
0035         case GL_INVALID_FRAMEBUFFER_OPERATION: s = "GL_INVALID_FRAMEBUFFER_OPERATION" ; break ;
0036     }
0037 
0038     const char* delim = ok ? "" : "\n" ;
0039 
0040     if(!ok || SGLFW_check::level  > 0) std::cerr
0041          << "SGLFW__check " << delim
0042          //<< "(vi path +line) : "
0043          << "( vi " << std::setw(55) << path << " " << std::showpos << std::setw(4) << line << std::noshowpos << " ) " << delim
0044          << " ctx " << std::setw(20) << ( ctx ? ctx : "-" ) << delim
0045          << " id " << std::setw(4) << id << delim
0046          << " act " << std::setw(30) << ( act ? act : "-" ) << delim
0047          << " err "  << std::hex << err << std::dec << delim
0048          << " errstr " << " : " << ( s ? s : "-" ) << delim
0049          << " [" <<  SGLFW_check::_level << "] " << SGLFW_check::level << delim
0050          << "\n"
0051          ;
0052 
0053     assert( ok );
0054     if(!ok) std::raise(SIGINT);
0055 }
0056 
0057 
0058 
0059 
0060 
0061 
0062 
0063 
0064