Sweden-Number/dlls/opengl32/make_opengl_spec

88 lines
2.5 KiB
Perl
Executable File

#!/usr/bin/perl -w
#
# First, the basics and the wgl functions
#
print "
name opengl32
type win32
@ stdcall wglCreateContext(long) wglCreateContext
@ stdcall wglCreateLayerContext(long long) wglCreateLayerContext
@ stdcall wglCopyContext(long long long) wglCopyContext
@ stdcall wglDeleteContext(long) wglDeleteContext
@ stdcall wglDescribeLayerPlane(long long long long ptr) wglDescribeLayerPlane
@ stdcall wglGetCurrentContext() wglGetCurrentContext
@ stdcall wglGetCurrentDC() wglGetCurrentDC
@ stdcall wglGetLayerPaletteEntries(long long long long ptr) wglGetLayerPaletteEntries
@ stdcall wglGetProcAddress(str) wglGetProcAddress
@ stdcall wglMakeCurrent(long long) wglMakeCurrent
@ stdcall wglRealizeLayerPalette(long long long) wglRealizeLayerPalette
@ stdcall wglSetLayerPaletteEntries(long long long long ptr) wglSetLayerPaletteEntries
@ stdcall wglShareLists(long long) wglShareLists
@ stdcall wglSwapLayerBuffers(long long) wglSwapLayerBuffers
@ stdcall wglUseFontBitmapsA(long long long long) wglUseFontBitmapsA
@ stdcall wglUseFontOutlinesA(long long long long long long long ptr) wglUseFontOutlinesA
@ stub glGetLevelParameterfv
@ stub glGetLevelParameteriv
@ stub wglUseFontBitmapsW
@ stub wglUseFontOutlinesW
@ forward wglChoosePixelFormat GDI32.ChoosePixelFormat
@ forward wglDescribePixelFormat GDI32.DescribePixelFormat
@ forward wglGetPixelFormat GDI32.GetPixelFormat
@ forward wglSetPixelFormat GDI32.SetPixelFormat
@ forward wglSwapBuffers GDI32.SwapBuffers
";
#
# Now, the functions from the include file
#
open(INC, "/usr/X11R6/include/GL/gl.h") || die "Could not open GL/gl.h";
while ($line = <INC>) {
if ($line =~ /GLAPI.*GLAPIENTRY/) {
# Start of a function declaration
($name, $args) = ($line =~ /GLAPIENTRY *(.*)\((.*)/);
# Remove all extensions except the multitexture one (see OpenGL ABI)
if (($name !~ /(MESA|PGI|ARB|EXT)/) ||
($name =~ /MultiTexCoord/) ||
($name =~ /ActiveTextureARB/)) {
print "@ stdcall $name(";
# Now, get the parameters
while (1) {
@args = split /,/, $args;
foreach (@args) {
if ($_ =~ /\)/) {
($_) = ($_ =~ /(.*)\)/);
}
if ($_ =~ /\*/) {
print "ptr ";
} elsif ($_ =~ /[a-zA-Z]/) {
($type) = ($_ =~ /^ *(.*) +.*/);
if (($type =~ /double/) ||
($type =~ /clampd/)) {
print "double ";
} elsif ($type !~ /void/) {
print "long ";
}
}
}
if ($args !~ /\)/) {
$args = <INC>;
} else {
last;
}
}
print ") wine_$name\n";
}
}
}
close(INC);