#include <string>
#include <iostream>
struct SourceWrapper
{
enum Source {
API = 0,
WINDOW_SYSTEM = 1,
SHADER_COMPILER = 2,
THIRD_PARTY = 3,
APPLICATION = 4,
OTHER = 5,
};
static std::string ToString( Source source) {
if(source == Source::API) {
return "GL_DEBUG_SOURCE_API";
} else if(source == Source::WINDOW_SYSTEM) {
return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
} else if(source == Source::SHADER_COMPILER) {
return "GL_DEBUG_SOURCE_SHADER_COMPILER";
} else if(source == Source::THIRD_PARTY) {
return "GL_DEBUG_SOURCE_THIRD_PARTY";
} else if(source == Source::APPLICATION) {
return "GL_DEBUG_SOURCE_APPLICATION";
} else if(source == Source::OTHER) {
return "GL_DEBUG_SOURCE_OTHER";
} else {
return "INVALID_SOURCE_ENUM";
}
}
};
int main()
{
SourceWrapper::Source test = SourceWrapper::Source::WINDOW_SYSTEM;
std::cout << SourceWrapper::ToString( test ) << std::endl;
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFNvdXJjZVdyYXBwZXIKewogIGVudW0gU291cmNlIHsKICAgIEFQSSA9IDAsCiAgICBXSU5ET1dfU1lTVEVNID0gMSwKICAgIFNIQURFUl9DT01QSUxFUiA9IDIsCiAgICBUSElSRF9QQVJUWSA9IDMsCiAgICBBUFBMSUNBVElPTiA9IDQsCiAgICBPVEhFUiA9IDUsCiAgfTsKCiAgc3RhdGljIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKCBTb3VyY2Ugc291cmNlKSB7CiAgICBpZihzb3VyY2UgPT0gU291cmNlOjpBUEkpIHsKICAgICAgcmV0dXJuICJHTF9ERUJVR19TT1VSQ0VfQVBJIjsKICAgIH0gZWxzZSBpZihzb3VyY2UgPT0gU291cmNlOjpXSU5ET1dfU1lTVEVNKSB7CiAgICAgIHJldHVybiAiR0xfREVCVUdfU09VUkNFX1dJTkRPV19TWVNURU0iOwogICAgfSBlbHNlIGlmKHNvdXJjZSA9PSBTb3VyY2U6OlNIQURFUl9DT01QSUxFUikgewogICAgICByZXR1cm4gIkdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIiOwogICAgfSBlbHNlIGlmKHNvdXJjZSA9PSBTb3VyY2U6OlRISVJEX1BBUlRZKSB7CiAgICAgIHJldHVybiAiR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZIjsKICAgIH0gZWxzZSBpZihzb3VyY2UgPT0gU291cmNlOjpBUFBMSUNBVElPTikgewogICAgICByZXR1cm4gIkdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiI7CiAgICB9IGVsc2UgaWYoc291cmNlID09IFNvdXJjZTo6T1RIRVIpIHsKICAgICAgcmV0dXJuICJHTF9ERUJVR19TT1VSQ0VfT1RIRVIiOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICJJTlZBTElEX1NPVVJDRV9FTlVNIjsKICAgIH0KICB9Cn07CgppbnQgbWFpbigpCnsKICBTb3VyY2VXcmFwcGVyOjpTb3VyY2UgdGVzdCA9IFNvdXJjZVdyYXBwZXI6OlNvdXJjZTo6V0lORE9XX1NZU1RFTTsKCiAgc3RkOjpjb3V0IDw8IFNvdXJjZVdyYXBwZXI6OlRvU3RyaW5nKCB0ZXN0ICkgPDwgc3RkOjplbmRsOwogIHJldHVybiAwOwp9