#!/usr/bin/perl print "#ifndef GLDEBUG_H\n#define GLDEBUG_H\n\n"; while (<>) { if (/^GLAPI\s+(.*?)\s+(?:GL)?APIENTRY\s+(gl[A-Z][A-Za-z0-9]+)/) { my ($k, $v) = ($2, $1); $api{$k} = $v; } } delete $api{glGetError}; while (my ($k, $v) = each %api) { if ($v eq "void") { print "#define $k(...) do { $k(__VA_ARGS__); gl::errchk(\"$k\", # __VA_ARGS__, __FILE__, __LINE__); } while (0)\n"; } else { print "#define $k(...) ({ $v ___ = $k(__VA_ARGS__); gl::errchk(\"$k\", # __VA_ARGS__, __FILE__, __LINE__); ___; })\n"; } } print "#endif\n";